• RNN中的注意力机制


    RNN序列编解码器

    • 红色---输入,蓝色---输出
    • 绿色----编、解码器

    Sequence to Sequence模型

    编码器Encoder把所有的输入序列都编码成一个统一的语义向量Context,然后再由解码器Decoder解码。在解码器Decoder解码的过程中,不断地将前一个时刻 [公式] 的输出作为后一个时刻 [公式] 的输入,循环解码,直到输出停止符为止。

    优点:不再要求输出与输入有相同的时间长度

    缺点:

    • encoder把所有的输入序列都编码成一个统一的语义向量Context,然后再由Decoder解码。由于context包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。(如机器翻译问题,当要翻译的句子较长时,一个Context可能存不下那么多信息,就会造成精度的下降。)
    • 如果按照上述方式实现,只用到了编码器的最后一个隐藏层状态,信息利用率低下。

    时间片输入的稀疏问题

    一般通过嵌入向量(embedding)解决,如one_hot编码,但是可能会产生大量过于稀疏的输入。
    解决办法:生成一个随机矩阵R,然后用embedding** * R做空间映射形成新的输入embedding_new

    改进Seq2Seq结构(引入attention)

    最好的切入角度就是:利用Encoder所有隐藏层状态 解决Context长度限制问题。

    即将编码器的所有隐藏状态都作为解码器每个隐藏状态的一个输入。

    Attention机制本质

    将的Encoder RNN隐藏层状态加权后获得权重向量,额外加入到Decoder中,给Decoder RNN网络添加额外信息,使其不再仅仅依赖编码器的最终上下文向量作为单一信息输入,从而使得网络有更完整的信息流。

    Luong-Attention给RNN网络添加额外信息的方式


  • 相关阅读:
    php foreach的使用注意
    php数组遍历 使用foreach
    PHP strip_tags() 函数
    php nl2br() 函数
    php文件上传
    一个网站雏形
    jsp接收相同复合参数 request.getParameterValues()用法
    使用div+css制作简单导航 以及要注意问题
    Java 类与对象
    java 基础
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/13141841.html
Copyright © 2020-2023  润新知