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

Transformer

在这里插入图片描述

前言

transformer是一个sequence-to-sequence(seq2seq) 的 model
input a sequence,output a sequence.
The output length is determined by model.
例如
语音辨识:
在这里插入图片描述
那么为什么不能把以上三种模型结合起来,进行语音识别呢?
因为有一些语言根本没有文字。Language without text.

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

怎么做Seq2seq?

在这里插入图片描述
Seq2seq model的起源:《Sequence to Sequence Learning with Neural Networks》
在这里插入图片描述

Encoder

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
bert其实就是transformer的encoder

transformer的encoder不一定要这么设计,有更多好的设计:
在这里插入图片描述

Decoder——Autoregressive(AT)

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

Masked Multi-Head Attention

decoder中Masked Multi-Head Attention中的Masked
不考虑右边input的资讯
在这里插入图片描述
在这里插入图片描述
为什么要加masked?
对decoder而言,是现有a1再有a2…,没有办法把后面的考虑起来。

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

Adding “Stop Token”

Decoder必须自己决定input sequence的长度,但是我们不知道输出的正确的长度为多少。
在这里插入图片描述
因此 我们加入一个stop token:END(EOS)
在这里插入图片描述

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
在这里插入图片描述
在这里插入图片描述

Training

在这里插入图片描述
我们希望所有的cross entropy的总和最小
Teacher Forcing:using the ground truth as input. 输出的时候告诉decoder正确答案
在这里插入图片描述

Scheduled Sampling

exposure bias:训练时decoder看到的是正确信息,测试时不是。但是如果训练时,decoder只看过正确的东西。则在测试时看到错误的东西的时候可能会导致整个结果坏掉,解决的方向:在训练的时候加入一些错误的东西。
在这里插入图片描述
但是传统的scheduled sampling会伤害到transform平行化的能力。具体参考以下文章。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是小蔡呀~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值