Transfomer算法用于解决RNN循环算法在编码和解码过程中,数据流走向按顺序串行导致在训练和预测过程中算法低效的问题。
Transfomer沿用SeqToseq模型的架构:Encoder->Feature Vector->Decoder.与同样使用此模型的RNN这类循环算法不同的是,Transfomer架构中并没有任何循环结构,这样不仅可以并行训练,同时在编码器引入了Attention Mechanism,使序列中每一个经过编码器的词向量都会同时包含该序列中的上下文信息。
Transfomer主要由编码器和解码器两部分组成。其中,编码器负责将自然语言序列映射成为隐藏层;解码器再把隐藏层映射为自然语言序列。
0.Data Preparing 是一个简单的数据处理,经过这个模块后,数据将被按批次分开。
1.Input Embedding 词嵌入,将上一步的编码进行词嵌入的处理,使用更高维度,更具表达能力的向量来代表这些词或字。
2.Positional Encoding 位置编码,在词嵌入模块后增加一个层位置编码模块,生成一个与输入词向量相同尺寸的位置编码向量,并将该位置向量直接与输入的词向量进行相加获得一个具备位置信息的词向量。
3.Attention in Transfomer 注意力机制,在编码器中的应用为self-Attention(自注意力机制)其核心目标是对于一个输入单词进行编码的时候同时考虑到合格单词与句中其他单词之间的关系,并将该单词与其上下文信息打包起来进行输出。
4.残差连接和Layer Normalization 残差连接,又叫skip-connect,广泛应用于许多深度学习网络中的技术,其中最著名的是ResNet。残差连接的核心思想是,在链式反向传播函数中加入残差,通过使用残差每一个导数就加上了一个恒等项1,此时就算原来的导数很小,这时误差仍然能有效的反向传播。(如果不使用残差,一旦其中某一个导数很小,零点几这样,多次连乘之后梯度可能越来越小,这就是常说的梯度消散,对于深层网络,传到浅层几乎就没了,梯度为0)Layer Normalization的作用是把神经网络中隐藏层归一为标准正态分布,以起到加快训练速度,加速收敛的作用。
5.Feed Foward 非线性前向传播,作用是把上一层的输出两层映射并用在中间用一个非线性激活函数激活。
解码器整体结构与编码器基本一致,唯一不同的其在Decoder Block中新增了一个Dec-Enc Multi-Head Attention模块。
到此,Transfomer 框架基本结束,今日学习收获满满,参照了https://blog.csdn.net/Kuo_Jun_Lin/article/details/114241287这篇大佬的文章进行学习!