【Transformer】Transformer理论知识

Transformer介绍

Transformer就是一个sequence-to-sequenceSeq2seq)的module

  • 第三种:Seq2seq任务:输入 N N N 输出 N ′ N' N(由机器自己决定输出的个数)
  • 例如:语音辨识(一段声音变为文字)、机器翻译任务(文字变为其他语言文字)、语音翻译(一段语音翻译为其他语言文字)

语音辨识:输入声音,输出中文 就是语言辨识。(例如谷歌的pixel4,使用 N N N to N N N 的神经网络,使用RNN transducer
语音合成:输入中文,输出声音就是语音合成。 (音标—>语音 (使用seq2seq model))

  • Seq2seqNLP有很多应用,很多问题可以看成QA
    很多问题也可以使用Seq2seq硬解,例如文法剖析(Grammar as Foreign Language(14年文章)),例如Muti-label Classification(多标签分类,机器自己决定多少个class)、目标检测等。

Seq2seq结构

Seq2seq 结构会分为俩块:EncoderDecoder
input一个sequence由Encoder负责处理,将处理好的结果丢到Decoder决定输出什么样的sequence(起源:14年9月提出用于翻译(Sequence to Sequence Learning with Neural Networks) )

Encoder结构

Encoder:给一排向量输出另外一排向量。(CNN、RNN、Self-attention都可以做到)

:在 TransformerEncoder中用的就是Self-attention

Encoder中会分为很多个Block,每一个Block都是给一排向量输出另外一排向量(每一个Block是好几个 layer 在处理)
Block中是:给一排向量先做Self-attention,再做FC,再输出另外一排向量。
在这里插入图片描述

在原来 TransformerBlock更为复杂:

给一排向量先做Self-attention,再加上input(a+b)(称为residual),再做 Layer normalization(计算输入向量的meanstandard deviation,做normalize),再做FC(也做residual),再做 Layer normalization,再输出。
在这里插入图片描述
在这里插入图片描述
Add&Norm :意思就是加上residual + Layer norm

Bert 中也会再用到,Bert 其实就是Transformer中的Encoder

:原始的transformer架构并不一定是最好的,做Layer normalization再做residual更换顺序。(文章On Layer Normalization in the Transformer ArchitecturePowerNorm:Rethinking Batch Normalization in Transformers)。
下图(a)是原始的transformer架构,(b)是更换顺序的架构
在这里插入图片描述

Decoder结构

Decoder有俩种:Autoregressive DecoderAT)、Non-autoregressive (NAT

Autoregressive Decoder(AT):

使用语音辨识做例子(输入一段声音,输出文字)
Encoder:输入一段声音向量,输入另外一排向量 ——> Decoder 产生语音辨识的结果。

Decoder流程
BEGIN或者BOS(begin of seqence)(special token)(one-hot编码) ——>(softmax)中文每一个字对应一个数值(也包括END)——>例如输出“机”字概率最高输出“机”字 —— >
“机”Decoder新的 inputone-hot 编码)和BEGIN ——>输出“器”——> BEGIN、"机"、"器"input —— > 输出"学"——>…

在这里插入图片描述

Decoder 看到的输入其实是它在前一个时间点自己的输出。Decoder 需自己决定输出sequence的长度。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(其中"机"会被变成 one-hot 的向量"机"1 其他都是 0Decoder输出是一个几率的分布,会让这二者越接近越好,所以会计算Ground truthdistributioncross entropy越好)

:每一次 Decoder 在产生一个中文字的时候,其实就是做了一次分类的问题。Decoder的输入就是sequence正确的答案,也称为Teacher Forcing
在这里插入图片描述

Encoder和Decoder对比和联系

在这里插入图片描述

transformer Decoder中的Block
Masked Muti-Head attention——> Add&Norm ——>
Cross attentionEncoderDecoder 之间的桥梁)两个输入来自 EncoderDecoder 提供一个输入——>Muti-Head attention——>Add&Norm——>Feed Forward——>Add&Norm

:其中Masked Muti-Head attention指:
之前 Self-sattention 产生 b 1 b^1 b1 是考虑了 a 1 a^1 a1 ~ a 4 a^4 a4 ,现在只能考虑左边的,例如 b 1 b^1 b1 能考虑 a 1 a^1 a1 b 2 b^2 b2只能考虑 a 1 a^1 a1, a 2 a^2 a2
在这里插入图片描述

