目录
1 transformer原始架构
2 三个注意力模块的区别和翻译过程中的作用
2.1 编码器中的多头自注意力(无掩码)
2.2 解码器中的多头掩码自注意力(有掩码)
2.3 解码器中的多头编解码注意力(无掩码)
2.4 我的通俗理解
abstract:
Masked Multi-Head Self-Attention(带掩码的多头自注意力)
Multi-Head Encoder-Decoder Attention(多头编码器-解码器注意力)
1 transformer原始架构
然后在Transformer彻底剖析(0): Transformer的Decoder的输入输出都是什么
已经写了自回归的问题,接下来整理一下这里面三个注意力模块有什么区别,以及作用分别是什么。
2 三个注意力模块的区别和翻译过程中的作用
从前面图中可以看到,这三个注意力模块分别是
- 编码器中的多头自注意力模块,不带掩码
- 解码器中:带掩码的多头自注意力,
- 解码器中:多头编解码注意力,不带掩码
2.1 编码器中的多头自注意力(无掩码)
- 作用:完整理解中文句子"我爱你"的内部关系
- 过程:当处理"爱"这个词时,模型能同时看到"我"和"你",理解这是一个"我→爱→你"的关系结构
- 结果:创建了包含整个句子语义的"信息库",就像把这句话的完整含义打包存好
- 关键:这里没有掩码,所以每个词都能看到句子中所有其他词
2.2 解码器中的多头掩码自注意力(有掩码)
- 作用:理解已经生成的英文部分
- 过程:假设正在生成第三个词(you),模型只能看到前面已生成的"I love",看不到未来要生成的内容
- 为什么需要掩码:防止模型"作弊",保证翻译是按顺序一个词一个词生成的
- 比喻:就像翻译员用手盖住还没翻译的部分,只看已经写下的英文
2.3 解码器中的多头编解码注意力(无掩码)
- 作用:连接源语言和目标语言的"桥梁"
- 过程:当决定下一个英文词时,模型会:
- 先看已生成的"I love"
- 再对照中文"数据库"(编码器输出)
- 发现"I love"对应了"我爱",接下来应该关注"你"
- 关键:没有掩码,可以查看整个中文句子的编码表示
2.4 我的通俗理解
编码器相当于解析原文我爱你的中文内部语义信息,相当于创建了一个数据库,等待后面编解码注意力查询, 然后解码器中第一个注意力是相当于理解我现在已经翻译出来的英文原始句子信息,这两个目前为止就是相当于一个理解中文全文自身,一个相当于理解已经翻译出来的英文自身,然后编解码注意力相当于在理解了目前已经翻译出来的英文自身的基础上,然后去看看中文里面我接下来该翻译什么了,然后就相当于中英文状态结合去翻译,其实这就相当于翻译的时候,一边看看原文,一遍看看已经翻译出来的几个单词,综合决定接下来翻译成什么
【Encoder】 我 爱 你 ↓ “中文整体语义数据库” 【Decoder 每一步】 1. 看看我已经翻译了什么(英文自己) 2. 带着这个状态去查中文语义 3. 把中英文信息融合 4. 决定下一个英文词