【Attention机制】实现过程与相应的理论基础

【Attention机制】相应的理论基础

  • 1.Attention图解说明
    • 1.1 对比
    • 1.2 Attention机制步骤图解
  • 2. Attention的理论解释
    • 2.1 第一种attention结构: Bahdanau Attention
    • 2.2 第二种attention结构: Luong Attention
  • 3. Self—Attention机制

1.Attention图解说明

1.1 对比

下面是传统的Seq2Seq的模型,根据输入的C,每次输入的结果都是C,最终得到相应的翻译的结果。

Seq2Seq的缺点就是对于每一次的翻译结果,对每个词都同等的对待,但是我们在翻译学习2字的时候,应该更加关注机器学习中的学习两个字。
【Attention机制】实现过程与相应的理论基础_第1张图片

Attention机制相对与传统的Seq2Seq的不同之处,在于其每次得到的结果不在是单一的一个C,而是当获取到机器两个字的数据的时候,得到的结果是C1,学习两个字的数据得到的结果是C2,将不同的C1和C2 传入到Decoder中得到最终的翻译结果。
【Attention机制】实现过程与相应的理论基础_第2张图片

1.2 Attention机制步骤图解

Z0是decoder部分学习得到,代表是解码器初始的隐藏层的状态。类似与编码器中的h0
【Attention机制】实现过程与相应的理论基础_第3张图片
Z0与相应的h1进行一个match操作,match就是Attention操作。生成一个α0。
【Attention机制】实现过程与相应的理论基础_第4张图片
那么又有一个新的问题,这个Match是什么呢,Match就是自行设计的一种算法,可以是Cos的相似度,小的神经网络,矩阵W等等。
【Attention机制】实现过程与相应的理论基础_第5张图片
将h和z输入到match中就会得到一个α的值,作为输出。
【Attention机制】实现过程与相应的理论基础_第6张图片
Z0作为一个初始的解码器中的隐藏层隐藏层状态,与相应的h1-h4,进行一个match,得到结果α0~α4,将其加过经过一个softmax,进行概率的归一计算,得到相应归一后的α的值最终将每一个α的值相互加起来,就得到的最终结果C0,交给模型翻译,得到相应的翻译结果machine。
【Attention机制】实现过程与相应的理论基础_第7张图片
和上面相同的计算,这次用到的是下一层的Z1对相应的h进行match得到相应的α的值。
【Attention机制】实现过程与相应的理论基础_第8张图片
将得到的阿尔法的值,还是和上面一样的计算得到softmax后的C1,将C1输入模型中的Z2节点,得到翻译结果learnning
【Attention机制】实现过程与相应的理论基础_第9张图片
这个过程会重复进行,直到遇到相应的EOS,之后结束翻译。
【Attention机制】实现过程与相应的理论基础_第10张图片

2. Attention的理论解释

2.1 第一种attention结构: Bahdanau Attention

不同的Attention的编码器的部分都是一样的,不同的只有其解码器的部分,编码器都是相应的RNN或者是BILSTM,得到最终的结果C

第一步
解码器的部分的eti,就代表上文中α,下面中得到eti就是对编码器中的h和解码器中的z进行match操作,得到eti。

ati是对上面得到的阿尔法,进行softmax后,得到的归一化向量的结果。

ct是将每一个ati的结果,进行一个累加合并的操作。

第二步
就是和Seq2Seq中的相似,将上一层得到是St-1,yt-1,Ct作为当前网络的输入,得到结果St,然后在Softmax。
【Attention机制】实现过程与相应的理论基础_第11张图片

2.2 第二种attention结构: Luong Attention

第二种就第一章种的encoder是类似的,但是在解码器的部分有些许的不同。
第一步
其中生成eti的方式不同
第二步
仅仅利用St和Ct

【Attention机制】实现过程与相应的理论基础_第12张图片

3. Self—Attention机制

【Attention机制】实现过程与相应的理论基础_第13张图片

序列网络的下一时刻的输出依赖于上一个结果,环环相扣。 所以就导致很难实现并行化计算的难题。所以序列网络解决的速度就比较的慢。但是其有点就是下一时刻的输出就能看到之前的所有信息
【Attention机制】实现过程与相应的理论基础_第14张图片

为解决序列网络并行化,但是卷积网络就比较容易实现并行化,使用不同的卷积核,但是其下一时刻的输出不能看到之前的全部信息。

解决:通过多层的卷积核的叠加,就可以实现看到所有的信息。但是计算就变得十分的复杂。

现阶段主要存在两个问题:

  • 如何市场网络的并行化计算
  • 如何让网络在解决并行化的基础上,还能和序列网络一样可以看到所有的信息。

你可能感兴趣的:(BERT文本分类,深度学习,自然语言处理,神经网络)