机器翻译之人工智能方法
最早机器翻译是基于规则的词语翻译(rule based machine translation, RBMT),因为无法解决词语多重含义和句子结构多样性,这种方法现在已经不再使用。
几年前,机器翻译界的主流方法都是Phrased-Based Machine Translation (PBMT),当时Google 翻译使用的也是基于这个框架的算法。所谓Phrased-based,即翻译的最小单位由任意连续的词(Word)组合成为的词组(Phrase)。其本质上属于统计机器翻译Statistical Machine Translation (SMT),即基于概率统计而非基于规则来学习源语言到目标语言的映射函数。90年代提出的IBM model是统计机器翻译中的经典翻译模型,也是基于词的统计机器翻译系统的基础。IBM翻译模型共有5个复杂度依次递增的统计翻译模型,IBM model1是其中最简单的模型,也是其他模型进行计算的基础。IBM模型1仅仅考虑词对词的互译概率,模型2引入了词的位置变化概率,而模型3加入一词翻译成多词的概率。SMT在整个翻译过程中,需要依次调用其他各种更底层的 NLP 算法,比如中文分词、词性标注、句法结构等等,最终才能生成正确的翻译。这样像流水线一样的翻译方法,一环套一环,中间任意一个环节有了错误,这样的错误会一直传播下去(error propagation),导致最终的结果出错。
深度神经网络提倡的是端到端学习,即跳过中间各种子 NLP 步骤,用深层的网络结构去直接学习拟合源语言到目标语言的概率。最新成果来自于论文:“Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation”。该成果的评价是:“各种算法综合积累的成果,是过去几年自然语言处理领域好方法的集成,集成了Seq2Seq + Attention + Stack LSTM + Minimize Sentence Loss,方法学上的贡献不多,实验经验的贡献比较多”。本质上是在NMT(Neural Machine Translation)的基础上所做改进。
在众多的机器翻译自动评价方法中,2002年IBM提出的基于N-gram精确率的BLEU方法是目前采用最广泛的。BLEU测度的原理是计算待评价译文和一个或多个参考译文间的距离。距离是文本间n元相似度的平均,n=1,2,3(更高的值似乎无关紧要),即统计同时出现在系统译文和参考译文中的n元词的个数,最后把匹配到的n元词的数目除以系统译文的单词数目,得到评测结果。也就是说,如果待选译文和参考译文的2元(连续词对)或3元相似度较高,那么该译文的得分就较高。一般来说人的 BLEU 值在50-70之间。
(启示:在体验度量中,建议考虑一种方法和机制来进行自动评价模型的效果,该方法和机制可以不受网络设备端的约束,只是作为一种自动反馈)
虽然SMT现在被NMT取代,但从目前准确率来看差距并不是很大,因此还是有参考价值

思路分析
业务建模
- 基于贝叶斯理论来考虑翻译问题,就是在给定一个条件下,找到概率最大的结果,这个假设符合语言领域的实际情况,比如人类总是按各自母语的语法和规则来讲述自己的语言,每个句子中词语先后顺序和关联关系都形成了一种概率分布。具体的,下图中f表示源语言法语,e表示目标语言英语,目标就是找到p(e)为max的e。P(e)是表示句子是合法的英语句子的可能性,也叫做语言模型;P(f|e)是表示该翻译出的英文句子表达的意思与原来法语句子所表达的意思有多大的相似,或者说表达出多少法语句子中的意思,也叫做翻译模型。下面的公式就这样形式化地描述了整个翻译过程中的3个问题——语言模型、翻译模型以及解搜索。

在实际中,常用马尔可夫假设来简化该问题,即下一个词仅仅依赖前面若干词,称为n-gram模型,n=1和2情况如下所示

