1. 预训练技术解析
1.1 预训练的本质与应用场景
预训练(Pre-training)是现代深度学习中的核心技术范式,其核心思想是通过大规模数据训练通用模型,再针对特定任务进行微调。这种"预训练+微调"的模式已经成为NLP、CV等领域的标准实践。
预训练的核心优势在于:
- 参数复用:利用通用模型学习到的底层特征(如图像边缘检测、语言语法规则)
- 数据效率:在小规模标注数据上也能取得良好效果
- 迁移能力:一个预训练模型可适配多种下游任务
在实际应用中,我们通常会遇到两种参数迁移方式:
python复制# 微调(Fine-tuning)示例
model = load_pretrained() # 加载预训练模型
for param in model.parameters():
param.requires_grad = True # 所有参数参与训练
# 冻结(Freezing)示例
model = load_pretrained()
for param in model.parameters():
param.requires_grad = False # 固定预训练参数
1.2 主流预训练框架实践
当前最常用的预训练框架包括:
-
Fairseq:Facebook开源的序列建模工具包
- 支持Transformer、LSTM等多种架构
- 提供分布式训练优化
- 典型命令行:
bash复制fairseq-train data-bin --arch transformer
-
Transformers库(Hugging Face):
- 提供BERT、GPT等现成模型
- 简单易用的API接口
- 典型使用方式:
python复制from transformers import AutoModel model = AutoModel.from_pretrained("bert-base-uncased")
注意事项:选择框架时需考虑:
- 模型兼容性(是否支持所需架构)
- 硬件要求(如GPU内存占用)
- 社区支持(问题解决效率)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 语言模型演进之路
2.1 统计语言模型的数学基础
统计语言模型的核心是计算词序列的概率。给定词序列$w_1,w_2,...,w_n$,其联合概率可分解为:
$$
P(w_1,w_2,...,w_n) = \prod_{i=1}^n P(w_i|w_1,...,w_{i-1})
$$
这种链式法则虽然理论完美,但在实际应用中面临维度灾难问题。n元语言模型通过马尔可夫假设简化计算:
$$
P(w_i|w_1,...,w_{i-1}) \approx P(w_i|w_{i-n+1},...,w_{i-1})
$$
常见n-gram模型的平滑技术对比:
| 技术 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 加一平滑 | 所有计数+1 | 简单易实现 | 对高频词过度惩罚 |
| Kneser-Ney | 考虑连续词对频率 | 对罕见组合效果好 | 实现复杂 |
| 回退 | 高阶缺失时用低阶 | 资源消耗少 | 需要设计回退策略 |
2.2 神经网络语言模型突破
NNLM(Neural Network Language Model)首次将神经网络引入语言建模,其核心创新在于:
-
词嵌入层:将离散的one-hot编码转换为稠密向量
python复制# 传统one-hot编码示例 vocab = {"apple":0, "banana":1} one_hot = [0]*len(vocab) one_hot[vocab["apple"]] = 1 # [1,0] # 词嵌入转换 embedding = nn.Embedding(vocab_size, dim=300) vec = embedding(tensor([0])) # 300维稠密向量 -
上下文表征:通过神经网络捕捉词序信息
math复制h = \tanh(W^{(1)}x + b^{(1)}) P(w_t|w_{t-1}) = \text{softmax}(W^{(2)}h + b^{(2)})
NNLM的副产品——词向量,成为后续研究的基石。其优势在于:
- 维度可控(典型值50-1000维)
- 可计算词间相似度
- 蕴含语法语义信息
3. Word2Vec技术详解
3.1 CBOW与Skip-gram对比
Word2Vec的两种架构设计哲学:
- C
