深度学习——机器翻译、注意力机制、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 时,Encoder-Decoder模型中固定的语义编码C会换成加入根据输出单词进行调整的注意力模型变化的 C i C_i
    在这里插入图片描述
  • 注意力机制具体过程:
  • 第一步计算attention scores:将当前隐藏状态 H i H_i 与输入句子的每个单词对应的隐藏单元节点状态 h j h_j 对比,即通过函数 F ( h j , H i ) F(h_j,H_i) 获得目标单词和每个输入单词对应的可能性。(不同attention layer 的区别在于该函数的选择)
  • 第二步将函数经过 s o f t m a x 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}
  • 参考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

(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)

(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 个并行的自注意力层,每一个自注意力层是一个head,每次先计算并行的自注意力层输出,然后对这 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 = W o [ o ( 1 ) , , o ( h ) ] o=W_o[o^{(1) },\ldots,o^{(h)}]
发布了60 篇原创文章 · 获赞 2 · 访问量 1488

猜你喜欢

转载自blog.csdn.net/qq_40160983/article/details/104362724