Commit 02dd4e6e by 孟霞

合并分支 'master' 到 'mengxia'

Master

查看合并请求 !1030
parents 4d53e437 7a7485b6
...@@ -256,7 +256,7 @@ ...@@ -256,7 +256,7 @@
\item {\small\bfnew{残差连接}}\index{残差连接}(Residual Connection)\index{Residual Connection}:源语言端和目标语言端的卷积层网络之间,都存在一个从输入到输出的额外连接,即跳接\upcite{DBLP:journals/corr/HeZRS15}。该连接方式确保每个隐层输出都能包含输入序列中的更多信息,同时能够有效提高深层网络的信息传递效率(该部分在图\ref{fig:11-12}中没有显示,具体结构详见\ref{sec:11.2.3}节)。 \item {\small\bfnew{残差连接}}\index{残差连接}(Residual Connection)\index{Residual Connection}:源语言端和目标语言端的卷积层网络之间,都存在一个从输入到输出的额外连接,即跳接\upcite{DBLP:journals/corr/HeZRS15}。该连接方式确保每个隐层输出都能包含输入序列中的更多信息,同时能够有效提高深层网络的信息传递效率(该部分在图\ref{fig:11-12}中没有显示,具体结构详见\ref{sec:11.2.3}节)。
\item {\small\bfnew{跳注意力机制}}\index{多跳注意力机制}(Multi-step Attention/Multi-hop Attention)\index{Multi-step Attention}\index{Multi-hop Attention}:蓝色框内部展示了基于多跳结构的注意力机制模块\upcite{Sukhbaatar2015EndToEndMN}。ConvS2S模型同样使用注意力机制来捕捉两个序列之间不同位置的对应关系。区别于之前的做法,多跳注意力在解码器端每一个层都会执行注意力操作。下面将以此模型为例对基于卷积神经网络的机器翻译模型进行介绍。 \item {\small\bfnew{步注意力机制}}\index{多步注意力机制}(Multi-step Attention)\index{Multi-step Attention}:蓝色框内部展示了基于多步结构的注意力机制模块\upcite{Sukhbaatar2015EndToEndMN}。ConvS2S模型同样使用注意力机制来捕捉两个序列之间不同位置的对应关系。区别于之前的做法,多步注意力在解码器端每一个层都会执行注意力操作。下面将以此模型为例对基于卷积神经网络的机器翻译模型进行介绍。
\end{itemize} \end{itemize}
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
...@@ -346,7 +346,7 @@ ...@@ -346,7 +346,7 @@
\noindent 其中,$\mathbi{h}^l$表示$l$层神经网络的输入向量,${F} (\mathbi{h}^l)$$l$层神经网络的运算。如果$l=2$,那么公式\eqref{eq:11-6}可以解释为:第3层的输入$\mathbi{h}^3$等于第2层的输出${F}(\mathbi{h}^2)$加上第2层的输入$\mathbi{h}^2$ \noindent 其中,$\mathbi{h}^l$表示$l$层神经网络的输入向量,${F} (\mathbi{h}^l)$$l$层神经网络的运算。如果$l=2$,那么公式\eqref{eq:11-6}可以解释为:第3层的输入$\mathbi{h}^3$等于第2层的输出${F}(\mathbi{h}^2)$加上第2层的输入$\mathbi{h}^2$
\parinterval 在ConvS2S中残差连接主要应用于门控卷积神经网络和多跳自注意力机制中,比如在编码器的多层门控卷积神经网络中,在每一层的输入和输出之间增加残差连接,具体的数学描述如下: \parinterval 在ConvS2S中残差连接主要应用于门控卷积神经网络和多注意力机制中,比如在编码器的多层门控卷积神经网络中,在每一层的输入和输出之间增加残差连接,具体的数学描述如下:
\begin{eqnarray} \begin{eqnarray}
%\mathbi{h}_i^l = \funp{v} (\mathbi{W}^l [\mathbi{h}_{i-\frac{k}{2}}^{l-1},...,\mathbi{h}_{i+\frac{k}{2}}^{l-1}] + b_{\mathbi{W}}^l ) + \mathbi{h}_i^{l-1} %\mathbi{h}_i^l = \funp{v} (\mathbi{W}^l [\mathbi{h}_{i-\frac{k}{2}}^{l-1},...,\mathbi{h}_{i+\frac{k}{2}}^{l-1}] + b_{\mathbi{W}}^l ) + \mathbi{h}_i^{l-1}
\mathbi{h}^{l+1} &=& \mathbi{A}^{l} \otimes \sigma ( \mathbi{B}^{l} ) + \mathbi{h}^{l} \mathbi{h}^{l+1} &=& \mathbi{A}^{l} \otimes \sigma ( \mathbi{B}^{l} ) + \mathbi{h}^{l}
...@@ -357,9 +357,9 @@ ...@@ -357,9 +357,9 @@
% NEW SUB-SECTION % NEW SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsection{注意力机制} \subsection{注意力机制}
\parinterval ConvS2S模型也采用了注意力机制来获取每个目标语言位置相应的源语言上下文信息。其仍然沿用传统的点乘注意力机制\upcite{DBLP:journals/corr/LuongPM15},其中图\ref{fig:11-16}蓝色框代表了多跳自注意力机制在模型中的位置。 \parinterval ConvS2S模型也采用了注意力机制来获取每个目标语言位置相应的源语言上下文信息。其仍然沿用传统的点乘注意力机制\upcite{DBLP:journals/corr/LuongPM15},其中图\ref{fig:11-16}蓝色框代表了多注意力机制在模型中的位置。
\parinterval 在基于循环神经网络的翻译模型中,注意力机制已经被广泛使用\upcite{bahdanau2014neural},并用于避免循环神经网络将源语言序列压缩成一个固定维度的向量表示带来的信息损失。另一方面,注意力同样能够帮助解码器区分源语言中不同位置对当前目标语言位置的贡献度,其具体的计算过程如公式\eqref{eq:11-8}\eqref{eq:11-9}所示: \parinterval 在基于循环神经网络的翻译模型中,注意力机制已经被广泛使用\upcite{bahdanau2014neural},并用于避免循环神经网络将源语言序列压缩成一个固定维度的向量表示带来的信息损失。另一方面,注意力同样能够帮助解码器区分源语言中不同位置对当前目标语言位置的贡献度,其具体的计算过程如公式\eqref{eq:11-8}\eqref{eq:11-9}所示:
...@@ -375,12 +375,12 @@ ...@@ -375,12 +375,12 @@
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
\input{./Chapter11/Figures/figure-fairseq-3} \input{./Chapter11/Figures/figure-fairseq-3}
\caption{跳自注意力机制在ConvS2S模型中的位置(蓝色背景框部分)} \caption{注意力机制在ConvS2S模型中的位置(蓝色背景框部分)}
\label{fig:11-16} \label{fig:11-16}
\end{figure} \end{figure}
%---------------------------------------------- %----------------------------------------------
\parinterval 在ConvS2S模型中,解码器同样采用堆叠的多层门控卷积网络来对目标语言进行序列建模。区别于编码器,解码器在每一层卷积网络之后引入了注意力机制,用来参考源语言信息。ConvS2S选用了点乘注意力,并且通过类似残差连接的方式将注意力操作的输入与输出同时作用于下一层计算,称为多注意力。其具体计算方式如下: \parinterval 在ConvS2S模型中,解码器同样采用堆叠的多层门控卷积网络来对目标语言进行序列建模。区别于编码器,解码器在每一层卷积网络之后引入了注意力机制,用来参考源语言信息。ConvS2S选用了点乘注意力,并且通过类似残差连接的方式将注意力操作的输入与输出同时作用于下一层计算,称为多注意力。其具体计算方式如下:
\begin{eqnarray} \begin{eqnarray}
\alpha_{ij}^l &=& \frac{ \textrm{exp} (\mathbi{d}_{j}^l\mathbi{h}_i) }{\sum_{i^{'}=1}^m \textrm{exp} (\mathbi{d}_{j}^l\mathbi{h}_{i^{'}})} \alpha_{ij}^l &=& \frac{ \textrm{exp} (\mathbi{d}_{j}^l\mathbi{h}_i) }{\sum_{i^{'}=1}^m \textrm{exp} (\mathbi{d}_{j}^l\mathbi{h}_{i^{'}})}
\label{eq:11-10} \label{eq:11-10}
...@@ -404,7 +404,7 @@ ...@@ -404,7 +404,7 @@
\label{eq:11-14} \label{eq:11-14}
\end{eqnarray} \end{eqnarray}
\noindent 与循环网络中的注意力机制相比,该机制能够帮助模型甄别已经考虑了哪些先前的输入。也就是说,多的注意力机制会考虑模型之前更关注哪些单词,并且之后层中执行多次注意力的“跳跃”。 \noindent 与循环网络中的注意力机制相比,该机制能够帮助模型甄别已经考虑了哪些先前的输入。也就是说,多的注意力机制会考虑模型之前更关注哪些单词,并且之后层中执行多次注意力的“跳跃”。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
......
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
\vspace{0.5em} \vspace{0.5em}
\item {\small\bfnew{BPE-Dropout}}\upcite{provilkov2020bpe}。在训练时,按照一定概率$p$随机丢弃一些可行的合并操作,从而产生不同的子词切分结果。而在推断阶段,将$p$设置为0,等同于标准的BPE。总的来说,上述方法相当于在子词的粒度上对输入的序列进行扰动,进而达到增加训练健壮性的目的。 \item {\small\bfnew{BPE-Dropout}}\upcite{provilkov2020bpe}。在训练时,按照一定概率$p$随机丢弃一些可行的合并操作,从而产生不同的子词切分结果。而在推断阶段,将$p$设置为0,等同于标准的BPE。总的来说,上述方法相当于在子词的粒度上对输入的序列进行扰动,进而达到增加训练健壮性的目的。
\vspace{0.5em} \vspace{0.5em}
\item {\small\bfnew{动态规划编码}}\index{动态规划编码}(Dynamic Programming Encoding,DPE\index{Dynamic Programming Encoding,DPE}\upcite{he2020dynamic}。引入了混合字符-子词的切分方式,将句子的子词切分看作一种隐含变量。机器翻译解码端的输入是基于字符表示的目标语言序列,推断时将每个时间步的输出映射到预先设定好的子词词表之上,得到当前最可能的子词结果。 \item {\small\bfnew{动态规划编码}}\index{动态规划编码}(Dynamic Programming Encoding,DPE\index{Dynamic Programming Encoding}\upcite{he2020dynamic}。引入了混合字符-子词的切分方式,将句子的子词切分看作一种隐含变量。机器翻译解码端的输入是基于字符表示的目标语言序列,推断时将每个时间步的输出映射到预先设定好的子词词表之上,得到当前最可能的子词结果。
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
...@@ -164,7 +164,7 @@ ...@@ -164,7 +164,7 @@
\sectionnewpage \sectionnewpage
\section{正则化}\label{subsection-13.2} \section{正则化}\label{subsection-13.2}
\parinterval 正则化是机器学习中的经典技术,通常用于缓解过拟合问题。正则化的概念源自线性代数和代数几何。在实践中,它更多的是指对{\small\bfnew{反问题}}\index{反问题}(The Inverse Problem)\index{Inverse Problem}的一种求解方式。假设输入$x$和输出$y$之间存在一种映射$f$ \parinterval 正则化是机器学习中的经典技术,通常用于缓解过拟合问题。正则化的概念源自线性代数和代数几何。在实践中,它更多的是指对{\small\bfnew{反问题}}\index{反问题}(The Inverse Problem)\index{The Inverse Problem}的一种求解方式。假设输入$x$和输出$y$之间存在一种映射$f$
\begin{eqnarray} \begin{eqnarray}
y &=& f(x) y &=& f(x)
\label{eq:13-1} \label{eq:13-1}
...@@ -235,7 +235,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\ ...@@ -235,7 +235,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\
\subsection{标签平滑} \subsection{标签平滑}
\parinterval 神经机器翻译在每个目标语言位置$j$会输出一个分布$\hat{\mathbi{y}}_j$,这个分布描述了每个目标语言单词出现的可能性。在训练时,每个目标语言位置上的答案是一个单词,也就对应了One-hot 分布${\mathbi{y}}_j$,它仅仅在正确答案那一维为1,其它维均为0。模型训练可以被看作是一个调整模型参数让$\hat{\mathbi{y}}_j$逼近${\mathbi{y}}_j$的过程。但是,${\mathbi{y}}_j$的每一个维度是一个非0即1的目标,这样也就无法考虑类别之间的相关性。具体来说,除非模型在答案那一维输出1,否则都会得到惩罚。即使模型把一部分概率分配给与答案相近的单词(比如同义词),这个相近的单词仍被视为完全错误的预测。 \parinterval 神经机器翻译在每个目标语言位置$j$会输出一个分布$\hat{\mathbi{y}}_j$,这个分布描述了每个目标语言单词出现的可能性。在训练时,每个目标语言位置上的答案是一个单词,也就对应了One-hot分布${\mathbi{y}}_j$,它仅仅在正确答案那一维为1,其它维均为0。模型训练可以被看作是一个调整模型参数让$\hat{\mathbi{y}}_j$逼近${\mathbi{y}}_j$的过程。但是,${\mathbi{y}}_j$的每一个维度是一个非0即1的目标,这样也就无法考虑类别之间的相关性。具体来说,除非模型在答案那一维输出1,否则都会得到惩罚。即使模型把一部分概率分配给与答案相近的单词(比如同义词),这个相近的单词仍被视为完全错误的预测。
\parinterval 标签平滑的思想很简单\upcite{Szegedy_2016_CVPR}:答案所对应的单词不应该“独享”所有的概率,其它单词应该有机会作为答案。这个观点与{\chaptertwo}中语言模型的平滑非常类似。在复杂模型的参数估计中,往往需要给未见或者低频事件分配一些概率,以保证模型具有更好的泛化能力。具体实现时,标签平滑使用了一个额外的分布$\mathbi{q}$,它是在词汇表$V$ 上的一个均匀分布,即$\mathbi{q}_k=\frac{1}{|V|}$,其中$\mathbi{q}_k$表示分布的第$k$维。然后,标准答案的分布被重新定义为${\mathbi{y}}_j$$\mathbi{q}$的线性插值: \parinterval 标签平滑的思想很简单\upcite{Szegedy_2016_CVPR}:答案所对应的单词不应该“独享”所有的概率,其它单词应该有机会作为答案。这个观点与{\chaptertwo}中语言模型的平滑非常类似。在复杂模型的参数估计中,往往需要给未见或者低频事件分配一些概率,以保证模型具有更好的泛化能力。具体实现时,标签平滑使用了一个额外的分布$\mathbi{q}$,它是在词汇表$V$ 上的一个均匀分布,即$\mathbi{q}_k=\frac{1}{|V|}$,其中$\mathbi{q}_k$表示分布的第$k$维。然后,标准答案的分布被重新定义为${\mathbi{y}}_j$$\mathbi{q}$的线性插值:
\begin{eqnarray} \begin{eqnarray}
...@@ -477,7 +477,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\ ...@@ -477,7 +477,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\
\end{figure} \end{figure}
%---------------------------------------------- %----------------------------------------------
\parinterval$\epsilon_i=1$时,模型的训练与原始的训练策略完全相同,而当$\epsilon_i=0$时,模型的训练则与推断时使用的策略完全一样。在这里使用到了一种{\small\bfnew{课程学习}}\index{课程学习}(Curriculum Learning\index{curriculum learning}策略\upcite{DBLP:conf/coling/XuHJFWHJXZ20},该策略认为学习应该循序渐进,从一种状态逐渐过渡到另一种状态。在训练开始时,由于模型训练不充分,因此如果使用模型预测结果作为输入,会导致收敛速度非常慢。因此,在模型训练的前期,通常会选择使用标准答案$\{{y}_{1},...,{y}_{j-1}\}$。在模型训练的后期,应该更倾向于使用自模型本身的预测$\{\hat{{y}}_{1},...,\hat{{y}}_{j-1}\}$。关于课程学习的内容在\ref{sec:curriculum-learning}节还会有详细介绍。 \parinterval$\epsilon_i=1$时,模型的训练与原始的训练策略完全相同,而当$\epsilon_i=0$时,模型的训练则与推断时使用的策略完全一样。在这里使用到了一种{\small\bfnew{课程学习}}\index{课程学习}(Curriculum Learning\index{Curriculum learning}策略\upcite{DBLP:conf/coling/XuHJFWHJXZ20},该策略认为学习应该循序渐进,从一种状态逐渐过渡到另一种状态。在训练开始时,由于模型训练不充分,因此如果使用模型预测结果作为输入,会导致收敛速度非常慢。因此,在模型训练的前期,通常会选择使用标准答案$\{{y}_{1},...,{y}_{j-1}\}$。在模型训练的后期,应该更倾向于使用自模型本身的预测$\{\hat{{y}}_{1},...,\hat{{y}}_{j-1}\}$。关于课程学习的内容在\ref{sec:curriculum-learning}节还会有详细介绍。
\parinterval 在使用调度策略时,需要调整关于训练批次$i$的函数来降低$\epsilon_i$,与梯度下降方法中降低学习率的方式相似。调度策略可以采用如下几种方式: \parinterval 在使用调度策略时,需要调整关于训练批次$i$的函数来降低$\epsilon_i$,与梯度下降方法中降低学习率的方式相似。调度策略可以采用如下几种方式:
...@@ -499,7 +499,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\ ...@@ -499,7 +499,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\
\parinterval 调度采样解决曝光偏置的方法是,把模型前$j-1$步的预测结果作为输入,来预测第$j$步的输出。但是,如果模型预测的结果中有错误,再使用错误的结果预测未来的序列也会产生问题。解决这个问题就需要知道模型预测的好与坏,并在训练中有效的使用它们。如果生成好的结果,那么可以使用它进行模型训练,否则就不使用。生成对抗网络就是这样一种技术,它引入了一个额外的模型(判别器)来对原有模型(生成器)的生成结果进行评价,并根据评价结果同时训练两个模型。 \parinterval 调度采样解决曝光偏置的方法是,把模型前$j-1$步的预测结果作为输入,来预测第$j$步的输出。但是,如果模型预测的结果中有错误,再使用错误的结果预测未来的序列也会产生问题。解决这个问题就需要知道模型预测的好与坏,并在训练中有效的使用它们。如果生成好的结果,那么可以使用它进行模型训练,否则就不使用。生成对抗网络就是这样一种技术,它引入了一个额外的模型(判别器)来对原有模型(生成器)的生成结果进行评价,并根据评价结果同时训练两个模型。
\parinterval\ref{sec:adversarial-examples}小节已经提到了生成对抗网络,这里稍微进行一些展开。 在机器翻译中,基于对抗神经网络的架构被命名为{\small\bfnew{对抗神经机器翻译}}\index{对抗神经机器翻译}(Adversarial-NMT\index{Adversarial-NMT}\upcite{DBLP:conf/acml/WuXTZQLL18}。这里,令$(\seq{x},\seq{y})$表示一个训练样本,令$\hat{\seq{y}}$ 表示神经机器翻译系统对源语言句子$\seq{x}$ 的翻译结果。此时,对抗神经机器翻译的总体框架可以表示为图\ref{fig:13-10},其中。绿色部分表示神经机器翻译模型$G$,该模型将源语言句子$\seq{x}$翻译为目标语言句子$\hat{\seq{y}}$。红色部分是对抗网络$D$,它的作用是判断目标语言句子是否是源语言句子$\seq{x}$ 的真实翻译。$G$$D$相互对抗,用$G$生成的翻译结果$\hat{\seq{y}}$来训练$D$,并生成奖励信号,再使用奖励信号通过策略梯度训练$G$ \parinterval\ref{sec:adversarial-examples}小节已经提到了生成对抗网络,这里稍微进行一些展开。 在机器翻译中,基于对抗神经网络的架构被命名为{\small\bfnew{对抗神经机器翻译}}\index{对抗神经机器翻译}(Adversarial-NMT\index{Adversarial-NMT}\upcite{DBLP:conf/acml/WuXTZQLL18}。这里,令$(\seq{x},\seq{y})$表示一个训练样本,令$\hat{\seq{y}}$ 表示神经机器翻译系统对源语言句子$\seq{x}$ 的翻译结果。此时,对抗神经机器翻译的总体框架可以表示为图\ref{fig:13-10},其中。绿色部分表示神经机器翻译模型$G$,该模型将源语言句子$\seq{x}$翻译为目标语言句子$\hat{\seq{y}}$。红色部分是对抗网络$D$,它的作用是判断目标语言句子是否是源语言句子$\seq{x}$ 的真实翻译。$G$$D$相互对抗,用$G$生成的翻译结果$\hat{\seq{y}}$来训练$D$,并生成奖励信号,再使用奖励信号通过策略梯度训练$G$
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -785,7 +785,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\seq{y}} | \seq{x}) ...@@ -785,7 +785,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\seq{y}} | \seq{x})
\parinterval 当机器翻译系统应用于不同领域时,训练语料与所应用领域的相关性就显得非常重要\upcite{DBLP:journals/mt/EetemadiLTR15,britz2017effective}。不同领域往往具有自己独特的属性,比如语言风格、句子结构、专业术语等,例如,“bank”这个英语单词,在金融领域通常被翻译为“银行”,而在计算机领域,一般被解释为“库”、“存储体”等。这也会导致,使用通用领域数据训练出来的模型在特定领域上的翻译效果往往不理想,这本质上是训练数据和测试数据的领域属性不匹配造成的。 \parinterval 当机器翻译系统应用于不同领域时,训练语料与所应用领域的相关性就显得非常重要\upcite{DBLP:journals/mt/EetemadiLTR15,britz2017effective}。不同领域往往具有自己独特的属性,比如语言风格、句子结构、专业术语等,例如,“bank”这个英语单词,在金融领域通常被翻译为“银行”,而在计算机领域,一般被解释为“库”、“存储体”等。这也会导致,使用通用领域数据训练出来的模型在特定领域上的翻译效果往往不理想,这本质上是训练数据和测试数据的领域属性不匹配造成的。
\parinterval 一种解决办法是只使用特定领域的数据进行模型训练,然而这种数据往往比较稀缺。那能不能利用通用领域数据来帮助数据稀少的领域呢?这个研究方向被称为机器翻译的{\small\bfnew{领域适应}}\index{领域适应}(Domain Adaptation\index{Domain Adaptation}),即把数据从资源丰富的领域(称为{\small\bfnew{源领域}}\index{源领域} Source Domain\index{Source Domain})向资源稀缺的领域(称为{\small\bfnew{目标领域}}\index{目标领域},Target Domain\index{Target Domain})迁移。这本身也对应着资源稀缺场景下的机器翻译问题,这类问题会在{\chaptersixteen}进行详细讨论。本章更加关注如何有效地利用训练样本以更好地适应目标领域。具体来说,可以使用{\small\bfnew{数据选择}}\index{数据选择}(Data Selection\index{Selection})从源领域训练数据中选择与目标领域更加相关的样本进行模型训练。这样做的一个好处是,源领域中混有大量与目标领域不相关的样本,数据选择可以有效降低这部分数据的比例,这样可以更加突出与领域相关样本的作用。 \parinterval 一种解决办法是只使用特定领域的数据进行模型训练,然而这种数据往往比较稀缺。那能不能利用通用领域数据来帮助数据稀少的领域呢?这个研究方向被称为机器翻译的{\small\bfnew{领域适应}}\index{领域适应}(Domain Adaptation\index{Domain Adaptation}),即把数据从资源丰富的领域(称为{\small\bfnew{源领域}}\index{源领域},Source Domain\index{Source Domain})向资源稀缺的领域(称为{\small\bfnew{目标领域}}\index{目标领域},Target Domain\index{Target Domain})迁移。这本身也对应着资源稀缺场景下的机器翻译问题,这类问题会在{\chaptersixteen}进行详细讨论。本章更加关注如何有效地利用训练样本以更好地适应目标领域。具体来说,可以使用{\small\bfnew{数据选择}}\index{数据选择}(Data Selection\index{Selection})从源领域训练数据中选择与目标领域更加相关的样本进行模型训练。这样做的一个好处是,源领域中混有大量与目标领域不相关的样本,数据选择可以有效降低这部分数据的比例,这样可以更加突出与领域相关样本的作用。
\parinterval 数据选择所要解决的核心问题是:给定一个目标领域/任务数据集(如,目标任务的开发集),如何衡量原始训练样本与目标领域/任务的相关性?主要方法可以分为以下几类: \parinterval 数据选择所要解决的核心问题是:给定一个目标领域/任务数据集(如,目标任务的开发集),如何衡量原始训练样本与目标领域/任务的相关性?主要方法可以分为以下几类:
...@@ -896,9 +896,9 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\seq{y}} | \seq{x}) ...@@ -896,9 +896,9 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\seq{y}} | \seq{x})
\subsection{持续学习} \subsection{持续学习}
\parinterval 人类具有不断学习、调整和转移知识的能力,这种能力被称为{\small\bfnew{持续学习}}\index{持续学习}(Continual Learning\index{Continual Learning}),也叫{\small\bfnew{终生学习}}(Lifelong Learning\index{Lifelong Learning})或{\small\bfnew{增量式学习}}\index{增量式学习}(Incremental Learning\index{Incremental Learning})。人类学习的新任务时,会很自然的利用以前的知识并将新学习的知识整合到以前的知识中。然而对于机器学习系统来说,尤其在连接主义的范式下(如深度神经网络模型),这是一个很大的挑战,这是由神经网络的特性所决定的。当前的神经网络模型依赖于标注的训练样本,通过反向传播算法对模型参数进行训练更新,最终达到拟合数据分布的目的。当把模型切换到新的任务时,本质上是数据的分布发生了变化,从这种分布差异过大的数据中不断增量获取可用信息很容易导致{\small\bfnew{灾难性遗忘}}\index{灾难性遗忘}(Catastrophic Forgetting\index{Catastrophic Forgetting})问题,即用新数据训练模型的时候会干扰先前学习的知识。甚至,这在最坏的情况下会导致旧知识被新知识完全重写。在机器翻译领域,类似的问题经常发生在不断增加数据的场景中,因为当用户使用少量数据对模型进行更新之后,发现在旧数据上的性能下降了(见{\chaptereighteen})。 \parinterval 人类具有不断学习、调整和转移知识的能力,这种能力被称为{\small\bfnew{持续学习}}\index{持续学习}(Continual Learning\index{Continual Learning}),也叫{\small\bfnew{终生学习}}\index{终生学习}(Lifelong Learning\index{Lifelong Learning})或{\small\bfnew{增量式学习}}\index{增量式学习}(Incremental Learning\index{Incremental Learning})。人类学习的新任务时,会很自然的利用以前的知识并将新学习的知识整合到以前的知识中。然而对于机器学习系统来说,尤其在连接主义的范式下(如深度神经网络模型),这是一个很大的挑战,这是由神经网络的特性所决定的。当前的神经网络模型依赖于标注的训练样本,通过反向传播算法对模型参数进行训练更新,最终达到拟合数据分布的目的。当把模型切换到新的任务时,本质上是数据的分布发生了变化,从这种分布差异过大的数据中不断增量获取可用信息很容易导致{\small\bfnew{灾难性遗忘}}\index{灾难性遗忘}(Catastrophic Forgetting\index{Catastrophic Forgetting})问题,即用新数据训练模型的时候会干扰先前学习的知识。甚至,这在最坏的情况下会导致旧知识被新知识完全重写。在机器翻译领域,类似的问题经常发生在不断增加数据的场景中,因为当用户使用少量数据对模型进行更新之后,发现在旧数据上的性能下降了(见{\chaptereighteen})。
\parinterval 为克服灾难性遗忘问题,学习系统一方面必须能连续获取新知识和完善现有知识,另一方面,还应防止新数据输入明显干扰现有的知识,这个问题称作{\small\bfnew{稳定性-可塑性}}\index{稳定性- 可塑性}(Stability-Plasticity\index{Stability-Plasticity})问题。可塑性指整合新知识的能力,稳定性指保留先前的知识不至于遗忘。要解决这些问题,就需要模型在保留先前任务的知识与学习当前任务的新知识之间取得平衡。目前的解决方法可以分为以下几类: \parinterval 为克服灾难性遗忘问题,学习系统一方面必须能连续获取新知识和完善现有知识,另一方面,还应防止新数据输入明显干扰现有的知识,这个问题称作{\small\bfnew{稳定性-可塑性}}\index{稳定性-可塑性}(Stability-Plasticity\index{Stability-Plasticity})问题。可塑性指整合新知识的能力,稳定性指保留先前的知识不至于遗忘。要解决这些问题,就需要模型在保留先前任务的知识与学习当前任务的新知识之间取得平衡。目前的解决方法可以分为以下几类:
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
......
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item {\small\bfnew{相对位置编码}}\index{相对位置编码}(Relative Positional Representation)\index{Relative Positional Representation}\upcite{Shaw2018SelfAttentionWR}。核心思想是在能够捕获全局依赖的自注意力机制中引入相对位置信息。该方法可以有效补充绝对位置编码的不足,甚至完全取代绝对位置编码。对于Transformer模型中的任意一层,假设$\mathbi{x}_i$$\mathbi{x}_j$是位置$i$$j$的输入向量(也就是来自上一层位置$i$$j$的输出向量),二者的位置关系可以通过向量$\mathbi{a}_{ij}^V$$\mathbi{a}_{ij}^K$来表示,定义如下: \item {\small\bfnew{相对位置编码}}\index{相对位置编码或相对位置表示}(Relative Positional Representation)\index{Relative Positional Representation}\upcite{Shaw2018SelfAttentionWR}。核心思想是在能够捕获全局依赖的自注意力机制中引入相对位置信息。该方法可以有效补充绝对位置编码的不足,甚至完全取代绝对位置编码。对于Transformer模型中的任意一层,假设$\mathbi{x}_i$$\mathbi{x}_j$是位置$i$$j$的输入向量(也就是来自上一层位置$i$$j$的输出向量),二者的位置关系可以通过向量$\mathbi{a}_{ij}^V$$\mathbi{a}_{ij}^K$来表示,定义如下:
\begin{eqnarray} \begin{eqnarray}
\mathbi{a}_{ij}^K &=& \mathbi{w}^K_{\textrm{clip}(j-i,k)} \label{eq:15-7} \\ \mathbi{a}_{ij}^K &=& \mathbi{w}^K_{\textrm{clip}(j-i,k)} \label{eq:15-7} \\
\mathbi{a}_{ij}^V &=& \mathbi{w}^V_{\textrm{clip}(j-i,k)} \label{eq:15-8} \\ \mathbi{a}_{ij}^V &=& \mathbi{w}^V_{\textrm{clip}(j-i,k)} \label{eq:15-8} \\
...@@ -153,7 +153,7 @@ A_{ij}^{\rm rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{\te ...@@ -153,7 +153,7 @@ A_{ij}^{\rm rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{\te
\noindent 其中,$A_{ij}^{\rm rel}$为使用相对位置编码后位置$i$$j$关系的表示结果,$\mathbi{R}$是一个固定的正弦矩阵。不同于公式\eqref{eq:15-13},公式\eqref{eq:15-14}对(c)中的$\mathbi{E}_{x_j}^{\textrm{T}}$与(d)中的$\mathbi{R}_{i-j}^{\textrm{T}}$采用了不同的映射矩阵,分别为$\mathbi{W}_{K,E}^{\textrm{T}}$$\mathbi{W}_{K,R}^{\textrm{T}}$,这两项分别代表了键$\mathbi{K}$中的词嵌入表示和相对位置编码表示,并且由于此时只采用了相对位置编码,因此公式\eqref{eq:15-14}在(c)与(d)部分使用了$\mathbi{u}$$\mathbi{v}$两个可学习的矩阵代替$\mathbi{U}_i\mathbi{W}_Q$$\mathbi{U}_i\mathbi{W}_Q$,即查询$\mathbi{Q}$中的绝对位置编码部分。此时公式中各项的含义为:(a)表示位置$i$与位置$j$之间词嵌入的相关性,可以看作是基于内容的表示,(b)表示基于内容的位置偏置,(c)表示全局内容的偏置,(d)表示全局位置的偏置。公式\eqref{eq:15-13}中的(a)、(b)两项与前面介绍的绝对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置编码引入了额外的线性变换矩阵。同时,这种方法兼顾了全局内容偏置和全局位置偏置,可以更好地利用正余弦函数的归纳偏置特性。 \noindent 其中,$A_{ij}^{\rm rel}$为使用相对位置编码后位置$i$$j$关系的表示结果,$\mathbi{R}$是一个固定的正弦矩阵。不同于公式\eqref{eq:15-13},公式\eqref{eq:15-14}对(c)中的$\mathbi{E}_{x_j}^{\textrm{T}}$与(d)中的$\mathbi{R}_{i-j}^{\textrm{T}}$采用了不同的映射矩阵,分别为$\mathbi{W}_{K,E}^{\textrm{T}}$$\mathbi{W}_{K,R}^{\textrm{T}}$,这两项分别代表了键$\mathbi{K}$中的词嵌入表示和相对位置编码表示,并且由于此时只采用了相对位置编码,因此公式\eqref{eq:15-14}在(c)与(d)部分使用了$\mathbi{u}$$\mathbi{v}$两个可学习的矩阵代替$\mathbi{U}_i\mathbi{W}_Q$$\mathbi{U}_i\mathbi{W}_Q$,即查询$\mathbi{Q}$中的绝对位置编码部分。此时公式中各项的含义为:(a)表示位置$i$与位置$j$之间词嵌入的相关性,可以看作是基于内容的表示,(b)表示基于内容的位置偏置,(c)表示全局内容的偏置,(d)表示全局位置的偏置。公式\eqref{eq:15-13}中的(a)、(b)两项与前面介绍的绝对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置编码引入了额外的线性变换矩阵。同时,这种方法兼顾了全局内容偏置和全局位置偏置,可以更好地利用正余弦函数的归纳偏置特性。
\vspace{0.5em} \vspace{0.5em}
\item {\small\bfnew{结构化位置编码}}\index{基于结构化位置编码}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}。 通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置,并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。 \item {\small\bfnew{结构化位置编码}}\index{结构化位置编码或结构化位置表示}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}。 通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置,并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
\vspace{0.5em} \vspace{0.5em}
\item {\small\bfnew{基于连续动态系统}}\index{基于连续动态系统}(Continuous Dynamic Model)\index{Continuous Dynamic Model}{\small\bfnew{的位置编码}}\upcite{Liu2020LearningTE}。使用神经常微分方程{\small\bfnew{求解器}}\index{求解器}(Solver)\index{Solver}来建模位置信息\upcite{DBLP:conf/nips/ChenRBD18},模型具有更好的归纳偏置能力,可以处理变长的输入序列,同时能够从不同的数据中进行自适应学习。 \item {\small\bfnew{基于连续动态系统}}\index{基于连续动态系统}(Continuous Dynamic Model)\index{Continuous Dynamic Model}{\small\bfnew{的位置编码}}\upcite{Liu2020LearningTE}。使用神经常微分方程{\small\bfnew{求解器}}\index{求解器}(Solver)\index{Solver}来建模位置信息\upcite{DBLP:conf/nips/ChenRBD18},模型具有更好的归纳偏置能力,可以处理变长的输入序列,同时能够从不同的数据中进行自适应学习。
...@@ -355,7 +355,7 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i) ...@@ -355,7 +355,7 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item Reformer模型在计算Key和Value时使用相同的线性映射,共享Key和Value的值\upcite{Kitaev2020ReformerTE},降低了自注意力机制的复杂度。进一步,Reformer引入了一种{\small\bfnew{局部哈希敏感注意力机制}}\index{局部哈希敏感注意力机制}(LSH Attention)\index{LSH Attention},其提高效率的方式和固定模式中的局部建模一致,减少注意力机制的计算范围。对于每一个Query,通过局部哈希敏感机制找出和其较为相关的Key,并进行注意力的计算。其基本思路就是距离相近的向量以较大的概率被哈希分配到一个桶内,距离较远的向量被分配到一个桶内的概率则较低。此外,Reformer中还采用了一种{\small\bfnew{可逆残差网络结构}}\index{可逆残差网络结构}(The Reversible Residual Network)\index{The Reversible Residual Network}和分块计算前馈神经网络层的机制,即将前馈层的隐层维度拆分为多个块并独立的进行计算,最后进行拼接操作,得到前馈层的输出,这种方式大幅度减少了内存(显存)占用。 \item Reformer模型在计算Key和Value时使用相同的线性映射,共享Key和Value的值\upcite{Kitaev2020ReformerTE},降低了自注意力机制的复杂度。进一步,Reformer引入了一种{\small\bfnew{局部敏感哈希注意力机制}}\index{局部敏感哈希注意力机制}(Locality Sensitive Hashing Attention\index{Locality Sensitive Hashing Attention},LSH Attention),其提高效率的方式和固定模式中的局部建模一致,减少注意力机制的计算范围。对于每一个Query,通过局部哈希敏感机制找出和其较为相关的Key,并进行注意力的计算。其基本思路就是距离相近的向量以较大的概率被哈希分配到一个桶内,距离较远的向量被分配到一个桶内的概率则较低。此外,Reformer中还采用了一种{\small\bfnew{可逆残差网络结构}}\index{可逆残差网络结构}(The Reversible Residual Network)\index{The Reversible Residual Network}和分块计算前馈神经网络层的机制,即将前馈层的隐层维度拆分为多个块并独立的进行计算,最后进行拼接操作,得到前馈层的输出,这种方式大幅度减少了内存(显存)占用。
\vspace{0.5em} \vspace{0.5em}
\item Routing Transformer通过聚类算法对序列中的不同单元进行分组,分别在组内进行自注意力机制的计算\upcite{DBLP:journals/corr/abs-2003-05997}。该方法是将Query和Key映射到聚类矩阵$\mathbi{S}$ \item Routing Transformer通过聚类算法对序列中的不同单元进行分组,分别在组内进行自注意力机制的计算\upcite{DBLP:journals/corr/abs-2003-05997}。该方法是将Query和Key映射到聚类矩阵$\mathbi{S}$
...@@ -500,7 +500,7 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i) ...@@ -500,7 +500,7 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\noindent 其中,$[\cdot]$表示级联操作。这种方式具有比权重平均更强的拟合能力。 \noindent 其中,$[\cdot]$表示级联操作。这种方式具有比权重平均更强的拟合能力。
\vspace{0.5em} \vspace{0.5em}
\item {\small\bfnew{基于多跳的自注意力机制}}。如图\ref{fig:15-11}所示,其做法与前馈神经网络类似,首先将不同层的表示拼接成2维的句子级矩阵表示\upcite{DBLP:journals/corr/LinFSYXZB17}。之后利用类似于前馈神经网络的思想将维度为$\mathbb{R}^{d_{\textrm{model}} \times L}$的矩阵映射到维度为$\mathbb{R}^{d_{\textrm{model}} \times n_{\rm hop}}$的矩阵,如下: \item {\small\bfnew{基于多跳注意力}}\index{多跳注意力}(Multi-hop Attention)\index{Multi-hop Self-attention}{\small\bfnew{机制}}。如图\ref{fig:15-11}所示,其做法与前馈神经网络类似,首先将不同层的表示拼接成2维的句子级矩阵表示\upcite{DBLP:journals/corr/LinFSYXZB17}。之后利用类似于前馈神经网络的思想将维度为$\mathbb{R}^{d_{\textrm{model}} \times L}$的矩阵映射到维度为$\mathbb{R}^{d_{\textrm{model}} \times n_{\rm hop}}$的矩阵,如下:
\begin{eqnarray} \begin{eqnarray}
\mathbi{o} &=& \sigma ([\mathbi{h}^1,\ldots,\mathbi{h}^L]^{\textrm{T}} \cdot \mathbi{W}_1)\mathbi{W}_2 \mathbi{o} &=& \sigma ([\mathbi{h}^1,\ldots,\mathbi{h}^L]^{\textrm{T}} \cdot \mathbi{W}_1)\mathbi{W}_2
\label{eq:15-33} \label{eq:15-33}
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\chapter{低资源神经机器翻译} \chapter{低资源神经机器翻译}
\parinterval 神经机器翻译带来的性能提升是显著的,但随之而来的问题是对海量双语训练数据的依赖。不同语言可使用的数据规模是不同的。比如汉语、英语这种使用范围广泛的语言,存在着大量的双语平行句对,这些语言被称为{\small\bfnew{富资源语言}}\index{富资源语言}(High-resource Language\index{High-resource Language})。而对于其它一些使用范围稍小的语言,如斐济语、古吉拉特语等,相关的数据非常稀少,这些语言被称为{\small\bfnew{低资源语言}}\index{低资源语言}(Low-resource Language\index{Low-resource Language})。世界上现存语言超过5000种,仅有很少一部分为富资源语言,绝大多数均为低资源语言。即使在富资源语言中,对于一些特定的领域,双语平行语料也是十分稀缺的。有时,一些特殊的语种或者领域甚至会面临“零资源”的问题。因此,{\small\bfnew{低资源机器翻译}}\index{低资源机器翻译}(Low-resource Machine Translation)是当下急需解决且颇具挑战的问题。 \parinterval 神经机器翻译带来的性能提升是显著的,但随之而来的问题是对海量双语训练数据的依赖。不同语言可使用的数据规模是不同的。比如汉语、英语这种使用范围广泛的语言,存在着大量的双语平行句对,这些语言被称为{\small\bfnew{富资源语言}}\index{富资源语言}(High-resource Language\index{High-resource Language})。而对于其它一些使用范围稍小的语言,如斐济语、古吉拉特语等,相关的数据非常稀少,这些语言被称为{\small\bfnew{低资源语言}}\index{低资源语言}(Low-resource Language\index{Low-resource Language})。世界上现存语言超过5000种,仅有很少一部分为富资源语言,绝大多数均为低资源语言。即使在富资源语言中,对于一些特定的领域,双语平行语料也是十分稀缺的。有时,一些特殊的语种或者领域甚至会面临“零资源”的问题。因此,{\small\bfnew{低资源机器翻译}}\index{低资源机器翻译}(Low-resource Machine Translation)\index{Low-resource Machine Translation}是当下急需解决且颇具挑战的问题。
\parinterval 本章将对低资源神经机器翻译的相关问题、模型和方法展开介绍,内容涉及数据的有效使用、双向翻译模型、多语言翻译模型、无监督机器翻译、领域适应五个方面。 \parinterval 本章将对低资源神经机器翻译的相关问题、模型和方法展开介绍,内容涉及数据的有效使用、双向翻译模型、多语言翻译模型、无监督机器翻译、领域适应五个方面。
...@@ -194,7 +194,7 @@ ...@@ -194,7 +194,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{3. 预训练模型} \subsubsection{3. 预训练模型}
\parinterval 相比固定的词嵌入,上下文词嵌入包含了在当前语境中的语义信息,丰富了模型的输入表示,降低了训练难度。但是,模型仍有大量的参数需要从零学习,来进一步提取整个句子的表示。一种可行的方案是在预训练阶段中直接得到预训练好的模型参数,在下游任务中仅仅通过任务特定的数据对模型参数进行微调,来得到一个较强的模型。基于这个想法,有大量的预训练模型被提出。比如,{\small\bfnew{生成式预训练}}(Generative Pre-training,GPT)\index{生成式预训练}\index{GPT}{\small\bfnew{来自Transformer的双向编码器表示}}(Bidirectional Encoder Representations From Transformers,BERT)\index{双向编码器表示}\index{BERT}就是两种典型的预训练模型。图\ref{fig:16-5}对比了二者的模型结构。 \parinterval 相比固定的词嵌入,上下文词嵌入包含了在当前语境中的语义信息,丰富了模型的输入表示,降低了训练难度。但是,模型仍有大量的参数需要从零学习,来进一步提取整个句子的表示。一种可行的方案是在预训练阶段中直接得到预训练好的模型参数,在下游任务中仅仅通过任务特定的数据对模型参数进行微调,来得到一个较强的模型。基于这个想法,有大量的预训练模型被提出。比如,{\small\bfnew{生成式预训练}}(Generative Pre-training,GPT)\index{生成式预训练}\index{Generative Pre-training}{\small\bfnew{来自Transformer的双向编码器表示}}(Bidirectional Encoder Representations From Transformers,BERT)\index{双向编码器表示}\index{BERT}就是两种典型的预训练模型。图\ref{fig:16-5}对比了二者的模型结构。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -207,7 +207,7 @@ ...@@ -207,7 +207,7 @@
\parinterval GPT通过Transformer模型自回归地训练单向语言模型\upcite{radford2018improving},类似于神经机器翻译模型的解码器,相比双向LSTM等模型,Tranformer模型的表示能力更强。之后提出的BERT模型更是将预训练的作用提升到了新的水平\upcite{devlin2019bert}。GPT 模型的一个缺陷在于模型只能进行单向编码,也就是前面的文本在建模时无法获取到后面的信息。而BERT提出了一种自编码的方式,使模型在预训练阶段可以通过双向编码的方式进行建模,进一步增强了模型的表示能力。 \parinterval GPT通过Transformer模型自回归地训练单向语言模型\upcite{radford2018improving},类似于神经机器翻译模型的解码器,相比双向LSTM等模型,Tranformer模型的表示能力更强。之后提出的BERT模型更是将预训练的作用提升到了新的水平\upcite{devlin2019bert}。GPT 模型的一个缺陷在于模型只能进行单向编码,也就是前面的文本在建模时无法获取到后面的信息。而BERT提出了一种自编码的方式,使模型在预训练阶段可以通过双向编码的方式进行建模,进一步增强了模型的表示能力。
\parinterval BERT的核心思想是通过{\small\bfnew{掩码语言模型}}(Masked Language Model,MLM)\index{掩码语言模型}\index{MLM}任务进行预训练。掩码语言模型的思想类似于完形填空,随机选择输入句子中的部分词进行掩码,之后让模型预测这些被掩码的词。掩码的具体做法是将被选中的词替换为一个特殊的词<Mask>,这样模型在训练过程中,无法得到掩码位置词的信息,需要联合上下文内容进行预测,因此提高了模型对上下文的特征提取能力。而使用掩码的方式进行训练也给神经机器翻译提供了新的思路,在本章的其它部分中也会使用到类似方法。 \parinterval BERT的核心思想是通过{\small\bfnew{掩码语言模型}}(Masked Language Model,MLM)\index{掩码语言模型}\index{Masked Language Model}任务进行预训练。掩码语言模型的思想类似于完形填空,随机选择输入句子中的部分词进行掩码,之后让模型预测这些被掩码的词。掩码的具体做法是将被选中的词替换为一个特殊的词<Mask>,这样模型在训练过程中,无法得到掩码位置词的信息,需要联合上下文内容进行预测,因此提高了模型对上下文的特征提取能力。而使用掩码的方式进行训练也给神经机器翻译提供了新的思路,在本章的其它部分中也会使用到类似方法。
\parinterval 在神经机器翻译任务中,预训练模型可以用于初始化编码器的模型参数\upcite{DBLP:conf/emnlp/ClinchantJN19,DBLP:conf/emnlp/ImamuraS19,DBLP:conf/naacl/EdunovBA19}。之所以用在编码器端而不是解码器端,主要原因是编码器的作用主要在于特征提取,训练难度相对较高,而解码器的作用主要在于生成,和编码器提取到的表示是强依赖的,相对比较脆弱\upcite{DBLP:journals/corr/abs-1908-06259} \parinterval 在神经机器翻译任务中,预训练模型可以用于初始化编码器的模型参数\upcite{DBLP:conf/emnlp/ClinchantJN19,DBLP:conf/emnlp/ImamuraS19,DBLP:conf/naacl/EdunovBA19}。之所以用在编码器端而不是解码器端,主要原因是编码器的作用主要在于特征提取,训练难度相对较高,而解码器的作用主要在于生成,和编码器提取到的表示是强依赖的,相对比较脆弱\upcite{DBLP:journals/corr/abs-1908-06259}
...@@ -215,7 +215,7 @@ ...@@ -215,7 +215,7 @@
\parinterval 因此,一种做法将预训练模型和翻译模型进行融合,把预训练模型作为一个独立的模块来为编码器或者解码器提供句子级表示结果\upcite{DBLP:journals/corr/abs-2002-06823,DBLP:conf/aaai/YangW0Z00020}。另外一种做法是针对生成任务进行预训练。机器翻译是一种典型的语言生成任务,不仅包含源语言表示学习的问题,还有序列到序列的映射,以及目标语言端序列生成的问题,这些知识是无法单独通过(源语言)单语数据学习到的。因此,可以使用单语数据对编码器-解码器结构进行预训练\upcite{song2019mass,DBLP:conf/acl/LewisLGGMLSZ20,DBLP:conf/emnlp/QiYGLDCZ020} \parinterval 因此,一种做法将预训练模型和翻译模型进行融合,把预训练模型作为一个独立的模块来为编码器或者解码器提供句子级表示结果\upcite{DBLP:journals/corr/abs-2002-06823,DBLP:conf/aaai/YangW0Z00020}。另外一种做法是针对生成任务进行预训练。机器翻译是一种典型的语言生成任务,不仅包含源语言表示学习的问题,还有序列到序列的映射,以及目标语言端序列生成的问题,这些知识是无法单独通过(源语言)单语数据学习到的。因此,可以使用单语数据对编码器-解码器结构进行预训练\upcite{song2019mass,DBLP:conf/acl/LewisLGGMLSZ20,DBLP:conf/emnlp/QiYGLDCZ020}
\parinterval{\small\bfnew{掩码端到端预训练}}(Masked Sequence to Sequence Pre-training,MASS)\index{掩码端到端预训练}\index{MASS}方法为例\upcite{song2019mass},其思想与BERT十分相似,也是在预训练过程中采用掩码的方式,随机选择编码器输入句子中的连续片段替换为特殊词<Mask>,然后在解码器预测这个连续片段,如图\ref{fig:16-6} 所示。这种做法可以使得编码器捕捉上下文信息,同时迫使解码器依赖于编码器进行自回归的生成,从而学习到编码器和解码器之间的注意力。为了适配下游的机器翻译任务,使预训练模型可以学习到不同语言的表示,MASS对不同语言的句子采用共享词汇表和模型参数的方法,利用同一个预训练模型来进行不同语言句子的预训练。通过这种方式,模型既学到了对源语言句子的编码,也学习到了对目标语言句子的生成方法,之后通过使用双语句对来对预训练模型进行微调,模型可以快速收敛到较好的状态。 \parinterval{\small\bfnew{掩码端到端预训练}}(Masked Sequence to Sequence Pre-training,MASS)\index{掩码端到端预训练}\index{Masked Sequence to Sequence Pre-training}方法为例\upcite{song2019mass},其思想与BERT十分相似,也是在预训练过程中采用掩码的方式,随机选择编码器输入句子中的连续片段替换为特殊词<Mask>,然后在解码器预测这个连续片段,如图\ref{fig:16-6} 所示。这种做法可以使得编码器捕捉上下文信息,同时迫使解码器依赖于编码器进行自回归的生成,从而学习到编码器和解码器之间的注意力。为了适配下游的机器翻译任务,使预训练模型可以学习到不同语言的表示,MASS对不同语言的句子采用共享词汇表和模型参数的方法,利用同一个预训练模型来进行不同语言句子的预训练。通过这种方式,模型既学到了对源语言句子的编码,也学习到了对目标语言句子的生成方法,之后通过使用双语句对来对预训练模型进行微调,模型可以快速收敛到较好的状态。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -301,7 +301,7 @@ ...@@ -301,7 +301,7 @@
目前,对偶学习的思想已经广泛应用于低资源机器翻译领域,它不仅能够提升在有限双语资源下的翻译模型性能,而且能够利用未标注的单语数据来进行学习。下面将针对{\small\bfnew{有监督对偶学习}}(Dual Supervised Learning\index{Dual Supervised Learning}\upcite{DBLP:conf/icml/XiaQCBYL17,DBLP:conf/icml/XiaTTQYL18}{\small\bfnew{无监督对偶学习}}(Dual Unsupervised Learning\index{Dual Unsupervised Learning}\upcite{qin2020dual,DBLP:conf/nips/HeXQWYLM16,zhao2020dual}两方面,对对偶学习的思想进行介绍。 目前,对偶学习的思想已经广泛应用于低资源机器翻译领域,它不仅能够提升在有限双语资源下的翻译模型性能,而且能够利用未标注的单语数据来进行学习。下面将针对{\small\bfnew{有监督对偶学习}}\index{有监督对偶学习}(Dual Supervised Learning\index{Dual Supervised Learning}\upcite{DBLP:conf/icml/XiaQCBYL17,DBLP:conf/icml/XiaTTQYL18}{\small\bfnew{无监督对偶学习}}\index{无监督对偶学习}(Dual Unsupervised Learning\index{Dual Unsupervised Learning}\upcite{qin2020dual,DBLP:conf/nips/HeXQWYLM16,zhao2020dual}两方面,对对偶学习的思想进行介绍。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION % NEW SUB-SUB-SECTION
...@@ -492,7 +492,7 @@ ...@@ -492,7 +492,7 @@
\subsection{无监督词典归纳}\label{unsupervised-dictionary-induction} \subsection{无监督词典归纳}\label{unsupervised-dictionary-induction}
\parinterval {\small\bfnew{词典归纳}}\index{词典归纳}(Bilingual Dictionary Induction,BDI\index{Bilingual Dictionary Induction})可用于处理不同语言间单词级别的翻译任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源\upcite{黄书剑0统计机器翻译中的词对齐研究}。在神经机器翻译中,词典归纳通常被用在无监督机器翻译、多语言机器翻译等任务中。这里,单词通过实数向量进行表示,即词嵌入。所有单词分布在一个多维空间中,而且研究人员发现:词嵌入空间在一些语言中显示出类似的结构,这使得直接利用词嵌入来构建双语词典成为可能\upcite{DBLP:journals/corr/MikolovLS13}。其基本想法是先将来自不同语言的词嵌入投影到共享嵌入空间中,然后在这个共享空间中归纳出双语词典,原理如图\ref{fig:16-16}所示。较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语言到目标语词言嵌入空间的线性映射,将两个语言的单词投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典\upcite{DBLP:journals/corr/MikolovLS13}。最近的研究表明,词典归纳可以在更弱的监督信号下完成,这些监督信号来自更小的种子词典\upcite{DBLP:conf/acl/VulicK16}、 相同的字符串\upcite{DBLP:conf/iclr/SmithTHH17},甚至仅仅是共享的数字\upcite{DBLP:conf/acl/ArtetxeLA17} \parinterval {\small\bfnew{词典归纳}}\index{词典归纳或双语词典归纳}(Bilingual Dictionary Induction,BDI\index{Bilingual Dictionary Induction})可用于处理不同语言间单词级别的翻译任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源\upcite{黄书剑0统计机器翻译中的词对齐研究}。在神经机器翻译中,词典归纳通常被用在无监督机器翻译、多语言机器翻译等任务中。这里,单词通过实数向量进行表示,即词嵌入。所有单词分布在一个多维空间中,而且研究人员发现:词嵌入空间在一些语言中显示出类似的结构,这使得直接利用词嵌入来构建双语词典成为可能\upcite{DBLP:journals/corr/MikolovLS13}。其基本想法是先将来自不同语言的词嵌入投影到共享嵌入空间中,然后在这个共享空间中归纳出双语词典,原理如图\ref{fig:16-16}所示。较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语言到目标语词言嵌入空间的线性映射,将两个语言的单词投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典\upcite{DBLP:journals/corr/MikolovLS13}。最近的研究表明,词典归纳可以在更弱的监督信号下完成,这些监督信号来自更小的种子词典\upcite{DBLP:conf/acl/VulicK16}、 相同的字符串\upcite{DBLP:conf/iclr/SmithTHH17},甚至仅仅是共享的数字\upcite{DBLP:conf/acl/ArtetxeLA17}
%---------------------------------------------- %----------------------------------------------
\begin{figure}[h] \begin{figure}[h]
\centering \centering
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
\subsection{音频处理} \subsection{音频处理}
\parinterval 为了保证对相关内容描述的完整性,这里对语音处理的基本知识作简要介绍。不同于文本,音频本质上是经过若干信号处理之后的{\small\bfnew{波形}}(Waveform)\index{Waveform}。具体来说,声音是一种空气的震动,因此可以被转换为模拟信号。模拟信号是一段连续的信号,经过采样变为离散的数字信号。采样是每隔固定的时间记录一下声音的振幅,采样率表示每秒的采样点数,单位是赫兹(Hz)。采样率越高,采样的结果与原始的语音越相像。通常来说,采样的标准是能够通过离散化的数字信号重现原始语音。日常生活中使用的手机和电脑设备的采样率一般为16kHz,表示每秒16000个采样点;而音频CD的采样率可以达到44.1kHz。 经过进一步的量化,将采样点的值转换为整型数值保存,从而减少占用的存储空间,通常采用的是16位量化。将采样率和量化位数相乘,就可以得到{\small\bfnew{比特率}}\index{比特率}(Bits Per Second,BPS)\index{Bits Per Second},表示音频每秒占用的位数。例如,16kHz采样率和16位量化的音频,比特率为256kb/s。音频处理的整体流程如图\ref{fig:17-2}所示\upcite{洪青阳2020语音识别原理与应用,陈果果2020语音识别实战} \parinterval 为了保证对相关内容描述的完整性,这里对语音处理的基本知识作简要介绍。不同于文本,音频本质上是经过若干信号处理之后的{\small\bfnew{波形}}\index{波形}(Waveform)\index{Waveform}。具体来说,声音是一种空气的震动,因此可以被转换为模拟信号。模拟信号是一段连续的信号,经过采样变为离散的数字信号。采样是每隔固定的时间记录一下声音的振幅,采样率表示每秒的采样点数,单位是赫兹(Hz)。采样率越高,采样的结果与原始的语音越相像。通常来说,采样的标准是能够通过离散化的数字信号重现原始语音。日常生活中使用的手机和电脑设备的采样率一般为16kHz,表示每秒16000个采样点;而音频CD的采样率可以达到44.1kHz。 经过进一步的量化,将采样点的值转换为整型数值保存,从而减少占用的存储空间,通常采用的是16位量化。将采样率和量化位数相乘,就可以得到{\small\bfnew{比特率}}\index{比特率}(Bits Per Second,BPS)\index{Bits Per Second},表示音频每秒占用的位数。例如,16kHz采样率和16位量化的音频,比特率为256kb/s。音频处理的整体流程如图\ref{fig:17-2}所示\upcite{洪青阳2020语音识别原理与应用,陈果果2020语音识别实战}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
\end{figure} \end{figure}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\parinterval 经过了上述的预处理操作,可以得到音频对应的帧序列,之后通过不同的操作来提取不同类型的声学特征。在语音翻译中,比较常用的声学特征为{\small\bfnew{滤波器组}}\index{滤波器组}(Filter-bank,Fbank)\index{Filter-bank}{\small\bfnew{Mel频率倒谱系数}}\index{Mel频率倒谱系数}(Mel-frequency Cepstral Coefficient,MFCC)\upcite{洪青阳2020语音识别原理与应用}。实际上,提取到的声学特征可以类比于计算机视觉中的像素特征,或者自然语言处理中的词嵌入表示。不同之处在于,声学特征更加复杂多变,可能存在着较多的噪声和冗余信息。此外,相比对应的文字序列,音频提取到的特征序列长度要大十倍以上。比如,人类正常交流中每秒钟一般可以说2-3个字,而每秒钟的语音可以提取得到100帧的特征序列。巨大的长度比差异也为声学特征建模带来了挑战。 \parinterval 经过了上述的预处理操作,可以得到音频对应的帧序列,之后通过不同的操作来提取不同类型的声学特征。在语音翻译中,比较常用的声学特征为{\small\bfnew{滤波器组}}\index{滤波器组}(Filter-bank,Fbank)\index{Filter-bank}{\small\bfnew{Mel频率倒谱系数}}\index{Mel频率倒谱系数}(Mel-frequency Cepstral Coefficient,MFCC)\index{Mel-frequency Cepstral Coefficient}\upcite{洪青阳2020语音识别原理与应用}。实际上,提取到的声学特征可以类比于计算机视觉中的像素特征,或者自然语言处理中的词嵌入表示。不同之处在于,声学特征更加复杂多变,可能存在着较多的噪声和冗余信息。此外,相比对应的文字序列,音频提取到的特征序列长度要大十倍以上。比如,人类正常交流中每秒钟一般可以说2-3个字,而每秒钟的语音可以提取得到100帧的特征序列。巨大的长度比差异也为声学特征建模带来了挑战。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
......
...@@ -170,7 +170,7 @@ ...@@ -170,7 +170,7 @@
\parinterval 从前面的介绍可知,IBM模型1和模型2把不同的源语言单词看作相互独立的单元来进行词对齐和翻译。换句话说,即使某个源语言短语中的两个单词都对齐到同一个目标语单词,它们之间也是相互独立的。这样IBM模型1和模型2对于多个源语言单词对齐到同一个目标语单词的情况并不能很好地进行描述。 \parinterval 从前面的介绍可知,IBM模型1和模型2把不同的源语言单词看作相互独立的单元来进行词对齐和翻译。换句话说,即使某个源语言短语中的两个单词都对齐到同一个目标语单词,它们之间也是相互独立的。这样IBM模型1和模型2对于多个源语言单词对齐到同一个目标语单词的情况并不能很好地进行描述。
\parinterval 这里将会给出另一个翻译模型,能在一定程度上解决上面提到的问题\upcite{DBLP:journals/coling/BrownPPM94,och2003systematic}。该模型把目标语言生成源语言的过程分解为如下几个步骤:首先,确定每个目标语言单词生成源语言单词的个数,这里把它称为{\small\sffamily\bfseries{繁衍率}}\index{繁衍率}{\small\sffamily\bfseries{产出率}}\index{产出率}(Fertility)\index{Fertility};其次,决定目标语言句子中每个单词生成的源语言单词都是什么,即决定生成的第一个源语言单词是什么,生成的第二个源语言单词是什么,以此类推。这样每个目标语言单词就对应了一个源语言单词列表;最后把各组源语言单词列表中的每个单词都放置到合适的位置上,完成目标语言译文到源语言句子的生成。 \parinterval 这里将会给出另一个翻译模型,能在一定程度上解决上面提到的问题\upcite{DBLP:journals/coling/BrownPPM94,och2003systematic}。该模型把目标语言生成源语言的过程分解为如下几个步骤:首先,确定每个目标语言单词生成源语言单词的个数,这里把它称为{\small\sffamily\bfseries{繁衍率}}\index{繁衍率或产出率}{\small\sffamily\bfseries{产出率}}(Fertility)\index{Fertility};其次,决定目标语言句子中每个单词生成的源语言单词都是什么,即决定生成的第一个源语言单词是什么,生成的第二个源语言单词是什么,以此类推。这样每个目标语言单词就对应了一个源语言单词列表;最后把各组源语言单词列表中的每个单词都放置到合适的位置上,完成目标语言译文到源语言句子的生成。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -313,7 +313,7 @@ p_0+p_1 & = & 1 \label{eq:6-21} ...@@ -313,7 +313,7 @@ p_0+p_1 & = & 1 \label{eq:6-21}
\parinterval IBM模型3仍然存在问题,比如,它不能很好地处理一个目标语言单词生成多个源语言单词的情况。这个问题在模型1和模型2中也存在。如果一个目标语言单词对应多个源语言单词,则这些源语言单词往往会构成短语。但是模型1-3把这些源语言单词看成独立的单元,而实际上它们是一个整体。这就造成了在模型1-3中这些源语言单词可能会“分散”开。为了解决这个问题,模型4对模型3进行了进一步修正。 \parinterval IBM模型3仍然存在问题,比如,它不能很好地处理一个目标语言单词生成多个源语言单词的情况。这个问题在模型1和模型2中也存在。如果一个目标语言单词对应多个源语言单词,则这些源语言单词往往会构成短语。但是模型1-3把这些源语言单词看成独立的单元,而实际上它们是一个整体。这就造成了在模型1-3中这些源语言单词可能会“分散”开。为了解决这个问题,模型4对模型3进行了进一步修正。
\parinterval 为了更清楚地阐述,这里引入新的术语\ \dash \ {\small\bfnew{概念单元}}\index{概念单元}{\small\bfnew{概念}}\index{概念}(Concept)\index{Concept}。词对齐可以被看作概念之间的对应。这里的概念是指具有独立语法或语义功能的一组单词。依照Brown等人的表示方法\upcite{DBLP:journals/coling/BrownPPM94},可以把概念记为cept.。每个句子都可以被表示成一系列的cept.。这里要注意的是,源语言句子中的cept.数量不一定等于目标句子中的cept.数量。因为有些cept. 可以为空,因此可以把那些空对的单词看作空cept.。比如,在图\ref{fig:6-8}的实例中,“了”就对应一个空cept.。 \parinterval 为了更清楚地阐述,这里引入新的术语\ \dash \ {\small\bfnew{概念单元}}\index{概念单元或概念}{\small\bfnew{概念}}(Concept)\index{Concept}。词对齐可以被看作概念之间的对应。这里的概念是指具有独立语法或语义功能的一组单词。依照Brown等人的表示方法\upcite{DBLP:journals/coling/BrownPPM94},可以把概念记为cept.。每个句子都可以被表示成一系列的cept.。这里要注意的是,源语言句子中的cept.数量不一定等于目标句子中的cept.数量。因为有些cept. 可以为空,因此可以把那些空对的单词看作空cept.。比如,在图\ref{fig:6-8}的实例中,“了”就对应一个空cept.。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -431,7 +431,7 @@ p_0+p_1 & = & 1 \label{eq:6-21} ...@@ -431,7 +431,7 @@ p_0+p_1 & = & 1 \label{eq:6-21}
\label{eq:6-27} \label{eq:6-27}
\end{eqnarray} \end{eqnarray}
\parinterval 本质上,模型3和模型4就是对应$\funp{P}({\textrm{failure}|\seq{t}})>0$的情况。这部分概率是模型损失掉的。有时候也把这类缺陷称为{\small\bfnew{物理缺陷}}\index{物理缺陷}(Physical Deficiency\index{Physical Deficiency})或{\small\bfnew{技术缺陷}}\index{技术缺陷}(Technical Deficiency\index{Technical Deficiency})。还有一种缺陷被称作{\small\bfnew{精神缺陷}}(Spiritual Deficiency\index{Spiritual Deficiency})或{\small\bfnew{逻辑缺陷}}\index{逻辑缺陷}(Logical Deficiency\index{Logical Deficiency}),它是指$\funp{P}({\textrm{well}|\seq{t}}) + \funp{P}({\textrm{ill}|\seq{t}}) = 1$$\funp{P}({\textrm{ill}|\seq{t}}) > 0$的情况。模型1 和模型2 就有逻辑缺陷。可以注意到,技术缺陷只存在于模型3 和模型4 中,模型1和模型2并没有技术缺陷问题。根本原因在于模型1和模型2的词对齐是从源语言出发对应到目标语言,$\seq{t}$$\seq{s}$ 的翻译过程实际上是从单词$s_1$开始到单词$s_m$ 结束,依次把每个源语言单词$s_j$对应到唯一一个目标语言位置。显然,这个过程能够保证每个源语言单词仅对应一个目标语言单词。但是,模型3 和模型4中对齐是从目标语言出发对应到源语言,$\seq{t}$$\seq{s}$的翻译过程从$t_1$开始$t_l$ 结束,依次把目标语言单词$t_i$生成的单词对应到某个源语言位置上。但是这个过程不能保证$t_i$中生成的单词所对应的位置没有被其他单词占用,因此也就产生了缺陷。 \parinterval 本质上,模型3和模型4就是对应$\funp{P}({\textrm{failure}|\seq{t}})>0$的情况。这部分概率是模型损失掉的。有时候也把这类缺陷称为{\small\bfnew{物理缺陷}}\index{物理缺陷}(Physical Deficiency\index{Physical Deficiency})或{\small\bfnew{技术缺陷}}\index{技术缺陷}(Technical Deficiency\index{Technical Deficiency})。还有一种缺陷被称作{\small\bfnew{精神缺陷}}\index{精神缺陷}(Spiritual Deficiency\index{Spiritual Deficiency})或{\small\bfnew{逻辑缺陷}}\index{逻辑缺陷}(Logical Deficiency\index{Logical Deficiency}),它是指$\funp{P}({\textrm{well}|\seq{t}}) + \funp{P}({\textrm{ill}|\seq{t}}) = 1$$\funp{P}({\textrm{ill}|\seq{t}}) > 0$的情况。模型1 和模型2 就有逻辑缺陷。可以注意到,技术缺陷只存在于模型3 和模型4 中,模型1和模型2并没有技术缺陷问题。根本原因在于模型1和模型2的词对齐是从源语言出发对应到目标语言,$\seq{t}$$\seq{s}$ 的翻译过程实际上是从单词$s_1$开始到单词$s_m$ 结束,依次把每个源语言单词$s_j$对应到唯一一个目标语言位置。显然,这个过程能够保证每个源语言单词仅对应一个目标语言单词。但是,模型3 和模型4中对齐是从目标语言出发对应到源语言,$\seq{t}$$\seq{s}$的翻译过程从$t_1$开始$t_l$ 结束,依次把目标语言单词$t_i$生成的单词对应到某个源语言位置上。但是这个过程不能保证$t_i$中生成的单词所对应的位置没有被其他单词占用,因此也就产生了缺陷。
\parinterval 这里还要强调的是,技术缺陷是模型3和模型4是模型本身的缺陷造成的,如果有一个“更好”的模型就可以完全避免这个问题。而逻辑缺陷几乎是不能从模型上根本解决的,因为对于任意一种语言都不能枚举所有的句子($\funp{P}({\textrm{ill}|\seq{t}})$实际上是得不到的)。 \parinterval 这里还要强调的是,技术缺陷是模型3和模型4是模型本身的缺陷造成的,如果有一个“更好”的模型就可以完全避免这个问题。而逻辑缺陷几乎是不能从模型上根本解决的,因为对于任意一种语言都不能枚举所有的句子($\funp{P}({\textrm{ill}|\seq{t}})$实际上是得不到的)。
......
...@@ -229,7 +229,7 @@ ...@@ -229,7 +229,7 @@
\funp{X}\ &\to\ &\langle \ \text{强大},\quad \textrm{strong}\ \rangle \nonumber \funp{X}\ &\to\ &\langle \ \text{强大},\quad \textrm{strong}\ \rangle \nonumber
\end{eqnarray} \end{eqnarray}
\parinterval 这个文法只有一种非终结符X,因此所有的变量都可以使用任意的产生式进行推导。这就给翻译提供了更大的自由度,也就是说,规则可以被任意使用,进行自由组合。这也符合基于短语的模型中对短语进行灵活拼接的思想。基于此,层次短语系统中也使用这种并不依赖语言学句法标记的文法。在本章的内容中,如果没有特殊说明,把这种没有语言学句法标记的文法称作{\small\bfnew{基于层次短语的文法}}\index{基于层次短语的文法}(Hierarchical Phrase-based Grammar)\index{Hierarchical Phrase-based Grammar},或简称层次短语文法。 \parinterval 这个文法只有一种非终结符X,因此所有的变量都可以使用任意的产生式进行推导。这就给翻译提供了更大的自由度,也就是说,规则可以被任意使用,进行自由组合。这也符合基于短语的模型中对短语进行灵活拼接的思想。基于此,层次短语系统中也使用这种并不依赖语言学句法标记的文法。在本章的内容中,如果没有特殊说明,把这种没有语言学句法标记的文法称作{\small\bfnew{基于层次短语的文法}}\index{基于层次短语的文法或层次短语文法}(Hierarchical Phrase-based Grammar)\index{Hierarchical Phrase-based Grammar},或简称层次短语文法。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
...@@ -468,7 +468,7 @@ span\textrm{[2,4]}&=&\textrm{“吃} \quad \textrm{鱼”} \nonumber \\ ...@@ -468,7 +468,7 @@ span\textrm{[2,4]}&=&\textrm{“吃} \quad \textrm{鱼”} \nonumber \\
span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{} \quad \textrm{鱼”} \nonumber span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{} \quad \textrm{鱼”} \nonumber
\end{eqnarray} \end{eqnarray}
\parinterval CKY方法是按跨度由小到大的次序执行的,这也对应了一种{\small\bfnew{自下而上的分析}}\index{自下而上的分析}Top-Down Parsing)\index{Top-Down Parsing}过程。对于每个跨度,检查: \parinterval CKY方法是按跨度由小到大的次序执行的,这也对应了一种{\small\bfnew{自下而上的分析}}\index{自下而上的分析}Bottom-Up Parsing)\index{Bottom-Up Parsing}过程。对于每个跨度,检查:
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
...@@ -750,7 +750,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q ...@@ -750,7 +750,7 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q
\subsection{基于树结构的文法} \subsection{基于树结构的文法}
\parinterval 基于句法的翻译模型的一个核心问题是要对树结构进行建模,进而完成树之间或者树和串之间的转换。在计算机领域中,所谓树就是由一些节点组成的层次关系的集合。计算机领域的树和自然世界中的树没有任何关系,只是借用了相似的概念,因为这种层次结构很像一棵倒过来的树。在使用树时,经常会把树的层次结构转化为序列结构,称为树结构的{\small\bfnew{序列化}}\index{序列化}或者{\small\bfnew{线性化}}\index{线性化}(Linearization)\index{Linearization} \parinterval 基于句法的翻译模型的一个核心问题是要对树结构进行建模,进而完成树之间或者树和串之间的转换。在计算机领域中,所谓树就是由一些节点组成的层次关系的集合。计算机领域的树和自然世界中的树没有任何关系,只是借用了相似的概念,因为这种层次结构很像一棵倒过来的树。在使用树时,经常会把树的层次结构转化为序列结构,称为树结构的{\small\bfnew{序列化}}\index{序列化或线性化}或者{\small\bfnew{线性化}}(Linearization)\index{Linearization}
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论