3步实现神经机器翻译模型处理

本文详细介绍了神经机器翻译模型的实现,包括编码器和解码器的构建,以及训练过程。编码器使用门控循环单元处理输入句子,解码器通过注意力机制预测输出单词。训练阶段基于PyTorch,通过动态计算图进行。文章还提及了注意力模型的发展和深度学习在翻译模型中的应用。
摘要由CSDN通过智能技术生成

1716a1c7decaff55eaec0c70dbcd68aa.gif

6f4266904bd608ed4eb958f0dc8642fc.png

导读:编码器和解码器模型与语言模型中的循环神经网络相似,同时训练阶段均通过遍历每个输出单词来建立动态计算图。

cafe0f6c0ca991e3ce6eeb50ed462b92.png

作者:菲利普·科恩

来源:华章计算机(hzbook_jsj)

从很多方面讲,神经翻译模型都是神经语言模型的一种扩展,因此它们的实现方式很相似。编码器和解码器模型与语言模型中的循环神经网络相似,同时训练阶段均通过遍历每个输出单词来建立动态计算图。

本节给出的代码是根据PyTorch官方教程中有关序列到序列翻译模型的部分经过改进后的结果。

1.编码器

编码器与7.8.1节中的循环神经网络相差无几:

210e25e134cc32a38f448c50ed67f086.png

由于编码器实际上并不预测单词,因此这里只需去掉softmax的计算。需要注意的是,该实现返回的是门控循环单元的输出状态。本章大部分内容描述了一种更为简单的模型,它采用前馈网络,将隐藏状态用于改进输入表示。

我们向这个编码器的类中添加一个额外的函数,即处理整个输入句子的函数:

0247a3fb48719f241fa89da30bd4d411.png

函数返回整个输入句子的编码器表示encoder_outputs,它是一个矩阵或一个单词表示向量序列。上述循环遍历整个句子,并将GRU的输出状态存储在这个矩阵中。该循环与第7章循环神经语言模型的训练循环非常相似,不同之处在于该循环不计算任何损失。当然,我们在这里只是生成中间状态,这些状态无法进行评价。这也意味着输出状态不用预测下一个单词,而是由解码器在后续使用。

2.解码器

解码器的核心也是循环神经网络,但是模型进行了改进,使其能够利用输入句子的信息,涉及注意力的计算和编码器输出状态的加权。图8.9给出了解码器的完整代码。下面我们介绍代码中的关键部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值