注意力机制的基本思想和实现原理(二)

前面介绍的Encoder-Decoder模型是没有体现出注意力模型的,为什么说没有体现出注意力呢?可以观察下面句子中每个单词的生成过程:

在这里插入图片描述

f是decoder的非线性变换函数,在这里可以看出,生成目标单词时,无论单词生成的先后顺序是什么,他们使用的句子X的语义编码C都是一样的,没有区别。而语义编码C是由句子X的每个单词经过Encoder编码产生的,这样就意味着无论是生成y1,y2,y3,句子X中任意单词对生成目标单词的影响力都是相同的,没有任何区别。理论上而言,如果Encoder是RNN的话,后输入的单词的影响要更大一些,而不是相同的影响力;类似于人类看到眼前的画面,但是眼中却没有注意焦点。

我们举一个机器翻译的例子就更直观一点:比如输入的是英文语句:he hit me,在翻译这句话的时候,如果不引入注意力模型的话那么每个英文单词对于翻译成“我”的贡献是一样的,而不是说“me”才是在翻译过程中起到更重要的作用。

没有引入注意力模型在输入句子比较短的时候问题不大,但是如果输入句子比较长,此时所有的语义完全通过一个中间语义向量来表示,单词自身的信息已经消失,会导致丢失很多细节信息,这也是为什么要引入注意力模型的原因。

   上面的例子中,如果引入注意力模型,在翻译“我”的时候要体现出英文单词对于翻译中文单词的不同程度的影响,比如给出一个概率分布值:

(he,0.2) (hit,0.2) (me,06)

   每个英文单词的概率代表了翻译当前单词“me”时,注意力模型分配给不同英文单词的注意力大小,这对于翻译的时候找出重要的信息有着很大的帮助。

   加入注意力机制后,目标句子中的每个单词都应该学会其对应的源句子中单词的注意力分配概率信息,也就是说生成每个单词的时候,原本都是相同的中间语义表示C现在会被替换成根据当前生成单词而不断变化的Ci,下面是加入注意力机制的Encoder-Decoder模型:

在这里插入图片描述

生成目标句子单词的过程变成了下面的形式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

而每个Ci可能对应着不同的源语句子单词的注意力分配概率分布,比如对于上面的英汉翻译来说,其对应的信息可能如下:

其中,f2函数代表Encoder对输入英文单词的某种变换函数,比如如果Encoder是用的RNN模型的话,这个f2函数的结果往往是某个时刻输入xi后隐层节点的状态值;g代表Encoder根据单词的中间表示合成整个句子中间语义表示的变换函数,一般的做法中,g函数就是对构成元素加权求和,即下列公式:
在这里插入图片描述

假设Ci中那个i就是上面的“他”,Tx代表输入句子的长度,h1=f(“he”),h2=f(“hit”),h3=f(“me),对应的注意力模型权值分别是0.6,0.2,0.2,所以g函数就是个加权求和函数。接下来问题来了,这个注意力权值是如何计算来的呢?如果我们解码器采用的是RNN,我们可以用i时刻的隐藏节点状态Hi去和一一和输入句子中每个单词对应的RNN隐层节点状态hj进行对比,即通过函数F(hj,Hi)来获得目标单词Yi和每个输入单词对应的对齐可能性,这个F函数在不同论文里可能会采取不同的方法,然后函数F的输出经过Softmax进行归一化就得到了符合概率分布取值区间的注意力分配概率分布数值。

总结:上述内容就是论文里面常常提到的SoftAttention Model的基本思想

关注小鲸融创,一起深度学习金融科技!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值