Transformer是现在NLP领域最大的网红特征抽取器,基本现在所有的前沿研究都基于Transformer来做特征提取。《Attention is all you need》Transformer是一个用于机器翻译的编、解码器结构,这也是它为什么叫Transformer的原因。因为在序列编码中强大的特征提取能力和高效的运算特性,Transformer被从编、解码结构中抽离出来,NLP中目前最流行的特征提取器。
Transformer其实就是一个seq2seq的model!!!
-
- :语音方面
还有语音合成。(end to end)
-
- 文字方面:
对于多数语音任务,指定个性化模型,可以取得更好的效果。
文法刨析:输入是一个seq,输出是一个树状的结构。
把输出看作一个序列:
做出结果
-
- Multi-class classification和multi-label classification.
Multi-class classification:有多个类,只属于一类。(不止一个类,需要从数个类种选一个class)
multi-label classification:同一个东西,属于多个类别。
机器自己决定,每一篇文章要输多少个class。
-
- 用seq2seq做目标识别。
以上讲解如何使用及其场景。
如何做seq2seq的model。
起源:
一般结构:
Transform:
Encoding:
Transform中的encoding用的就是self-attention.
每一个block做了好几层神经网络的事情,所以不叫层。
一个block解析:
Transform中加入设计:不止输出vector,输出的vector还需与input相加,获得一个新的输出,将输出使用LN处理获得一个输出向量,这个输出向量才是FC的输入。
以下才是一个完整的transform中的block:
Transform的encoding也可不用上述方法设计:
论文1:将LN与残差结构交换。
论文2:为什么BN不如LN。
Decoding部分:(decoding其实有两种)
1)种类一:(以语音识别为例)--àautoregressive
(先以某种方法将encoding的输入读入到decoding中,后续在讲方法)
Decoding如何产生文字:首先需要给定一个特殊符号代表开始:(本来的语音中多加一个特殊的符号)begin用one hot编码表示,输入decoder中,输出一个向量。
输出的向量是一个长度非常长的向量,要看decoder的任务是什么,如果是一段语音输出为文字,则该输出向量就是包含很多可能文字的向量(decoder可能输出的中文字全部列出来)。
产生向量之前会先进行softmax,分数最高的是最终的输出。再将该输出当作下一次的输入。
依次持续该过程:
从上可以decoder看到的输入是前一时刻的输出,那么前一时刻有问题,就有可能导致一步错、步步错。
Decoder的内部结构:
Transform中的encoding和decoding,我们遮住decoding中间的一部分,可以发现两者差别不大:
Decoder中应用的Masked self-attention:
以上产生的原因是因为self-attention中的a1,a2,a3,a4是一次性产生的,可是transform的decoding部分是现有a1,然后才有a2依次产生,无法考虑后续部分。
Decoding的输出长度是自己学习出来的。机器不知道何时停止。
需要自己准备一个特殊的end符号。希望能够获得的结果,输入习可以直接结束。
2)种类二:Non-autoregressive
方法一是一次产生一个字,NAT是一次产生一个句子。
问题1:不知道输出句子的长度?故应该放多少个begin,怎么确定?
另外学一个classfier,输入是encoder的input/output,输出是一个数字,即decoder要输出的长度。
另一种方法,输出一个非常长的序列,看end的位置,end右边的部分相当于没有输出。
优点:
并行的速度快、能够控制输出的长度。
AT的效果更好一点。
Encoder与decoder之间如何传递信息:
Encoder与decoder中间的cross attention:
Q是decoder种产生的,k和v是encoder种产生的。
不同cross attention方式:
如何训练:
计算gt与distribution的交叉熵越小越好。
每一个输出都有end符号。
在此过程中decoder的输入为正确答案。(teacher forcing)
训练seq2seq的tips:
Tips1:copy mechanism:有些东西并不需要学习,直接从输入复制就可以了。
类似于从文章到摘要(收集百万篇文章)。
Tips2:机器在学习过程中可能会漏学习一些东西,所以需要:guided attention。(例如强迫学习时固定从左向右学习)
Tips3:beam search:比较有效的方法,找一个不是完全精准的solution。(有的情况效果好,有时候没有用),根据任务判断效果,一般对于机器不需要发挥创造力时效果较好。
评价指标:decoder的输出完整句子与GT完整句子做比较,找BLEU score最高的;训练过程中时每个单词进行比较,做交叉熵loss。
Tips4:scheduled sampling:因为在训练过程中,decoder应用的都是正确的GT训练,但在验证时,他有可能会产生错误的输出,所以在训练过程中给gt加上scheduled sampling.
训练过程中只看到正确的答案,遇到错的问题他不会解决。
解决方案:但他会伤害到transform的平行能力。