Cross attention:

在这里插入图片描述
在这里插入图片描述
Cross attention中:
q q q来自 Decoder k k k v v v 来自 Encoder

Cross attention一开始来自 Seq2seq 模型(文章 Listen,attend and spell做语音辨识ICASS2016),那时候的 EncoderDecoder 都还是使用LSTM,但是Cross attention已经有了,Cross attention比先Self-attention早诞生。
在原始 Transformer 中: EncoderDecoder 都有很多层, Decoder 无论哪一层都是拿 Encoder 的最后一层的输出。
但是也有很多不同Cross attention的方式:
在这里插入图片描述

Non-autoregressive Decoder(NAT):

Autoregressive Decoder(AT)Non-autoregressive Decoder (NAT)区别:
NAT是一个步骤产生一整个句子。
Non-autoregressive (NAT)把一堆一排的BEGINToken都丢给它,让它产生一排Token就结束了(一个步骤完成句子的生成)。

在这里插入图片描述
NAT如何解决输出的长度
一种解决方法:用另外一个 ClassifierEncoder 的输出来预测一个 Decoder 需输出的长度——>多少个BEGIN
另外一种解决方法:或者输入很多BEIGIN,在输出的时候定一个END,右边的舍弃。

NAT是由 Transformer 以后有 Self-attentionDecoder 以后才有的,以前是LSTM或者RNN就算给一排BEGIN也无法同时产生全部的输出,需一个一个产生。

语音合成现在都可以使用Seq2seq的模型来做,TacotronATDecoderFastSpeechNATDecoder
NATPerformance往往都不如ATDecoderMuti-Modality问题

训练Seq2seq Model的Tips

训练 Sequence To Sequence Model(不局限 Transformer )的Tips:

Copy Mechanism

之前讨论中都要求 Decoder 自己产生输出,对很多任务来说 Decoder 可能没有必要自己创造输出,而是从输出复制一些(例如对话机器人、摘要)

:最早有从输入复制东西能力的模型:Pointer Network 后来有变形的Copy Network(文章Incorporating Copyting Mechanism in Sequence-to-Sequence Learning

Guided Attention

Seq2seq可能会犯低级的错误,例如漏字了(例如语音辨识,语音合成TTS)
要求机器去 Guide 领导这个 attention 的过程,要求在做 attention 的时候有固定的方式
解决方法方法例如:Monotonic AttentionLocation-aware attention
在这里插入图片描述

Beam Search

每次 Decoder 输出那个分数最高的 Token ,找分数最高的字 称为 Greedy Decoding ,但是可能不是最好的。
Beam Search为了找一个 Approximate,找一个估测的 Solution。(可能不是特别精准的 Solution

:有时候对 Decoder 来说,Beam Search不一定就是好的(文章The Curious Case of Neural Text Degeneration),没有找出分数最高的路反而结果可能好(跟任务本身特性有关,答案明确的任务例如 语音辨识 Beam Search比较有帮助,需要创造力例如TTS语音合成比较差)

在这里插入图片描述

评估标准

BLEU scoreDecoder 产生一个完整句子后,再跟正确答案一整句做比较。

训练的时候我们是使用 minmize cross entropy,但是不一定可以 maximize BLEU score
所以在验证集中应该使用BLEU score

能否训练就使用BLEU score
答:在训练过程使用BLEU score乘负号作为 loss 不太能实现,因为BLEU score不能微分,BLEU score本身复杂,每一个中文字计算cross entropy才能做

训练VS测试 出现的问题:

测试的时候 Decoder 看到自己的输出,所以可能会看到错误的输出,例如“机”“气”(一步错,步步错),训练的时候看到是完全正确的,例如“机”“器”。
不一致的现象称为Exposure bias
在这里插入图片描述
解决方法:给 Decoder 的输入加入错误的东西,不要都是正确的(技术:Schedule Sampling(2015年提出,在LSTM就已经有,文章Original Scheduled Sampling、Scheduled Sampling for Transformer、Paraller Scheduled Sampling),但是会伤害 Transformer 平行化的能力)。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Koma_zhe

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

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

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

打赏作者

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

抵扣说明:

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

余额充值