NMT:神经网络机器翻译

article/2025/8/26 19:32:23

前言

  SMT是在神经网络之前最主流的翻译模式,统计机器翻译;NMT则是基于神经网络的翻译模式,也是当前效果最好的翻译模式。现在基于几篇paper来梳理下神经网络下的翻译模型。

NMT based RNN

1) First End-to-End RNN Trial
  2014年,Cho首次将End-to-End的RNN结构应用到翻译领域,是以统计机器翻译模型为主,但是用NMT训练得到的短语对,来给SMT作新增特征。另外也是GRU第一次被提出的paper,就是图结构有点糙,GRU的结构比LSTM要简单。看不动就看下面的图。


2) Complete End-to-End RNN NMT
   Properties of NMT是Learning Phrase的兄弟篇,也是Cho的同年佳作,首次以GRU和grConv【GRU的升级版本】实现End-to-End的NMT结构,并分析了NMT时的特性。
  a) NMT在句子长度增加是,效果下降得厉害。
  b) 词表长度对NMT有很大的影响。
  c) grConv的NMT可以在无监督的情况下,学习到目标语言的语法结构。
  其中对GRU和grConv【gated Recurrent Convolutional Network】的结构拆分非常有意思,如下图:

  2014年, Sutskever 首次实现完整意义上的end-to-end的LSTM版本的NMT模型,两个Deep LSTM分别做encoder 和 decoder,其中,反转输入(target不动)训练会提高翻译效果。

  具体操作部分,out-of-vocabulary 作UNKNOWN词,评估是用beam-search 。并行在8张GPU上,每层在一个卡上。使用了 4层Deep LSTM,堆叠的LSTM结构,整体数据集迭代次数在8次以内。并且根据句子长短对minibatch作了 优化,长度基本一致的在一个batch内,防止空转计算。用了个 类似clicp-gradient的约束梯度爆炸的技巧。
notice 1:这个方法很好,就是训练太耗时,需要 10天的时间。
notice 2:不是补充训练,而是就用反转直接训练。【反转训练效果好的非正式解释:引入了许多短期依赖】

3) attention in NMT
  这篇文章《NMT by Jointly Learning to Align and Translate》从14年就开始提交,7易其稿,一直到16年才完成最终版,看下作者Bahdanau和Cho,都是Bengio实验室的,已经产学研一条龙了。


  每个输入序列的词,都有个解释向量 hj h j ,其对当前预测词的贡献权重 α α 采用softmax方式计算,某个词对当前预测词的匹配度由 a a 来确定,所有输入序列中的词都通过h对注意力向量 c c 作贡献。
好在有其他的研究文章可以来辅助确认模型细节,强烈推荐这篇,给出了Attention的基本结构类型说明,其开放源码。一个很好地介绍Attention的博客,后面会作为翻译博客。另外专门写篇博客,讨论NMT by Jointly Learning 与Effective Approaches to Attention-based NMT 和Show and Tell, Neural Image Generation with Visual Attention。
notice 1: Attenttion是一种思想,并不是一种模型,有很多变种attention方法Effective Approaches to Attention-based NMT,并且在翻译之外很多地方都有应用,比如图像描述:《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》,文本分类:《Hierarchical Attention Networks for Document Classification》,关系分类:《Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification》。
notice 2: 非常需要吐槽下NMT by Jointly Learning这篇文章,看似写得很清晰,但是你根据论文内容是没法回答下面两个问题的:
a) 为什么αij不能直接model化 yi y i hj h j 的关系,而是绕道 si1 s i − 1 hj h j 匹配度
   b) 无法确定 h h s是否用同一个BiRNN来描述,即便有图也没法确认,更没有文字明确给出,只能看 源码。
  关于第一点,有模糊地解释:“The probability αij α i j , or its associated energy eij e i j , reflects the importance of the annotation hj h j with respect to the previous hidden state si1 s i − 1 in deciding the next state si s i and generating yi y i . Intuitively, this implements a mechanism of attention in the decoder.”,这种解释都是似是而非的, si1 s i − 1 决定当前状态,那么为什么不包含 yi1 y i − 1 呢?为什么不直接对 yi y i hj h j 直接建模呢?

