Attention

作者: 南朝容止 | 来源:发表于2020-08-26 19:05 被阅读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 就是 st-1
    • K 就是各隐层状态 h1, h2,...,hT
    • V 就是各隐层状态 h1, h2,...,hT

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

    • st = f (st-1, yt-1, Ct)
    • yt = p ( yt/ yt,..., yt, X) = g (yt-1, st, Ct)

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

    相关文章

      网友评论

          本文标题:Attention

          本文链接:https://www.haomeiwen.com/subject/ocdfsktx.html