素材
- 《大模型应用开发极简入门》1.1.2 节和【内部:以前的笔记】。
- Transformer、GPT-3 和 InstructGPT 论文。
FDE/JD/raw/中对 LLM、Transformer 基础原理的岗位要求。
一句话
GPT 把翻译也当成续写:
前面放翻译
指令和原文,后面逐个生成另一种语言的 Token。
翻译也是续写、预测下一个词
比如:
text
指令:翻译成中文。
原文:The button is red.
译文:GPT 看到“译文:”以后,继续生成:
text
这个按钮是红色的。对 GPT 来说,翻译没有一套单独的流程:
text
翻译指令 + 原文 + 已有译文 -> 下一个译文 Token只有 Decoder,也能看到完整原文
传统翻译模型通常是:
- Encoder 先读原文。
- Decoder 再生成译文。
GPT 没有单独的 Encoder。它把指令、原文和译文放在同一条序列里。
生成译文时,完整原文已经在左边。每个新 Token 都可以通过因果自注意力回看左边的原文和已有译文。
所以,GPT 不需要独立 Encoder,也不需要读取 Encoder 输出的交叉注意力。
为什么翻译效果还不错
预训练:先学会这个本领
模型阅读大量多语言文本,通过预测下一个 Token,学会中文、英文、语法和不同语言之间的对应关系。
经过预训练,基础模型已经有了翻译能力。
提示词:告诉它这次做什么
我现在输入“把这句话翻译成中文”,是在当前对话里告诉模型:这次要使用翻译能力,以及目标语言、术语和输出格式。
提示词只影响当前这次生成,不会重新训练模型。
后训练:再练习怎样按人的要求做
只有预训练的基础模型虽然会翻译,却不一定老实执行指令。它可能继续原文、解释一大段,或者输出我不想要的格式。
因此,模型发布成 ChatGPT 之前,还会继续用“用户指令 → 合格回答”的示例和人类偏好训练。这个阶段就叫后训练。
它不是从头教模型翻译,而是让模型更清楚:
- 用户说“翻译成中文”时,就输出中文译文。
- 用户要求只输出译文时,不要增加无关解释。
- 用户指定术语和格式时,尽量照着做。
大白话就是:
预训练是学会本领,后训练是学会听指令,提示词是我现在交给它的具体任务。
翻得顺,不等于翻得对
GPT 仍然可能:
- 漏掉否定词和限制条件。
- 翻错数字、人名和
专业术语。 - 增加原文没有的信息。
- 在长文中前后使用不同术语。
不同语言、不同翻译方向的效果也不一样。专用翻译系统在固定语言、成本和速度上仍可能更合适。
这里用 Decoder-only 解释公开 GPT 系列建立起来的文本生成方式。当前闭源 GPT 产品的完整内部架构没有公开。
总结:GPT 没有 Encoder,为什么仍然能翻译,而且效果还不错?
- GPT 把
翻译指令、完整原文和已有译文放在同一条序列里。 - 生成每个译文 Token 时,它都能通过因果
自注意力读取左边的原文,所以不需要独立 Encoder。 - 多语言
预训练让它学会翻译,提示词告诉它怎样翻,后训练让它更可靠地执行要求。 - 但翻得流畅不等于翻得准确,真实应用仍要评测。
参考
- 《大模型应用开发极简入门》1.1.2 节和【内部:以前的笔记】。
- Attention Is All You Need、Language Models are Few-Shot Learners。
- Training language models to follow instructions with human feedback。
- 【内部:本地 JD 原始材料】。