Transformer模型-7- Decoder-笔记

概述

Decoder也是N=6层堆叠的结构,被分为3小层: 两个注意力层和前馈网络层。

Encoder与Decoder有三大主要的不同

  1. 第一层 Masked Multi-Head Attention: 采用Masked操作
  2. 第二层 Multi-Head Attention: K, V 矩阵是使用Encoder编码信息矩阵C 进行计算,而Q使用上一个Decoder的输出计算。
  3. 概率计算输出: Linear和Softmax作用于前向网络层的输出后面,来预测对应的word的probabilities

Encoder的输入矩阵用X表示,输出矩阵用C表示

流程图表示如下:

graph LR A(Output Embedding) --Positional Encoding--> B[带掩码的多头注意力层] --> C[多头注意力层] --> D[前馈网络层] --特征值--> D1[Add&Norm] --> E[Linear] --> F[Softmax] --> G(OutputProbilities) style A fill:#eee,stroke:#333,stroke-width:1px; style G fill:#eee,stroke:#333,stroke-width:1px;

分析如下:

  1. 我们将 输入转换为嵌入矩阵,再加上位置编码,输入解码器
  2. 解码器收到输入,将其发送给带掩码的多头注意力层,生成注意力矩阵M
  3. 将注意力矩阵M和Encoder输出的特征值R作为多头注意力层的输入,输出第二层注意力矩阵
  4. 从第二层的多头注意力层得到注意力矩阵,送入前馈网络层,后者将解码后的特征作为输出
  5. 第4步的输出经过Add&Norm后,做linear及Softmax回归,并输出目标句子的特征

Decoder 的输入

Decoder的输入结构与encoder的一样。

Transformer模型-4-Inputs-笔记

Masked Multi-Head Attention

输入组成

由如下几个部分组成

1.初始输入:前一时刻Decoder输入+前一时刻Decoder的预测结果 + Positional Encoding

3.中间输入:Encoder Embedding

4.Shifted Right:在输出前添加起始符,方便预测第一个Token

Shifted Right是在起始位添加起始符,让整个输入向后移一位,是为了在T-1时刻需要预测T时刻的输出。

举例: I like eat hamburg

正常的输出序列位置关系如下:

arduino 复制代码
0:"I"
1:"like"
2:"eat"
3: "hamburg"

在执行的过程中,我们在初始输出中添加了起始符,相当于将输出整体右移一位(Shifted Right),所以输出序列如下:

bash 复制代码
0: </s>【起始符】
1: "I"
2: "like"
3: "eat"
4: "hamburg"

这样我们就可以通过起始符预测"I",也就是通过起始符预测实际的第一个输出。

具体步骤

Time Step 1

  • 初始输入: 起始符 + Positional Encoding
  • 中间输入:(我爱吃汉堡)Encoder Embedding
  • Decoder:产生预测I

Time Step 2

  • 初始输入:起始符 + I + Positonal Encoding
  • 中间输入:(我爱吃汉堡)Encoder Embedding
  • Decoder:产生预测like

Time Step 3

  • 初始输入:起始符 + I + like + Positonal Encoding
  • 中间输入:(我爱吃汉堡)Encoder Embedding
  • Decoder:产生预测eat

Time Step 4

  • 初始输入:起始符 + I + like + eat + Positonal Encoding
  • 中间输入:(我爱吃汉堡)Encoder Embedding
  • Decoder:产生预测hamburg

Masked

主要用途

  1. 引入类对焦矩阵,实现并行解码加速整个训练过程;
  2. 在生成attention时保存信息不泄露(没有生成不该生成的数据)

图示Masked的工作方式: I like eat hamburg

  1. Masked Multi-Head Attention 层:在生成I 时不能看到Like、eat、hambugers更不能生成他们之间的相关度信息,解码时只能看到自己或<起始符>,后面的信息都隐掉,即masked

上图表示:输入矩阵 + Mask = Mask矩阵

图中黑色框表示被Mask的部分

  1. Multi-Head Attention则是把Encoder信息与Decoder信息进行整合

并行化处理-原因分析

早在Seq2Seq 模型采用的是逐步Decoder,在Encoder时一次性输入全部数据,生成第一个字时,会先结合 <起始符> ,再生成;然后用生成第二个字符时 由第一个字符再结合起始符达成,以此类推,整个过程是串行化的过程

