美文网首页机器学习100天Machine Learning & Recommendation & NLP & DL
Pytorch学习记录-使用共同学习完成NMT的构建和翻译

Pytorch学习记录-使用共同学习完成NMT的构建和翻译

作者: 我的昵称违规了 | 来源:发表于2019-04-23 09:12 被阅读3次

    Pytorch学习记录-torchtext和Pytorch的实例3

    0. PyTorch Seq2Seq项目介绍

    在完成基本的torchtext之后,找到了这个教程,《基于Pytorch和torchtext来理解和实现seq2seq模型》。
    这个项目主要包括了6个子项目

    1. 使用神经网络训练Seq2Seq
    2. 使用RNN encoder-decoder训练短语表示用于统计机器翻译
    3. 使用共同学习完成NMT的构建和翻译
    4. 打包填充序列、掩码和推理
    5. 卷积Seq2Seq
    6. Transformer

    3. 使用共同学习完成NMT的堆砌和翻译

    这一节通过实现基于共同学习的NMT来学习注意力机制。通过在Decoder部分提供“look back”输入语句,允许Encoder创建Decoder隐藏状态加权和的上下文向量来进一步缓解信息压缩问题。通过注意力机制计算加权和的权重,其中Decoder学习如何注意输入句子中最相关的单词。
    本节依旧使用Pytorch和Torchtext实现模型,参考论文《 Neural Machine Translation by Jointly Learning to Align and Translate》

    3.1 介绍

    首先看一下一般的Encoder-Decoder


    image.png

    上一个模型中,为了降低信息压缩,我们进行了如下操作:

    • 每一个时间步,向Decoder传入Encoder生成的上下文向量z。
    • 向Linear层f_t传入上下文向量z、输入单词y_t、隐藏状态s_t。最后得到预测结果。

    尽管降低了部分压缩,但是上下文向量依旧需要包含所有源语句子信息。而这个模型做了调整,能够在每一个时间步,让Decoder回看整体源语句子(通过隐藏状态)。这个,就是使用注意力机制。
    注意力:

    • 计算注意力向量a,其长度为源语句子长度。注意力向量具有每个元素在0和1之间的属性,并且整个向量总和为1。
    • 计算句子隐藏状态加权和H
    • 基于以上计算加权源向量w
      w=\Sigma_i{a_i}{h_i}
      在解码阶段,每一个时间步都要计算一个新的加权源向量,使用这个加权源向量作为Decoder的输入,与Linear层一起做出预测。
    image.png

    相关文章

      网友评论

        本文标题:Pytorch学习记录-使用共同学习完成NMT的构建和翻译

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