李宏毅Transformer

Transformer

Transformer 其实就是Sequence-to-Sequence(Seq2Seq)架构的model,就是输入一堆向量,输出一堆向量,输出的向量数量由机器自己决定。

Seq2Seq架构

整体架构
在这里插入图片描述
Encode部分
Encode部分就是输入一堆向量,然后输出一堆向量,这个encoder部分可以是RNN或者CNN组成的,但是在Transformer里,Encoder得是Transformer的Encoder就是下图右边这部分。
在这里插入图片描述
首先我们看下Encoder的基本架构,就是红色框中,输入一堆向量然后经过一个block输出一堆向量,然后接着输入到下一个block中…最后输出h1, h2, h3, h4, 在Transformer网络中每一个block里面是下图中右面这部分组成,对输入的向量进行self-attention操作,每个向量都考虑与其它向量的关联性之后然后输出,然后接入到FC中输出结果。

在这里插入图片描述
实际上Transformer的Block里面的网络比这个更复杂,举例:第一个向量b经过Self-attention考虑与其它所有向量关联性得到输出结果下图a,然后把a与输入向量b进行相加(这就是residual操作)接着把a+b相加的结果做Layer Norm运算。(这个就是对向量中每个元素求mean[平均值], standard deviation[标准差] ),下图绿色的方框接着红色方框部分,接着放入FC网络中得到输出结果,这里也要做一次residual操作,得到输出的结果再次做Layer Norm操作,得到最终输出结果。block中一个向量做的所有操作。
在这里插入图片描述
以上就是下图红色区域的操作,总结一下,就是输入向量如果需要位置信息的话,加上位置Positional向量,然后经过Self-attention(Multi-Head Attention),做add&Norm操作,其中add就是(Residual操作,将输入向量加到self-attention结果输出上),然后将add结果做Layer Norm操作,接着放入到Feed Forward网络中输出结果继续做add&Norm操作。
在这里插入图片描述

Decode部分

在这里插入图片描述
常见结构(Autoregressive)
以语音识别举例,首先我们把Encoder输出的向量,读入到Decoder中,这时给Decoder一个专门的记号(special token)Begin,告诉Decoder开始了,然后Decoder输出向量(这里的向量大小取决于你想输出的内容,如果你想输出文字,那么它的长度就是所有文字的数量,如果是英文单词,那么它的长度就是所有英文单词的数量…),再对向量整体做softmax(求每个中文的概率,所有中文概率加起来为1),求其中最大值就是它的第一个输出结果。
在这里插入图片描述
然后把第一个输出作为Decoder的输入,第一个输出”机“是一个one-hot向量(在”机“位置为1,其它位置为0),这样Decoder有两个输入向量,根据这两个输入的向量通过Decoder输出”器“,然后再把”器“作为第三个Decoder输入的向量,Decoder通过这三个输入向量输出…,以此往后,所以Decoder每次输入都是上一次输出的结果累加起来的。
在这里插入图片描述
Decoder内部结构
Decoder的内部结构如下图中右面这部分
在这里插入图片描述
可以发现它除了红色区域其它与Encoder都一样操作,只是它使用的是Masked Multi-Head Attention
在这里插入图片描述
Masked Multi-Head Attention 就是b1,b2,b3,b4,每一个向量输出的时候只考虑左边输入的向量关联性得到的输出。为什么出现这种情况呢?因为每次decoder输入,都是上一次输出的结果累加起来的,所有还没有后面的向量!
在这里插入图片描述
那么要如何停下来呢
我们需要给输出向量中加一个end标识,它与其它的中文文字类似,这样当输入”机”“器”“学”“习“时候,经过Decoder输出向量,然后softmax处理后取最大值得到”end“
在这里插入图片描述

在这里插入图片描述
以上是AT decoder,还有NAT decoder。。。
Encoder-Decoder
现在讲解Encoder-Decoder之间怎么传递的。
在这里插入图片描述
首先我们可以看到红色框中,有蓝色的圈和一个绿色的圈,其中蓝色的圈为从encoder过来的输入,绿色的为从decoder过来的输入。
在这里插入图片描述
具体操作就是我们可以并行来看,最下面的大红色框,首先左边对所有的输入做Encoder操作,输出a1,a2,a3,右边对begin输入做self-attention操作得到输出向量b,然后看b与a1,a2,a3关联性也就是self-attention一系列操作。
在这里插入图片描述
其它的Decoder输入也是类似操作在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值