李宏毅transformer学习总结(二)Seq2Seq Model

在我的第一篇徐熙总结中,提出了self-attention机制,的基本原理和概念,这篇文章将会介绍Seq2Seq的model。
什么是Seq2Seq呢,就是你的输入是一串序列,输出也是一串序列,但是这串序列的个数与你的输入是没有直接关系的,比如说语音转文字,加入我们的输入是It’s a funny today,我们希望得到的输出是’今天真有趣‘,这个输入和输出是没有直接关系的。
Seq2Seq可以用来处理语音文字的转换、实现多分类任务(就是一个object身上有很多标签,比如我’有头发‘,也’有睫毛‘之类,比喻可能不恰当但是理解就好),也可以用来处理Object Detection的问题,是一个很强大的model。
Seq2Seq的主要结构是一个Encoder和一个Decoder。Encoder的作用是处理输入的序列,并把处理好的序列传给decoder。而decoder根据encoder提供的序列决定要输出什么。
我们的主角Transformer其实也是一个Seq2Seq的模型,有Encoder和Decoder。
先来看看Encoder的结构。Encoder使得任务是输出一段与输入序列数量相同的序列,如下图所示:
Transformer中encoder的结构

那么Transformer是具体怎么实现的呢?如下图,输入是x,经过self-attention之后生成b,再把b放到全连接层中,得到Block的输出。
在这里插入图片描述
除此之外,transformer的作者收到了ResNet的影响,给Self-Attention也加了残差的机制,就是把经过self-attention之后生成的b再加上a本身,变成c = a + b ,再把c做一个normalization这里的norm操作是layer Norm,即计算mean和方差deviation,再用第三张图的公式去对每一个x进行操作,得到输出c’,送入FC中,再把FC的输出和输入相加,才是真正的Block的输出
layer Norm
讲完了encoder,我们再来看一下Decoder的原理:
在这里插入图片描述
Decoder的原理是把Encoder的输出作为输入,像是RNN一样的操作,一步一步生成。
Decoder

从结构上看,Encoder和Decoder除了中间的Multi-Head Attention以外,几乎没有什么区别。
有一个点是Masked。这个masked就是某元素只取该元素前面的数据作为上下文信息,而不考虑后面的元素。比如a2只考虑a1和a2,a3只考虑a1,a2,a3之类。这是因为,先有a1,再有a2,a3,a4等,这些事一个一个产生的,所以只能考虑左边的,不能考虑右边的。

在这里插入图片描述
讲完了mask的不同之处,我们继续来看Decoder中间与Encoder相连接的部分,叫做Cross Attention,它联系了Decoder与Encoder。从Decoder的结构我们呢可以看出Cross Attention的输入有一部分自于Encoder,这个输入的产生方式来自下图。当然,这中间的矩阵乘法之间应该添加上一些norm的手段才会更加合理。最后的v作为Cross Attention的输入。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值