本模块预计时长: 2-2.5小时
目标: 理解Transformer块如何组装成完整架构,以及为什么BERT和GPT等模型——虽然共享相同的基础——用于截然不同的任务。
"Attention Is All You Need"(2017)论文不仅引入了注意力机制。它提出了一个完整架构,最初设计用于机器翻译任务。
该架构有两个主要组件:
🔹 有用的类比:
想象会议上的同声传译。
- 编码器就像他们的耳朵和大脑:听并完全理解发言人的句子。
- 解码器就像他们的嘴:基于理解的内容逐字生成翻译——甚至在犯错时自我纠正!
编码器是相同层的堆栈(例如,原始Transformer中的6或8层)。每层有两个主要子层:
多头自注意力:
每个单词关注同一句子中的所有其他单词。这允许每个单词在整句上下文中"重新定义"自己。
前馈神经网络(FFN):
应用于每个单词的简单(但强大)神经网络。用于非线性变换每个单词的表示。
此外,每个子层都包装在:
🔹 编码器的最终输出:
输入句子中每个单词的上下文化表示。该表示不仅捕获单词的含义,还捕获其与其他单词的关系。
解码器也是相同层的堆栈,但有三个子层而不是两个:
掩码多头自注意力:
这是关键区别。解码器也应用自注意力,但带有掩码,阻止每个单词"看未来"。
生成第3个单词时,只能关注第1和第2个单词。不能通过偷看第4个单词作弊!
这对文本生成至关重要,因为在现实世界中——当你写作或说话时——你不知道下一个单词是什么。
多头交叉注意力:
这里,解码器"看"编码器的输出。查询来自解码器;键和值来自编码器。
这允许解码器生成的每个单词"询问"编码器:"我现在要说的内容中,原始句子的哪部分是相关的?"
前馈神经网络(FFN):
与编码器中相同。
它也使用残差连接和层归一化。
想象你在做一道新菜(生成文本)。
编码器就像一个已经品尝过所有食材(输入单词)的美食评论家,给你一份详细报告:"大蒜很好,但缺乏酸度;番茄很甜——与酸的东西搭配。"
解码器就像你,厨师,一次添加一个食材(一个单词)。
就这样,一步一步,你生成了一道连贯而美味的菜!
随着时间推移,研究人员意识到他们并不总是需要两部分。
BERT(来自Transformers的双向编码器表示),由谷歌在2018年发布,引起了革命。
🔹 关键创新:
双向训练。与RNN或GPT(只看过去)不同,BERT可以同时看到完整上下文。
🔹 训练任务:
"掩码语言建模"——随机掩码句子中的单词并要求模型使用左右上下文预测它们。
示例:
"The [MASK] jumped over the fence." → 模型学习"cat"、"dog"、"rabbit"是好的预测。
🔹 结果:
极其丰富的语言表示,非常适合理解任务。
GPT(生成式预训练Transformer),由OpenAI发布,采取相反路径。
🔹 关键创新:
自回归训练。预测序列中的下一个单词,只使用先前上下文。
示例:
"The cat jumped over the..." → 预测"fence"、"table"、"bed"等。
🔹 训练任务:
"语言建模"——简单地反复预测下一个单词,在数十亿文本中。
🔹 结果:
令人难以置信的流畅模型用于文本生成,保持长期连贯性和遵循指令。
BERT (仅编码器):
输入: [The] [cat] [jumped] [over] [the] [fence]
处理: 所有单词同时处理。
注意力: 每个单词可以看到所有其他单词(双向)。
输出: 每个单词的上下文化向量 → 理想用于分类或提取。
GPT (仅解码器):
生成: 从<start>开始,然后逐个生成单词。
步骤1: <start> → 生成"The"
步骤2: <start> + "The" → 生成"cat"
步骤3: <start> + "The" + "cat" → 生成"jumped"
...
注意力: 在每一步,只能看到之前的单词(因果/掩码)。
输出: 生成的序列 → 理想用于创建新文本。
因为并不总是必要……而且更昂贵!
就像选择工具:
想三个不同的NLP任务。对于每个任务,决定你会使用BERT风格(仅编码器)、GPT风格(仅解码器)还是T5风格(编码器-解码器)模型。说明你的选择。
示例:
任务:"提取新闻文章中提到的人名。"
选择:BERT → 因为这是提取/理解任务,不是生成任务。
原始Transformer (翻译):
[输入: "Hello world"] → 编码器 → [表示] → 解码器 → [输出: "Hola mundo"]
BERT (情感分类):
[输入: "I loved the movie"] → 编码器 → [CLS向量] → 分类器 → "POSITIVE"
GPT (文本生成):
<start> → 解码器 → "Today" → 解码器 → "is" → 解码器 → "a" → 解码器 → "great" → ... → "day."
Transformer不是一个单一模型,而是一个架构家族。
- 编码器是"分析师":深入理解输入文本。
- 解码器是"创造者":逐步生成新文本,意识到过去。
- 一起,它们是"完美翻译器"。
BERT和GPT是同一枚硬币的两面:一个用于理解,一个用于创造。它们的流行并非偶然——每个都针对其目的进行了优化。
现在我们理解了架构,是时候动手编码了!在下一个模块中,我们将学习使用Hugging Face的真实Transformer模型——不需要理解每个权重或神经元。我们将加载模型,给它文本,并获得答案……就像魔法一样(但我们知道不是)!