Transformer详解

所有的Q&A问题(翻译,聊天机器人,摘要提取,评价的正负面等等)都可以用seq2seq来解,用大量的训练文本去训练,比如聊天机器人等:
在这里插入图片描述甚至用在目标检测硬解:
在这里插入图片描述

encoder

seq2seq的本质就是输入一些向量然后经过某个block生成另外一些向量。这件事RNN和self-attention和CNN都能做,在这里我们transformer做:
在这里插入图片描述现在分析transformer里面每个block的结构:
在这里插入图片描述首先是输入经过self-attention得到a,然后根据残差连接的思想加上一个b后用一个layer norm,上图那个分子上的x不用一撇。
这样得到输出经过一个全连接,然后来一个残差连接后经过layer norm,才是这个block的输出(红色边缘的):
在这里插入图片描述
以上的结构可以稍微改一下,有论文提到可以改一下顺序更好。也有人将layer norm改成自己提出的power norm。

decoder

在这里插入图片描述如上图所示,encoder输出一排向量后,作为decoder的初始状态,起始符输入decoder后可以输出一个n(n可以是26个字母,可以是1500个汉字,可以是英语的字节,但是都要加上初始终止符)维度的向量,它所有元素的和是1,概率最大的那个取对应的字。
然后将输出的东西作为下一个的输入:
在这里插入图片描述decoder的内部结构:
在这里插入图片描述decoder和encoder的不一样就是多了中间的东西,然后前者是masked 多头注意力机制:
在这里插入图片描述这个很好理解,你首先输出b的时候,要基于左边的已经生成的a去考虑,右边的还没有生成怎么去考虑呢?

Non-authoregressive(NAT)decoder

不同于之前的decoder,NATdecoder是直接输入人定数目的起始符,然后输出相同数量的输出。预定的数量可以把encoder送入预先训练好的预测器中得出,或者直接给很长的数量,然后输出的end后面的都舍弃了。这个NATdecoder的长处是可以平行计算,不用等前面的算完再算,所以效率很快;可以控制输出的长度,比如生成小短文。但是目前NAT要花很多的trick才能与AT持平。
在这里插入图片描述为什么NAT干不过AT?
这是因为在这里插入图片描述
更多NAT可以看看:
在这里插入图片描述

encoder和decoder的连接

在这里插入图片描述在decoder中间,ecoder给了它2个蓝色箭头。
在这里插入图片描述如上图,decoder的masked self_attention接受起始符的输入,输出向量后乘以Wq得到q, q与encoder的k分布点乘后经过softmax得到一系列的注意力权重α,然后各自的v以α作权重平均得到输出V,经过全连接之后向下游传递。这叫cross attention。
第二个也类似,输入起始符和“机”,一起输入self-attention,得到q,然后一样的:
在这里插入图片描述cross attension可以有各式各样的连接:
在这里插入图片描述

Training

在这里插入图片描述1,输出的每一个和labe作交叉熵处理,使得总的loss最小
2,Teacher Forcing: decoder的输入是正确答案。

Tips

1,copy mechanism
在对话机器人中,需要从Q复制一些东西过来。
在这里插入图片描述撰写摘要的时候也出现这种情况。
在这里插入图片描述2,Guided Attention
有时候机器会漏掉一些词,比如在语音合成的时候,短词中可能会出现。
在这里插入图片描述语音的时候一般attention是要严格从左往右,但是有时候机器不这么干,所以你要强制它这么干,具体查询上图右上角的词。
3,Beam Search(定向搜索)
在这里插入图片描述如图,假定输出只能有2个汉字的情况,红色是贪心搜索,但是绿线好像更优。实际上中文有4000多个中文,也就是每个节点都有4000可能的路径,不可能暴力搜索。可以考虑用beam search ,但是这个方法有时候烂有时候好。在那些有唯一解的任务,比如语音识别,beam search有较好的用,但是在需要机器发挥一下(有创造性的)的,比如写摘要,它就没什么卵用了。
有时候训练模型的时候加入一些噪声,可以让模型更加鲁邦。(一般都是训练的时候加噪声),但是在语音合成的时候居然在测试的时候加入噪声,居然有更好的结果(编者按:有时候不完美,也是一种完美–Accept that nothing is perfect,True beauty lies in the cracks of imperfection):
在这里插入图片描述
4 有时候遇到指标不能微分的时候,用大训练集硬解,得到表现最好的checkpoint.
在这里插入图片描述5. Scheduled Sampling
我们在训练的时候,因为输入decoder的都是ground truth。这与测试的时候,输入的都是自己前面输出的不同(这叫exposure bias),为了防止测试的时候碰到错误的就一错再错,在训练的时候就给偶尔给decoder一个错误的输入。比如下图的器就用气来训练:
在这里插入图片描述在这里插入图片描述上图就是Scheduled Sampling,但是它可能也会破坏transformer的平行的计算的能力,所以transformer的这个技巧和之前的不一样。

参考文献

本文参考了台湾大学李宏毅的课程,本文图片皆来自于该课程的PPT。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值