佛山网站推广怎么做,wordpress扁平模板,示范高职建设网站,手机网站与app在self-attention 基础上记录一篇Transformer学习笔记 Transformer的网络结构EncoderDecoder 模型训练与评估 Transformer的网络结构
Transformer是一种seq2seq 模型。输入一个序列#xff0c;经过encoder、decoder输出结果也是一个序列#xff0c;输出序列的长度由模型决定… 在self-attention 基础上记录一篇Transformer学习笔记 Transformer的网络结构EncoderDecoder 模型训练与评估 Transformer的网络结构
Transformer是一种seq2seq 模型。输入一个序列经过encoder、decoder输出结果也是一个序列输出序列的长度由模型决定。
seq2seq可以解决包括机器翻译、语音识别、语法解析、多标签分类问题等。还可以用于目标检测任务。 Transformer的网络结构
Encoder
Transformer的编码器由多个self-attention block堆叠构成。 Transformer Encoder对应网络结构中这一部分 multi-head attention模块就是Multi-head self-attention结构 self-attention block的结构如图 self-attention block的输入向量为原始输入或者隐藏层的输出向量。
操作将当前向量的qi 向量与序列中所有其他向量的kj做点乘计算attention score 记为αi经过softmax得到αi 再与向量vi 做点乘得到attention 操作的输出。multi-head将得到的qi 向量分别与n个矩阵做点乘head设置为n说明要提取n中不同的相关性。 每一个输出向量结果接一个Fully Connected完成一个self-attention block
另外Encoder中增加了AddNormresidual connection和layer normalization。 在self-attention结构和Fully connected结构上都上增加了残差连接将输入向量与输出的向量相加得到最终输出结果。在transformer中使用的是layer normalization。 layer normalization 与 batch normalization 对于batch normalization,在同一个mini batch 内做归一化处理向量中有几个channel就做几次normalization 操作 对于layer nromalization在同一个向量内部向量中有几个dimention就做几次normalization操作。 在卷集中使用batch normalization;在RNN中使用Layer Normalization. 对于RNN网络的动态输入当batch较小时batch normalization效果不好 时序特征向量一个batch 中的特征长度并不是相同的。 Decoder
Transformer的decoder结构如图
AutoRegress(AT) Encoder的输出结果一部分作为decoder的输入同时还有一个特殊的token BEGIN输入到decoder中经过softmax得到一个长度为L的向量。 L表示期望输出的内容的所有可能情况1END。例如机器翻译任务英文翻译成中文输出向量的长度为所有可能输出的汉字的集合。 输出的结果每一个向量对应属于每一个结果的概率取概率最大的取值该结果为当前输入对应额decoder输出结果。 将所有以往的输出结果和START一同输入到decoder,相同的方法获得输出的结果。 decoder不仅需要训练输出向量的内容还要训练输出向量的长度。当输出向量为“END”说明说明该序列输出结束。 decoder中的multi-head attention是带有masked,因为decoder的输出结果是一个一个输出的训练decoder模型希望它能够根据已有的输出信息得到输出结果decoder只能看到左侧的内容不能看到右侧的内容。 Non-AutoRegress(NAT) NAT将一次输出整个序列。一次同时输入多个BEGIN如何确定一次输入的BEGIN的数量如何确定输出序列的长度。 1训练一个classifier网络来训练输出序列的长度 2指定一个分厂大的值作为输出序列的长度知道输出END只保留END之前的内容作为decoder的输出。 Non-AutoRegress(NAT)的优点 1能够实现并行处理速度更快 2可以控制输出序列的长度
AutoRegress(AT)和Non-AutoRegress(NAT)对比 Encoder和decoder之间如何传递信息 通过cross attention将encoder的输出与decoder中间的attention block连接。 将encoder输出的k向量与decoder输出的q向量计算点乘在将得到的结果与v向量做点乘得到的向量结果再进行Fully connection操作。实现cross attention 这一过程计算decoder中的节点与encoder中所有节点的相关性。
模型训练与评估
对于decoder的训练是带有ground truth的每一个输出的向量斗鱼ground truth计算一个损失值计算cross entropy loss.可以看做是有几个输出向量就做了几次分类问题。min(cross entropy loss).