深度学习——机器翻译、注意力机制、transformer

深度学习


 

一、机器翻译(MT)

  • 用神经网络进行机器翻译-----神经机器翻译(NMT)。困难点在于输入和输出的序列长度不一样。
  • 有一种结构可以解决这个困难,如下图。在Encoder结构中将原语言转换为语义编码c(隐藏状态),再通过Decoder过程转换为目标语言。
    训练模型
  • Encoder到Decoder有一种Sequence to Sequence模型,如下图所示。将源语言和目标语言的单词都形成词向量输入到隐藏层中,再根据对应的编码实现从输入到输出。
    结构
     
     

二、注意力机制

1.基本概念

  • 上面的Sequence to Sequence模型在各个时间步数上依赖相同的背景变量(循环神经网络的背景变量是最终时间步的隐藏状态)。由于RNN机制存在长程梯度消失的问题,随着句子长度增加,seq2seq模型的结构效果不佳。
  • 另一个问题是Decoder的目标词语可能只与输入的部分词语有关而不是与所有的输入有关,在Encoder-Decoder模型中,所有输出的单词使用的语义编码C是相同的,而语义编码C是根据输入句子X的单词经过Encoder编码产生的,所以句子X的任意单词对生成最后的目标单词的影响力是相同的。而在seq2seq模型中由于RNN的结构原因,后输入的单词影响较前输入的单词的影响力大,非等权影响。
  • 注意力机制(Attention)可以部分解决以上问题。注意力机制可以分配给不同单词不同的注意力大小,这意味着在生成输出单词 y i y_i yi时,Encoder-Decoder模型中固定的语义编码C会换成加入根据输出单词进行调整的注意力模型变化的 C i C_i Ci
    在这里插入图片描述
  • 注意力机制具体过程:
  • 第一步计算attention scores:将当前隐藏状态 H i H_i Hi与输入句子的每个单词对应的隐藏单元节点状态 h j h_j hj对比,即通过函数 F ( h j , H i ) F(h_j,H_i) F(hj,Hi)获得目标单词和每个输入单词对应的可能性。(不同attention layer 的区别在于该函数的选择)
  • 第二步将函数经过 s o f t m a x softmax softmax归一化,取得注意力权重。
  • 最后输入值与权重相乘加权求和输出。
  • 表达式: a i = F a t t ( h j , H i ) b i = s o f t m a x ( a i ) c i = ∑ i = 1 n b i h i \begin{aligned}a_i &=F_{att}(h_j,H_i)\\b_i&=softmax(a_i)\\c_i&=\sum^n_{i=1}b_ih_i\end{aligned} aibici=Fatt(hj,Hi)=softmax(ai)=i=1nbihi
  • 参考blog:https://www.jianshu.com/p/e14c6a722381

     

2.常见的注意力层

(1)点积注意力(dot product/multiplicative attention)

  • 表达式: f a t t ( h i , s j ) = H i T W a h j f_{att}(h_i,s_j)=H_i^TW_a h_j fatt(hi,sj)=HiTWahj

(2)多层感知机注意力

  • 表达式: f a t t ( h i , s j ) = v T t a n h ( W k k + W q q ) f_{att}(h_i,s_j)=v^Ttanh(W_kk+W_qq) fatt(hi,sj)=vTtanh(Wkk+Wqq)

(3)引入注意力机制的Seq2seq模型

  • ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200218003252897.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTYwOTgz,size_16,color_FFFFFF,t_70)

 
 

三、transformer

  • transformer模型利用attention机制实现了并行化捕捉序列依赖,并且同时处理序列的每个位置的tokens,从而减少训练时间同时保持性能良好。
  • transformer模型基于Encoder-Decoder结构,此外还将seq2seq模型的循环网络替换为transformer blocks,该模块包含一个多头注意力层(Muti-head attention)和两个基于位置的前馈网络(Position-wise FFN).
    • 基于位置的前馈网络接受一个形状为(batch_size,seq_length, feature_size)的三维张量。由两个全连接层组成,作用在最后一维上。
    • 相加归一化层(Add and norm):多头注意力层和前馈网络的输出被送到两个“add and norm”层进行处理,该层包含残差结构以及层归一化。
    • 位置编码(Position encoding):由于自注意力层并没有区分元素的顺序,所以一个位置编码层被用于向序列元素里添加位置信息。
      在这里插入图片描述
       

多头注意层

  • 多头注意力层包含 h h h个并行的自注意力层,每一个自注意力层是一个head,每次先计算并行的自注意力层输出,然后对这 h h h个注意力头的输出拼接后整合到一个线性层中。
  • 自注意力层结构如下图:
    自注意力层
    多头注意力层
  • 表达式:
    每个头的输出: o ( i ) = f a t t e n t i o n ( W q ( i ) q , W k ( i ) k , W v ( i ) v ) o^{(i)}=f_{attention}(W_q^{(i)}q,W_k^{(i)}k,W_v^{(i)}v) o(i)=fattention(Wq(i)q,Wk(i)k,Wv(i)v)线性整合: o = W o [ o ( 1 ) , … , o ( h ) ] o=W_o[o^{(1) },\ldots,o^{(h)}] o=Wo[o(1),,o(h)]

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值