而在大规模的模型训练过程中,解决效率的的关键就是把串行计算改为计算(并行解码) ,即一次性输入,一次性解码。当一次性将信息全部输入,模型一次计算可能会计算所有数据。但并行会影响到结果输出 ------ 因为计算时如数据全可见,会对预测会有影响,而加入了Masked是可以避免数据泄露的。我们输入时还是一次性输入全部数据,在Attention时追加一个Masked保证一个字符只能看到前一个字或起始符。

公式推导

1.得到Q,K,V: 输入数据:I like eat hamburg,进行三次线性变化,得到Q,K,V。

2.Masked计算 :当 <math xmlns="http://www.w3.org/1998/Math/MathML"> Q ∗ K = Q K T Q*K=QK^T </math>Q∗K=QKT得到相当度信息后,再和Masked矩阵做按位相乘得到masked <math xmlns="http://www.w3.org/1998/Math/MathML"> Q K T QK^T </math>QKT 。Masked保存此次解码只看到该看到的,隐去看不到的或不应该看到的。

3.得到Attention(Q,K,V)公式 :拿到 <math xmlns="http://www.w3.org/1998/Math/MathML"> s o f t m a x ( Q K T d k ) softmax(\frac{QK^T}{\sqrt{d_k}}) </math>softmax(dk QKT) 结果后再和 V(value) 做一次 Attention计算得到Attention(Q,K,V)

公式:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) ∗ V Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}}) * V </math>Attention(Q,K,V)=softmax(dk QKT)∗V

Multi-Head Attention

也称 Cross Multi-Head Attention 即是结合Encoder与Encoder而得到的信息,获取整合的Attention(Q,K,V),其中数据获取来源分为:

Q : 由masked Multi-head Attention输出,再经过Add&Norm后得到的数据
K\V: 是Encoder输入出经过两次线性变化的而得数据,其中的3/4分给了Multi-Head Attention

最后 将所有的Q (Decoder端所有的 token) 去和encoder的输出的数据一起计算,来衡量他们之间的相关度,最后结合Value生成Attention。

Decoder -输出

transformer的output probabilities,从字面上我们即可理解transformer的输出token是由各个词的概率计算而得。

原理: 数据经过 (cross) multi-head Attention及线性变化之后,输出softmax,最后输出数据,输出则是每个位置上单词的概率分布

结构分析

结构图 描述
- Linear:将输出扩展至Vocabulary Size - Softmax: 概率化选取概率最高的作为预测结果 - 输入是经过词嵌入(word embedding)处理后的词向量序列,而输出则是每个位置上单词的概率分布

用输出softmax预测输出单词

用Softmax来预测下一个单词,通过之前的各种操作后得到一个最终输出Z来预测单词:

又因为Mask,使得单词的输出Z0只包含<起始符>的信息,如下:

起止符这里用begin表示
先贴这个图,后面再将原理补上,主要是想强调输出是在概率计算而得。

记录于2023年11月7日 发表于8日凌晨

相关推荐
2403_875736879 分钟前
道品科技智慧农业中的自动气象检测站
网络·人工智能·智慧城市
学术头条33 分钟前
AI 的「phone use」竟是这样练成的,清华、智谱团队发布 AutoGLM 技术报告
人工智能·科技·深度学习·语言模型
准橙考典34 分钟前
怎么能更好的通过驾考呢?
人工智能·笔记·自动驾驶·汽车·学习方法
ai_xiaogui37 分钟前
AIStarter教程:快速学会卸载AI项目【AI项目管理平台】
人工智能·ai作画·语音识别·ai写作·ai软件
孙同学要努力42 分钟前
《深度学习》——深度学习基础知识(全连接神经网络)
人工智能·深度学习·神经网络
喵~来学编程啦1 小时前
【论文精读】LPT: Long-tailed prompt tuning for image classification
人工智能·深度学习·机器学习·计算机视觉·论文笔记
深圳市青牛科技实业有限公司2 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
水豚AI课代表2 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
几两春秋梦_2 小时前
符号回归概念
人工智能·数据挖掘·回归
用户691581141653 小时前
Ascend Extension for PyTorch的源码解析
人工智能