谷歌推出基于注意机制的全新翻译框架,Attention is All You Need!

AI 科技评论消息,谷歌最近与多伦多大学等高校合作发表论文,提出了一种新的网络框架——Transformer。Transformer是完全基于注意力机制(attention mechanism)的网络框架,放弃了RNN和CNN模型。

众所周知,在编码-解码框架中,主流的序列传导模型都是基于RNN或者CNN的,其中能完美连接编码器和解码器的是注意力机制。而谷歌提出的这一新框架Transformer,则是完全基于注意力机制的。

Transformer用于执行翻译任务,实验表明,这一模型表现极好,可并行化,并且大大减少训练时间。Transformer在WMT 2014英德翻译任务上实现了28.4 BLEU,改善了现有的最佳成绩(包括超过2个BLEU的集合模型),在WMT 2014英法翻译任务中,建立了一个新的单一模式,在八个GPU上训练了3.5天后,最好的BLEU得分为41.0,这在训练成本最小的情况下达到了最佳性能。由Transformer泛化的模型成功应用于其他任务,例如在大量数据集和有限数据集中训练英语成分句法解析的任务。

注意力机制是序列模型和传导模型的结合,在不考虑输入输出序列距离的前提下允许模型相互依赖,有时(但是很少的情况),注意力机制会和RNN结合。

模型结构

编码器:编码器有6个完全的层堆栈而成,每一层都有两个子层。第一个子层是多头的self-attention机制,第二层是一层简单的前馈网络全连接层。在每一层子层都有residual和归一化。

解码器:解码器也是有6个完全相同的层堆栈而成,每一层有三个子层,在编码栈的输出处作为多头的attention机制。

注意(attention):功能是将Query和一组键-值对映射到输出,那么包括query、键、值及输出就都成为了向量。输出是值的权重加和,而权重则是由值对应的query和键计算而得。

source:arxiv

AI 科技评论了解到,谷歌这一模型在众多翻译任务中都取得了最佳成绩,其泛化模型也在其他识别任务中表现优异。谷歌对这一基于注意力机制的Transformer表示乐观,研究人员很高兴看到模型在其他任务中表现良好,谷歌计划研究Transformer的更广泛应用——其他形式的输入输出,包括图像、音频及视频等。

论文链接:https://arxiv.org/abs/1706.03762

以前的谷歌翻译是怎样的?

AI 科技评论帮大家梳理一下谷歌之前的翻译框架进化史

一)基于短语的机器翻译

2006 年Google团队改进了——统计机器翻译(statistical machine translation),并宣布上线Google Translate翻译功能。当时的核心技术 “统计机器翻译”的基本思想是通过对大量平行语料进行统计分析、构建统计翻译模型、进而使用此模型进行翻译。简单来说,你可以认为这个翻译系统是基于短语翻译的。

二)用于自动翻译的端到端的学习方法

谷歌2016年9月29日前后正式发布第一代神经翻译系统。当时谷歌在 ArXiv.org 上发表论文《Google`s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation》介绍谷歌的神经机器翻译系统(GNMT)。神经机器翻译(NMT: Neural Machine Translation)是一种用于自动翻译的端到端的学习方法,该方法有望克服传统的基于短语的翻译系统的缺点。

当时外界对这个神经翻译系统的褒贬不一,比较综合的评价是:在同等语料的情况下,相较于基于短语的统计机器翻译,神经机器翻译(GNMT)系统能在更少工程量的基础上实现相同的效果。但是其纯粹把输入的句子当做一个序列(理论上任意符号序列都可以),不考虑这个句子本身作为语言的特性,生成的内容可能会比较奇怪,难以控制,错误的结果也难以解释。

三)完全基于注意力机制(attention mechanism)的网络框架

谷歌翻译新的网络框架——Transformer是完全基于注意力机制(attention mechanism)的网络框架,如上文所说,注意力机制是序列模型和传导模型的结合,在不考虑输入输出序列距离的前提下允许模型相互依赖,相比去年9月分公布的谷歌的神经机器翻译系统(GNMT),这里的传导模型的加入极有可能是这次系统升级的关键。

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-06-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2308
来自专栏成长道路

JDBC动态SQL语句连接orcale数据库的工具类

import java.sql.Connection; import java.sql.DriverManager; import java.sql.P...

2510
来自专栏跟着阿笨一起玩NET

去除DataTable中重复字段

               DataTable tbl = new DataTable();                 tbl.Columns.Add(...

741
来自专栏互联网开发者交流社区

WinForm之窗体应用程序

1863
来自专栏跟着阿笨一起玩NET

[C#]工具类—FTP上传下载

  不错的文章:http://www.cnblogs.com/greatverve/archive/2012/03/03/csharp-ftp.html

1201
来自专栏码匠的流水账

聊聊spring cloud的AbstractLoadBalancingClient

本文主要研究一下spring cloud的AbstractLoadBalancingClient

842
来自专栏海说

Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)

Java应用中常见的JDBC连接字符串 Java应用中连接数据库是不可或缺的,于是便整理一些可能用到的JDBC的jar包及其相匹配的URL,以备日后查阅。 1)...

2740
来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5485
来自专栏菩提树下的杨过

遍历文件夹所有文件(示例)

//要引用 using System.Collections.Specialized; public StringCollection GetAllFile...

2159
来自专栏跟着阿笨一起玩NET

GB2312转换成UTF-8与utf_8转换成GB2312

1911

扫码关注云+社区