问题:大语言模型是如何训练出来的?
解答:
大语言模型(LLM)的训练过程与图像分类模型有相似之处,但核心差异在于处理的对象和目标。我们可以用图像分类的思维类比理解大语言模型的训练和推理逻辑:
1. 训练阶段:从“特征提取”到“下一个词预测”
- 图像分类模型:
输入一张图片,模型通过卷积层提取特征(如边缘、纹理等),最后通过全连接层将特征映射到类别概率(如“猫”“狗”)。训练时,模型通过交叉熵损失函数比较预测类别和真实标签的差异,调整参数以最小化误差。 大语言模型:
输入一段文本(如“我爱吃”),模型通过Transformer层提取上下文特征(类似图像中的“边缘”),但目标不是直接分类,而是预测下一个词的概率分布(如“饭”“面”)。训练时,模型同样使用交叉熵损失函数,但计算的是“预测的下一个词”与“真实的下一个词”的差异。例如:- 输入:“我爱吃” → 模型应输出“饭”(标签为“饭”),损失函数衡量模型对“饭”的预测概率与真实标签的差距。
- 关键操作:模型需要对输入序列和标签进行移位(shift),确保每个位置的预测仅依赖前面的词(类似图像分类中局部感受野的概念)。
2. 推理阶段:从“概率生成”到“连续回答”
- 图像分类模型:
新图片输入后,模型提取特征并输出类别概率,选择概率最高的类别作为结果(如“猫:90%”)。 大语言模型:
新文本输入后(如“巴黎是”),模型会:- 生成概率分布:计算下一个词的概率(如“美丽:40%”“城市:30%”)。
- 自回归生成:选择概率最高的词(如“美丽”)作为输出,并将其拼接到输入中,继续预测下一个词(“巴黎是美丽 → 的”),直到生成结束符(如
<EOS>
)。
- 这类似于图像分类中“连续分类”,但每次分类的结果会影响下一次的输入。
3. 核心差异与特殊设计
- 动态序列处理:
图像分类的输入大小固定,而语言模型的输入输出长度可变。因此,语言模型需要掩码(mask)技术,确保预测时只能看到前面的词(类似图像中遮挡部分像素后分类)。 损失函数细节:
- 语言模型的损失函数是交叉熵的累加,对序列中每个位置的预测分别计算误差(如图像分类中对每个像素点分类,但实际是逐词计算)。
例如,输入“我爱吃饭”:
- 预测序列:“爱”“吃”“饭”分别与标签“爱”“吃”“饭”比较,损失是三个交叉熵的平均。
- 微调阶段:
类似图像分类的迁移学习,大模型会通过监督微调(SFT)调整部分参数。例如,在指令任务中,模型学习根据“问题:巴黎是?”→“回答:美丽的城市”的配对数据优化答案生成。
类比总结
步骤 | 图像分类模型 | 大语言模型 |
---|---|---|
输入 | 固定大小的图片 | 可变长度的文本(如句子) |
特征提取 | 卷积层提取边缘/纹理 | Transformer层提取上下文语义 |
目标 | 输出类别概率(猫/狗) | 输出下一个词的概率分布(饭/面) |
损失函数 | 交叉熵(单次分类误差) | 交叉熵(逐词预测误差累加) |
推理 | 直接选择最高概率类别 | 自回归生成(多次预测拼接答案) |
通过这种类比,可以理解大语言模型本质是“超级自动补全”,通过海量文本学习词语间的概率关系,再通过微调适应具体任务(如问答)。而图像分类的“特征-标签”映射,在这里变成了“上下文-下一个词”的映射。