NMT in google

  Google翻译这么拽,集合了attention机制,Deep机制,并且做了各种工程优化,非常值得一看。
  NMT的三个主要缺陷:1)训练和推断速度慢。2)处理稀少词时会失效。3)有时翻译不能cover全部输入。
  google的NMT作了很大的工程改进,具体如下,更具体见论文。
  1) 8层LSTM分别作 Encoder和 Decoder,同时加以Residual Block以降低学习难度;
  2) 使用Attention,仅连接Encoder的bottom层和Decoder的top层;
  3) 用低精度的推断来加快翻译速度;
  4) 为改善稀少词的处理,使用wordpiece,将单词拆成有限子集单元,极大地平衡了单字母的复杂性和完整单词的有效性,并且避开了对未知单词的处理;
  5) 利用强化学习来改善翻译效果。

NMT based CNN

思考 与 总结

1) NMT大部分以Encoder-Decoder结构为基础结构。
2) 翻译模型特别喜欢bidirectional,注意其无法适应在线的缺陷。
3) Attention并不局限于翻译模型上,而是在各个地方都有应用。
4) NMT的训练耗时是个长久存在的问题,需要在工程中密切关注。

补充知识

1) 关于翻译结果的查找方法:Beam Search
如果直接搜索模型的最优路径,需要比较所有的可能路径,耗时耗力。Beam Search则每次选择Top-N个选项,相当于每次只对比当次所有输出,然后选择Top-N。


