使用 Keras 进行基于注意力的神经机器翻译

随着序列到序列预测任务变得越来越复杂,注意力机制已被证明是有帮助的。一个突出的例子是神经机器翻译。根据最近的 Google Colaboratory 笔记本,我们展示了如何在 R 中实现注意力。

来源:RStudio AI博客

如今,使用 Keras 查找演示序列到序列翻译的示例代码并不难。然而,在过去几年中,已经确定根据任务的不同,结合注意力机制可以显著提高性能。首先,神经机器翻译就是这种情况(请参阅(Bahdanau、Cho 和 Bengio 2014)和(Luong、Pham 和 Manning 2015)的杰出工作)。但执行序列到序列翻译的其他领域也从结合注意力机制中获益:例如,(Xu 等人 2015)将注意力应用于图像字幕,(Vinyals 等人 2014)将其应用于解析。

(Bahdanau、Cho 和 Bengio 2014) Bahdanau、Cho 和 Bengio 2014 (Luong、Pham 和 Manning 2015) Luong、Pham 和 Manning 2015 (Xu 等人 2015) Xu 等人 2015 (Vinyals 等人 2014) Vinyals 等人 2014

理想情况下,使用 Keras,我们只需要一个注意力层来管理它。不幸的是,正如在谷歌上搜索代码片段和博客文章所看到的,在纯 Keras 中实现注意力并不是那么简单。

因此,直到不久前,最好的做法似乎是将 TensorFlow 神经机器翻译教程翻译成 R TensorFlow。然后,TensorFlow 急切执行出现了,它改变了许多过去很困难的事情(其中最困难的就是调试)。使用急切执行,张量操作会立即执行,而不是构建一个稍后再评估的图形。这意味着我们可以立即检查张量中的值 - 这也意味着我们可以命令式地编写循环来执行以前更难完成的交错。

TensorFlow 神经机器翻译教程 TensorFlow 急切执行 神经机器翻译交互式笔记本

先决条件

本文中的代码依赖于几个 TensorFlow R 包的开发版本。您可以按如下方式安装这些软件包:

:: install_github c )) <-