Transformer|深度学习(李宏毅)(八)

简介: Transformer|深度学习(李宏毅)(八)

一、RNN与CNN处理Seq2seq问题的局限性


  1. RNN的局限性


处理Seq2seq问题时一般会首先想到RNN,但是RNN的问题在于无论使用单向还是双向RNN都无法并行运算,输出一个值必须等待其依赖的其他部分计算完成。


5W88WYU9FO02S]L(~VCZQ6B.png

                                                       RNN


  1. CNN的局限性


为了解决并行计算的问题,可以尝试使用CNN来处理。如下图,使用CNN时其同一个卷积层的卷积核的运算是可以并行执行的,但是浅层的卷积核只能获取部分数据作为输入,只有深层的卷积层的卷积核才有可能会覆盖到比较广的范围的数据,因此CNN的局限性在于无法使用一层来输出考虑了所有数据的输出值。


QMHO$(SVZ4$2A%[J`6M`DIC.png

                                                CNN


二、Self-attention


Transformer是一种使用了Self-attention的Seq2seq模型。Self-attention是一种可以取代RNN的网络结构,比起RNN其可以实现并行运算。


  1. Self-attention的结构


@119F(Z{KJJ`O_M]1M0P_EF.png

74R6BD2K5FMR6`[7BXS5[JW.png

                                                   获得q、k、v

CWR10VC)F3YI``~74D`(XAX.png

QO~R[JBXR)LQ]1)U]XBWECF.png

                                      q^{i}、k^{i}和v^{i}


②接下来需要拿每个query对每个key做attention,这里使用的是Scaled Dot-Product Attention,其公式为:

WSJZOMQ%38F~82GC4F%6J1M.png也就是计算query与key的点积,另外点积需要除以DV]})RX2)@]7VHS~R2KQJ_S.png的维度,主要是为了起到缩放的作用,避免梯度爆炸。至于更详细的为什么Dot-Product Attention需要被Scaled,可以参考该文章:为什么 dot-product attention 需要被 scaled?

该过程如下图所示,下图展示了`%5)1%1V]1F)F)83YRS`[YV.png


JYV]64X47K%TH4EH1OGNCEE.png

                                              Attention

$VJ@UZ4U5$[[_4IVI~3370Y.png

RW3FNA8F9L%I[2P76`ZN[I7.png

                                                 softmax


4ENUC[D{@}R0AOIRWC0Q{RJ.png

MBM)5PG~EWX$IECF6I{~@ZG.png

                                                  获得输出

同理%DABKXA4NY8_CRZ_0W0_NH2.png等也通过同样的过程计算出来:

H`0PJ~7%1F8LA6L)_2T`882.png

                                                        获得输出


  1. Self-attention如何并行运算

~Y$OWSI}0(0HQ$THDYN%L1V.png

}PE}_0D}D$BG64VFL25KJ3C.png


                                        Q、K和V


该步骤的形式化过程如下:


6Y}8~M9)JM9OC{FVY%I}BRW.png


由此也就完成了以下过程:


$X)X(M6(3TWX93K7`TGP4DS.png


                                                 获得q、k、v


LL%N`V20P4`N$)]Y8A[AE}3.png

[6SPA$PU3(RZ0M`P}R)QXF3.png

                                         attention

S4T3_TFD_5~]KOBFCG%K}UW.png

WN]$7}~T9[~Y~@6KN1FZCFL.png


                                           获取A


该步骤的形式化过程如下:


F7~}CS@L)}1ED3PE}(~FK[B.png

U]9RZ(PTAW%2@PTUP9$EI$4.png

4)OX`ES28J4R]4XTX[M`CZK.png

                                                 softmax

X9)KTHH1_{2L]D`%SUVB$8H.png

@TF(U(6KG65U]E982IXM_~L.png

                                                      获取O


该步骤的形式化过程如下:


35F_DVP[MS89`E3IOPVMY}7.png


并行运算的整个过程如下图所示:


REOMK%~H6WI2(T`03PF[]RL.png

                                         整体过程


具体的细节可以用下图来表示:


C0G7L6CE0`1Q8QUBRPY@CYX.png

                                         整体过程


总而言之是一些矩阵运算,可以使用GPU来进行加速。




  1. Multi-head Self-attention

DI@YESQ})0@T2C]7ZN5$1[7.png

{%3%DO2N)}1ORT`X3AKI2GS.png

                                                           2 head

UN1Z]6J66[RB155MBPP6)N9.png

DIW_H9A7T[QW5%W%T@XUY8C.png

                                                    步骤


%Y2V@FU0$DKVF6PHCQYA[5V.png

                                                     步骤


ZR)1~~C%VF01JNZG%K4}{]L.png

                                                  步骤


  1. Self-attention如何考虑位置信息


QLQT}_X6F4[WYW18{APX7SG.png

PGVI8`VW85@O(2U_W9K5MWE.png

                                             考虑位置


(R4QTSVICR]~3MW{K_BC4WV.png

MTY8JP}Y@C@)}3$50REQJ%8.png


以下是该过程的直观的描述:


0ID`0J255(SPV4%K(3ZS}E2.png

                                              考虑位置

SD$FVGQL([XEY2I5FS$I~Y7.png

N}N6YZA3E1O0F@PN24F6XOR.png

                                                    权重


三、Transformer


  1. Self-attention在Seq2seq问题中的应用


Self-attention层可以直接替换RNN层来处理Seq2seq问题,比如可以将RNN的AutoEncoder中的Encoder和Decoder全部替换成Self-attention层,使用下图中的网络结构同样可以做一些RNN能做的工作。比如翻译等:


8DKLSA$HVNWFM6Z{7M[1CIT.png

                                               AutoEncoder


  1. Transformer


下图以机器翻译为例展示了Transformer的结构:


N~4YA(8[{L3{DT3C[S9]NU0.png

                                         Transformer


可以看到Transformer共有Encoder和Decoder两部分组成。


在Encoder部分:


①Input Embedding:指的是词嵌入层,获得词的编码向量;

②Positional Encoding:指的是上文提到的]6UZ8MZJO~AE}]}L9%NG5N1.png,用来确定输入向量的位置;


③Multi-Head Attention:这一层指的是如下结构:


HGD`PP@`DUADQ7}5T)($F1C.png

                                Multi-Head Attention


④Add&Norm:该部分处理顺序如下:


X_T5IBMY9[UUE3P[OO_L{51.png

                                Add&Norm


DM`YI4JX57N7]9M}MF7%`KP.png

LL)U2B5JJR~FT@HS8AU1{BV.png

                               normalization


⑤Feed Forward:前馈神经网络;


⑥总共有N个这样的结构(Nx)。


在Decoder部分:


①Input:以Decoder的前一个时间步(time step)的输出作为Decoder的输入;


②Masked Multi-Head Attention: masking 的作用就是防止在训练的时候使用未来的输出的单词,确保对位置i的预测仅依赖于已知的位置i之前的输出,而不会依赖于位置i之后的输出。 比如训练时, 第一个单词是不能参考第二个单词的生成结果的。 Masking就会把这个信息变成0, 用来保证预测位置 i 的信息只能基于比 i 小的输出;


③Multi-Head Attention:encoder-decoder attention layer ,这一层会attend到之前Encoder部分的输出;


四、Attention可视化


Self-attention的过程中序列中的任意两个词都会做attention,这里可以将对应的权重做可视化:


K@`EEDP~R))AXF$BL7KTUHT.png

                                                       可视化


在下面这张图中有个有趣的现象,可以看到经过训练后,句子“The animal didn't cross the street because it was too tired.”中“it”到“animal”的权重很大,而句子“The animal didn't cross the street because it was too wide.”中“it”到“street”的权重很大。