2) 关于翻译效果的评估方法: BLEU 和 Meteor
B={1e1r/cifc>rifcc B = { 1 i f c > r e 1 − r / c i f c ≤ c

BLEU=Bexp(1Nn=1Nlogpn) B L E U = B · e x p ( 1 N ∑ n = 1 N l o g p n )

BLEU-2005是改进unigram-precision的改进版,是[1,n]-gram precision的几何平均值,通常 N=4 N = 4 足矣。 B B 是penalty,c是候选翻译的平均长度, r r 是参考翻译的平均长度。
pn是修正的n-gram precision,候选翻译的n-gram 出现在任意参考翻译中的数量,除以总候选翻译的n-gram数量。
Fα=PRαP+(1α)R F α = P R α P + ( 1 − α ) R

Meteor=(1M)Fα M e t e o r = ( 1 − M ) F α

Meteor克服了BLEU的缺陷(在大量数据集评估上符合人类评估,但是单条间无法准确评估和比较),基于候选翻译和参考翻译之间的词与词的匹配。 P P 是precision,R是recall。“M ∝ c/m where c is the smallest number of chunks of consecutive words such that the words are adjacent in both the candidate and the reference, and m is the total number of matched unigrams yielding the score”

Reference

2014 - 《Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation》
2014 - 《On the Properties of Neural Machine Translation, Encoder-Decoder Approaches》
2014 - 《Sequence to Sequence Learning with Neural Networks》
2016 - 《Neural Machine Translation by Jointly Learning to Align and Translate》
2015 - 《Effective Approaches to Attention-based Neural Machine Translate》建议重点阅读
2016 - 《 Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation》建议重点阅读


http://chatgpt.dhexx.cn/article/a9RAH4df.shtml

相关文章

神经机器翻译(Neural machine translation, NMT)学习笔记

神经机器翻译(Neural machine translation, NMT)是最近提出的机器翻译方法。与传统的统计机器翻译不同,NMT的目标是建立一个单一的神经网络,可以共同调整以最大化翻译性能。最近提出的用于神经机器翻译的模型经常属于编码器-解码器…

Java本机内存跟踪NMT实战详解

JVM通常会额外分配内存。这些额外的分配,会导致java程序占用的内存,超出-Xmx的限制。让我们使用NMT查看内存的使用情况 NMT 是什么 NMT 是一种 Java Hotspot VM 功能,用于跟踪 HotSpot VM 的内部内存使用情况。您可以使用该jcmd实用程序访问…

fastText模型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目标一、fastText的模型架构1. N-gram的理解1.1 bag of word 2. fastTex模型中层次化的softmax2.1 哈夫曼树和哈夫曼编码2.1.1 哈夫曼树的定义2.1.2 哈夫曼树的相关…

fastText Python 教程

诸神缄默不语-个人CSDN博文目录 fastText Python官方GitHub文件夹网址:fastText/python at main facebookresearch/fastText 本文介绍fastText Python包的基本教程,包括安装方式和简单的使用方式。 我看gensim也有对fasttext算法的支持(ht…

玩转Fasttext

Fasttext是Facebook AI Research最近推出的文本分类和词训练工具,其源码已经托管在Github上。Fasttext最大的特点是模型简单,只有一层的隐层以及输出层,因此训练速度非常快,在普通的CPU上可以实现分钟级别的训练,比深度…

FastText详解

词向量对比word2vec https://zhuanlan.zhihu.com/p/75391062 0、实战经验 word2vec vs fastText区别? 思想:将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。 word2vec vs fastText区别? …

FastText原理

一、简介 fasttext是facebook开源的一个词向量与文本分类工具,在2016年开源,典型应用场景是“带监督的文本分类问题”。提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。 fastText结合了自然语言处理和机器学习中最…

Fasttext

Fasttext Paper Fasttext特点 模型简单,只有一层的隐层以及输出层,因此训练速度非常快不需要训练词向量,Fasttext自己会训练两个优化:Hierarchical Softmax、N-gram Fasttext模型架构 fastText模型架构和word2vec中的CBOW很相…

[NLP]文本分类之fastText详解

Word2vec, Fasttext, Glove, Elmo, Bert, Flair pre-train Word Embedding 一、fastText简介 fastText是一个快速文本分类算法,与基于神经网络的分类算法相比有两大优点: 1、fastText在保持高精度的情况下加快了训练速度和测试速度 2、fastText不需要预…

FastText:高效的文本分类工具

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

FastText的简单介绍

0、引言 FastText是facebook开源的一款集word2vec、文本分类等一体的机器学习训练工具。在之前的论文中,作者用FastText和char-CNN、deepCNN等主流的深度学习框架,在同样的公开数据集上进行对比测试,在保证准确率稳定的情况下,Fa…

快速文本分类(FastText)

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

FastText:快速的文本分类器

转载请注明作者和出处:http://blog.csdn.net/john_bh/ 一、简介二、FastText原理 2.1 模型架构2.2 层次SoftMax2.3 N-gram特征 三、 基于fastText实现文本分类 3.1 fastText有监督学习分类3.2 fastText有监督学习分类 三、总结 3.1 fastText和word2vec的区别3.2 小…

DCGAN的PyTorch实现

DCGAN 1.什么是GAN GAN是一个框架,让深度模型可以学习到数据的分布,从而通过数据的分布生成新的数据(服从同一分布)。 其由一个判别器和一个生成器构成,生成器负责生成“仿造数据”,判别器负责判断“仿造数据”的质量。两者一起…

GAN论文阅读——DCGAN

论文标题:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks 论文链接:https://arxiv.org/abs/1511.06434 参考资料:http://blog.csdn.net/liuxiao214/article/details/73500737      …

DCGAN整理总结

DCGAN整理总结 GAN什么是GAN?GAN重要参数及损失函数 DCGAN什么是DCGAN?DCGAN结构TensorFlow版本MINIST手写体生成模型Pytorch版本人脸生成模型 GAN 什么是GAN? GAN是一个教深度学习模型捕捉训练数据的布局来从该布局中生成新数据的框架。最早…

DCGAN论文翻译

UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS (使用DCGAN的无监督表示学习) ABSTRACT(摘要) In recent years, supervised learning with convolutional networks (CNNs) h…

机器学习中的DCGAN-Tensorflow:用于更稳定的训练

https://www.toutiao.com/a6666031263536644621/ 自从Ian Goodfellow的论文以来,GAN已应用于许多领域,但其不稳定性一直存在问题。GAN必须解决极小极大(鞍点)问题,因此这个问题是固有的。 马鞍点的滑稽表示 许多研究人…

DCGAN 源码解析

为什么写Blog现在还没找到理由。不过用心看下去你会觉得更有意义。 我们以生成图片为例子: G就是一个生成图片的网络,它接受一个随机的噪声z,然后通过这个噪声生成图片,生成的数据记做G(z)。D是一个判别网络,判别一张图片是不是…

pytorch搭建DCGAN

我们知道gan的过程是对生成分布拟合真实分布的一个过程,理想目标是让判别器无法识别输入数据到底是来源于生成器生成的数据还是真实的数据。 当然这是一个博弈的过程并且相互促进的过程,其真实的过程在于首先判别器会先拟合真实数据的分布,然…