李宏毅机器学习L5 Transformer

Transformer

by 熠熠发光的白

Transformer是Sequence-to-sequence的model,输出长度由model决定

通过把语音转化为中文,翻译成有办法阅读的文字

台语转化普通话是有可能实现的,例如YouTube上的乡土剧

问题:倒装可能较难实现

Test-to-Speech Synthesis

文本转语音

Seq2seq for Chatbot

训练大量对话,往往特质化特殊模型可以得到比seq2seq更好的模型,但这里直接采用正式模型即可

Seq2seq for syntactic parsing(句法的分析)

Seq2seq for Multi-label Classification

一个物体归属于多个class,这种情况同样直接使用seq2seq来解决

Seq2seq for Object Detection

通过把物体框出来交给机器进行标记

起源

14年的seq2seq model,但是现在比较有名的仍然是著名的transformer架构

Encoder

可以通过self-attention,RNN,CNN做到input一排向量,输出一排向量

在Transformer中使用的就是self-attention

先经过self-attention,然后经过FC层,得到block的输出

transformer利用了残差的思想,用到了residual connection,然后再经过normalization(layer normalization)

再经过FC层,然后和output加起来,得到结果,再进行一次normalization

在这里插入图片描述

Decoder

1. Autoregressive

输入一段声音,输出一段文字。语音经过encoder变为vector,

在操作时,先是进入一个begin符号(one-hot),然后突出一个vector,长度和字典池中的一样,其中数值的总和是一,对应的分数最高的那个位置是输出的结果。

从结构上可以看到,decoder和encoder区别并不大,在最后经过linear和softmax

在这里插入图片描述

可以看到,MHA那里变成了Masked Multi-Head Attention,不同的是这次所有输入元素只考虑其右边的条件而不考虑其左边的条件

增加stop-token,来进行结尾

Decoder-Non-autoregressive(NAT)

和AT不同的是,NAT一次进去4个begin,出来四个字,直接结束

为了了解到输出的长度,创建另一个predictor来预测输出长度,或者是给出大量的sequence,并将end后的输出全部忽略。

优点:一步出结果,非常的方便也可控,但是NAT事实上要比AT的效果要差得多,因为multi-modality,后面会看到

Encoder到Decoder的传递

在上图中有个MHA和ADD&Norm模块,这个被称作Cross Attention,两个输入来自encoder,一个来自decoder。

在encoder的数据读入后,进行decoder的操作,先是吃一个begin,经过self-attention(MASK),然后经过如下图所示的操作,即cross attention,最后得到结果。两个输入指的是k和v,一个是q

在这里插入图片描述

Training part

在每一次decoder产生的时候,都是进行了一次classification,希望最后的cross entropy越小越好。(4个字的时候应该有五个输出,因为有个end字符,这也需要进行学习)。在decoder训练的时候,会直接把正确的答案输入到decoder里,这被称为teacher forcing(使用正确答案作为输入)

TIPS(训练的小技巧)

  • Copy Mechanism

    • chat-bot

      在进行介绍的时候通过复制来完成对话,例如自我介绍之后复制对方的名字进行打招呼

    • summarization

      https://arxiv.org/abs/1704.04368 输入document,输出summary

    • Pointer Network

      最早的复制模型

    • copy mechanism在seq2seq中的应用

      https://arxiv.org/abs/1603.06393

    • Guided Attention

      要求机器领导attention,有固定的方式,来强迫attention有固定的变化

相关词:Monotonic Attention,Location-aware attention

Beam Search

每次找分数最高的token进行输出(greedy decoding)

这个时候就可以采用beam search来判断全局最优的解法

但是beam search并不是最优解,有的时候,beam search可能会导致一些问题(见参考文献)

关于beam search的具体理解可以查看这个

https://zhuanlan.zhihu.com/p/82829880

通俗易懂,不多赘述(注意最后不需要进行softmax过滤)

在遇到optimization无法解决的问题时,可以使用RI(Reinforcement Learning)

https://arxiv.org/abs/1511.06732

To learn more: NAT Sequence Generation

在NAT训练中,很有可能会出现训练结果十分模糊的情况(有的物体朝左,有的物体朝右)

这个是因为output之间没有进行关系处理,在使用PixelRNN和CGAN就能解决这些问题

在这里插入图片描述

一个小总结

Vanilla NAT

在每一个input的地方都能预测output vector的位置。

fertility:用reinforce来预测fine-tune

knowledge distillation:在训练小数据的时候通过大数据训练出的结果直接作为训练结果来训练小数据

Noisy Parallel Decoding(NPD)

1.建立部分sequence样本

2.生成sequence

3.由autogressive模型打分

在这里插入图片描述

可以看到,用了fertility以后效果相当的显著

NAT的后续改进

Iterative Refinement/Insertion-based/Insertion+Delete/CTC-based(以后可能会看到)

Iterative Refinement

在第一次decoder之后再迭代进行decode,最后得到结果

可以添加一些noise在第一次迭代的结构y0上,或者是把yt和yt+1交换

Mask-Predict

基于bert的基础上进行的操作

在第一次结果后选取较为垃圾的结果,再次使用mask token来替代进行decode

这个方法的performance是相当好的

Insertion Transformer

优点是可以看到周围的文字,进行训练

CTC

语音辨识,比较难遇到multi-modality的问题,但是还是会输给LAS,而且不能进行refined工作

Imputer(CTC+Mask-predict)

把output出的空位用Mask进行替代,然后进行迭代计算,也可以设置block,在block中强制必须有字

同样的,CTC也能用在文字生成上,1811.04719,2004.07437

结果非常好

Knowledge Distillation in NAT

后面是作业部分了,明天再看。在家里学习效率也忒低了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值