【Transformer】——李宏毅机器学习笔记

Transformer

【Transformer】——李宏毅机器学习笔记_第1张图片

前言

transformer是一个sequence-to-sequence(seq2seq) 的 model
input a sequence,output a sequence.
The output length is determined by model.
例如
语音辨识:
【Transformer】——李宏毅机器学习笔记_第2张图片
那么为什么不能把以上三种模型结合起来,进行语音识别呢?
因为有一些语言根本没有文字。Language without text.

台语、闽南语(Hokkien),其方言一般人比较难懂。
所以我们期待说,机器可以做语音的翻译。
【Transformer】——李宏毅机器学习笔记_第3张图片
第四句上:机器在倒装的句子上没有学习起来。
【Transformer】——李宏毅机器学习笔记_第4张图片
语音辨识: 语音——>文字
语音合成: 文字——>语音
【Transformer】——李宏毅机器学习笔记_第5张图片
在文字上,也很广泛的使用了Seq2seq
【Transformer】——李宏毅机器学习笔记_第6张图片
关于语言处理更多的应用:
QA(Question Answering)
【Transformer】——李宏毅机器学习笔记_第7张图片
在某些问题上,你可能不认为它是seq2seq model的问题,但是你也可以用seq2seq model去硬解它。
例如:
Seq2seq for Syntactic Parsing
输出是一个树状的结构,但是可以硬把它看作一个序列结构
具体可以读 《Grammar as a Foreign Language》
【Transformer】——李宏毅机器学习笔记_第8张图片
Seq2seq for Multi-label Classification
一个东西可以属于多个class
例如,将一个文章丢到一个分类器中,分类器每次只能输出相同数目的答案,但是这个文章可以属于多个类别,且类别数不固定。这时可以使用seq2seq model硬做。
【Transformer】——李宏毅机器学习笔记_第9张图片
【Transformer】——李宏毅机器学习笔记_第10张图片
Seq2seq for Object Detection
例如:
给机器一张图片,让机器自动把斑马框起来
【Transformer】——李宏毅机器学习笔记_第11张图片

怎么做Seq2seq?

【Transformer】——李宏毅机器学习笔记_第12张图片
Seq2seq model的起源:《Sequence to Sequence Learning with Neural Networks》
【Transformer】——李宏毅机器学习笔记_第13张图片

Encoder

其所需要做的事情:给一排向量输出另外一排向量。
这个工作RNN、CNN也可以做。在Transformer 里面,用的encoder是self-attention。
【Transformer】——李宏毅机器学习笔记_第14张图片
架构解释:
encoder分成了很多个block,每一个block都是输入一排向量、输出一排向量。
注意:不要说每一个block是一个layer,因为一个block是好几个Layer组合。
【Transformer】——李宏毅机器学习笔记_第15张图片
事实上,在原来的transformer里面做的是更复杂的事情:
residual connection——残差网络
layer norm——不用考虑batch的资讯,直接去计算不同的维度,同一个example、不同feature的 mean和standard deviation。

【Transformer】——李宏毅机器学习笔记_第16张图片
【Transformer】——李宏毅机器学习笔记_第17张图片
【Transformer】——李宏毅机器学习笔记_第18张图片
bert其实就是transformer的encoder

transformer的encoder不一定要这么设计,有更多好的设计:
【Transformer】——李宏毅机器学习笔记_第19张图片

Decoder——Autoregressive(AT)

Begin(Special Token)——ESO,代表开始,使用one-hot vector来表示。
decoder首先要读取encoder的输出。
decoder先会输出一个distribution,选取得分最大的值(概率)输出。
【Transformer】——李宏毅机器学习笔记_第20张图片
然后把“机”当做他的另一个输入,根据 BEGIN和“机” 来决定输出 “器”,然后过程反复持续下去。
issue:前一个输出错误会影响后续的输出,一步错步步错。 后续会讲如何避免这个问题,先无视这个问题。
【Transformer】——李宏毅机器学习笔记_第21张图片
【Transformer】——李宏毅机器学习笔记_第22张图片
将encoder和decoder部分比较一下,我们发现,把右边红框部分去掉,两者没有太大区别。
【Transformer】——李宏毅机器学习笔记_第23张图片

Masked Multi-Head Attention

decoder中Masked Multi-Head Attention中的Masked
不考虑右边input的资讯
【Transformer】——李宏毅机器学习笔记_第24张图片
【Transformer】——李宏毅机器学习笔记_第25张图片
为什么要加masked?
对decoder而言,是现有a1再有a2…,没有办法把后面的考虑起来。

—————————————————————分割线————————————————————

Adding “Stop Token”

Decoder必须自己决定input sequence的长度,但是我们不知道输出的正确的长度为多少。
【Transformer】——李宏毅机器学习笔记_第26张图片
因此 我们加入一个stop token:END(EOS)
【Transformer】——李宏毅机器学习笔记_第27张图片

Decoder——Non-autoregressive(NAT)

我们如何决定NAT的输出长度?
方法一:再设一个classifier,吃decoder的input,输出一个数字,代表NAT decoder的输出长度。
方法二:设置一个长度上限,找到END,直接忽略掉其右边的输出。

NAT优点:
(1)NAT可以平行化。AT不可以。因此在速度上NAT较快。
(2)比较可以控制其输出的长度。

NAT的表现往往不如AT。(Why?Muti-modality)

Cross attention

是连接encoder和decoder这一块的桥梁,两个输入k v来自encoder,一个输入query来自decoder
【Transformer】——李宏毅机器学习笔记_第28张图片
【Transformer】——李宏毅机器学习笔记_第29张图片

Training

【Transformer】——李宏毅机器学习笔记_第30张图片
我们希望所有的cross entropy的总和最小
Teacher Forcing:using the ground truth as input. 输出的时候告诉decoder正确答案
【Transformer】——李宏毅机器学习笔记_第31张图片

Scheduled Sampling

exposure bias:训练时decoder看到的是正确信息,测试时不是。但是如果训练时,decoder只看过正确的东西。则在测试时看到错误的东西的时候可能会导致整个结果坏掉,解决的方向:在训练的时候加入一些错误的东西。
【Transformer】——李宏毅机器学习笔记_第32张图片
但是传统的scheduled sampling会伤害到transform平行化的能力。具体参考以下文章。
【Transformer】——李宏毅机器学习笔记_第33张图片

你可能感兴趣的:(李宏毅机器学习笔记,transformer,语音识别)