Attention

2020-08-26  本文已影响0人  南朝容止

为何要引入Attention机制

由于RNN具有长梯度消失的问题,对于很长的句子,仅仅通过输出序列转化成定长的隐状态向量,难以保存完整的信息。肯定会有损失,造成效果下降。这样的话,我们就引入了Attention机制。

Attention机制的引入

为了解决由输入长序列转化成定长向量,中间造成的信息损失,Attention注意力机制被引入了。
__Attention会将注意力只集中到 当前 “ 翻译 ” 部分相关的上下文。而不仅局限于原来模型中定长的隐藏向量,并且不会丧失长程的信息。

数学表达

image.png
如上图所示:
RNN结构得到encoder中的hidden state(h1, h2,...,hT
decoder中的hidden state(s1, s2,...,sT

假设当前decoder的hidden state是 st-1, 那么:
1. 我们如何获得下一个decode state的st呢?
2. 又如何获得st对应的输出yt呢?
3. 其中的Q 、K、V又都是什么呢?

在Attention中也是由Q,K,V的,分别指代什么呢?

Q * K = ( st-1 * h1,st-1 * h2, ..., st-1 * ht-1,)
Ct = Σi sortmax(Q * K)i * Vi

Ct是通过Q,K,V混合计算来的,这部分很关键,通过此可以得到encoder与decoder之间的关联性的权重,进而得到Attention分布,进而得到对于当前输出位置比如重要的输入权重自然就会大,不重要的权重自然也会小。个人理解不希勿喷,Q,K就是看不同词embedding向量相似度,相近的,有关系的词,自然权重就高点,没关系的就低点。

上一篇 下一篇

猜你喜欢

热点阅读