← 全部章节详细版这一节

P36 · 注意力与 Transformer

自注意力机制(上)

Self-attention · 2021 版 · 视频 28:18

1这节解决什么问题

前面模型的输入都是一组固定长度的数(向量)。可一句话是一串这样的数,长度还会变;同一个词在不同句子里意思不同,固定窗口又盖不住整句。

2一句话讲清

让每个位置自己决定「该参考句中哪些位置、各参考多少」,再把那些位置的内容按比例混进自己的表示——这就是自注意力。

3通俗解释

  1. 每个位置的向量先变出三种角色:查询、匹配线索、实际内容(课程里叫 query、key、value)。查询负责发问,匹配线索负责被比对,实际内容是被取走的信息。这一行只是名字对照,不用记流程。
  2. 拿这个位置的查询,去和句中每个位置的匹配线索比一比,越像分数越高;把这一行分数变成「加起来等于一的比重」,就得到「该看谁、看多少」。
  3. 按这组比重,把所有位置的实际内容加权混起来,就是该位置的新表示。谁比重高,新表示里就更多带着谁的信息。
  4. 所有位置可以同时算,所以训练能并行;代价是要两两比较,句子长一倍,比较的次数大约变四倍。

4一个例子

讲义例子

讲义用「我看见一把锯子」这类句子说明:同一个词在不同句子里角色不同,光看它自己分不出来,要看它周围。自注意力做的就是让这个词主动去「问」整句:跟谁关系大,就把谁的信息多拿一点过来。所以同一个词,在「锯木头」和「别锯了」里得到的表示可以不一样。

5常见误区

  • 以为自注意力只能用于语言。语音的每一帧、图像的每个小块、图的每个节点,只要是一组向量都能用。
  • 以为查询、线索、内容来自三份不同输入。三者都来自同一个输入,只是各自乘了不同的可学习权重。
  • 以为比重是按列归一化。是按「每个位置的这一行」归一化:一个位置分给全句的比重加起来是一。

6和相邻几节的关系

P37 接着讲多头、位置信息,以及它和卷积、循环网络的关系;P47、P48 把这个模块堆成编码器与解码器。

730 秒回顾

输入是一组变长的向量;每个位置用自己的查询去比对全句,得到「看谁、看多少」;再按比重混合内容;能并行,代价是两两比较;不给位置信息就分不清先后。

8小自测

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

1. 自注意力里「比重」是怎么用的?

每个位置得到一组加起来等于一的比重,表示它该参考句中哪些位置、各参考多少;再用这组比重把各位置的内容混合成自己的新表示。

2. 不给位置信息,模型还能分清词的先后吗?

不能。这一步本身对顺序不敏感:打乱输入,输出只是跟着打乱。顺序要在进入这一步之前另外加进去。

9来源

来源与说明(点开可查)

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

对应讲义页码:self_v7.pdf 第 2–25 页

回到顶部