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 模型

相关文章
|
6月前
|
机器学习/深度学习 自然语言处理 异构计算
Python深度学习面试:CNN、RNN与Transformer详解
【4月更文挑战第16天】本文介绍了深度学习面试中关于CNN、RNN和Transformer的常见问题和易错点,并提供了Python代码示例。理解这三种模型的基本组成、工作原理及其在图像识别、文本处理等任务中的应用是评估技术实力的关键。注意点包括:模型结构的混淆、过拟合的防治、输入序列长度处理、并行化训练以及模型解释性。掌握这些知识和技巧,将有助于在面试中展现优秀的深度学习能力。
225 11
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的Transformer模型
探索深度学习中的Transformer模型
21 1
|
14天前
|
机器学习/深度学习 自然语言处理 计算机视觉
探索深度学习中的Transformer架构
探索深度学习中的Transformer架构
31 0
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
探索深度学习中的Transformer模型及其在自然语言处理中的应用
【10月更文挑战第6天】探索深度学习中的Transformer模型及其在自然语言处理中的应用
100 0
|
1月前
|
机器学习/深度学习 自然语言处理 异构计算
【NLP自然语言处理】初识深度学习模型Transformer
【NLP自然语言处理】初识深度学习模型Transformer
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】大语言模型系列-Transformer
Transformer是一种深度学习模型,最初由Vaswani等人在2017年的论文《Attention is All You Need》中提出,它彻底革新了自然语言处理(NLP)领域。在此之前,循环神经网络(RNNs)及其变体,如长短期记忆网络(LSTMs)和门控循环单元(GRUs),是处理序列数据(包括文本)的主流方法。然而,Transformer通过引入自注意力(self-attention)机制,解决了RNNs在处理长序列时存在的梯度消失、计算速度慢等问题,实现了并行化计算,大大提高了训练效率
76 9
|
3月前
|
机器学习/深度学习 自然语言处理 并行计算
【深度学习+面经】Transformer 网络学习笔记
Transformer模型的核心概念、优缺点以及在多个领域的应用,并提供了针对Transformer架构的面试问题及答案。
164 2
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
158 9
|
4月前
|
机器学习/深度学习 自然语言处理 计算机视觉
Transformer深度学习架构与GPT自然语言处理模型
Transformer和GPT(Generative Pre-trained Transformer)是深度学习和自然语言处理(NLP)领域的两个重要概念,它们之间存在密切的关系但也有明显的不同。
96 2
下一篇
无影云桌面