共计 3143 个字符,预计需要花费 8 分钟才能阅读完成。
技术演进背景
AI 技术的发展可以用几个关键时间点来划分:

- 2012 年 – 深度学习的崛起
- AlexNet 在 ImageNet 竞赛中大幅领先,证明了深度神经网络的有效性
-
开启了卷积神经网络 (CNN) 在计算机视觉领域的统治地位
-
2017 年 – Transformer 架构革命
- Google 发表《Attention Is All You Need》论文
- 提出自注意力机制,彻底改变了序列建模的方式
-
为后来的大语言模型奠定了架构基础
-
2020 年至今 – 大语言模型时代
- GPT- 3 展示了大规模预训练模型的惊人能力
- 模型规模从亿级参数跃升至万亿级参数
- 涌现出指令跟随、思维链等新能力
核心范式对比
AI 技术主要有以下几种学习范式:
监督学习
- 数学本质:学习从输入 x 到输出 y 的映射函数 f,即 y =f(x)
- 典型应用:分类、回归任务
- 示例公式:最小化损失函数 $L = \sum_{i=1}^n (y_i – f(x_i))^2$
无监督学习
- 数学本质:发现数据中的隐藏结构
- 典型应用:聚类、降维
- 示例算法:K-means 聚类 $\arg\min_S \sum_{i=1}^k \sum_{x \in S_i} ||x – \mu_i||^2$
强化学习
- 数学本质:通过试错学习最优策略
- 典型应用:游戏 AI、机器人控制
- 关键公式:贝尔曼方程 $V(s) = \max_a (R(s,a) + \gamma V(s’))$
预训练 - 微调范式
- 数学本质:先在大规模数据上预训练通用表示,再在小数据上微调
- 典型应用:大语言模型
- 核心思想:迁移学习
实战代码模块
1. Scikit-learn 分类任务
# 数据准备
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
# 特征工程 - 标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 模型训练
from sklearn.svm import SVC
model = SVC(kernel='rbf', C=1.0, gamma='scale')
model.fit(X_train, y_train)
# 评估
from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}")
2. PyTorch 实现 Transformer
import torch
import torch.nn as nn
class SelfAttention(nn.Module):
def __init__(self, embed_size, heads):
super(SelfAttention, self).__init__()
self.embed_size = embed_size
self.heads = heads
self.head_dim = embed_size // heads
self.values = nn.Linear(self.head_dim, self.head_dim, bias=False)
self.keys = nn.Linear(self.head_dim, self.head_dim, bias=False)
self.queries = nn.Linear(self.head_dim, self.head_dim, bias=False)
self.fc_out = nn.Linear(heads * self.head_dim, embed_size)
def forward(self, values, keys, query, mask):
N = query.shape[0]
value_len, key_len, query_len = values.shape[1], keys.shape[1], query.shape[1]
# Split embedding into self.heads pieces
values = values.reshape(N, value_len, self.heads, self.head_dim)
keys = keys.reshape(N, key_len, self.heads, self.head_dim)
queries = query.reshape(N, query_len, self.heads, self.head_dim)
energy = torch.einsum("nqhd,nkhd->nhqk", [queries, keys])
if mask is not None:
energy = energy.masked_fill(mask == 0, float("-1e20"))
attention = torch.softmax(energy / (self.embed_size ** (1/2)), dim=3)
out = torch.einsum("nhql,nlhd->nqhd", [attention, values]).reshape(N, query_len, self.heads * self.head_dim)
out = self.fc_out(out)
return out
3. HuggingFace 调用 LLM
from transformers import pipeline
# 加载预训练模型
generator = pipeline('text-generation', model='gpt2')
# Prompt engineering 技巧
prompt = """ 请用中文回答以下问题。问题:人工智能有哪些主要应用领域?回答:"""
result = generator(prompt,
max_length=200,
num_return_sequences=1,
temperature=0.7)
print(result[0]['generated_text'])
生产环境考量
数据准备陷阱
- 标签泄漏:确保测试数据不参与任何预处理步骤
- 样本偏差:检查数据分布是否代表真实场景
- 数据质量:清洗异常值和缺失值
训练监控指标
- GPU 利用率:nvidia-smi 查看 GPU-Util
- 显存占用:关注 OOM(Out Of Memory)错误
- 训练损失:监控是否正常下降
部署优化方案
| 方案 | 精度损失 | 加速比 | 硬件要求 |
|---|---|---|---|
| FP32 | 无 | 1x | 高 |
| FP16 | 小 | 1.5-3x | 中等 |
| INT8 | 明显 | 4x+ | 低 |
避坑指南
- 过拟合问题
- 现象:训练误差低但测试误差高
-
解决方案:增加正则化、使用早停、添加 Dropout
-
学习率设置不当
- 现象:损失震荡或不下降
-
解决方案:使用学习率预热、余弦退火等调度策略
-
批量大小过大
- 现象:GPU 显存不足
-
解决方案:梯度累积、使用更小的 batch
-
数据未标准化
- 现象:模型收敛慢
-
解决方案:对输入数据做归一化处理
-
忽略基线模型
- 现象:直接上复杂模型
- 解决方案:先建立简单基线(如逻辑回归)
动手挑战
尝试在 Colab 上实现完整的 Transformer 模型:
1. 使用 PyTorch 搭建 Encoder 和 Decoder
2. 在 IWSLT 数据集上训练德语到英语的翻译模型
3. 实现 beam search 解码
4. 对比不同注意力头数对性能的影响
参考资源:
–《Attention Is All You Need》原论文
– HuggingFace Transformers 文档
– PyTorch 官方教程
正文完
