天下网吧 >> 网吧系统 >> 系统动态 >> 正文

科普:Google神经网络机器翻译发展历程

2016-11-23不详佚名
LSTM组成,最下面两层是一个双向LSTM,可以从前到后以及从后往前理解一遍输入的源语言输入。中间的蓝色模块就是Attention模块,负责对Encoder的逻辑进行加权平均输出到Decoder层。Decoder模块也是一个8层的LSTM,最终连接到Softmax层,一个词一个词输出最终的目标语言词语的概率分布。

算法上,论文中还提到了一些创新点。包括引入Wordpiece来对单词进行更细粒度的建模,来解决上面提到的不常见词语的问题;以及在Decoding结束之后,搜索最佳输出序列的时候,引入coverage penalty的概念,来鼓励Decoder输出更加完整的翻译句子,以解决有时候NMT有时候无法完整的翻译整句的情况。

工程上,报告里面着重谈到了几个性能优化的重点:

引入Risidual Connection

8层的LSTM堆叠起来,大大增加了神经网络的表达能力,在海量的数据下可以获得更好的模型效果。不过这样的堆叠会直接导致模型太庞大不可训练,在梯度反向传播的时候,很容易出现梯度弥散或梯度爆炸的问题。过去的研究证明[5],Residual Connection的方式,直接去学习残差可能会带来更好的效果,避免了深度网络中反向传播中出现的梯度反向传播可能会发生的问题。在上面的Google NMT架构图中,从倒数第三层开始都会引入Residual Connection。

大量的并行优化

与此同时,在工程上Google也进行了非常多的优化,来减少训练和实时翻译时候的延迟问题。比如训练数据的时候,数据会分成n等份,交给不同的GPU去异步训练,然后再汇总到统一的参数服务器;同时,Encoder和Decoder的不同层的LSTM会在不同的GPU上运行,因为更上一层的LSTM不必等到下一层的神经网络完全计算完毕再开始工作;即使对于最后的Softmax输出层,如果最后输出词的维度太大,也会划分到不同的GPU上并行处理。可谓不放过丝毫并行的机会。

底层基础计算平台的支持。Google NMT采用了自家的Tensorflow深度学习框架,并运行在Google专门为深度学习打造的TPU(Tensor Processing Unit)上,当年的AlphaGo也是由TPU提供支持。在对于模型参数的计算上,也大量应用了Quantized计算的技术:

由于神经网络参数涉及大量的耗时的浮点数运算,通过Quantization的方法,将模型参数由浮点数类型转换到一个更低精度(比如8bit),虽然会有一些精度的损失,但是可以大大减少计算量以及最终训练模型的体积。

从软件框架到定制硬件,相互配合,追求最极致的性能。在这篇报告里,有着长长的作者列表,最后赫然列着Google工程架构大神Jeffrey Dean的名字,他是当年一手创造了Map Reduce、Big Table等产品的Google奠基者之一。

本文来源:不详 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下