328. AgentX:《大模型应用开发极简入门》:GPT 只有 Decoder,为什么翻译也挺好?

素材

  • 《大模型应用开发极简入门》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 都可以通过因果自注意力回看左边的原文和已有译文。

328. AgentX:《大模型应用开发极简入门》:GPT 只有 Decoder,为什么翻译也挺好? 图表 1

所以,GPT 不需要独立 Encoder,也不需要读取 Encoder 输出的交叉注意力

为什么翻译效果还不错

预训练:先学会这个本领

模型阅读大量多语言文本,通过预测下一个 Token,学会中文、英文、语法和不同语言之间的对应关系。

经过预训练,基础模型已经有了翻译能力。

提示词:告诉它这次做什么

我现在输入“把这句话翻译成中文”,是在当前对话里告诉模型:这次要使用翻译能力,以及目标语言、术语和输出格式。

提示词只影响当前这次生成,不会重新训练模型。

后训练:再练习怎样按人的要求做

只有预训练的基础模型虽然会翻译,却不一定老实执行指令。它可能继续原文、解释一大段,或者输出我不想要的格式。

因此,模型发布成 ChatGPT 之前,还会继续用“用户指令 → 合格回答”的示例和人类偏好训练。这个阶段就叫后训练

它不是从头教模型翻译,而是让模型更清楚:

  • 用户说“翻译成中文”时,就输出中文译文。
  • 用户要求只输出译文时,不要增加无关解释。
  • 用户指定术语和格式时,尽量照着做。

328. AgentX:《大模型应用开发极简入门》:GPT 只有 Decoder,为什么翻译也挺好? 图表 2

大白话就是:

预训练是学会本领,后训练是学会听指令,提示词是我现在交给它的具体任务。

翻得顺,不等于翻得对

GPT 仍然可能:

  • 漏掉否定词和限制条件。
  • 翻错数字、人名和专业术语
  • 增加原文没有的信息。
  • 在长文中前后使用不同术语。

不同语言、不同翻译方向的效果也不一样。专用翻译系统在固定语言、成本和速度上仍可能更合适。

这里用 Decoder-only 解释公开 GPT 系列建立起来的文本生成方式。当前闭源 GPT 产品的完整内部架构没有公开。

总结:GPT 没有 Encoder,为什么仍然能翻译,而且效果还不错?

  • GPT 把翻译指令完整原文已有译文放在同一条序列里。
  • 生成每个译文 Token 时,它都能通过因果自注意力读取左边的原文,所以不需要独立 Encoder。
  • 多语言预训练让它学会翻译,提示词告诉它怎样翻,后训练让它更可靠地执行要求。
  • 但翻得流畅不等于翻得准确,真实应用仍要评测。

参考