赞
踩
本文是对台大李宏毅教授讲授的Transformer课程的笔记总结,附上课程和ppt的链接~方便广大友友们自取
13.【李宏毅机器学习2021】Transformer (下)哔哩哔哩bilibili
目录
2.区分 multi-label classification和multi-class classification
Decoder 2:Non-autoregressive(NAT)
在学习Transformer模型之前,我们需要花一点篇幅来介绍Seq2seq模型。
因为,Seq2seq模型是Transformer模型的基础。
在Transformer模型中,虽然采用了自注意力机制来替代了Seq2seq模型中的RNN或LSTM网络,但整个模型仍然保持了Seq2seq模型的架构,即编码器-解码器架构。此外,对于初学者来说,先了解Seq2seq模型可以更好地理解Transformer模型的工作原理和结构。
Transformer是一个sequence-to-sequence(seq2seq)的模型。即,input是sequence,output也是sequence,但是output的长度不确定(非1.n-n 2.n-1),长度完全由模型自己决定的。
例如,输入音频,通过声音处理,输出辨识出的文字,“我想吃香蕉”。其中,这个文字的长度就是难以确定的,需要模型决定。
以台语为例,其文字没有很普及,如果只是语音辨识,输出的“母汤”我们根本就看不懂,于是我们想到了speech translation,就直接翻译为“不行”。
台语音频-------》繁体中文
任务:产生parsing tree
而树状结构可以对应为一个sequence
multi-label:一篇文章可以对应多个label,可用seq2seq硬做!机器自己决定一篇文章属于多少class
通过以上的种种应用,我们不难看出,seq2seq的应用范围十分宽广,很多问题都可以用seq2seq暴力解决。
该部分的收尾部分,我们通过一个比较表格,对seq2seq的特点进行总结,并与Transformer进行对比。这可能有利于读者们对于接下来的Transformer重点结构有一个大致的印象。
特征 | Seq2seq模型 | Transformer模型 |
---|---|---|
架构 | 编码器-解码器架构 | 编码器-解码器架构 |
输入序列处理 | 按顺序输入RNN/LSTM网络 | 并行处理每个元素(自注意力机制) |
语义编码向量C | 由编码器生成,用于解码器生成输出序列 | 由编码器生成,用于解码器生成输出序列 |
训练速度 | 相对较慢(RNN/LSTM网络按顺序处理) | 相对较快(并行处理) |
主要技术 | RNN/LSTM网络 | 自注意力机制、残差连接、归一化等 |
优化和改进方面 | - | 结构上的优化(自注意力机制替代RNN/LSTM)和性能上的改进(残差连接、归一化等) |
这个表格总结了Seq2seq和Transformer模型之间的主要异同点,包括架构、输入序列处理、语义编码向量C、训练速度以及采用的主要技术。
接下来,我们就来具体学习Transformer的结构。
Transformer模型的结构可以总结为以下几个部分:
对整个模型结构有一个大致的了解后,我们应该能够看出,类似于Seq2seq模型,Transformer模型中最重要的就是Encoder-Decoder结构。
接下来,我们就分别来学习Encoder和Decoder结构。
在Transformer模型中,Encoder部分主要负责将输入序列(如一段文本)转换为一种中间表示,这种中间表示将用于Decoder部分生成输出序列。
数学意义上理解,Encoder的目的就是,输入一排向量,输出一排同等数量的向量。(见下图左边)
Encoder部分的结构(上图右边)可以进一步细分为以下几个部分:
在multi head attention层的具体计算可见上一篇博客注意力机制-CSDN博客,在此不赘述。
在encoder中,由多个编码器层堆叠而成,具有相同的结构block。注意,一个block相当于多个layer,所以我们不称之为layer,而是使用block的名称。
一个block中,包含了:
在transformer中一个block的步骤如下,主要改进为residual connection架构:
self-attention子层中的residual connection(残差连接)被用来添加输入数据和输出数据之间的直接连接。(输入和输出相加一次)有以下2点作用:避免梯度消失或梯度爆炸问题;残差连接可以使输入数据和输出数据的形状保持不变,避免信息丢失,并且可以使模型的训练速度和精度得到提高。
得到residual后对其进行normalization(layer normalization),不用考虑batch。
norm完后,在FC层也进行residual
residual后,再norm
最后得到一个block的输出
(其中,add&norm=residual + layer norm;feed forward=FC)
PS:这个复杂的block在BERT中也有用啦~~~
Transformer的Decoder结构有两种主要类型:Autoregressive Decoder (AT)和非自回归性Decoder (NAT)。
在声音识别中,decoder读入encoder的输出(一排vector),产生语音辨识的结果——一段文字。
我们对Encoder和Decoder的架构进行一个比较,可以看出:
二者大体结构是相似的
Decoder有一个特殊的Masked Self-attention,而不是普通的Self-attention
于是,我们自然而然地需要对这个决定Encoder和Decoder之间不同的结构——Masked Self-Attention进行探究。
了解完两种Decoder后,我们需要进一步探索Encoder和Decoder之间的关系,如何相互连接。
在Transformer模型中,Encoder和Decoder是两个主要组成部分,它们之间的关系如下:
简单来说,Encoder负责将源语言序列编码为一组上下文向量,而Decoder则利用这些上下文向量和上一时刻的输出预测目标语言序列中的下一个词。这两个部分通过上下文向量进行信息的传递和交互,从而实现了从源语言到目标语言的翻译过程。
其中重要的在于cross attention
在Transformer模型中,Encoder和Decoder之间的Cross Attention实际上是指它们之间的交叉注意力层。具体来说,Cross Attention是指Decoder在生成目标语言序列时,利用输出的上下文向量进行注意力计算(masked sat)的过程。
在Cross Attention中,Decoder会计算当前时刻的输出与Encoder输出的上下文向量之间的注意力权重,然后将这些权重应用于上下文向量,以获取一个加权的上下文表示。这个加权的上下文表示将作为Decoder下一个时刻的输入,帮助Decoder更好地生成目标语言序列。
需要注意的是,Cross Attention只在Decoder中存在,而Encoder中只有Self Attention。这是因为Encoder只需要对输入序列进行编码,而不需要考虑输出序列的生成。而Decoder则需要利用Encoder的输出和已经生成的输出序列来预测下一个词,因此需要利用Cross Attention来获取上下文信息。
总之,Cross Attention是Transformer模型中Encoder和Decoder相互配合过程中的重要环节,它有助于Decoder更好地利用Encoder输出的上下文信息来生成目标语言序列。
Copy mechanism
guided attention
beam search
optimizing evalution
感觉看李宏毅老师的视频比较方便的一点是,易于理解整个流程,比较好听懂。但是回顾整理笔记的时候就会发现,理解和记忆不是那么深刻。所以结合其他博客全面一点整理了~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。