查看虚拟币行情的网站怎么做,广东知名网站建设,wordpress怎样设置留言板,热门话题推荐一、背景信息#xff1a;
Transformer是一种由谷歌在2017年提出的深度学习模型。
主要用于自然语言处理#xff08;NLP#xff09;任务#xff0c;特别是序列到序列#xff08;Sequence-to-Sequence#xff09;的学习问题#xff0c;如机器翻译、文本生成等。Transfor…一、背景信息
Transformer是一种由谷歌在2017年提出的深度学习模型。
主要用于自然语言处理NLP任务特别是序列到序列Sequence-to-Sequence的学习问题如机器翻译、文本生成等。Transformer彻底改变了之前基于循环神经网络RNNs和长短期记忆网络LSTMs的序列建模范式并且在性能上取得了显著提升。
二、整体结构
Transformer 由 Encoder 和 Decoder 两个部分组成Encoder 和 Decoder 都包含 6 个 block。 Transformer 的输入 Transformer 的输入由 x的 词向量 和 位置向量 相加得到。 其中Transformer 在位置向量中保存单词在序列中的相对或绝对位置信息位置向量由PE(Positional Encoding)表示 eg假设n为序列长度d为表示向量维度原始输入为 X o r i − i n p u t X_{ori-input} Xori−input [ x 1 , x 2 . . . x n ] [x_{1},x_{2}...x_{n} ] [x1,x2...xn] 则原始输入 X o r i − i n p u t X_{ori-input} Xori−input的词向量矩阵为 X W E X_{WE} XWE其维度为(n, d), 原始输入 X o r i − i n p u t X_{ori-input} Xori−input的位置向量矩阵 X P E X_{PE} XPE维度也为(n, d) 最终 Transformer 的输入矩阵 X i n p u t X_{input} Xinput X W E X_{WE} XWE X P E X_{PE} XPE维度也是(n, d)。
三、 Encoder
Encoder 部分由6个Encoder block 组成。 Encoder block 由Multi-Head Attention结合Add Norm、Feed Forward结合 Add Norm 组成。 即由下面两部分组成 X L a y d e r N o r m ( X i n p u t M u l t i H e a d A t t e n t i o n ( X i n p u t ) ) X LayderNorm(X_{input} MultiHeadAttention(X_{input})) XLayderNorm(XinputMultiHeadAttention(Xinput)) X L a y d e r N o r m ( X F e e d F o r w o r d ( X ) ) X LayderNorm(X FeedForword(X)) XLayderNorm(XFeedForword(X))
MultiHeadAttention部分 其中MultiHeadAttention为多个Self-Attention进行Concat后linear而成 Q X i n p u t × W q Q X_{input} \times W_{q} QXinput×Wq K X i n p u t × W k K X_{input} \times W_{k} KXinput×Wk V X i n p u t × W v V X_{input} \times W_{v} VXinput×Wv Z A t t e n t i o n ( Q , K , V ) s o f t m a x ( Q K T d k ) V Z Attention(Q, K, V) softmax( \frac{QK^{T} }{\sqrt{d_{k}} } )V ZAttention(Q,K,V)softmax(dk QKT)V 其中 Z 1 . . . . Z 8 Z_{1}....Z_{8} Z1....Z8为X_{input} 经过8个不同Self-Attention得到的结果 X M u l t i H e a d A t t e n t i o n ( X i n p u t ) L i n e a r ( C o n c a t ( Z 1 , Z 2 . . . . Z 8 ) ) X MultiHeadAttention(X_{input} ) Linear(Concat(Z_{1},Z_{2}....Z_{8})) XMultiHeadAttention(Xinput)Linear(Concat(Z1,Z2....Z8))
FeedForword部分 Feed Forward 层是一个两层的全连接层第一层的激活函数为 Relu第二层不使用激活函数公式如下。 F e e d F o r w o r d ( X ) m a x ( 0 , X W 1 b 1 ) W 2 b 2 FeedForword(X) max(0, XW_{1} b_{1})W_{2} b_{2} FeedForword(X)max(0,XW1b1)W2b2
四、 Decoder
Decoder 由 6个Decoder block 以及最后的一个linear组成。 Decoder block 由 一个带有 Masked的Multi-Head Attention结合Add Norm和一个Multi-Head Attention结合Add Norm以及一个Feed Forward结合 Add Norm 组成。 X o u t p u t X o u p u t − o r i ⊗ X M a s k X_{output}X_{ouput-ori }\otimes X_{Mask} XoutputXouput−ori⊗XMask X L a y d e r N o r m ( X o u t p u t M a s k M u l t i H e a d A t t e n t i o n ( X o u p u t ) ) X LayderNorm(X_{output} MaskMultiHeadAttention(X_{ouput})) XLayderNorm(XoutputMaskMultiHeadAttention(Xouput)) X L a y d e r N o r m ( X M u l t i H e a d A t t e n t i o n ( [ X a s Q , E C a s K , E C a s V ] ) X LayderNorm(X MultiHeadAttention([X_{as Q}, EC_{as K}, EC_{as V}]) XLayderNorm(XMultiHeadAttention([XasQ,ECasK,ECasV]) X r e s u l t S o f t m a x ( X ) X_{result} Softmax(X) XresultSoftmax(X)
带有 Masked的Multi-Head Attention层 其中带有 Masked的Multi-Head Attention中 X o u p u t X_{ouput} Xouput为Transformer 标签对应输出向量 X o u p u t − o r i X_{ouput-ori} Xouput−ori需要先 ⊗ \otimes ⊗ X M a s k X_{Mask} XMask得到 X o u p u t X_{ouput} Xouput Q X o u p u t × W q Q X_{ouput} \times W_{q} QXouput×Wq K X o u p u t × W k K X_{ouput} \times W_{k} KXouput×Wk V X o u p u t × W v V X_{ouput} \times W_{v} VXouput×Wv Z A t t e n t i o n ( Q , K , V ) s o f t m a x ( Q K T d k ⊗ X M a s k ) V Z Attention(Q, K, V) softmax( \frac{QK^{T} }{\sqrt{d_{k}} } \otimes X_{Mask} )V ZAttention(Q,K,V)softmax(dk QKT⊗XMask)V
其中第二个 Multi-Head Attention层 Self-Attention 的 K, V矩阵使用的是根据Encoder编码的输出矩阵C计算得到 K, V Self-Attention 的 Q矩阵是根据Decoder block中的Masked Multi-Head Attention层输出矩阵 Z 计算得到 Q。
Reference
1.Attention Is All You Need 2.Transformer模型详解图解最完整版 3.Self-Attention Transformer完全指南像Transformer的创作者一样思考