统计机器翻译中大规模特征的深度融合
发布日期:2025-01-04 16:01 点击次数:80
深度神经网络作为原型学习[1](prototype learning)的一种重要方法, 深度神经网络在很多领域[2-4]都有应用, 在自然语言处理方面主要是形成词嵌入(word embedding)/词表示(word representation).把这些词嵌入进行加工后或直接作为语义特征应用到自然语言处理任务中, 对原有特征作有益的补充.在自然语言处理领域应用较多的为循环神经网络[5]和递归神经网络[6], 它们是为了获得自然语言处理过程中的结构性.其中循环神经网络是为了获得语言的顺序性, 递归神经网络是为了获得语言的层次化结构.
机器翻译系统融合主要分为两类:后处理式系统融合[7]和模型间系统融合[8].比较这两种类型的系统融合可知, 模型融合能够充分考虑到翻译过程中模型间相互信息的影响, 提高搜索部分翻译的正确性.在不考虑复杂度的情况下, 模型间系统融合更加有优势.模型间系统融合的基本过程如下:在解码过程中从其他模型中借鉴解码信息, 以提高自身解码的性能.异类语料是对于不同领域的训练数据进行建模, 从而影响当前领域的翻译性能.在机器翻译中, 传统模型使用稠密特征(dense feature), 这样在翻译过程中忽略了原有训练语料中的很多信息.为了更好地利用原有的训练语料, 在翻译过程中引入稀疏特征(sparse feature), 由于这种特征相对较少, 称为大规模特征(large-scale feature).大规模特征一直以来是提高机器翻译性能的重要手段, Liang等[9-10]最早把大规模特征引入到机器翻译框架下;为了减少训练的复杂度, 大规模特征训练一般采用2种方法:离线学习(offline learning)和在线学习(online learning).在线学习一次只处理一个实例, 离线学习称为批量方法, 一次处理一批实例.比较重要的在线算法有MIRA[11]、AROW[12]和SGD[13]等;比较重要的离线算法有PRO[14]等.
本文的基本过程如下:先在机器翻译的训练过程中使用改进的循环神经网络(recurrent neural network, RTNN), 以获得短语/规则对语义嵌入;接着在机器翻译解码过程中, 使用改进的递归神经网络(recursive neural network, RENN)进行大规模特征融合.相对于已经存在的神经翻译模型[15-26]来说, 本文的主要贡献如下.
(1) 在原有的RTNN基础上, 增加了自编码部分, 利用词对齐信息指导训练过程, 在训练后进行统计得到短语/规则对语义嵌入.
(2) 改进了原有的RENN, 建立适合于不同翻译模型的深度神经网络.以翻译模型解码过程中的推导树作为指导, 递归融合2种模型的稠密和稀疏特征, 不仅适合于系统融合, 而且适合于领域自适应.
1 相关研究
深度神经网络是从传统神经网络发展过来的, 克服了隐层个数受限的问题.在机器翻译中常用的深度神经网络主要是学习与翻译相关的语义向量, 且大部分集中在前馈神经网络中的BP网络.自然语言结构是线性的, 而隐藏在语言背后的语法和语义是层次化的, 这导致了与自然语言相关的解码算法是层次化的.翻译过程是对语言结构信息进行翻译, 针对该结构的深度神经网络分为两种:RTNN[5]和RENN[6](为了区分大部分文献称呼的两种RNN, 使用RTNN表示循环神经网络, 使用RENN表示递归神经网络), 当然这两种深度神经网络都可以应用到语义获取和解码中.RTNN主要是通过将语言的顺序特性建模成时间序列, RENN主要是对于语言的层次化特性进行建模.对于RTNN扩展, Cho等[15]使用两个RTNN作为编码层和解码层, 解决了变长句子翻译的建模, 对于隐层使用重置门和更新门缓解了前一层信息的选择问题;Bahdanau等[16]使用RTNN对于翻译和对齐一起进行建模, 建立双向编码层把源句子变成一系列向量, 解决了源句子编码成定长向量的问题;Auli等[17]使用RTNN对于语言和翻译模型进行联合建模, 且在建模过程中考虑了对齐信息.对于RENN扩展, Zhai等[18]使用RENN预测翻译过程的推导树;Zhang等[19]使用源语言、目标语言和双语自编码器进行短语嵌入;Li等[20]使用RENN作为分类器, 预测翻译过程中的两种调序;Zhang等[21]使用自编码RENN和向量距离目标函数, 学习短语嵌入;Su等[22]在文献[21]的基础上, 增加了对齐;Liu等[23]在翻译过程中, 结合了RENN和RTNN.除了对翻译过程的结构信息进行建模外, 使用卷积神经网络对语境信息进行建模.Zhang等[24-25]使用卷积神经网络, 捕获源语言的语境;Hu等[26]使用卷积神经网络, 捕获源语言和目标语言的语境.
本文的方法与以往神经翻译模型的区别如下.
1) 在解码阶段, 使用深度神经网络并进行融合;使用改进的RTNN, 根据词对齐的指导, 预先获得短语/规则对语义向量, 在解码中使用改进的RENN对单系统进行训练, 并把传统和稀疏特征引入到深度融合框架.
2) 本文方法与文献[23]有相似地方, 都是在解码过程中应用RENN, 但该模型除了短语对的嵌入外, 还有规则对嵌入, 这样使得该模型不仅适合于括号转录文法(bracket transduction grammar, BTG), 也适合于层次化短语文法(hierarchical phrase-based grammar, HPG), 只要是使用规则的翻译系统都可以放到该框架下, 有更强的泛化能力, 并使用稀疏特征进行两种RENN的深度融合.
2 短语/规则对语义嵌入
2.1 语义嵌入模型
考虑到RTNN建模过程符合于目标短语生成过程, 同时不限制历史信息长度(即无界限性[17])的特性, 本文采用改进的RTNN.不同于文献[17]将双语语言模型应用到解码器生成词图(word-lattice)中进行重排序(reranking/rescoring), 本文直接把短语对语义嵌入作为初始向量应用到深度融合模型中, 且为了训练中更加准确和收敛更快采用了自编码器(autoencoder).短语翻译的基本过程为按照目标语言顺序对源语言进行翻译, 此处按照该思想进行建模.为了更好地说明建模过程, 该部分通过例子进行说明, 如图 1所示.
图 1
短语对语义嵌入模型
Fig. 1
Phrase-pair semantic embedding model
在图 1的上半部分中, 长方形框表示每个单词对应的语义向量, 画红色虚线的部分为循环神经网络单元, 循环指该单元在循环.这里的hi表示历史信息的语义向量(在图 1中使用背景带有斜线的部分表示), 它是部分/完全短语对语义向量(因为是由部分/完全短语对生成的).源语言侧单词fi的语义向量fi采用文献[27]的方法预先训练, 方法为在源语言侧建立语言模型, 获得词语义向量, 向量维数和hj一样, h0的所有维的数字为0;目标语言侧单词ek语义向量ek是有一维为1(one-hot)的向量, 它的维数为目标语言词典中词的个数|V|, 根据单词ek在词典V位置确定哪一维为1;p是所有单词后验概率形成的向量, 维数为|V|, p的每一维表示第i个目标语言侧单词ei的后验概率.该例子表示5元语言模型的概率, 但根据RTNN对于历史信息建模的无界性, 并不限定语言模型的元数, 须根据目标语言侧短语中单词的个数来确定(符合短语长度的不固定).如图 1的下半部分所示为给定源短语f1f2f3f4和目标短语e1e2e3e4的对齐关系, 按照对齐关系输入到改进RTNN中.图 1的上半部分是按照目标语言的顺序和这种对齐关系生成的.
图 2对应图 1的画红线单元的自编码, 对于解码层(decoder layer), 采用与编码层(encoder layer)不同的矩阵形式, 反映了解码层和编码层的不同.图 2右侧的灰色部分表示重构部分, 获得目标侧单词语义向量e1的矩阵为We, 解码后目标侧单词语义向量e′1的矩阵为W′e, 其他类似.这样的训练过程可以使得每个RTNN单元达到最优, 使得整个短语对语义嵌入模型训练更快, 更准确地收敛.
图 2
RTNN单元的自编码器
Fig. 2
RTNN unit autoencoder
下面对几种特殊的对齐情况进行说明:对于目标侧词对齐于多个源侧词, 这些源侧词的每个词向量都输入到一个RTNN单元中;没有对齐关系的目标侧词在RTNN单元中, 源侧词是一个全零的向量.由于是按照目标词的翻译顺序进行建模, 对于源语言侧的单词对空和与多个目标词对齐不需要进行考虑.
在训练过程中需要考虑对齐关系, 在训练后得到含有对齐关系的短语对语义嵌入, 无法用于解码过程中的深度翻译模型.本文沿用文献[28]的方法, 通过下式进行统计后得到用于解码的短语对语义嵌入:
$
{\mathit{\boldsymbol{z}}_{\left\langle {f,e} \right\rangle }} = \frac{{\sum {_{\left( {\left\langle {f,e} \right\rangle ,\left\langle {f,e,a} \right\rangle ,c} \right) \in T}c} \times {\mathit{\boldsymbol{z}}_{\left\langle {f,e,a} \right\rangle }}}}{{\sum {_{\left( {\left\langle {f,e} \right\rangle ,\left\langle {f,e,a} \right\rangle ,c} \right) \in T}c} }}.
$
(1)
式中:T为短语对 < f, e > 所有训练实例的集合, z < f, e, a > 为含有对齐信息的短语对 < f, e, a > 语义向量, c为 < f, e, a > 的出现次数, z < f, e > 为不含有对齐信息的短语对语义向量.式(1) 的含义为对于含有对齐信息的短语对语义向量进行加权求和, 获得不含对齐信息的短语对语义向量.
由于规则对是在短语对的基础上抽取出来的, 有了短语对语义嵌入, 可以计算规则对语义嵌入, 基本公式与式(1) 相似, 如下:
$
{\mathit{\boldsymbol{z}}_{\left\langle {\alpha ,\gamma } \right\rangle }} = \frac{{\sum {_{\left( {\left\langle {\alpha ,\gamma } \right\rangle ,\left\langle {f,e} \right\rangle ,c} \right) \in T'}c} \times {\mathit{\boldsymbol{z}}_{\left\langle {f,e} \right\rangle }}}}{{\sum {_{\left( {\left\langle {\alpha ,\gamma } \right\rangle ,\left\langle {f,e} \right\rangle ,c} \right) \in T'}c} }}.
$
(2)
式中:T′为规则对 < α, γ > 所有训练实例的集合, 当规则对 < α, γ > 从短语对 < f, e > 中抽取出来后, 短语对的语义向量为z < f, e > , 规则对的语义向量为z < α, γ > .因为在每个短语对 < f, e > 中抽取出很多规则, 这里的c是分数, 表示规则抽取出来的概率.
2.2 参数估计
为了进行参数训练, 首先须确定目标函数, 分为两个部分:无监督预训练和无监督的全局训练.因为上一层的训练结果会影响下一层的训练结果, 采用分层(layer-wise)的无监督预训练(unsupervised pre-training)方法进行逐层训练.对于图 2的自编码部分, 通过sigmoid激活函数定义重构的语义向量:
$
{\mathit{\boldsymbol{h}}_1} = {\rm{sigmoid}}\left( {\mathit{\boldsymbol{U}}{\mathit{\boldsymbol{h}}_0} + {\mathit{\boldsymbol{W}}_e}{\mathit{\boldsymbol{e}}_1} + {\mathit{\boldsymbol{W}}_f}{\mathit{\boldsymbol{f}}_3}} \right),
$
(3)
$
{{\mathit{\boldsymbol{h'}}}_0} = {\rm{sigmoid}}\left( {\mathit{\boldsymbol{U'}}{\mathit{\boldsymbol{h}}_1}} \right).
$
(4)
为了符号表示方便, 对于第一层编码器的输入表示为x1=[h0; e1; f3](使用下标表示层数), 对于第一层解码器的输出表示为x′1=[h′0; e′1; f′3], 连接函数方括号表示把3个向量按列堆成一个列向量.第一层的目标函数Laut1(使用上标表示层数)采用2-范数的平方来度量语义向量之间的距离, 目标函数可以定义为
$
\mathit{\boldsymbol{L}}_{{\rm{aut}}}^1\left( {{\mathit{\boldsymbol{x}}_1},{{\mathit{\boldsymbol{x'}}}_1};{\mathit{\boldsymbol{\theta }}_{{\rm{aut}}}}} \right) = \frac{1}{2}\left\| {{\mathit{\boldsymbol{x}}_1} - {{\mathit{\boldsymbol{x'}}}_1}} \right\|_2^2 + \frac{{{\lambda _{{\theta _{{\rm{aut}}}}}}}}{2}\left\| {{\mathit{\boldsymbol{\theta }}_{{\rm{aut}}}}} \right\|_2^2.
$
(5)
式中:θaut包含6个矩阵, 分别为编码器中的矩阵U、We、Wf和解码器中的矩阵U′、W′e、W′f;λθaut包含6个超参, 分别对应编码/解码器中的6个矩阵, 这些超参用来控制参数矩阵在整个目标函数中的重要性.从左到右对每个RTNN单元进行训练, Socher等[29]发现该贪心策略不会影响到性能.无监督预训练目标函数的求导比较简单, 只是目标函数对于每个参数矩阵进行求导, 这里不再赘述.
无监督全局训练和无监督预训练的区别在于无监督全局需要对每一层的参数矩阵进行求导, 获得全局优化结果.对于图 1的无监督全局训练算法, 采用通过时间的反向传播(BPTT)算法[30].因为每个例子的情况不一样, 定义通用的后验概率:
$
p\left( {{e_i}\left| {{\mathit{\boldsymbol{h}}_{i - 1}}} \right.} \right) = {\rm{softmax}}\left( {\mathit{\boldsymbol{V}}{\mathit{\boldsymbol{h}}_{i - 1}}} \right).
$
(6)
使用softmax函数保证输出是一个后验概率$ \sum\nolimits_{{e_i}} {p\left( {{e_i}|{\mathit{\boldsymbol{h}}_{i-1}}} \right)} = 1 $, 表示给定短语对语义向量单词ei的后验概率.最终的目标函数采用最大条件概率的log似然进行参数估计, 如下:
$
\begin{array}{l}
{L_{{\rm{rtnn}}}}\left( {{p_t}\left( {{e_i}\left| {{\mathit{\boldsymbol{h}}_{i - 1}}} \right.} \right);{\mathit{\boldsymbol{\theta }}_{{\rm{rtnn}}}}} \right) = \\
\;\;\;\;\;\;\;\sum\limits_{t = 1}^T {\log \left( {{p_t}\left( {{e_i}\left| {{\mathit{\boldsymbol{h}}_{i - 1}}} \right.} \right)} \right) - \frac{{{\lambda _{{\theta _{{\rm{rtnn}}}}}}}}{2}\left\| {{\mathit{\boldsymbol{\theta }}_{{\rm{rtnn}}}}} \right\|_2^2.}
\end{array}
$
(7)
式中:T为训练样本的个数, pt(ei|hi-1|为第t个训练样本的后验概率.使用2-范数进行正则化, 以防止参数矩阵的过拟合.由于需要对条件概率的log似然求最大化和使得参数矩阵的数值最小化, 参数矩阵的2-范数部分使用减号.参数θrtnn包含的参数矩阵为U、We、Wf和V.为了参数估计, 对于目标函数Lrtnn中的参数矩阵进行求导, 由于本文采用随机梯度的方法, 只需对目标函数中的一个训练实例进行求导.以图 1为例, 为了简化公式, 使用L′rtnn表示log(pt(e5, |h4)), 如下:
$
\frac{{\partial {{L'}_{{\rm{rtnn}}}}}}{{\partial \mathit{\boldsymbol{V}}}} = \frac{{\partial {{L'}_{{\rm{rtnn}}}}}}{{\partial {\mathit{\boldsymbol{o}}_4}}} \cdot {\left( {\frac{{\partial {\mathit{\boldsymbol{o}}_4}}}{{\partial \mathit{\boldsymbol{V}}}}} \right)^{\rm{T}}} = {\delta _4} \cdot {\left( {{\mathit{\boldsymbol{h}}_4}} \right)^{\rm{T}}},
$
(8)
$
\frac{{\partial {{L'}_{{\rm{rtnn}}}}}}{{\partial \mathit{\boldsymbol{U}}}} = \left( {\frac{{\partial {{L'}_{{\rm{rtnn}}}}}}{{\partial {\mathit{\boldsymbol{h}}_4}}} \circ \frac{{\partial {\mathit{\boldsymbol{h}}_4}}}{{\partial {\mathit{\boldsymbol{z}}_4}}}} \right) \cdot {\left( {\frac{{\partial {\mathit{\boldsymbol{z}}_4}}}{{\partial \mathit{\boldsymbol{U}}}}} \right)^{\rm{T}}} = {\delta _3} \cdot {\left( {{\mathit{\boldsymbol{h}}_3}} \right)^{\rm{T}}}.
$
(9)
对于式(8), 为了求导方便, 使用向量符号o4表示Vh4;其中第4层中softmax的后验概率错误向量δ4=y(e5|h4)-p(e5|h4);向量符号y(e5|h4)为目标后验概率, 采用one-hot的向量表示.对于式(9), 为了求导方便, 使用向量符号z4表示Uh3+Wee4+Wff1, δ3=(VTδ3)∘sigmoid′(z4), 表示第4层传到第3层的错误向量, “·”表示向量之间的乘积, “∘”表示向量中元素间的Hadamard乘积.
为了得到式(7) 的最大值, 根据式(8)、(9) 可得参数矩阵更新公式如下:
$
{\mathit{\boldsymbol{V}}_{s + 1}} = {\mathit{\boldsymbol{V}}_s} + {\eta _{{\rm{rtnn}}}}\left( {{\mathit{\boldsymbol{h}}_4} \cdot {{\left( {{\mathit{\boldsymbol{\delta }}_4}} \right)}^{\rm{T}}} - {\lambda _V} \cdot {\mathit{\boldsymbol{V}}_s}} \right),
$
(10)
$
{\mathit{\boldsymbol{U}}_{s + 1}} = {\mathit{\boldsymbol{U}}_s} + {\eta _{{\rm{rtnn}}}}\left( {{\mathit{\boldsymbol{\delta }}_3} \cdot {{\left( {{\mathit{\boldsymbol{h}}_3}} \right)}^{\rm{T}}} - {\lambda _{U{U_s}}}} \right).
$
(11)
式中:ηrtnn为学习率;Vs为第s步更新后矩阵的数值, 直至更新到收敛为止.其他RTNN单元中隐层的矩阵参数U的求导与式(11) 相似, 只是当前层的错误向量需要根据前一层的错误向量来计算(即错误的反向传播).如当前层的错误向量δ3向前一层传播错误向量为δ2=(VTδ3)∘sigmoid′(z3).对于其他矩阵参数We和Wf的求导和矩阵更新公式同理可以计算获得.
3 大规模特征的深度融合
3.1 单系统深度模型
本文融合了两个经典的翻译模型:一个是HPG, 另一个是BTG.这两个模型在翻译过程中采用的翻译规则形式不同, 层次化的翻译模型主要采用规则对和短语对进行翻译, 括号转录文法模型采用短语对和扭曲规则进行翻译.由于规则对中非终结符的个数不限, 为了建立统一的神经网络以便于训练, 须先对规则进行二叉化[31]处理, 根据该方法的实验可知, 二叉化对机器翻译性能几乎没有影响.
基本过程为对于已经获得的短语/规则对语义嵌入, 输入到单系统深度翻译模型中以预测翻译过程中的推导树结构.对于单系统深度模型的实现过程, 如图 3所示.
图 3
HPG和BTG深度模型
Fig. 3
HPG and BTG deep model
由于采用了自底向上的CKY解码, 深度融合模型可以和整个解码过程同步进行.基本过程为通过使用的层次化/调序规则将两个单元(Cell)进行组合生成新单元, 在每个单元中存放着生成的N-best部分候选翻译结果.图 3中左侧表示HPG翻译系统的深度模型.基本翻译过程为对于给定源语言句子f1f2f3f4f5f6匹配短语对(1)、(2) 和层次化的短语对规则(3), 接着获取使用的短语对f1f2/e5e6、f5f6/e1e2和规则对X0, 2;4, 6f3f4X4, 6;0, 2/X4, 6;0, 2e3e4X0, 2;4, 6的语义嵌入f1f2/e5e6, f5f6/e1e2和X0, 2;4, 6f3f4X4, 6;0, 2/X4, 6;0, 2e3e4X0, 2;4, 6, 其中f1的下标表示需翻译的源语言片段的单词位置, X0, 2;4, 6表示源语言的跨度(span)为0~2, 目标语言的跨度为4~6.通过连接函数将3个向量连接起来, 使用转换函数变成新单元中的一个部分候选翻译对语义嵌入, 如下所示:
$
{\mathit{\boldsymbol{x}}^{\left[ {0,6} \right]}} = {\rm{sigmoid}}\left( {{\mathit{\boldsymbol{W}}_{\rm{R}}}\left( {\left[ {{\mathit{\boldsymbol{x}}^{\left[ {4,6} \right]}};{\mathit{\boldsymbol{r}}_{\rm{H}}};{\mathit{\boldsymbol{x}}^{\left[ {4,6} \right]}}} \right]} \right)} \right).
$
(12)
式(12) 为编码层的转换函数, 为了方便起见(这里仅标出源侧的跨度), 使用x[0, 2]表示短语对语义向量f1f2/e5e6, x[4, 6]表示短语对语义向量f5f6/e1e2, [4, 6]表示对于$ {\mathit{\boldsymbol{\tilde x}}} $[4, 6]的重构, 使用rH表示HPG翻译系统中规则对语义向量X0, 2;4, 6f3f4X4, 6;0, 2/X4, 6;0, 2e3e4X0, 2;4, 6.图 3中, 灰色部分表示对原来短语/规则对的重构, y[0, 6]表示部分候选翻译结果的置信得分.在每个短语/规则语义向量(使用长方形表示)的上面标出了目标语言侧短语/规则, 在下面标出了源语言侧短语/规则.图 3中右侧表示BTG翻译系统的深度模型, 基本过程与HPG翻译系统的深度模型相同, 只是采用的生成部分翻译结果转换矩阵, 重构的转换矩阵和获得翻译分数的转换向量不一样.
只对HPG翻译系统的深度模型的转换过程进行描述, BTG翻译系统的转换过程相似.HPG翻译系统的深度模型分为两个部分:自编码部分和置信部分.自编码部分完成了短语/规则对的重构, 如式(12) 及下式所示:
$
\left[ {{{\mathit{\boldsymbol{\tilde x}}}^{\left[ {0,2} \right]}};{{\mathit{\boldsymbol{\tilde r}}}_{\rm{H}}};{{\mathit{\boldsymbol{\tilde x}}}^{\left[ {4,6} \right]}}} \right] = {\rm{sigmoid}}\left( {{{\mathit{\boldsymbol{W'}}}_{\rm{R}}}{\mathit{\boldsymbol{x}}^{\left[ {0,6} \right]}}} \right).
$
(13)
式(13) 是解码层的转换函数.HPG翻译系统自编码部分的目标函数为
$
\begin{array}{l}
L_{\rm{H}}^{{\rm{rec}}}\left( {\mathit{\boldsymbol{x}},\mathit{\boldsymbol{\tilde x}};\mathit{\boldsymbol{\theta }}_{\rm{H}}^{{\rm{rec}}}} \right) = \left\| {\left[ {{\mathit{\boldsymbol{x}}^{1,2}};{\mathit{\boldsymbol{r}}_{\rm{H}}};{\mathit{\boldsymbol{x}}^{\left[ {5,6} \right]}}} \right] - } \right.\\
\;\;\;\;\left. {\left[ {{{\mathit{\boldsymbol{\tilde x}}}^{\left[ {1,2} \right]}};{{\mathit{\boldsymbol{\tilde r}}}_{\rm{H}}};{{\mathit{\boldsymbol{\tilde x}}}^{\left[ {5,6} \right]}}} \right]} \right\|_2^2 + \frac{{{\lambda _{\theta _{\rm{H}}^{{\rm{rec}}}}}}}{2}\left\| {\mathit{\boldsymbol{\theta }}_{\rm{H}}^{{\rm{rec}}}} \right\|_2^2.
\end{array}
$
(14)
式中:x=[x[1, 2]; rH; x[5, 6]]表示生成源语言跨度为0~6的短语对语义向量所使用的短语对语义向量和规则对语义向量, $ \mathit{\boldsymbol{x = }}\left[{{{\mathit{\boldsymbol{\tilde x}}}^{[1,2]}};{{\mathit{\boldsymbol{\tilde r}}}_{\rm{H}}};{\mathit{\boldsymbol{x}}^{[5,6]}}} \right] $表示这些短语对语义向量和规则对语义向量重构后的结果;参数集合θHrec包含参数矩阵WR和W′R.BTG翻译系统自编码部分的参数θBrec包含参数矩阵WP和W′P.
置信部分完成置信分数的计算.由于在CKY每个单元中生成的是N-best结果, 给出一个翻译结果的置信分数:
$
{y^{\left[ {0,6} \right]}} = {\left( {{\mathit{\boldsymbol{v}}_{\rm{R}}}} \right)^{\rm{T}}} \cdot \left( {{\mathit{\boldsymbol{x}}^{\left[ {0,6} \right]}}} \right).
$
(15)
式中:vR为获得置信分数的转换向量.采用的目标函数为交叉熵, 目标函数为
$
L_{\rm{H}}^{{\rm{con}}}\left( {{y^{\left[ {0,6} \right]}};\theta _{\rm{H}}^{{\rm{con}}}} \right) = - \log \frac{{\exp y_{{\rm{oracle}}}^{\left[ {0,6} \right]}}}{{\sum {_{t \in N - {\rm{best}}}\exp y_t^{\left[ {0,6} \right]}} }}.
$
(16)
式中:yt[0, 6]为第t个翻译结果的置信分数, θHcon包含参数矩阵WH和VH.式(16) 的基本含义为对除了圣谕翻译yoracle[0, 6]的所有候选翻译结果进行惩罚.BTG翻译系统置信部分的目标函数LBcon(y[0, 6]; θBcon)中的参数θBcon包含参数矩阵WP和VP.解码过程采用强制解码[32](force decoding), 生成和参考翻译一样的圣谕翻译, 且在解码过程不保留重复的翻译结果, 留下翻译分数最高的结果.
3.2 大规模特征深度融合
机器翻译的系统融合[7-8]是一种提高机器翻译系统性能的重要手段.采用的方法是在两个系统间建立目标函数度量两个系统翻译结果的相近程度.
图 4的下半部分和图 3的单系统神经网络一样, 左侧是HPG深度模型, 右侧是BTG深度模型, 通过距离函数来度量两个翻译系统生成的N-best结果的相似性.yH[0, 6]表示HPG深度模型生成N-best结果的置信分数, yB[0, 6]表示BTG深度模型生成N-best结果的置信分数.稀疏特征向量(在图中使用背景加斜线表示)的引入和式(3) 的形式相似, 不再赘述.WH和WR主要用于稀疏特征降维, VH和VR为了和转换后的短语/规则对语义向量一起形成部分候选翻译向量, 稀疏特征向量xH和xB采用one-hot表示.机器翻译的传统特征作为向量的一维放入到稀疏特征向量中, 如双向翻译概率、双向词汇翻译概率等.本部分使用到的稀疏特征[11-13]包括3个大类:规则相关的稀疏特征, 对齐相关的特征, 目标语相关的特征.规则相关的稀疏特征包括:源短语层次特征(按照目标短语的生成过程抽取出来), 规则的编号(取出现频率在105排名内的);对齐相关的稀疏特征包括:特征词对特征(按照目标侧的顺序捕获源侧的调序), 删除特征(源词对空)和插入特征(目标词对空), 词语境特征(如(f, e, f+1)表示f和e对齐情况的特征);目标语相关的稀疏特征包括:目标侧的二元特征.
图 4
大规模特征深度融合模型
Fig. 4
Large-scale feature deep combination
加入稀疏特征后, 转换函数公式(18) 与式(12) 相似, 只是增加了降维层公式(17), 如下:
$
{{\mathit{\boldsymbol{\tilde x}}}^{\left[ {0,6} \right]}} = {\rm{sigmoid}}\left( {{\mathit{\boldsymbol{W}}_{\rm{H}}}{\mathit{\boldsymbol{x}}_{\rm{H}}}} \right),
$
(17)
$
\begin{array}{l}
{\mathit{\boldsymbol{x}}^{\left[ {0,6} \right]}} = \\
{\rm{sigmoid}}\left( {{\mathit{\boldsymbol{W}}_{\rm{R}}}\left( {\left[ {{\mathit{\boldsymbol{x}}^{\left[ {4,6} \right]}};{\mathit{\boldsymbol{r}}_{\rm{H}}};{\mathit{\boldsymbol{x}}^{\left[ {4,6} \right]}}} \right]} \right) + {\mathit{\boldsymbol{V}}_{\rm{H}}}{{\mathit{\boldsymbol{\hat x}}}^{\left[ {0,6} \right]}}} \right).
\end{array}
$
(18)
式中:$ {\mathit{\boldsymbol{\hat x}}} $[0, 6]为降维以后的向量.使用softmax函数对于生成的置信向量yH[0, 6]和yB[0, 6]进行归一化生成概率分布, 和式(16) 中的log部分相似.为了度量两个分布之间的距离, 采用Hellinger距离[33]计算两个分布之间的距离作为融合后的目标函数:
$
\begin{array}{l}
{L^{{\rm{dcnn}}}}\left( {y_{\rm{H}}^{\left[ {0,6} \right]},y_{\rm{B}}^{\left[ {0,6} \right]};\theta _{\rm{H}}^{{\rm{dcnn}}},\theta _{\rm{B}}^{{\rm{dcnn}}}} \right) = \\
\;\;\;\;{\sum {_{t \in N - {\rm{best}}}\left( {\sqrt {y_{{{\rm{H}}_t}}^{\left[ {0,6} \right]}} - \sqrt {y_{{{\rm{B}}_t}}^{\left[ {0,6} \right]}} } \right)} ^2}.
\end{array}
$
(19)
式中:yHt[0, 6]为在HPG深度模型中第t个翻译结果的置信分数;θHdcnn除了包含θHcon的参数外, 还包含参数矩阵WH和VH;θBdcnn除了包含θBcon的参数外, 还包含参数矩阵WB和VB.该模型训练方法分为4个步骤, 每个步骤结果为下一步的输入.
1) 在局部对单系统深度模型分别进行训练.在父单元和两个儿子单元(生成该父单元)之间进行CYK解码, 如图 3左侧的部分包含稀疏特征;
2) 在局部对深度融合神经网络(deep combination neural network, DCNN)进行训练, 即父单元进行融合, 如图 4所示.
3) 在全局对单系统深度模型分别进行训练, 只对生成整个翻译结果的单元进行训练, 如在图 3中右侧BTG深度模型的y[0, 6](注意y[0, 4]不是全局训练), 也包含稀疏特征.
4) 在全局对单系统深度模型和DCNN进行联合训练, 不需要考虑翻译推导树(derivation tree)中间节点.
先进行局部训练的好处在于先考虑局部翻译结果的同时使得最终模型更快收敛, 再进行全局训练会考虑整个翻译过程并对局部结果进行修正;先进行单系统的深度模型训练使得先考虑单系统的性能, 再进行DCNN可以考虑到融合后的性能;联合训练使得各个部分更好地平衡.联合训练的目标函数为
$
\begin{array}{l}
{L^{{\rm{total}}}} = \alpha \sum {_{d \in D}L_{\rm{H}}^{{\rm{con}}}} + \beta \sum {_{d \in D}L_{\rm{B}}^{{\rm{con}}}} + \\
\;\;\left( {1 - \alpha - \beta } \right)\sum {_{d \in D}{L^{{\rm{dcnn}}}}} + \frac{{{\lambda _{\theta _{\rm{H}}^{{\rm{dcnn}}}}}}}{2}\left\| {\mathit{\boldsymbol{\theta }}_{\rm{H}}^{{\rm{dcnn}}}} \right\|_2^2 + \\
\;\;\frac{{{\lambda _{\mathit{\boldsymbol{\theta }}_{\rm{B}}^{{\rm{dcnn}}}}}}}{2}\left\| {\mathit{\boldsymbol{\theta }}_{\rm{B}}^{{\rm{dcnn}}}} \right\|_2^2.
\end{array}
$
(20)
超参α和β对HPG深度模型损失函数LHcon、BTG深度模型损失函数LBcon和大规模特征深度融合模型Ldcnn之间进行加权, 以平衡每个损失函数Ltotal在总损失函数中的影响.D表示在翻译过程中形成的所有推导树.由于θHdcnn和θBdcnn包含了参数集合θHcon和θBcon中的参数, 不需要对θHcon和θBcon进行正则化.为了简化公式, 省略每个目标函数Ltotal、LHcon、LBcon和Ldcnn涉及到的参数和源语言.单系统深度模型中置信部分目标函数LHcon和LBcon保证了单系统的翻译结果的合理排序, DCNN模型Ldcnn保证了单系统深度模型相互间的影响.
3.3 参数训练
在局部训练中, 单系统深度模型的自编码部分和正则化部分求导相对简单, 不再赘述.联合损失函数的求导主要是对Ldcnn和LHcon求导(对于LBcon求导与LHcon相似), 对式(19) 中Ldcnn的求导公式如下:
$
\begin{array}{l}
\frac{{\partial {L^{{\rm{dcnn}}}}}}{{\partial \mathit{\boldsymbol{V}}_{\rm{H}}}} = \frac{{\partial {L^{{\rm{dcnn}}}}}}{{\partial y_{{{\rm{H}}_t}}^{\left[ {0,6} \right]}}}\frac{{\partial y_{{{\rm{H}}_t}}^{\left[ {0,6} \right]}}}{{\partial {\mathit{\boldsymbol{V}}_{\rm{H}}}}} = \\
\;\;\;\left[ {\frac{{\partial {L^{{\rm{dcnn}}}}}}{{\partial y_{{{\rm{H}}_t}}^{\left[ {0,6} \right]}}}\left( {\frac{{\partial y_{{{\rm{H}}_t}}^{\left[ {0,6} \right]}}}{{\partial {\mathit{\boldsymbol{x}}^{\left[ {0,6} \right]}}}} \circ \frac{{\partial {\mathit{\boldsymbol{x}}^{\left[ {0,6} \right]}}}}{{\partial {\mathit{\boldsymbol{z}}^{\left[ {0,6} \right]}}}}} \right)} \right] \cdot {\left( {\frac{{\partial {\mathit{\boldsymbol{z}}^{0.6}}}}{{\partial \mathit{\boldsymbol{V}}_{\rm{H}}}}} \right)^{\rm{T}}}.
\end{array}
$
(21)
式(21) 中每个部分的求导相对简单, 这里不再赘述.其中综括号为反向传播算法中的错误向量, 后3项为yHt[0, 6]对VH的导数.为了表示方便, 在式(18) 中引入z[0, 6]=WR([x[4, 6]; rH; x[4, 6]])+ $ {\mathit{\boldsymbol{V}}_{\rm{H}}}\mathit{\boldsymbol{\hat x}} $[0, 6], 式(16) 的一个实例LHcon的求导公式如下:
$
\begin{array}{l}
\frac{{\partial L_{\rm{H}}^{{\rm{con}}}}}{{\partial {\mathit{\boldsymbol{W}}_{\rm{R}}}}} = \left( {\frac{{\partial L_{\rm{H}}^{{\rm{con}}}}}{{\partial {\mathit{\boldsymbol{z}}^{\left[ {0,6} \right]}}}}} \right) \cdot {\left( {\frac{{\partial {\mathit{\boldsymbol{z}}^{\left[ {0,6} \right]}}}}{{\partial {\mathit{\boldsymbol{W}}_{\rm{R}}}}}} \right)^{\rm{T}}} = \\
\;\;\;\left. {\left( {\frac{{\partial L_{\rm{H}}^{{\rm{con}}}}}{{\partial {\mathit{\boldsymbol{x}}^{\left[ {0,6} \right]}}}} \circ \frac{{\partial {\mathit{\boldsymbol{x}}^{\left[ {0,6} \right]}}}}{{\partial {\mathit{\boldsymbol{z}}^{\left[ {0,6} \right]}}}}} \right)} \right] \cdot {\left( {\frac{{\partial {\mathit{\boldsymbol{z}}^{\left[ {0,6} \right]}}}}{{\partial {\mathit{\boldsymbol{W}}_{\rm{R}}}}}} \right)^{\rm{T}}}.
\end{array}
$
(22)
前两项为反向传播算法中的错误向量, 通过反向传播错误向量可以得到对于其他层的WR的导数.对于每个参数矩阵的导数, 更新公式与式(10)、(11) 的形式相似, 采用的学习率为ηtotal.
4 实验分析
4.1 超参设置
获得超参的训练数据为翻译过程中使用的训练数据, 基本方法为人工设定, 并根据性能选取一组最好的在模型中使用.设置的参数如下:改进的RTNN中无监督局部训练的式(5) 中的正则化参数λθaut, 无监督全局训练的式(7) 中的正则化超参λθrtnn;改进的RENN中HPG自编码部分的式(14) 中的正则化参数λθHrec和BTG自编码部分的正则化参数λθBrec, 式(20) 中融合后的HPG模型正则化参数和HPG模型正则化参数λθBdcnn.所有参数在10-1~10-6下进行搜索, 步长为10-1.获得最优的正则化超参分别为λθaut=10-2, λθrtnn=10-3, λθHrec=10-2, λθBrec=10-2, λθHdcnn=10-3, λθBdcnn=10-3.本文发现相对于短语/规则对语义嵌入和深度融合模型中的正则化参数, 自编码部分正则化参数起到更大作用.根据实验结果, 设置学习率为ηrtnn=0.02, ηtotal=0.01, 维数n=30.式(20) 中模型在范围(0.05~0.5) 下对于权重超参α和β进行搜索, 步长为0.05, 最终的获得模型权重超参α=0.2, β=0.1.模型权重超参说明, 在整个模型中, 深度融合模型起到最重要作用, 相对于BTG深度模型来说, HPG深度模型在整个模型中有更大作用.
4.2 SMT设置
该实验在国际公开的数据集NIST的中英文翻译任务开展, 使用笔者开发的HIERO系统[28]和BTG系统[34].采用的训练语料为LDC2000T50、LDC2002L27、LDC2002E18、LDC2003E07、LDC2003E14、LDC2004T07、LDC2005T06、LDC2005T10、LDC2005T83、LDC2006E85、LDC2006E92、LDC2007T09.双语语料中含有1.1M句对, 33.5M中文词和36.2M英文词, 使用Gigaword语料和双语训练语料的目标语言训练语言模型.开发集采用NIST02, 测试集采用NIST06和NIST08.双语语料的预处理采用最大熵模型进行中文分词和BTG翻译系统中扭曲模型的训练, 使用tokenizer.perl()进行英文分词.本文使用SRILM[35]工具训练5元语言模型, 对齐采用GIZA++进行双语对齐, 然后使用Grow-Diag-Final-And启发式规则获得多对多的词对齐.为了评价生成翻译结果的质量, 采用大小写不敏感的IBM BLEU-4[36]进行评价, 并采用重采样(re-sampling)方法[37]对翻译结果进行统计显著性检验(statistical significance test).本文在训练语料中进行强制解码[32], 以生成圣谕翻译, 对短语/规则对进行过滤.本文的所有系统都采用间隔注入的松弛算法MIRA[11](margin infused relaxed algorithm)进行训练, 训练所采用的特征为双向短语/规则翻译概率、双向短语/规则词汇权重概率、语言模型、词惩罚、粘合规则惩罚、扭曲概率和3.2节中的稀疏特征.
4.3 实验结果与分析
4.3.1 单系统深度模型和深度融合模型的影响
先在单系统中加入深度神经网络模型, 再进行两个深度神经网络的融合.使用BTG-DNN表示BTG单系统深度模型, 使用HPG-DNN表示HPG单系统深度模型, 使用HPG & BTG-DCNN表示融合两个系统后的深度模型.ALL表示合并测试集.
采用的基线系统为没有加入深度神经网络的BTG、HPG翻译系统和融合两个翻译结果Com-BTG+HPG(采用文献[8]的方法进行特征级融合).本文没有选用文献[23](文献[23]的模型与本文的BTG-DNN相似, 但RENN的输入不同, 本文中的RENN的输入适合于HPG)作为基线系统.使用粗体表示在检验指标(p < 0.05) 下显著优于基线系统.从表 1可以看出, HPG的性能优于BTG, 在NIST08上提高最多, 性能高于BTG系统0.9.为了反映对齐的重要性, 按照文献[19]的方法, 在训练改进RTNN获得短语/规则对时不使用对齐, 表示为No-Align.从实验结果可以看出, No-Align优于单系统非深度翻译模型(BTG和HPG), 弱于含有对齐的深度翻译模型(BTG-DNN、HPG-DNN和HPG & BTG-DCNN), 说明了对齐信息对短语/规则对语义嵌入的重要.本文去掉改进的RTNN自编码部分后, 在获得BTG和HPG上的短语/规则对语义嵌入的解码时间上比原来的节省了3天.
表 1 不同翻译系统对该方法的影响
Table 1 Effect of different translation system
相对于经典的BTG和HPG系统, 加入了深度神经网络的BTG和HPG性能都得到了提高.相对于经典的BTG, BTG-DNN系统在NIST08上最高提高了0.55, BTG-DNN系统在NIST02上最低提高了0.34.相对于经典的HPG, HPG-DNN系统在NIST02上最高提高了0.6, HPG-DNN系统在NIST08上最低提高了0.26.融合后的深度神经网络获得了进一步的提高, 相对于HPG-DNN来说, HPG & BTG-DCNN系统在ALL上最高提高了0.51, HPG & BTG-DCNN系统在NIST08上最低提高了0.1.相对于BTG-DNN, HPG & BTG-DCNN系统在ALL上最高提高了0.71, HPG & BTG-DCNN系统在NIST06上最低提高了0.2.相对于最差的经典单系统BTG, HPG & BTG-DCNN系统在NIST08上最高提高了1.25, HPG & BTG-DCNN系统在NIST06上最低提高了0.59.
4.3.2 大规模特征的影响
为了探索大规模特征对单系统深度模型和融合后深度模型的影响, 将稀疏特征(sparse feature, SF)和传统特征(conventional feature, CF)加入到深度神经网络中.SF+BTG-DNN表示在BTG系统深度模型中加入稀疏特征, SF+HPG-DNN表示在HPG系统深度模型中加入稀疏特征, SF+HPG & BTG-DCNN表示在融合后的深度模型中加入稀疏特征, CF+SF+HPG & BTG-DCNN表示进一步加入传统特征.虽然原来的模型已经有稠密和稀疏特征, 但是对于深度翻译模型不起作用, 所以单独在深度翻译模型中加入.本文选用的基线系统为SF+BTG-DNN和SF+HPG-DNN.
从表 2可以看出, 加入稀疏特征后, 深度神经网络性能优于没有加入的深度神经网络.相对于没有加入稀疏特征的BTG-DNN, SF+BTG-DNN系统在NIST08上最高提高了0.37, SF+BTG-DNN系统在NIST06上最低提高了0.09.相对于没有加入稀疏特征的HPG-DNN, SF+HPG-DNN系统在NIST06上最高提高了0.55, SF+HPG-DNN系统在NIST02上最低提高了0.3.相对于SF+HPG-DNN, 融合后的神经网络SF+HPG & BTG-DCNN在NIST06上最高提高了0.61, 融合后的神经网络SF+HPG & BTG-DCNN在NIST02上最低提高了0.16.相对于SF+BTG-DNN, 融合后的神经网络SF+HPG & BTG-DCNN在NIST06上最高提高了1.07, 融合后的神经网络SF+HPG & BTG-DCNN在NIST06上最高提高了0.66.加入了传统特征的系统CF+SF+HPG & BTG-DCNN和没有加入系统SF+HPG & BTG-DCNN的性能基本差不多, 可能是稀疏特征在解码中起到了应有的作用.
表 2 不同特征对于本文方法的影响
Table 2 Effect of different feature
4.3.3 异类语料的影响
为了探索不同领域语料(HC)对融合后深度模型的影响, 使用来自2个领域的语料进行训练.本文使用文献[38]作为基线系统, 对训练语料进行过滤, 使用过滤后的两部分语料作为训练数据.为了突出异类语料在融合后的效果, 不采用两种系统进行融合, 在单系统上对于两个领域语料进行融合.采用的基线系统为HC+SF+BTG-DNN和HC+SF+HPG-DNN, 分别表示在两个领域中的训练语料BTG和HPG单系统深度模型, 性能为两类语料的平均值.HC+SF+BTG-DCNN和HC+SF+HPG-DCNN分别表示使用深度融合模型, 在BTG系统和HPG系统上对2个领域中的训练语料进行融合.
翻译性能如表 3所示, 相对于没有使用深度融合模型的HC+SF+BTG-DNN, 加入深度融合模型的HC+SF+BTG-DCNN在NIST02上最高提高了0.7, 在ALL上最低提高了0.57.相对于没有使用深度融合模型HC+SF+HPG-DNN, 加入深度融合模型的异类语料HC+SF+HPG-DCNN在ALL上最高提高了0.74, 在NIST02上最低提高了0.1.说明提出的模型不仅在异类系统(BTG和HPG)上有效, 在异类语料(领域内和领域外)上也有效.
表 3 异类语料对于本文方法的影响
Table 3 Effect of heterogeneous corpus
5 结语
本文探索了大规模特征深度融合的翻译模型.该模型主要包含3个部分:1) 通过改进的RTNN以对齐为指导, 获得短语/规则对语义嵌入, 符合短语生成的过程, 以语言模型中最大似然作为训练目标;2) 使用改进的RENN获得在翻译解码中推导树, 以生成圣谕翻译作为训练目标;3) 将稀疏特征加入到深度神经网络中, 对单系统的深度模型进行融合.
从实验结果可以看出, 大规模特征深度融合的翻译模型对于SMT性能起到了效果.希望在将来从3个方面进行扩展:1) 将该模型更加泛化, 应用到其他翻译系统中以融合更多地翻译系统;2) 使用该方法对篇章进行翻译, 捕获篇章中的语义信息;3) 对异类语料按照领域进行划分, 考虑更多领域对于性能的影响.