浅显解释tranformer

Transformer
整体来看,transformer由Encoder和Decoder两部分组成,即编码和解码两部分,上图左边即是编码过程,右边即使解码过程,而图中N*表示有N个encoder和decoder。
先说明encoder部分
由input进行编码得到input embedding再与其位置编码positional encoding相加,得到n_input,该操作后,我们的input即有了每个input的意义又有了每个input相互的位置信息,即n_input即有了局部信息又包含全局信息。
input embedding的获取(假设一个词的编码由d个值来表示)

positional encoding的获取
一个词的位置编码也应由d个值来表示。
pos词第偶数个编码由sin获取,pos词第奇数个编码由cos获取。
P E ( p o s , 2 i ) = s i n ( p o s 1000 0 2 i d ) P E ( p o s , 2 i + 1 ) = c o s ( p o s 1000 0 2 i d ) PE_{(pos,2i)}=sin(\frac{pos}{10000^{\frac{2i}{d}}})\\ \quad PE_{(pos,2i+1)}=cos(\frac{pos}{10000^{\frac{2i}{d}}}) PE(pos,2i)=sin(10000d2ipos)PE(pos,2i+1)=cos(10000d2ipos)
d d d为编码的维度, p o s pos pos为该词语的位置。
式中d表示编码的维度。
理由:
为了描述一个句子中两个词之间的位置关系,那么其positional encoding必须满足一下几个要求:1.对于每个位置的词语而言,其都能提供一个独一无二的编码。
2.对于不同长度的句子而言,词语之间的间隔表达的含义应该相同,即PE(pos1)+PE(pos2)在不同句子中的值应该相同。
3. 编码可以根据不同句子长度,任意伸长。
如何证明利用上述方式可以满足上面3个条件

假设输入的为一维字符串m1,通过上述步骤获取的n_input的维度为md。若输入的为一张图片chw,则n_input的维度为chwd。
下面以一维字符串m
1为例说明。
Self-Attention
Self-Attention
对n_input(m*d)分别进行
Q = n _ i n p u t ⋅ w Q K = n _ i n p u t ⋅ w K V = n i n p u t ⋅ w V Q=n\_input \cdot w_Q\\ K=n\_input\cdot w_K\\ V=n_input\cdot w_V Q=n_inputwQK=n_inputwKV=ninputwV
get QKV

问题 w Q , w K , w V w_Q,w_K,w_V wQ,wK,wV如何确定。
获取 Q , K , V Q,K,V Q,K,V向量后,通过
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d}})V Attention(Q,K,V)=softmax(d QKT)V
获得该句子各词的关注度。
Multi-Head Attention
Multi-Head Attention中包含了多个self-attention。Multi-Head Attention将每个self-attention的结果拼接(Concat)起来,再经过一个linear将拼接的结果转换至m*d维度,结果为m_input。
Multi-Head Attention
Add and Norm
Add表示残差连接(Residual Connection)用于防止网络退化,Norm表示Layer Normalizaion,用于对每一层的激活值进行归一化。
Add为 A d d _ i n p u t = m i n p u t + i n p u t Add\_input=m_input+input Add_input=minput+input可避免因为连乘效应而导致梯度为0的情况。
Norm为Layer Normalization,Layer Normalization可将每一层神经元的输入都转换为均值方差一致的,加快模型收敛速度,具体原理可以参考最速梯度下降法。
Feed Forward
该层为一个两层的全连接层,第一层的激活函数Relu,第二层无激活函数。
F _ i n p u t = m a x ( 0 , X W 1 + b 1 ) W 2 + b 2 F\_input=max(0,XW_1+b_1)W_2+b_2 F_input=max(0,XW1+b1)W2+b2
经过Encoding操作后得到编码encoding(m*d).

Decoder

关注Decoder方面,其与Encoding相比多了一个Marked Multi-Head Attention的操作
Marked Multi-Head Attention
Marked Multi-Head Attention在Multi-Head Attention的基础上进行了一个Marked的操作。
感性的认识是,对于NLP问题,翻译“老唐僧”,在训练时(未marked),编码‘老’时使用了‘唐’、‘僧’的信息,而在解码时(使用marked),解码‘老’时,未使用‘唐’、‘僧’的信息。即在解码时,‘唐’、‘僧’的信息被marked了。
进行完Transforms后。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值