H]`HMZ}$OX6QPXX~HQV2V]F.png

                                                     可视化


下图展示了Multi-Head Attention的不同head的可视化结果,上面的部分可以看出这个head主要关注比较长序列(global)的信息,而下面的head比较关注距自己相近的序列(local)的信息,说明使用多个head时不同的head通过学习会关注不同的信息。


9V63$QGS009(58H5$Q{[9AW.png

                                  Multi-Head Attention可视化


五、Transformer应用


  1. 多文档摘要


使用Transformer可以做多文档摘要,如下图所示,通过训练一个Summarizer来输入一个文档的集合然后输出这些文档的摘要:


4CUAFBRM%M(C0K5{UMQ8897.png

                                              Summarizer


Transformer很好地解决了输入序列长度较大的情况,而向RNN中输入长序列结果通常不会好:


ZSVHJV7KDA~]]`~`9D%[_PR.png

                                                  长序列输入


  1. Universal Transformer


将Transfromer在深度上随时间循环使用,即重复使用相同的网络结构:


N$WEWON726P]BIW]RO]C}DK.png

                                   Universal Transformer


  1. Self-Attention GAN


简单了解一下:


6M}53Z8DU}R`J{C))V3(Y0Z.png

Self-Attention GAN

参考资料

ref:深度学习中的“注意力机制”

ref:神经机器翻译 之 谷歌 transformer 模型

相关文章
|
1月前
|
机器学习/深度学习 自然语言处理 异构计算
Python深度学习面试:CNN、RNN与Transformer详解
【4月更文挑战第16天】本文介绍了深度学习面试中关于CNN、RNN和Transformer的常见问题和易错点,并提供了Python代码示例。理解这三种模型的基本组成、工作原理及其在图像识别、文本处理等任务中的应用是评估技术实力的关键。注意点包括:模型结构的混淆、过拟合的防治、输入序列长度处理、并行化训练以及模型解释性。掌握这些知识和技巧,将有助于在面试中展现优秀的深度学习能力。
71 11
|
19天前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:Transformer模型
使用Python实现深度学习模型:Transformer模型
25 0
使用Python实现深度学习模型:Transformer模型
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习原理篇 第一章:transformer入门
简要介绍词向量和transformer原理。
195 1
|
10月前
|
机器学习/深度学习 自然语言处理 计算机视觉
深度学习原理篇 第二章:vision transformer
简要介绍了vision transformer的原理和实现。
160 0
|
机器学习/深度学习 编解码 人工智能
深度学习应用篇-计算机视觉-图像分类[3]:ResNeXt、Res2Net、Swin Transformer、Vision Transformer等模型结构、实现、模型特点详细介绍
深度学习应用篇-计算机视觉-图像分类[3]:ResNeXt、Res2Net、Swin Transformer、Vision Transformer等模型结构、实现、模型特点详细介绍
10587 1
 深度学习应用篇-计算机视觉-图像分类[3]:ResNeXt、Res2Net、Swin Transformer、Vision Transformer等模型结构、实现、模型特点详细介绍
|
机器学习/深度学习 存储 人工智能
深度学习进阶篇7:Transformer模型长输入序列、广义注意力、FAVOR+快速注意力、蛋白质序列建模实操。
深度学习进阶篇7:Transformer模型长输入序列、广义注意力、FAVOR+快速注意力、蛋白质序列建模实操。
深度学习进阶篇7:Transformer模型长输入序列、广义注意力、FAVOR+快速注意力、蛋白质序列建模实操。
|
机器学习/深度学习 缓存 人工智能
深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、Transformer Encoder等原理详解
深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、Transformer Encoder等原理详解
深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、Transformer Encoder等原理详解
|
机器学习/深度学习 移动开发 自然语言处理
深度学习进阶篇-预训练模型1:预训练分词Subword、ELMo、Transformer模型原理;结构;技巧以及应用详解
深度学习进阶篇-预训练模型1:预训练分词Subword、ELMo、Transformer模型原理;结构;技巧以及应用详解
深度学习进阶篇-预训练模型1:预训练分词Subword、ELMo、Transformer模型原理;结构;技巧以及应用详解
|
机器学习/深度学习 自然语言处理 数据安全/隐私保护
一个基于Transformer的深度学习架构,在基因调控中组蛋白代码的定量破译方面性能超群
一个基于Transformer的深度学习架构,在基因调控中组蛋白代码的定量破译方面性能超群
|
机器学习/深度学习 人工智能 自然语言处理
从感知机到Transformer,一文概述深度学习简史(2)
从感知机到Transformer,一文概述深度学习简史
113 0