P的计算是直接从语料库中统计得到,目前资料来看以trigram模型表现最佳。
(启示:对应体验度量,令A表示网络参数为A的概率,令B为体验为差的概率,那么目标表示为P(B|A)=P(A|B)P(B)/P(A),其中P(B)表示整体情况下体验为不好的概率,P(A)表示网络参数为A的概率,P(A|B)为体验不好网络参数为A的概率,该方法一般来说,难点在于如何得到P(A|B)和P(B))
- 下面开始介绍翻译模型,这是SMT的核心。在model1中,建立一个称为‘词对齐’的隐含变量,表示源语言句子和目标语言句子中词和词的对应关系a,它把不同语言中同一个意思的句子词汇之间联系起来
![(https://ad.itadn.com/c/weblog/blog-img/images/2025-05-03/YKMbRlELNT1gf72PoFpOdsrG84au.jpeg)
![(https://ad.itadn.com/c/weblog/blog-img/images/2025-05-03/XGQRqEBpS7e2DnadIigu9CKhf58r.jpeg)
一开始假定a是等概率(启示:这个在很多案例中可以见到,一开始使用最原始的假定,比如等概率,或者初始值为0等),
![(https://ad.itadn.com/c/weblog/blog-img/images/2025-05-03/JSmCeUonbR6t4pwEi17h9NHxLTz0.jpeg)
再定义t为单词翻译的概率,即
![(https://ad.itadn.com/c/weblog/blog-img/images/2025-05-03/fmurpeKTkDWz8cOXdt1R9EYVsIxl.jpeg)
也就是
![(https://ad.itadn.com/c/weblog/blog-img/images/2025-05-03/zko8G7x3VJLtr5mUFRQK2l6CdanY.jpeg)
最后得到
![(https://ad.itadn.com/c/weblog/blog-img/images/2025-05-03/SOTv8fy5MqBr2Dlnc64LVoY7W9Uk.jpeg)
- 在model 2中,引入新表示,![(https://ad.itadn.com/c/weblog/blog-img/images/2025-05-03/Ad12q8ZvQicUx6JOTEhgVPaznDj0.jpeg),其中q(j|i,l,m)表示给定l,m,a[i] = j的概率,这时候模型就变成

因为RNN中隐含层节点间存在连接,隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出,即神经元的输出可以在下一个时间戳直接作用到自身,展开来看形如

比如,如果一个序列正在处理一个由5个单词组成的句子,网络将会被展开成为一个5层的神经网络,每一层对应一个单词。

可以通过不断的将当前输入和历史输入组合将序列压缩为某个定长维度向量,RNN中参数使用BPTT算法求得。
- Encoder-Decoder
两个 Recurrent Neural Networks (RNNs) 递归神经网络。一个用来处理输入的文本 (encoder network),一个用来生成翻译后的文本 (decoder network)。它们一个负责编码,将源语言编码成向量,一个负责解码,将向量解码为目标语言。其优点在于可以从生数据中学习特征,将语义相同句子汇聚,不同句子分开,还有利于LTSM捕获长距离依赖,解决稀疏问题。(启示:因为RNN可以处理变长输入和变长输出,还具有记忆功能)如下图所示,为了生成编码(橙色),我们将句子输入到RNN中,一次一个词(红色)。最后一个词处理之后的最终结果(橙色),就将是表示整个句子的数值:

建模分析
RNN属于生成模型。RNN的训练同样使用BP误差反向传播算法,不过有一点区别。如果将RNN进行网络展开,那么参数是共享的,而传统神经网络却不是的。并且在使用梯度下降算法中,每一步的输出不仅依赖当前步的网络,并且还以来前面若干步网络的状态。该学习算法称为Back propagation Through Time (BPTT)。结合前面RNN的展开图示,定义下面符号

其中存在关系

BPTT和BP算法类似都是使用梯度下降算法,不同在于BPTT需要对求损失函数对U、V、W的偏导数,而BP算法只对权重W求偏导数。
BPTT无法解决长时依赖问题(即当前的输出与前面很长的一段序列有关,一般超过十步就无能为力了),因为BPTT会带来所谓的梯度消失或梯度爆炸问题(the vanishing/exploding gradient problem),也就是后面时间的节点对于前面时间的节点感知力下降。有很多方法解决这个问题,如LSTM模型。在这个模型中,常规的神经元,即一个将S型激活应用于其输入线性组合的单位,被存储单元所代替。每个存储单元是与一个输入门,一个输出门和一个跨越时间步骤无干扰送入自身的内部状态相关联。
为了更好的理解,通过下图来对比RNN和LTSM
