1.Attention(注意力机制)

Pytorch学习笔记17----Attention机制的原理与softmax函数

 

上图中,输入序列上是“机器学习”,因此Encoder中的h1、h2、h3、h4分别代表“机","器","学","习”的信息,在翻译"macine"时,第一个上下文向量C1应该和"机","器"两个字最相关,所以对应的权重a比较大,在翻译"learning"时,第二个上下文向量C2应该和"学","习"两个字最相关,所以"学","习"对应的权重a比较大。

a其实是一个0-1之间的值,a可以看成是e的softmax后的结果。

Pytorch学习笔记17----Attention机制的原理与softmax函数

那现在关于attention来说就只剩下一个问题了,就是e是怎么来的。关于e的计算,业界有很多种方法,常用的有以下三种方式:

Pytorch学习笔记17----Attention机制的原理与softmax函数

(1)计算Encoder的序列h与Decoder的序列h的余弦相似度.

(2)在1的基础上,乘上一个Wa,Wa是需要学习的参数,从学习到Encoder和Decoder的隐藏的打分e。

(3)设计一个前馈神经网络,前馈神经网络的输入是Encoder和Decoder的两个隐藏状态,Va、Wa都是需要学习的参数。

2.softmax函数

softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!

假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是

Pytorch学习笔记17----Attention机制的原理与softmax函数

更形象的如下图表示:

Pytorch学习笔记17----Attention机制的原理与softmax函数

softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!

参考文献:

https://zhuanlan.zhihu.com/p/52119092

https://www.zhihu.com/question/23765351/answer/240869755