← 全部章节详细版这一节

P47 · 注意力与 Transformer

Transformer(上)

seq2seq 与编码器 · 视频 32:48

1这节解决什么问题

翻译、语音识别这类任务,输入是一段序列,输出是另一段序列,而且输入和输出长度不必相同,不能只预设一个固定长度的输出。

2一句话讲清

编码器把输入的每个位置都变成一份「带上下文的笔记」,解码器再一边写译文、一边回来翻这些笔记。

3通俗解释

  1. 先读原文:编码器为各个位置整理信息,同一层可以并行处理;每个位置可以参考完整输入(不是只看左边),所以「小猫坐在垫子上」里的「坐」能同时参考「小猫」和「垫子」。
  2. 每个位置都做同样的两步:先做自注意力并配合残差和归一化,再做各位置单独的小加工,同样配合残差和归一化。这两步可以叠很多层。残差就是「保留原来的信息,只学要改的部分」,叠得再深也不容易被冲掉。
  3. 归一化不用手算,只是把每个位置的那组数调到大致相同的尺度,避免有的特别大、有的特别小,让训练更稳。编码器不加「遮住后面」的限制,因为它读的是完整原文;这也正是它能把左右两边都带给解码器的原因。
  4. 旧方案是把整句压成一份固定长度的摘要,解码器每一步拿到的都一样。这里改成每个位置留一份笔记,解码器每写一个词,就能重新决定该翻哪几份。

4一个例子

帮助理解(不是讲义原例)

帮助理解的例子:把「小猫坐在垫子上」翻成英文时,编码器不是把整句压成一份固定长度的摘要,而是给每个词留一份笔记——「小猫」那份带着「坐」和「垫子」的信息,「坐」那份带着谁在坐、坐在哪。解码器写译文时,写 cat 主要翻「小猫」那份,写 mat 时又回去翻「垫子」那份。写一个词翻一次笔记,所以译文不必和原文一样长。

5常见误区

  • 以为编码器把整句压成一份固定长度的摘要。这一讲的编码器是每个位置留一份表示;「压成一份」是更早的序列到序列做法。
  • 以为归一化就是批归一化换个名字。这里是在一个位置内部把数值尺度调稳,跟一批里有多少样本无关,所以序列长短、批很小都能用。
  • 以为所有 Transformer 都长这样。这一讲讲的是编码器-解码器结构;后来的模型有的只用编码器、有的只用解码器,不能一概而论。

6和相邻几节的关系

P36、P37 给了自注意力、多头和位置信息,这一节把它们组装成编码器;P48 讲解码器、遮住未来和交叉参考;P38 的循环网络是另一种编码器选择。

730 秒回顾

输入输出长度不必相同;编码器给每个位置留一份带上下文的表示;残差保留原信息,归一化稳住数值尺度,位置要另外补;不加遮罩所以能看全句。

8小自测

先自己答,再点开对答案。

1. 残差和归一化各自解决什么问题?

残差把这一步的输入加回输出,保留原来的信息,让「只学要改的部分」成为可能,叠深了也不容易退化;归一化把那组数的尺度调稳,避免大小悬殊让训练不稳。

2. 编码器为什么可以不加「遮住后面」的限制?

它读的是完整原文,不需要一个词一个词往外写;能看到左右两边,才能给解码器提供更完整的上下文。

9来源

来源与说明(点开可查)

基于对应官方讲义整理并做复习补充,不是视频逐字稿;本页不标注视频时间点。

对应讲义页码:seq2seq_v9.pdf 第 2–21 页;另见 normalization_v4.pdf 第 4–6 页

回到顶部