Commit f214f873 by 单韦乔

合并分支 'caorunzhe' 到 'shanweiqiao'

Caorunzhe

查看合并请求 !1108
parents dc656b46 b9248359
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
{0/7/0.25, 1/7/0.45, 2/7/0.15, 3/7/0.15, 4/7/0.15, 5/7/0.15, {0/7/0.25, 1/7/0.45, 2/7/0.15, 3/7/0.15, 4/7/0.15, 5/7/0.15,
0/6/0.35, 1/6/0.45, 2/6/0.15, 3/6/0.15, 4/6/0.15, 5/6/0.15, 0/6/0.35, 1/6/0.45, 2/6/0.15, 3/6/0.15, 4/6/0.15, 5/6/0.15,
0/5/0.25, 1/5/0.15, 2/5/0.15, 3/5/0.35, 4/5/0.15, 5/5/0.15, 0/5/0.25, 1/5/0.15, 2/5/0.15, 3/5/0.35, 4/5/0.15, 5/5/0.15,
0/4/0.15, 1/4/0.2, 2/4/0.2, 3/4/0.30, 4/4/0.15, 5/4/0.15, 0/4/0.15, 1/4/0.2, 2/4/0.2, 3/4/0.35, 4/4/0.15, 5/4/0.15,
0/3/0.15, 1/3/0.15, 2/3/0.8, 3/3/0.25, 4/3/0.15, 5/3/0.25, 0/3/0.15, 1/3/0.15, 2/3/0.8, 3/3/0.25, 4/3/0.15, 5/3/0.25,
0/2/0.15, 1/2/0.15, 2/2/0.15, 3/2/0.15, 4/2/0.25, 5/2/0.3, 0/2/0.15, 1/2/0.15, 2/2/0.15, 3/2/0.15, 4/2/0.25, 5/2/0.3,
0/1/0.15, 1/1/0.15, 2/1/0.15, 3/1/0.15, 4/1/0.8, 5/1/0.15, 0/1/0.15, 1/1/0.15, 2/1/0.15, 3/1/0.15, 4/1/0.8, 5/1/0.15,
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
{0/7/0.2, 1/7/0.45, 2/7/0.15, 3/7/0.15, 4/7/0.15, 5/7/0.15, {0/7/0.2, 1/7/0.45, 2/7/0.15, 3/7/0.15, 4/7/0.15, 5/7/0.15,
0/6/0.35, 1/6/0.45, 2/6/0.15, 3/6/0.15, 4/6/0.15, 5/6/0.15, 0/6/0.35, 1/6/0.45, 2/6/0.15, 3/6/0.15, 4/6/0.15, 5/6/0.15,
0/5/0.25, 1/5/0.15, 2/5/0.15, 3/5/0.35, 4/5/0.15, 5/5/0.15, 0/5/0.25, 1/5/0.15, 2/5/0.15, 3/5/0.35, 4/5/0.15, 5/5/0.15,
0/4/0.15, 1/4/0.25, 2/4/0.2, 3/4/0.30, 4/4/0.15, 5/4/0.15, 0/4/0.15, 1/4/0.25, 2/4/0.2, 3/4/0.35, 4/4/0.15, 5/4/0.15,
0/3/0.15, 1/3/0.15, 2/3/0.8, 3/3/0.25, 4/3/0.15, 5/3/0.25, 0/3/0.15, 1/3/0.15, 2/3/0.8, 3/3/0.25, 4/3/0.15, 5/3/0.25,
0/2/0.15, 1/2/0.15, 2/2/0.15, 3/2/0.15, 4/2/0.25, 5/2/0.3, 0/2/0.15, 1/2/0.15, 2/2/0.15, 3/2/0.15, 4/2/0.25, 5/2/0.3,
0/1/0.15, 1/1/0.15, 2/1/0.15, 3/1/0.15, 4/1/0.8, 5/1/0.15, 0/1/0.15, 1/1/0.15, 2/1/0.15, 3/1/0.15, 4/1/0.8, 5/1/0.15,
......
...@@ -178,11 +178,11 @@ ...@@ -178,11 +178,11 @@
} }
{ {
% cell update formula % cell update formula
\node[formulanode,anchor=south west,text width=10em] () at ([shift={(-4\base,1.5\base)}]aux59) {记忆更新\\$\mathbi{c}_{t}=\mathbi{f}_t\cdot \mathbi{c}_{t-1}+\mathbi{i}_t\cdot \hat{\mathbi{c}}_t$}; \node[formulanode,anchor=south west,text width=10em] () at ([shift={(-4\base,1.5\base)}]aux59) {记忆更新\\$\mathbi{c}_{t}=\mathbi{f}_t\odot \mathbi{c}_{t-1}+\mathbi{i}_t\odot \hat{\mathbi{c}}_t$};
} }
{ {
% output gate formula % output gate formula
\node[formulanode,anchor=north west,text width=10em] () at ([shift={(-4\base,-1.5\base)}]aux29) {输出门\\$\mathbi{o}_t=\sigma([\mathbi{h}_{t-1},\mathbi{x}_t] \mathbi{W}_o +\mathbi{b}_o)$\\$\mathbi{h}_{t}=\mathbi{o}_t\cdot \mathrm{Tanh}(\mathbi{c}_{t})$}; \node[formulanode,anchor=north west,text width=10em] () at ([shift={(-4\base,-1.5\base)}]aux29) {输出门\\$\mathbi{o}_t=\sigma([\mathbi{h}_{t-1},\mathbi{x}_t] \mathbi{W}_o +\mathbi{b}_o)$\\$\mathbi{h}_{t}=\mathbi{o}_t\odot \mathrm{Tanh}(\mathbi{c}_{t})$};
} }
\end{scope} \end{scope}
\end{tikzpicture} \end{tikzpicture}
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION 10.1 % NEW SECTION 10.1
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{神经机器翻译的发展简史} \section{神经机器翻译的发展简史}
\parinterval 纵观机器翻译的发展历程,神经机器翻译诞生较晚。无论是早期的基于规则的方法,还是逐渐发展起来的基于实例的方法,再或是上世纪末的统计方法,每次机器翻译框架级的创新都需要很长时间的酝酿,而技术走向成熟甚至需要更长的时间。但是,神经机器翻译的出现和后来的发展速度多少有些“出人意料”。神经机器翻译的概念出现在2013-2014年间,当时机器翻译领域的主流方法仍然是统计机器翻译。虽然那个时期深度学习已经在图像、语音等领域取得令人瞩目的效果,但是对于自然语言处理来说深度学习仍然不是主流。 \parinterval 纵观机器翻译的发展历程,神经机器翻译诞生较晚。无论是早期的基于规则的方法,还是逐渐发展起来的基于实例的方法,再或是上世纪末的统计方法,每次机器翻译框架级的创新都需要很长时间的酝酿,而技术走向成熟甚至需要更长的时间。但是,神经机器翻译的出现和后来的发展速度多少有些“出人意料”。神经机器翻译的概念出现在2013-2014年间,当时机器翻译领域的主流方法仍然是统计机器翻译。虽然那个时期深度学习已经在图像、语音等领域取得令人瞩目的效果,但是对于自然语言处理来说深度学习仍然不是主流。
...@@ -314,7 +313,7 @@ NMT & 21.7 & 18.7 & -13.7 \\ ...@@ -314,7 +313,7 @@ NMT & 21.7 & 18.7 & -13.7 \\
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsection{简单的运行实例} \subsection{简单的运行实例}
\parinterval 为了对编码器-解码器框架和神经机器翻译的运行过程有一个直观的认识,这里采用标准的循环神经网络作为编码器和解码器的结构演示一个简单的翻译实例。假设系统的输入和输出为: \parinterval 为了对编码器-解码器框架和神经机器翻译的运行过程有一个直观的认识,这里采用标准的循环神经网络作为编码器和解码器的结构演示一个简单的翻译实例。假设系统的输入和输出为:
\vspace{0.5em} \vspace{0.5em}
\parinterval \hspace{5em} 输入(汉语):我\ \ \ \ \ \ <eos> \parinterval \hspace{5em} 输入(汉语):我\ \ \ \ \ \ <eos>
...@@ -336,7 +335,7 @@ NMT & 21.7 & 18.7 & -13.7 \\ ...@@ -336,7 +335,7 @@ NMT & 21.7 & 18.7 & -13.7 \\
\parinterval 翻译过程的神经网络结构如图\ref{fig:10-7}所示,其中左边是编码器,右边是解码器。编码器会顺序处理源语言单词,将每个单词都表示成一个实数向量,也就是每个单词的词嵌入结果(绿色方框)。在词嵌入的基础上运行循环神经网络(蓝色方框)。在编码下一个时间步状态的时候,上一个时间步的隐藏状态会作为历史信息传入循环神经网络。这样,句子中每个位置的信息都被向后传递,最后一个时间步的隐藏状态(红色方框)就包含了整个源语言句子的信息,也就得到了编码器的编码结果$\ \dash\ $源语言句子的分布式表示。 \parinterval 翻译过程的神经网络结构如图\ref{fig:10-7}所示,其中左边是编码器,右边是解码器。编码器会顺序处理源语言单词,将每个单词都表示成一个实数向量,也就是每个单词的词嵌入结果(绿色方框)。在词嵌入的基础上运行循环神经网络(蓝色方框)。在编码下一个时间步状态的时候,上一个时间步的隐藏状态会作为历史信息传入循环神经网络。这样,句子中每个位置的信息都被向后传递,最后一个时间步的隐藏状态(红色方框)就包含了整个源语言句子的信息,也就得到了编码器的编码结果$\ \dash\ $源语言句子的分布式表示。
\parinterval 解码器直接把源语言句子的分布式表示作为输入的隐藏层状态,之后像编码器一样依次读入目标语言单词,这是一个标准的循环神经网络的执行过程。与编码器不同的是,解码器会有一个输出层,用于根据当前时间步的隐藏层状态生成目标语言单词及其概率分布。可以看到,解码器当前时刻的输出单词与下一个时刻的输入单词是一样的。从这个角度说,解码器也是一种神经语言模型,只不过它会从另外一种语言(源语言)获得一些信息,而不是仅仅做单语句子的生成。具体来说,当生成第一个单词“I”时,解码器利用了源语言句子表示(红色方框)和目标语言的起始词“<sos>”。在生成第二个单词“am”时,解码器利用了上一个时间步的隐藏状态和已经生成的“I”的信息。这个过程会循环执行,直到生成完整的目标语言句子。 \parinterval 解码器直接把源语言句子的分布式表示作为输入的隐藏层状态,之后像编码器一样依次读入目标语言单词,这是一个标准的循环神经网络的执行过程。与编码器不同的是,解码器会有一个输出层,用于根据当前时间步的隐藏层状态生成目标语言单词及其概率分布。可以看到,解码器当前时刻的输出单词与下一个时刻的输入单词是一样的。从这个角度说,解码器也是一种神经语言模型,只不过它会从另外一种语言(源语言)获得一些信息,而不是仅仅生成单语句子。具体来说,当生成第一个单词“I”时,解码器利用了源语言句子表示(红色方框)和目标语言的起始词“<sos>”。在生成第二个单词“am”时,解码器利用了上一个时间步的隐藏状态和已经生成的“I”的信息。这个过程会循环执行,直到生成完整的目标语言句子。
\parinterval 从这个例子可以看出,神经机器翻译的流程其实并不复杂:首先通过编码器神经网络将源语言句子编码成实数向量,然后解码器神经网络利用这个向量逐词生成译文。现在几乎所有的神经机器翻译系统都采用类似的架构。 \parinterval 从这个例子可以看出,神经机器翻译的流程其实并不复杂:首先通过编码器神经网络将源语言句子编码成实数向量,然后解码器神经网络利用这个向量逐词生成译文。现在几乎所有的神经机器翻译系统都采用类似的架构。
...@@ -542,16 +541,16 @@ $\funp{P}({y_j | \mathbi{s}_{j-1} ,y_{j-1},\mathbi{C}})$由Softmax实现,Softm ...@@ -542,16 +541,16 @@ $\funp{P}({y_j | \mathbi{s}_{j-1} ,y_{j-1},\mathbi{C}})$由Softmax实现,Softm
\hat{\mathbi{c}}_t & = & \textrm{Tanh} ([\mathbi{h}_{t-1},\mathbi{x}_{t}] \mathbi{W}_c + \mathbi{b}_c ) \label{eq:10-8} \hat{\mathbi{c}}_t & = & \textrm{Tanh} ([\mathbi{h}_{t-1},\mathbi{x}_{t}] \mathbi{W}_c + \mathbi{b}_c ) \label{eq:10-8}
\end{eqnarray} \end{eqnarray}
之后,用$\mathbi{i}_t$点乘$\hat{\mathbi{c}}_t$,得到当前需要记忆的信息,记为$\mathbi{i}_t \cdot \hat{\mathbi{c}}_t$。接下来需要更新旧的信息$\mathbi{c}_{t-1}$,得到新的记忆信息$\mathbi{c}_t$,更新的操作如图\ref{fig:10-11}(c)红色线部分所示,“$\bigoplus$”表示相加。具体规则是通过遗忘门选择忘记一部分上文信息$\mathbi{f}_t$,通过输入门计算新增的信息$\mathbi{i}_t \cdot \hat{\mathbi{c}}_t$,然后根据“$\bigotimes$”门与“$\bigoplus$”门进行相应的乘法和加法计算,如公式\eqref{eq:10-9} 之后,用$\mathbi{i}_t$点乘$\hat{\mathbi{c}}_t$,得到当前需要记忆的信息,记为$\mathbi{i}_t \odot \hat{\mathbi{c}}_t$。接下来需要更新旧的信息$\mathbi{c}_{t-1}$,得到新的记忆信息$\mathbi{c}_t$,更新的操作如图\ref{fig:10-11}(c)红色线部分所示,“$\bigoplus$”表示相加。具体规则是通过遗忘门选择忘记一部分上文信息$\mathbi{f}_t$,通过输入门计算新增的信息$\mathbi{i}_t \odot \hat{\mathbi{c}}_t$,然后根据“$\bigotimes$”门与“$\bigoplus$”门进行相应的乘法和加法计算,如公式\eqref{eq:10-9}
\begin{eqnarray} \begin{eqnarray}
\mathbi{c}_t &=& \mathbi{f}_t \cdot \mathbi{c}_{t-1} + \mathbi{i}_t \cdot \hat{\mathbi{c}_t} \mathbi{c}_t &=& \mathbi{f}_t \odot \mathbi{c}_{t-1} + \mathbi{i}_t \odot \hat{\mathbi{c}_t}
\label{eq:10-9} \label{eq:10-9}
\end{eqnarray} \end{eqnarray}
\vspace{-1.0em} \vspace{-1.0em}
\item {\small\bfnew{输出}}\index{输出}。该部分使用输出门计算最终的输出信息$\mathbi{h}_t$,其结构如图\ref{fig:10-11}(d)红色线部分所示。在输出门中,首先将$\mathbi{x}_t$$\mathbi{h}_{t-1}$通过$\sigma$函数变换得到$\mathbi{o}_t$,如公式\eqref{eq:10-10}。其次,将上一步得到的新记忆信息$\mathbi{c}_t$通过Tanh函数进行变换,得到值在[-1,1]范围的向量。最后将这两部分进行点乘,具体如公式\eqref{eq:10-11} \item {\small\bfnew{输出}}\index{输出}。该部分使用输出门计算最终的输出信息$\mathbi{h}_t$,其结构如图\ref{fig:10-11}(d)红色线部分所示。在输出门中,首先将$\mathbi{x}_t$$\mathbi{h}_{t-1}$通过$\sigma$函数变换得到$\mathbi{o}_t$,如公式\eqref{eq:10-10}。其次,将上一步得到的新记忆信息$\mathbi{c}_t$通过Tanh函数进行变换,得到值在[-1,1]范围的向量。最后将这两部分进行点乘,具体如公式\eqref{eq:10-11}
\begin{eqnarray} \begin{eqnarray}
\mathbi{o}_t & = & \sigma ([\mathbi{h}_{t-1},\mathbi{x}_{t}] \mathbi{W}_o + \mathbi{b}_o ) \label{eq:10-10} \\ \mathbi{o}_t & = & \sigma ([\mathbi{h}_{t-1},\mathbi{x}_{t}] \mathbi{W}_o + \mathbi{b}_o ) \label{eq:10-10} \\
\mathbi{h}_t & = & \mathbi{o}_t \cdot \textrm{Tanh} (\mathbi{c}_t) \label{eq:10-11} \mathbi{h}_t & = & \mathbi{o}_t \odot \textrm{Tanh} (\mathbi{c}_t) \label{eq:10-11}
\end{eqnarray} \end{eqnarray}
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
...@@ -593,15 +592,15 @@ $\funp{P}({y_j | \mathbi{s}_{j-1} ,y_{j-1},\mathbi{C}})$由Softmax实现,Softm ...@@ -593,15 +592,15 @@ $\funp{P}({y_j | \mathbi{s}_{j-1} ,y_{j-1},\mathbi{C}})$由Softmax实现,Softm
\mathbi{u}_t & = & \sigma ([\mathbi{h}_{t-1},\mathbi{x}_{t}] \mathbi{W}_u ) \label{eq:10-13} \mathbi{u}_t & = & \sigma ([\mathbi{h}_{t-1},\mathbi{x}_{t}] \mathbi{W}_u ) \label{eq:10-13}
\end{eqnarray} \end{eqnarray}
\parinterval 当完成了重置门和更新门计算后,就需要更新当前隐藏状态,如图\ref{fig:10-13}(c)所示。在计算得到了重置门的权重$\mathbi{r}_t$后,使用其对前一时刻的状态$\mathbi{h}_{t-1}$进行重置($\mathbi{r}_t \cdot \mathbi{h}_{t-1}$),将重置后的结果与$\mathbi{x}_t$拼接,通过Tanh激活函数将数据变换到[-1,1]范围内,具体计算为: \parinterval 当完成了重置门和更新门计算后,就需要更新当前隐藏状态,如图\ref{fig:10-13}(c)所示。在计算得到了重置门的权重$\mathbi{r}_t$后,使用其对前一时刻的状态$\mathbi{h}_{t-1}$进行重置($\mathbi{r}_t \odot \mathbi{h}_{t-1}$),将重置后的结果与$\mathbi{x}_t$拼接,通过Tanh激活函数将数据变换到[-1,1]范围内,具体计算为:
\begin{eqnarray} \begin{eqnarray}
\hat{\mathbi{h}}_t &=& \textrm{Tanh} ([\mathbi{r}_t \cdot \mathbi{h}_{t-1},\mathbi{x}_{t}] \mathbi{W}_h ) \hat{\mathbi{h}}_t &=& \textrm{Tanh} ([\mathbi{r}_t \odot \mathbi{h}_{t-1},\mathbi{x}_{t}] \mathbi{W}_h )
\label{eq:10-14} \label{eq:10-14}
\end{eqnarray} \end{eqnarray}
\parinterval $\hat{\mathbi{h}}_t$在包含了输入信息$\mathbi{x}_t$的同时,引入了$\mathbi{h}_{t-1}$的信息,可以理解为,记忆了当前时刻的状态。下一步是计算更新后的隐藏状态也就是更新记忆,如下: \parinterval $\hat{\mathbi{h}}_t$在包含了输入信息$\mathbi{x}_t$的同时,引入了$\mathbi{h}_{t-1}$的信息,可以理解为,记忆了当前时刻的状态。下一步是计算更新后的隐藏状态也就是更新记忆,如下:
\begin{eqnarray} \begin{eqnarray}
\mathbi{h}_t &=& \mathbi{h}_{t-1} \cdot (1-\mathbi{u}_t) + \hat{\mathbi{h}}_t \cdot \mathbi{u}_t \mathbi{h}_t &=& \mathbi{h}_{t-1} \odot (1-\mathbi{u}_t) + \hat{\mathbi{h}}_t \odot \mathbi{u}_t
\label{eq:10-15} \label{eq:10-15}
\end{eqnarray} \end{eqnarray}
......
...@@ -230,7 +230,7 @@ ...@@ -230,7 +230,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{基于卷积神经网络的翻译建模} \section{基于卷积神经网络的翻译建模}
\parinterval 正如之前所讲,卷积神经网络可以用于序列建模,同时具有并行性高和易于学习的特点,一个很自然的想法就是将其用作神经机器翻译模型中的特征提取器。因此,在神经机器翻译被提出之初,研究人员就已经开始利用卷积神经网络对句子进行特征提取。比较经典的模型是使用卷积神经网络作为源语言句子的编码器,使用循环神经网络作为目标语言译文生成的解码器\upcite{kalchbrenner-blunsom-2013-recurrent,Gehring2017ACE}。之后也有研究人员提出完全基于卷积神经网络的翻译模型(ConvS2S)\upcite{DBLP:journals/corr/GehringAGYD17},或者针对卷积层进行改进,提出效率更高、性能更好的模型\upcite{Kaiser2018DepthwiseSC,Wu2019PayLA}。本节将基于ConvS2S模型,阐述如何使用卷积神经网络搭建端到端神经机器翻译模型。 \parinterval 正如之前所讲,卷积神经网络可以用于序列建模,同时具有并行性高和易于学习的特点,一个很自然的想法就是将其用作神经机器翻译模型中的特征提取器。因此,在神经机器翻译被提出之初,研究人员就已经开始利用卷积神经网络对句子进行特征提取。比较经典的模型是使用卷积神经网络作为源语言句子的编码器,使用循环神经网络作为目标语言译文生成的解码器\upcite{kalchbrenner-blunsom-2013-recurrent,Gehring2017ACE}。之后也有研究人员提出完全基于卷积神经网络的翻译模型(ConvS2S)\upcite{DBLP:journals/corr/GehringAGYD17},或者针对卷积层进行改进,提出效率更高、性能更好的模型\upcite{Kaiser2018DepthwiseSC,Wu2019PayLA}。本节将基于ConvS2S模型,阐述如何使用卷积神经网络搭建端到端神经机器翻译模型。
...@@ -250,7 +250,7 @@ ...@@ -250,7 +250,7 @@
\parinterval\ref{fig:11-12}为ConvS2S模型的结构示意图,其内部由若干不同的模块组成,包括: \parinterval\ref{fig:11-12}为ConvS2S模型的结构示意图,其内部由若干不同的模块组成,包括:
\begin{itemize} \begin{itemize}
\item {\small\bfnew{位置编码}}\index{位置编码}(Position Embedding)\index{Position Embedding}:图中绿色背景框表示源语言端词嵌入部分。相比于基于循环神经网络的翻译模型中的词嵌入,该模型还引入了位置编码,帮助模型获得词位置信息。位置编码具体实现在图\ref{fig:11-12}中没有显示,详见\ref{sec:11.2.1}节。 \item {\small\bfnew{位置编码}}\index{位置编码}(Position Encoding)\index{Position Encoding}:图中绿色背景框表示源语言端词嵌入部分。相比于基于循环神经网络的翻译模型中的词嵌入,该模型还引入了位置编码,帮助模型获得词位置信息。位置编码具体实现在图\ref{fig:11-12}中没有显示,详见\ref{sec:11.2.1}节。
\item {\small\bfnew{卷积层}}{\small\bfnew{门控线性单元}}(Gated Linear Units, GLU\index{Gated Linear Units}):黄色背景框是卷积模块,这里使用门控线性单元作为非线性函数,之前的研究工作\upcite{Dauphin2017LanguageMW} 表明这种非线性函数更适合于序列建模任务。图中为了简化,只展示了一层卷积,但在实际中为了更好地捕获句子信息,通常使用多层卷积的叠加。 \item {\small\bfnew{卷积层}}{\small\bfnew{门控线性单元}}(Gated Linear Units, GLU\index{Gated Linear Units}):黄色背景框是卷积模块,这里使用门控线性单元作为非线性函数,之前的研究工作\upcite{Dauphin2017LanguageMW} 表明这种非线性函数更适合于序列建模任务。图中为了简化,只展示了一层卷积,但在实际中为了更好地捕获句子信息,通常使用多层卷积的叠加。
...@@ -448,7 +448,7 @@ ...@@ -448,7 +448,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{局部模型的改进} \section{局部模型的改进}
\parinterval 在序列建模中,卷积神经网络可以通过参数共享,高效地捕捉局部上下文特征,如图\ref{fig:11-11}所示。但是通过进一步分析可以发现,在标准卷积操作中包括了不同词和不同通道之间两种信息的交互,每个卷积核都是对相邻词的不同通道进行卷积操作,参数量为$K \times O$,其中,$K$为卷积核大小,$O$为输入的通道数,即单词表示的维度大小。如果使用$N$个卷积核,得到$N$个特征(即输出通道数),总共的参数量为$K \times O \times N$。 这里涉及卷积核大小、输入通道数和输出通道数三个维度,因此计算复杂度较高。为了进一步提升计算效率,降低参数量,一些研究人员提出{\small\bfnew{深度可分离卷积}}\index{深度可分离卷积}(Depthwise Separable Convolution)\index{Depthwise Separable Convolution},将空间维度和通道间的信息交互分离成{\small\bfnew{深度卷积}}(Depthwise Convolution,也叫逐通道卷积)\index{逐通道卷积}\index{Depthwise Convolution}{\small\bfnew{逐点卷积}} \index{逐点卷积}(Pointwise Convolution)\index{Pointwise Convolution} 两部分\upcite{Chollet2017XceptionDL,Howard2017MobileNetsEC}。 除了直接将深度可分离卷积应用到神经机器翻译中\upcite{Kaiser2018DepthwiseSC},研究人员提出使用更高效的{\small\bfnew{轻量卷积}}\index{轻量卷积}(Lightweight Convolution)\index{Lightweight Convolution}{\small\bfnew{动态卷积}}\index{动态卷积}(Dynamic Convolution)\index{Dynamic convolution}来进行不同词之间的特征提取\upcite{Wu2019PayLA}。本节将主要介绍这些改进的卷积操作。在后续章节中也会看到这些模型在神经机器翻译中的应用。 \parinterval 在序列建模中,卷积神经网络可以通过参数共享,高效地捕捉局部上下文特征,如图\ref{fig:11-11}所示。但是通过进一步分析可以发现,在标准卷积操作中包括了不同词和不同通道之间两种信息的交互,每个卷积核都是对相邻词的不同通道进行卷积操作,参数量为$K \times O$,其中,$K$为卷积核大小,$O$为输入的通道数,即单词表示的维度大小。如果使用$N$个卷积核,得到$N$个特征(即输出通道数),总共的参数量为$K \times O \times N$。 这里涉及卷积核大小、输入通道数和输出通道数三个维度,因此计算复杂度较高。为了进一步提升计算效率,降低参数量,一些研究人员提出{\small\bfnew{深度可分离卷积}}\index{深度可分离卷积}(Depthwise Separable Convolution)\index{Depthwise Separable Convolution},将空间维度和通道间的信息交互分离成{\small\bfnew{深度卷积}}(Depthwise Convolution,也叫逐通道卷积)\index{逐通道卷积}\index{Depthwise Convolution}{\small\bfnew{逐点卷积}} \index{逐点卷积}(Pointwise Convolution)\index{Pointwise Convolution} 两部分\upcite{Chollet2017XceptionDL,Howard2017MobileNetsEC}。 除了直接将深度可分离卷积应用到神经机器翻译中\upcite{Kaiser2018DepthwiseSC},研究人员提出使用更高效的{\small\bfnew{轻量卷积}}\index{轻量卷积}(Lightweight Convolution)\index{Lightweight Convolution}{\small\bfnew{动态卷积}}\index{动态卷积}(Dynamic Convolution)\index{Dynamic convolution}来进行不同词之间的特征提取\upcite{Wu2019PayLA}。本节将主要介绍这些改进的卷积操作。在后续章节中也会看到这些模型在神经机器翻译中的应用。
...@@ -572,7 +572,7 @@ ...@@ -572,7 +572,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{小结及拓展阅读} \section{小结及拓展阅读}
\parinterval 卷积是一种高效的神经网络结构,在图像、语音处理等领域取得了令人瞩目的成绩。本章介绍了卷积的概念及其特性,并对池化、填充等操作进行了讨论。本章介绍了具有高并行计算能力的机器翻译范式,即基于卷积神经网络的编码器-解码器框架。其在机器翻译任务上表现出色,并大幅度缩短了模型的训练周期。除了基础部分,本章还针对卷积计算进行了延伸,内容涉及逐通道卷积、逐点卷积、轻量卷积和动态卷积等。除了上述提及的内容,卷积神经网络及其变种在文本分类、命名实体识别、关系分类、事件抽取等其他自然语言处理任务上也有许多应用\upcite{Kim2014ConvolutionalNN,2011Natural,DBLP:conf/cncl/ZhouZXQBX17,DBLP:conf/acl/ChenXLZ015,DBLP:conf/coling/ZengLLZZ14} \parinterval 卷积是一种高效的神经网络结构,在图像、语音处理等领域取得了令人瞩目的成绩。本章介绍了卷积的概念及其特性,并对池化、填充等操作进行了讨论。本章介绍了具有高并行计算能力的机器翻译范式,即基于卷积神经网络的编码器-解码器框架。其在机器翻译任务上表现出色,并大幅度缩短了模型的训练周期。除了基础部分,本章还针对卷积计算进行了延伸,内容涉及逐通道卷积、逐点卷积、轻量卷积和动态卷积等。除了上述提及的内容,卷积神经网络及其变种在文本分类、命名实体识别、关系分类、事件抽取等其他自然语言处理任务上也有许多应用\upcite{Kim2014ConvolutionalNN,2011Natural,DBLP:conf/cncl/ZhouZXQBX17,DBLP:conf/acl/ChenXLZ015,DBLP:conf/coling/ZengLLZZ14}
......
...@@ -71,6 +71,7 @@ ...@@ -71,6 +71,7 @@
\node [rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res2)] (box2) {}; \node [rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res2)] (box2) {};
\node [rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res3)] (box3) {}; \node [rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res3)] (box3) {};
\node [rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res4)] (box4) {}; \node [rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res4)] (box4) {};
\node [rectangle,inner sep=0.2em,rounded corners=1pt,very thick,dotted,fill=red!40] [fit = (res5)] (box5) {};
\end{pgfonlayer} \end{pgfonlayer}
\end{scope} \end{scope}
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
\vspace{0.5em} \vspace{0.5em}
\label{sec:12.1} \label{sec:12.1}
\parinterval 首先回顾一下循环神经网络处理文字序列的过程。如图\ref{fig:12-1}所示,对于单词序列$\{ w_1,...,w_m \}$,处理第$m$个单词$w_m$时(绿色方框部分),需要输入前一时刻的信息(即处理单词$w_{m-1}$),而$w_{m-1}$又依赖于$w_{m-2}$,以此类推。也就是说,如果想建立$w_m$$w_1$之间的关系,需要$m-1$次信息传递。对于长序列来说,词汇之间信息传递距离过长会导致信息在传递过程中丢失,同时这种按顺序建模的方式也使得系统对序列的处理十分缓慢。 \parinterval 首先回顾一下循环神经网络处理文字序列的过程。如图\ref{fig:12-1}所示,对于单词序列$\{ w_1,...,w_m \}$,处理第$m$个单词$w_m$时(绿色方框部分),需要输入前一时刻的信息(即处理单词$w_{m-1}$),而$w_{m-1}$又依赖于$w_{m-2}$,以此类推。也就是说,如果想建立$w_m$$w_1$之间的关系,需要$m-1$次信息传递。对于长序列来说,单词之间信息传递距离过长会导致信息在传递过程中丢失,同时这种按顺序建模的方式也使得系统对序列的处理十分缓慢。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -81,7 +81,6 @@ ...@@ -81,7 +81,6 @@
\label{eq:12-2} \label{eq:12-2}
\end{eqnarray} \end{eqnarray}
\parinterval 同理,也可以用同样的方法处理这个句子中的其他单词。可以看出,在自注意力机制中,并不是使用类似于循环神经网络的记忆能力去访问历史信息。序列中所有单词之间的信息都是通过同一种操作($\mathrm{query}$$\mathrm{key}$的相关度)进行处理。这样,表示结果$\tilde{h} (\textrm{})$在包含“他”这个单词的信息的同时,也包含了序列中其他词的信息。也就是,序列中每一个位置的表示结果中,都包含了其他位置的信息。从这个角度说,$\tilde{h} (\textrm{})$已经不再是单词“他”自身的表示结果,而是一种在单词“他”的位置上的全局信息的表示。 \parinterval 同理,也可以用同样的方法处理这个句子中的其他单词。可以看出,在自注意力机制中,并不是使用类似于循环神经网络的记忆能力去访问历史信息。序列中所有单词之间的信息都是通过同一种操作($\mathrm{query}$$\mathrm{key}$的相关度)进行处理。这样,表示结果$\tilde{h} (\textrm{})$在包含“他”这个单词的信息的同时,也包含了序列中其他词的信息。也就是,序列中每一个位置的表示结果中,都包含了其他位置的信息。从这个角度说,$\tilde{h} (\textrm{})$已经不再是单词“他”自身的表示结果,而是一种在单词“他”的位置上的全局信息的表示。
\parinterval 通常,也把生成$\tilde{h}(w_i)$的过程看作特征提取,而实现这个过程的模型被称为特征提取器。循环神经网络、卷积神经网络和自注意力模型都是典型的特征提取器。特征提取是神经机器翻译系统的关键步骤,在随后的内容中可以看到自注意力模型是一个非常适合机器翻译任务的特征提取器。 \parinterval 通常,也把生成$\tilde{h}(w_i)$的过程看作特征提取,而实现这个过程的模型被称为特征提取器。循环神经网络、卷积神经网络和自注意力模型都是典型的特征提取器。特征提取是神经机器翻译系统的关键步骤,在随后的内容中可以看到自注意力模型是一个非常适合机器翻译任务的特征提取器。
...@@ -190,7 +189,7 @@ ...@@ -190,7 +189,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{位置编码} \section{位置编码}
\parinterval 在使用循环神经网络进行序列的信息提取时,每个时刻的运算都要依赖前一个时刻的输出,具有一定的时序性,这也与语言具有顺序的特点相契合。而采用自注意力机制对源语言和目标语言序列进行处理时,直接对当前位置和序列中的任意位置进行建模,忽略了词之间的顺序关系,例如图\ref{fig:12-6}中两个语义不同的句子,通过自注意力得到的表示$\tilde{h}$(机票)却是相同的。 \parinterval 在使用循环神经网络进行序列的信息提取时,每个时刻的运算都要依赖前一个时刻的输出,具有一定的时序性,这也与语言具有顺序的特点相契合。而采用自注意力机制对源语言和目标语言序列进行处理时,直接对当前位置和序列中的任意位置进行建模,忽略了词之间的顺序关系,例如图\ref{fig:12-6}中两个语义不同的句子,通过自注意力得到的表示$\tilde{h}$(机票)却是相同的。
...@@ -253,7 +252,7 @@ ...@@ -253,7 +252,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{基于点乘的多头注意力机制} \section{基于点乘的多头注意力机制}
\parinterval Transformer模型摒弃了循环单元和卷积等结构,完全基于注意力机制来构造模型,其中包含着大量的注意力计算。比如,可以通过自注意力机制对源语言和目标语言序列进行信息提取,并通过编码-解码注意力对双语句对之间的关系进行建模。图\ref{fig:12-9}中红色方框部分是Transformer中使用注意力机制的模块。而这些模块都是由基于点乘的多头注意力机制实现的。 \parinterval Transformer模型摒弃了循环单元和卷积等结构,完全基于注意力机制来构造模型,其中包含着大量的注意力计算。比如,可以通过自注意力机制对源语言和目标语言序列进行信息提取,并通过编码-解码注意力对双语句对之间的关系进行建模。图\ref{fig:12-9}中红色方框部分是Transformer中使用注意力机制的模块。而这些模块都是由基于点乘的多头注意力机制实现的。
...@@ -381,7 +380,7 @@ ...@@ -381,7 +380,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{残差网络和层标准化} \section{残差网络和层标准化}
\parinterval Transformer编码器、解码器分别由多层网络组成(通常为6层),每层网络又包含多个子层(自注意力网络、前馈神经网络)。因此Transformer实际上是一个很深的网络结构。再加上点乘注意力机制中包含很多线性和非线性变换;且注意力函数Attention($\cdot$)的计算也涉及多层网络,整个网络的信息传递非常复杂。从反向传播的角度来看,每次回传的梯度都会经过若干步骤,容易产生梯度爆炸或者消失。解决这个问题的一种办法就是使用残差连接\upcite{DBLP:journals/corr/HeZRS15},此部分内容已经在{\chapternine}进行了介绍,这里不再赘述。 \parinterval Transformer编码器、解码器分别由多层网络组成(通常为6层),每层网络又包含多个子层(自注意力网络、前馈神经网络)。因此Transformer实际上是一个很深的网络结构。再加上点乘注意力机制中包含很多线性和非线性变换;且注意力函数Attention($\cdot$)的计算也涉及多层网络,整个网络的信息传递非常复杂。从反向传播的角度来看,每次回传的梯度都会经过若干步骤,容易产生梯度爆炸或者消失。解决这个问题的一种办法就是使用残差连接\upcite{DBLP:journals/corr/HeZRS15},此部分内容已经在{\chapternine}进行了介绍,这里不再赘述。
...@@ -443,7 +442,7 @@ ...@@ -443,7 +442,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{前馈全连接网络子层} \section{前馈全连接网络子层}
\parinterval 在Transformer的结构中,每一个编码层或者解码层中都包含一个前馈神经网络,它在模型中的位置如图\ref{fig:12-16}中红色方框所示。 \parinterval 在Transformer的结构中,每一个编码层或者解码层中都包含一个前馈神经网络,它在模型中的位置如图\ref{fig:12-16}中红色方框所示。
...@@ -468,7 +467,7 @@ ...@@ -468,7 +467,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{训练} \section{训练}
\parinterval 与前面介绍的神经机器翻译模型的训练一样,Transformer的训练流程为:首先对模型进行初始化,然后在编码器中输入包含结束符的源语言单词序列。前面已经介绍过,解码器每个位置单词的预测都要依赖已经生成的序列。在解码器输入包含起始符号的目标语言序列,通过起始符号预测目标语言的第一个单词,用真实的目标语言的第一个单词去预测第二个单词,以此类推,然后用真实的目标语言序列和预测的结果比较,计算它的损失。Transformer使用了交叉熵损失函数,损失越小说明模型的预测越接近真实输出。然后利用反向传播来调整模型中的参数。由于Transformer 将任意时刻输入信息之间的距离拉近为1,摒弃了RNN中每一个时刻的计算都要基于前一时刻的计算这种具有时序性的训练方式,因此Transformer中训练的不同位置可以并行化训练,大大提高了训练效率。 \parinterval 与前面介绍的神经机器翻译模型的训练一样,Transformer的训练流程为:首先对模型进行初始化,然后在编码器中输入包含结束符的源语言单词序列。前面已经介绍过,解码器每个位置单词的预测都要依赖已经生成的序列。在解码器输入包含起始符号的目标语言序列,通过起始符号预测目标语言的第一个单词,用真实的目标语言的第一个单词去预测第二个单词,以此类推,然后用真实的目标语言序列和预测的结果比较,计算它的损失。Transformer使用了交叉熵损失函数,损失越小说明模型的预测越接近真实输出。然后利用反向传播来调整模型中的参数。由于Transformer 将任意时刻输入信息之间的距离拉近为1,摒弃了RNN中每一个时刻的计算都要基于前一时刻的计算这种具有时序性的训练方式,因此Transformer中训练的不同位置可以并行化训练,大大提高了训练效率。
...@@ -522,7 +521,7 @@ lrate &=& d_{\textrm{model}}^{-0.5} \cdot \textrm{min} (\textrm{step}^{-0.5} , \ ...@@ -522,7 +521,7 @@ lrate &=& d_{\textrm{model}}^{-0.5} \cdot \textrm{min} (\textrm{step}^{-0.5} , \
\end{figure} \end{figure}
%---------------------------------------------- %----------------------------------------------
\vspace{0.5em} \vspace{0.5em}
\item {\small\bfnew{Dropout}}\index{Dropout}\upcite{JMLR:v15:srivastava14a}:由于Transformer模型网络结构较为复杂,会导致过度拟合训练数据,从而对未见数据的预测结果变差。这种现象也被称作过拟合。为了避免这种现象,Transformer加入了Dropout操作。Transformer中这四个地方用到了Dropout:词嵌入和位置编码、残差连接、注意力操作和前馈神经网络。Dropout的比例通常设置为$0.1$ \item {\small\bfnew{丢弃法}}\index{丢弃法}(Dropout)\index{Dropout}\upcite{JMLR:v15:srivastava14a}:由于Transformer模型网络结构较为复杂,会导致过度拟合训练数据,从而对未见数据的预测结果变差。这种现象也被称作过拟合。为了避免这种现象,Transformer加入了Dropout操作。Transformer中这四个地方用到了Dropout:词嵌入和位置编码、残差连接、注意力操作和前馈神经网络。Dropout的比例通常设置为$0.1$
\vspace{0.5em} \vspace{0.5em}
\item {\small\bfnew{标签平滑}}\index{标签平滑}(Label Smoothing)\index{Label Smoothing}\upcite{Szegedy_2016_CVPR}:在计算损失的过程中,需要用预测概率去拟合真实概率。在分类任务中,往往使用One-hot向量代表真实概率,即真实答案所在位置那一维对应的概率为1,其余维为0,而拟合这种概率分布会造成两个问题:1)无法保证模型的泛化能力,容易造成过拟合;2) 1和0概率鼓励所属类别和其他类别之间的差距尽可能加大,会造成模型过于相信预测的类别。因此Transformer里引入标签平滑来缓解这种现象,简单的说就是给正确答案以外的类别分配一定的概率,而不是采用非0即1的概率。这样,可以学习一个比较平滑的概率分布,从而提升模型的泛化能力。 \item {\small\bfnew{标签平滑}}\index{标签平滑}(Label Smoothing)\index{Label Smoothing}\upcite{Szegedy_2016_CVPR}:在计算损失的过程中,需要用预测概率去拟合真实概率。在分类任务中,往往使用One-hot向量代表真实概率,即真实答案所在位置那一维对应的概率为1,其余维为0,而拟合这种概率分布会造成两个问题:1)无法保证模型的泛化能力,容易造成过拟合;2) 1和0概率鼓励所属类别和其他类别之间的差距尽可能加大,会造成模型过于相信预测的类别。因此Transformer里引入标签平滑来缓解这种现象,简单的说就是给正确答案以外的类别分配一定的概率,而不是采用非0即1的概率。这样,可以学习一个比较平滑的概率分布,从而提升模型的泛化能力。
\vspace{0.5em} \vspace{0.5em}
...@@ -560,7 +559,7 @@ Transformer Deep(48层) & 30.2 & 43.1 & 194$\times 10^ ...@@ -560,7 +559,7 @@ Transformer Deep(48层) & 30.2 & 43.1 & 194$\times 10^
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{推断} \section{推断}
\parinterval Transformer解码器生成译文词序列的过程和其它神经机器翻译系统类似,都是从左往右生成,且下一个单词的预测依赖已经生成的单词。其具体推断过程如图\ref{fig:12-19}所示,其中$\mathbi{C}_i$是编码-解码注意力的结果,解码器首先根据“<sos>”和$\mathbi{C}_1$生成第一个单词“how”,然后根据“how”和$\mathbi{C}_2$生成第二个单词“are”,以此类推,当解码器生成“<eos>”时结束推断。 \parinterval Transformer解码器生成译文词序列的过程和其它神经机器翻译系统类似,都是从左往右生成,且下一个单词的预测依赖已经生成的单词。其具体推断过程如图\ref{fig:12-19}所示,其中$\mathbi{C}_i$是编码-解码注意力的结果,解码器首先根据“<sos>”和$\mathbi{C}_1$生成第一个单词“how”,然后根据“how”和$\mathbi{C}_2$生成第二个单词“are”,以此类推,当解码器生成“<eos>”时结束推断。
...@@ -581,6 +580,7 @@ Transformer Deep(48层) & 30.2 & 43.1 & 194$\times 10^ ...@@ -581,6 +580,7 @@ Transformer Deep(48层) & 30.2 & 43.1 & 194$\times 10^
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION 12.3 % NEW SECTION 12.3
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{小结及拓展阅读} \section{小结及拓展阅读}
\parinterval 编码器­-解码器框架提供了一个非常灵活的机制,因为开发者只需要设计编码器和解码器的结构就能完成机器翻译。但是,架构的设计是深度学习中最具挑战的工 \parinterval 编码器­-解码器框架提供了一个非常灵活的机制,因为开发者只需要设计编码器和解码器的结构就能完成机器翻译。但是,架构的设计是深度学习中最具挑战的工
......
...@@ -205,7 +205,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4} ...@@ -205,7 +205,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\subsection{搜索终止条件} \subsection{搜索终止条件}
\parinterval 在机器翻译推断中,何时终止搜索是一个非常基础的问题。如{\chaptertwo}所述,系统研发者一方面希望尽可能遍历更大的搜索空间,找到更好的结果,另一方面也希望在尽可能短的时间内得到结果。这时搜索的终止条件就是一个非常关键的指标。在束搜索中有很多终止条件可以使用,比如,在生成一定数量的译文之后就终止搜索,或者当最佳译文与排名第二的译文之间的分差距超过一个阈值时就终止搜索等。 \parinterval 在机器翻译推断中,何时终止搜索是一个非常基础的问题。如{\chaptertwo}所述,系统研发者一方面希望尽可能遍历更大的搜索空间,找到更好的结果,另一方面也希望在尽可能短的时间内得到结果。这时搜索的终止条件就是一个非常关键的指标。在束搜索中有很多终止条件可以使用,比如,在生成一定数量的译文之后就终止搜索,或者当最佳译文与排名第二的译文之间的分差距超过一个阈值时就终止搜索等。
\parinterval 在统计机器翻译中,搜索的终止条件相对容易设计。因为所有的翻译结果都可以用相同步骤的搜索过程生成,比如,在CYK推断中搜索的步骤仅与构建的分析表大小有关。在神经机器翻译中,这个问题要更加复杂。当系统找到一个完整的译文之后,可能还有很多译文没有被生成完,这时就面临着一个问题\ \dash \ 如何决定是否继续搜索。 \parinterval 在统计机器翻译中,搜索的终止条件相对容易设计。因为所有的翻译结果都可以用相同步骤的搜索过程生成,比如,在CYK推断中搜索的步骤仅与构建的分析表大小有关。在神经机器翻译中,这个问题要更加复杂。当系统找到一个完整的译文之后,可能还有很多译文没有被生成完,这时就面临着一个问题\ \dash \ 如何决定是否继续搜索。
...@@ -708,7 +708,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4} ...@@ -708,7 +708,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\vspace{0.5em} \vspace{0.5em}
\item 目前的翻译模型使用交叉熵损失作为优化函数,这在自回归翻译模型上取得了非常优秀的性能。交叉熵是一个严格的损失函数,每个预测错误的单词所对应的位置都会受到惩罚,即使是编辑距离很小的输出序列\upcite{Ghazvininejad2020AlignedCE}。自回归翻译模型会很大程度上避免这种惩罚,因为当前位置的单词是根据先前生成的词得到的,然而非自回归翻译模型无法获得这种信息。如果在预测时漏掉一个单词,就可能会将正确的单词放在错误的位置上。为此,一些研究工作通过改进损失函数来提高非自回归翻译模型的性能。一种做法使用一种新的交叉熵函数\upcite{Ghazvininejad2020AlignedCE},它通过忽略绝对位置、关注相对顺序和词汇匹配来为非自回归翻译模型提供更精确的训练信号。另外,也可以使用基于$n$-gram的训练目标\upcite{Shao2020MinimizingTB}来最小化模型与参考译文之间的$n$-gram差异。该训练目标在$n$-gram 的层面上评估预测结果,因此能够建模目标序列单词之间的依赖关系。 \item 目前的翻译模型使用交叉熵损失作为优化函数,这在自回归翻译模型上取得了非常优秀的性能。交叉熵是一个严格的损失函数,每个预测错误的单词所对应的位置都会受到惩罚,即使是编辑距离很小的输出序列\upcite{Ghazvininejad2020AlignedCE}。自回归翻译模型会很大程度上避免这种惩罚,因为当前位置的单词是根据先前生成的词得到的,然而非自回归翻译模型无法获得这种信息。如果在预测时漏掉一个单词,就可能会将正确的单词放在错误的位置上。为此,一些研究工作通过改进损失函数来提高非自回归翻译模型的性能。一种做法使用一种新的交叉熵函数\upcite{Ghazvininejad2020AlignedCE},它通过忽略绝对位置、关注相对顺序和词汇匹配来为非自回归翻译模型提供更精确的训练信号。另外,也可以使用基于$n$-gram的训练目标\upcite{Shao2020MinimizingTB}来最小化模型与参考译文之间的$n$-gram差异。该训练目标在$n$-gram 的层面上评估预测结果,因此能够建模目标序列单词之间的依赖关系。
\vspace{0.5em} \vspace{0.5em}
\item 自回归翻译模型解码时,当前位置单词的生成依赖于先前生成的单词,已生成的单词提供了较强的目标端上下文信息。与自回归翻译模型相比,非自回归翻译模型的解码器需要在信息更少的情况下执行翻译任务。一些研究工作通过将条件随机场引入非自回归翻译模型中来对序列依赖进行建模\upcite{Ma2019FlowSeqNC}。也有工作引入了词嵌入转换矩阵来将源语言端的词嵌入转换为目标语言端的词嵌入来为解码器提供更好的输入\upcite{Guo2019NonAutoregressiveNM}。此外,研究人员也提出了轻量级的调序模块来显式地建模调序信息,以指导非自回归翻译模型的推断\upcite{Ran2019GuidingNN} \item 自回归翻译模型解码时,当前位置单词的生成依赖于先前生成的单词,已生成的单词提供了较强的目标端上下文信息。与自回归翻译模型相比,非自回归翻译模型的解码器需要在信息更少的情况下执行翻译任务。一些研究工作通过将条件随机场引入非自回归翻译模型中来对序列依赖进行建模\upcite{Ma2019FlowSeqNC}。也有工作引入了词嵌入转换矩阵来将源语言端的词嵌入转换为目标语言端的词嵌入来为解码器提供更好的输入\upcite{Guo2019NonAutoregressiveNM}。此外,研究人员也提出了轻量级的调序模块来显式地建模调序信息,以指导非自回归翻译模型的推断\upcite{Ran2019GuidingNN}大多数非自回归模型都可以被看作是一种基于隐含变量的模型,因为目标语言单词的并行生成是基于源语言编码器生成的一个(一些)隐含变量。因此,也有很多方法来生成隐含变量,例如,利用自编码生成一个较短的离散化序列,将其作为隐含变量,之后在这个较短的变量上并行生成目标语言序列\upcite{Kaiser2018FastDI}。类似的思想也可以用于局部块内的单词并行生成\upcite{DBLP:conf/nips/SternSU18}
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
......
...@@ -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
...@@ -887,7 +887,7 @@ ...@@ -887,7 +887,7 @@
\item 预训练模型也是自然语言处理的重要突破之一,也给低资源机器翻译提供了新的思路。除了基于语言模型或掩码语言模型的方法,也有很多新的架构和模型被提出,如排列语言模型、降噪自编码器等\upcite{DBLP:conf/nips/YangDYCSL19,DBLP:conf/acl/LewisLGGMLSZ20,DBLP:conf/iclr/LanCGGSS20,DBLP:conf/acl/ZhangHLJSL19}。预训练技术也逐渐向多语言领域扩展\upcite{DBLP:conf/nips/ConneauL19,DBLP:conf/emnlp/HuangLDGSJZ19,song2019mass},甚至不再只局限于文本任务\upcite{DBLP:conf/iccv/SunMV0S19,DBLP:conf/nips/LuBPL19,DBLP:conf/interspeech/ChuangLLL20}。对于如何将预训练模型高效地应用到下游任务中,也进行了很多的经验性对比与分析\upcite{Peters2018DeepCW,DBLP:conf/rep4nlp/PetersRS19,DBLP:conf/cncl/SunQXH19} \item 预训练模型也是自然语言处理的重要突破之一,也给低资源机器翻译提供了新的思路。除了基于语言模型或掩码语言模型的方法,也有很多新的架构和模型被提出,如排列语言模型、降噪自编码器等\upcite{DBLP:conf/nips/YangDYCSL19,DBLP:conf/acl/LewisLGGMLSZ20,DBLP:conf/iclr/LanCGGSS20,DBLP:conf/acl/ZhangHLJSL19}。预训练技术也逐渐向多语言领域扩展\upcite{DBLP:conf/nips/ConneauL19,DBLP:conf/emnlp/HuangLDGSJZ19,song2019mass},甚至不再只局限于文本任务\upcite{DBLP:conf/iccv/SunMV0S19,DBLP:conf/nips/LuBPL19,DBLP:conf/interspeech/ChuangLLL20}。对于如何将预训练模型高效地应用到下游任务中,也进行了很多的经验性对比与分析\upcite{Peters2018DeepCW,DBLP:conf/rep4nlp/PetersRS19,DBLP:conf/cncl/SunQXH19}
\vspace{0.5em} \vspace{0.5em}
\item 多任务学习是多语言翻译的一种典型方法。通过共享编码器模块或是注意力模块来进行一对多\upcite{DBLP:conf/acl/DongWHYW15}或多对一\upcite{DBLP:journals/tacl/LeeCH17}或多对多\upcite{DBLP:conf/naacl/FiratCB16} 的学习,然而这些方法需要为每个翻译语言对设计单独的编码器和解码器,限制了其扩展性。为了解决以上问题,研究人员进一步探索了用于多语言翻译的单个机器翻译模型的方法,也就是本章提到的多语言单模型系统\upcite{DBLP:journals/corr/HaNW16,DBLP:journals/tacl/JohnsonSLKWCTVW17}。为了弥补多语言单模型系统中缺乏语言表示多样性的问题,可以重新组织多语言共享模块,设计特定任务相关模块\upcite{DBLP:conf/coling/BlackwoodBW18,DBLP:conf/wmt/SachanN18,DBLP:conf/wmt/LuKLBZS18,DBLP:conf/acl/WangZZZXZ19};也可以将多语言单词编码和语言聚类分离,用一种多语言词典编码框架共享词汇级别的信息,有助于语言间的泛化\upcite{DBLP:conf/iclr/WangPAN19};还可以将语言聚类为不同的组,并为每个聚类单独训练一个多语言模型\upcite{DBLP:conf/emnlp/TanCHXQL19} \item 多任务学习是多语言翻译的一种典型方法。通过共享编码器模块或是注意力模块来进行一对多\upcite{DBLP:conf/acl/DongWHYW15}或多对一\upcite{DBLP:journals/tacl/LeeCH17}或多对多\upcite{DBLP:conf/naacl/FiratCB16} 的学习,然而这些方法需要为每个翻译语言对设计单独的编码器和解码器,限制了其扩展性。为了解决以上问题,研究人员进一步探索了用于多语言翻译的单个机器翻译模型的方法,也就是本章提到的多语言单模型系统\upcite{DBLP:journals/corr/HaNW16,DBLP:journals/tacl/JohnsonSLKWCTVW17}。为了弥补多语言单模型系统中缺乏语言表示多样性的问题,可以重新组织多语言共享模块,设计特定任务相关模块\upcite{DBLP:conf/coling/BlackwoodBW18,DBLP:conf/wmt/SachanN18,DBLP:conf/wmt/LuKLBZS18,DBLP:conf/acl/WangZZZXZ19};也可以将多语言单词编码和语言聚类分离,用一种多语言词典编码框架共享单词级别的信息,有助于语言间的泛化\upcite{DBLP:conf/iclr/WangPAN19};还可以将语言聚类为不同的组,并为每个聚类单独训练一个多语言模型\upcite{DBLP:conf/emnlp/TanCHXQL19}
\vspace{0.5em} \vspace{0.5em}
\item 零资源翻译也是近几年受到广泛关注的研究方向\upcite{firat2016zero,DBLP:journals/corr/abs-1805-10338}。在零资源翻译中,仅使用少量并行语料库(覆盖$k$个语言),一个模型就能在任何$k(k-1)$ 个语言对之间进行翻译\upcite{DBLP:conf/naacl/Al-ShedivatP19}。 但是,零资源翻译的性能通常很不稳定并且明显落后于有监督的翻译方法。为了改善零资源翻译,可以开发新的跨语言正则化方法,例如对齐正则化方法\upcite{DBLP:journals/corr/abs-1903-07091},一致性正则化方法\upcite{DBLP:conf/naacl/Al-ShedivatP19};也可以通过反向翻译或基于枢轴语言的翻译生成伪数据\upcite{DBLP:conf/acl/GuWCL19,firat2016zero,DBLP:conf/emnlp/CurreyH19} \item 零资源翻译也是近几年受到广泛关注的研究方向\upcite{firat2016zero,DBLP:journals/corr/abs-1805-10338}。在零资源翻译中,仅使用少量并行语料库(覆盖$k$个语言),一个模型就能在任何$k(k-1)$ 个语言对之间进行翻译\upcite{DBLP:conf/naacl/Al-ShedivatP19}。 但是,零资源翻译的性能通常很不稳定并且明显落后于有监督的翻译方法。为了改善零资源翻译,可以开发新的跨语言正则化方法,例如对齐正则化方法\upcite{DBLP:journals/corr/abs-1903-07091},一致性正则化方法\upcite{DBLP:conf/naacl/Al-ShedivatP19};也可以通过反向翻译或基于枢轴语言的翻译生成伪数据\upcite{DBLP:conf/acl/GuWCL19,firat2016zero,DBLP:conf/emnlp/CurreyH19}
......
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
\parinterval 经过上面的描述可以看出,音频的表示实际上是一个非常长的采样点序列,这导致了直接使用现有的深度学习技术处理音频序列较为困难。并且,原始的音频信号中可能包含着较多的噪声、环境声或冗余信息,也会对模型产生干扰。因此,一般会对音频序列进行处理来提取声学特征,具体为将长序列的采样点序列转换为短序列的特征向量序列,再用于下游系统。虽然已有一些工作不依赖特征提取,直接在原始的采样点序列上进行声学建模和模型训练\upcite{DBLP:conf/interspeech/SainathWSWV15},但目前的主流方法仍然是基于声学特征进行建模\upcite{DBLP:conf/icassp/MohamedHP12} \parinterval 经过上面的描述可以看出,音频的表示实际上是一个非常长的采样点序列,这导致了直接使用现有的深度学习技术处理音频序列较为困难。并且,原始的音频信号中可能包含着较多的噪声、环境声或冗余信息,也会对模型产生干扰。因此,一般会对音频序列进行处理来提取声学特征,具体为将长序列的采样点序列转换为短序列的特征向量序列,再用于下游系统。虽然已有一些工作不依赖特征提取,直接在原始的采样点序列上进行声学建模和模型训练\upcite{DBLP:conf/interspeech/SainathWSWV15},但目前的主流方法仍然是基于声学特征进行建模\upcite{DBLP:conf/icassp/MohamedHP12}
\parinterval 声学特征提取的第一步是预处理。其流程主要是对音频进行{\small\bfnew{预加重}}(Pre-emphasis)\index{预加重}\index{Pre-emphasis}{\small\bfnew{分帧}}\index{分帧}(Framing)\index{Framing}{\small\bfnew{加窗}}\index{加窗}(Windowing)\index{Windowing}。预加重是通过增强音频信号中的高频部分来减弱语音中对高频信号的抑制,使频谱更加顺滑。分帧(原理如图\ref{fig:17-3}所示)是基于短时平稳假设,即根据生物学特征,语音信号是一个缓慢变化的过程,10ms$\thicksim$30ms的信号片段是相对平稳的。基于这个假设,一般将每25ms作为一帧来提取特征,这个时间称为{\small\bfnew{帧长}}\index{帧长}(Frame Length)\index{Frame Length}。同时,为了保证不同帧之间的信号平滑性,使每两个相邻帧之间存在一定的重合部分。一般每隔10ms取一帧,这个时长称为{\small\bfnew{帧移}}\index{帧移}(Frame Shift)\index{Frame Shift}。为了缓解分帧带来的频谱泄漏问题,需要对每帧的信号进行加窗处理使其幅度在两端渐变到0,一般采用的是{\small\bfnew{汉明窗}}\index{汉明窗}(Hamming\index{Hamming}\upcite{洪青阳2020语音识别原理与应用} \parinterval 声学特征提取的第一步是预处理。其流程主要是对音频进行{\small\bfnew{预加重}}(Pre-emphasis)\index{预加重}\index{Pre-emphasis}{\small\bfnew{分帧}}\index{分帧}(Framing)\index{Framing}{\small\bfnew{加窗}}\index{加窗}(Windowing)\index{Windowing}。预加重是通过增强音频信号中的高频部分来减弱语音中对高频信号的抑制,使频谱更加顺滑。分帧(原理如图\ref{fig:17-3}所示)是基于短时平稳假设,即根据生物学特征,语音信号是一个缓慢变化的过程,10ms$\thicksim$30ms的信号片段是相对平稳的。基于这个假设,一般将每25ms作为一帧来提取特征,这个时间称为{\small\bfnew{帧长}}\index{帧长}(Frame Length)\index{Frame Length}。同时,为了保证不同帧之间的信号平滑性,使每两个相邻帧之间存在一定的重合部分。一般每隔10ms取一帧,这个时长称为{\small\bfnew{帧移}}\index{帧移}(Frame Shift)\index{Frame Shift}。为了缓解分帧带来的频谱泄漏问题,需要对每帧的信号进行加窗处理使其幅度在两端渐变到0,一般采用的是{\small\bfnew{汉明窗}}\index{汉明窗}(Hamming Window)\index{Hamming Window}\upcite{洪青阳2020语音识别原理与应用}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
...@@ -310,7 +310,7 @@ ...@@ -310,7 +310,7 @@
\centerline{中午/没/吃饭/,/又/刚/打/了/ 一/下午/篮球/,/我/现在/很/饿/ ,/我/想\underline{\quad \quad}} \centerline{中午/没/吃饭/,/又/刚/打/了/ 一/下午/篮球/,/我/现在/很/饿/ ,/我/想\underline{\quad \quad}}
\vspace{0.8em} \vspace{0.8em}
\parinterval 想在横线处填写“吃饭”,“吃东西”的原因是在读句子的过程中,关注到了“没/吃饭”,“很/饿”等关键息。这是在语言生成中注意力机制所解决的问题,即对于要生成的目标语言单词,相关性更高的语言片段应该更加“重要”,而不是将所有单词一视同仁。同样的,注意力机制也应用在多模态机器翻译中,即在生成目标单词时,更应该关注与目标单词相关的图像部分,而弱化对其他部分的关注。另外,注意力机制的引入,也使图像信息更加直接地参与目标语言的生成,解决了在不使用注意力机制的方法中图像信息传递损失的问题。 \parinterval 想在横线处填写“吃饭”,“吃东西”的原因是在读句子的过程中,关注到了“没/吃饭”,“很/饿”等关键息。这是在语言生成中注意力机制所解决的问题,即对于要生成的目标语言单词,相关性更高的语言片段应该更加“重要”,而不是将所有单词一视同仁。同样的,注意力机制也应用在多模态机器翻译中,即在生成目标单词时,更应该关注与目标单词相关的图像部分,而弱化对其他部分的关注。另外,注意力机制的引入,也使图像信息更加直接地参与目标语言的生成,解决了在不使用注意力机制的方法中图像信息传递损失的问题。
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
......
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{增量式模型优化} \section{增量式模型优化}
\parinterval 机器翻译的训练数据不是一成不变的。系统研发人员可以使用自有数据训练得到基础的翻译模型(或初始模型)。当应用这个基础模型时,可能会有新的数据出现,例如: \parinterval 机器翻译的训练数据不是一成不变的。系统研发人员可以使用自有数据训练得到基础的翻译模型(或初始模型)。当应用这个基础模型时,可能会有新的数据出现,例如:
...@@ -103,14 +103,14 @@ ...@@ -103,14 +103,14 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{交互式机器翻译} \section{交互式机器翻译}
\parinterval 机器翻译的结果会存在错误,因此很多时候需要人工的修改才能被使用。例如,在{\small\bfnew 译后编辑}\index{译后编辑}(Post-editing)\index{Post-editing}中,翻译人员对机器翻译的译文进行修改,最终使译文达到要求。不过,译后编辑的成本很高,因为它需要翻译人员阅读机器翻译的结果,同时做出修改的动作。有时候,由于译文修改的内容较为复杂,译后编辑的时间甚至比人工直接翻译源语言句子的时间都长。因此在机器翻译应用中,需要更高效的方式调整机器翻译的结果,使其达到可用的程度。比如,可以使用质量评估方法(见{\chapterfour}),选择模型置信度较高的译文进行译后编辑,对置信度低的译文直接进行人工翻译。而另一种思路是,让人的行为直接影响机器翻译生成译文的过程,让人和机器翻译系统进行交互,在不断的修正中生成更好的译文。这种方法也被称作{\small\bfnew 交互式机器翻译}\index{交互式机器翻译}(Interactive Machine Translation,IMT)\index{Interactive Machine Translation} \parinterval 机器翻译的结果会存在错误,因此很多时候需要人工的修改才能被使用。例如,在{\small\bfnew 译后编辑}\index{译后编辑}(Post-editing)\index{Post-editing}中,翻译人员对机器翻译的译文进行修改,最终使译文达到要求。不过,译后编辑的成本很高,因为它需要翻译人员阅读机器翻译的结果,同时做出修改的动作。有时候,由于译文修改的内容较为复杂,译后编辑的时间甚至比人工直接翻译源语言句子的时间都长。因此在机器翻译应用中,需要更高效的方式调整机器翻译的结果,使其达到可用的程度。比如,可以使用质量评估方法(见{\chapterfour}),选择模型置信度较高的译文进行译后编辑,对置信度低的译文直接进行人工翻译。而另一种思路是,让人的行为直接影响机器翻译生成译文的过程,让人和机器翻译系统进行交互,在不断的修正中生成更好的译文。这种方法也被称作{\small\bfnew 交互式机器翻译}\index{交互式机器翻译}(Interactive Machine Translation,IMT)\index{Interactive Machine Translation}
\parinterval 交互式机器翻译的大致流程如下:机器翻译系统根据用户输入的源语言句子预测出可能的译文交给用户,然后用户在现有翻译的基础上进行接受、修改或者删除等操作,然后翻译系统根据用户的反馈信息再次生成比前一次更好的翻译并提交给用户。以此循环,直到得到最终的译文。 \parinterval 交互式机器翻译的大致流程如下:机器翻译系统根据用户输入的源语言句子预测出可能的译文交给用户,然后用户在现有翻译的基础上进行接受、修改或者删除等操作,然后翻译系统根据用户的反馈信息再次生成比前一次更好的翻译并提交给用户。以此循环,直到得到最终的译文。
\parinterval\ref{fig:18-2}给出了一个使用TranSmart系统进行交互式机器翻译的例子,在这里要将一个汉语句子“疼痛/也/可能/会在/夜间/使/你/醒来。”翻译成英语“Pain may also wake you up during the night .”。在开始交互之前,系统首先推荐一个可能的译文“Pain may also wake you up at night .”。在第一次交互中,用户将单词at替换成during,然后系统根据用户修改后的译文立即给出新的译文候选,提供给用户选择。循环往复,直到用户接受了系统当前推荐的译文。 \parinterval\ref{fig:18-2}给出了一个使用TranSmart系统进行交互式机器翻译的例子,在这里要将一个汉语句子“疼痛/也/可能/会/在/夜间/使/你/醒来。”翻译成英语“Pain may also wake you up during the night .”。在开始交互之前,系统首先推荐一个可能的译文“Pain may also wake you up at night .”。在第一次交互中,用户将单词at替换成during,然后系统根据用户修改后的译文立即给出新的译文候选,提供给用户选择。循环往复,直到用户接受了系统当前推荐的译文。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -125,10 +125,10 @@ ...@@ -125,10 +125,10 @@
\parinterval 交互式机器翻译系统主要通过用户的反馈来提升译文的质量,不同类型的反馈信息则影响着系统最终的性能。根据反馈形式的不同,可以将交互式机器翻译分为以下几种: \parinterval 交互式机器翻译系统主要通过用户的反馈来提升译文的质量,不同类型的反馈信息则影响着系统最终的性能。根据反馈形式的不同,可以将交互式机器翻译分为以下几种:
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item 基于前缀的交互式机器翻译。早期的交互式机器翻译系统都是采用基于前缀的方式。翻译人员使用翻译系统生成的初始译文,从左到右检查翻译的正确性,并在第一个错误的位置进行更正。这为系统提供了一种双重信号:表明该位置上的单词必须是翻译人员修改过后的单词,并且该位置之前的单词都是正确的。之后系统根据已经检查过的前缀再生成后面的译文\upcite{DBLP:conf/acl/WuebkerGDHL16,Zens2003EfficientSF,DBLP:journals/coling/BarrachinaBCCCKLNTVV09,DBLP:journals/csl/PerisC19} \item 基于前缀的交互式机器翻译。早期的交互式机器翻译系统都是采用基于前缀的方式。翻译人员使用翻译系统生成的初始译文,从左到右检查翻译的正确性,并在第一个错误的位置进行更正。这为系统提供了一种双重信号:表明该位置上的单词必须是翻译人员修改过后的单词,并且该位置之前的单词(即前缀)都是正确的。之后系统根据已经检查过的前缀再生成后面的译文\upcite{DBLP:conf/acl/WuebkerGDHL16,Zens2003EfficientSF,DBLP:journals/coling/BarrachinaBCCCKLNTVV09,DBLP:journals/csl/PerisC19}
\vspace{0.5em} \vspace{0.5em}
\item 基于片段的交互式机器翻译。根据用户提供的反馈来生成更好的翻译结果是交互式翻译系统的关键。而基于前缀的系统则存在一个严重的缺陷,当翻译系统获得确定的翻译前缀之后,再重新生成译文时会将原本正确的翻译后缀遗漏了,因此会引入新的错误。在基于片段的交互式机器翻译系统中,翻译人员除了纠正第一个错误的单词,还可以指定在未来迭代中保留的单词序列。之后系统根据这些反馈信号再生成新的译文\upcite{Peris2017InteractiveNM,DBLP:journals/mt/DomingoPC17} \item 基于片段的交互式机器翻译。根据用户提供的反馈来生成更好的翻译结果是交互式翻译系统的关键。而基于前缀的系统则存在一个严重的缺陷,当翻译系统获得确定的翻译前缀之后,再重新生成译文时会将原本正确的翻译后缀(即该位置之后的单词)遗漏了,因此会引入新的错误。在基于片段的交互式机器翻译系统中,翻译人员除了纠正第一个错误的单词,还可以指定在未来迭代中保留的单词序列。之后系统根据这些反馈信号再生成新的译文\upcite{Peris2017InteractiveNM,DBLP:journals/mt/DomingoPC17}
\vspace{0.5em} \vspace{0.5em}
\item 基于评分的交互式机器翻译。随着计算机算力的提升,有时会出现“机器等人”的现象,因此如何提升人参与交互的效率也是需要考虑的问题。与之前的系统不同,基于评分的交互式机器翻译系统不需要翻译人员选择、纠正或删除某个片段,而是使用翻译人员对译文的评分来强化机器翻译的学习过程\upcite{DBLP:journals/corr/abs-1805-01553,DBLP:conf/emnlp/NguyenDB17} \item 基于评分的交互式机器翻译。随着计算机算力的提升,有时会出现“机器等人”的现象,因此如何提升人参与交互的效率也是需要考虑的问题。与之前的系统不同,基于评分的交互式机器翻译系统不需要翻译人员选择、纠正或删除某个片段,而是使用翻译人员对译文的评分来强化机器翻译的学习过程\upcite{DBLP:journals/corr/abs-1805-01553,DBLP:conf/emnlp/NguyenDB17}
...@@ -142,7 +142,7 @@ ...@@ -142,7 +142,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{翻译结果的可干预性} \section{翻译结果的可干预性}
\parinterval 交互式机器翻译体现了一种用户的行为“干预”机器翻译结果的思想。实际上,在机器翻译出现错误时,人们总是希望用一种直接有效的方式“改变”译文,最短时间内达到改善翻译质量的目的。比如,如果机器翻译系统可以输出多个候选译文,用户可以在其中挑选最好的译文进行输出。也就是,人为干预了译文候选的排序过程。另一个例子是{\small\bfnew{翻译记忆}}\index{翻译记忆}(Translation Memory,TM\index{Translation Memory})。翻译记忆记录了高质量的源语言-目标语言句对,有时也可以被看作是一种先验知识或“记忆”。因此,当进行机器翻译时,使用翻译记忆指导翻译过程也可以被看作是一种干预手段\upcite{DBLP:conf/acl/WangZS13,DBLP:conf/aaai/XiaHLS19} \parinterval 交互式机器翻译体现了一种用户的行为“干预”机器翻译结果的思想。实际上,在机器翻译出现错误时,人们总是希望用一种直接有效的方式“改变”译文,最短时间内达到改善翻译质量的目的。比如,如果机器翻译系统可以输出多个候选译文,用户可以在其中挑选最好的译文进行输出。也就是,人为干预了译文候选的排序过程。另一个例子是{\small\bfnew{翻译记忆}}\index{翻译记忆}(Translation Memory,TM\index{Translation Memory})。翻译记忆记录了高质量的源语言-目标语言句对,有时也可以被看作是一种先验知识或“记忆”。因此,当进行机器翻译时,使用翻译记忆指导翻译过程也可以被看作是一种干预手段\upcite{DBLP:conf/acl/WangZS13,DBLP:conf/aaai/XiaHLS19}
...@@ -180,7 +180,7 @@ ...@@ -180,7 +180,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{小设备机器翻译} \section{小设备机器翻译}
\parinterval 在机器翻译研究中,一般会假设计算资源是充足的。但是,在很多应用场景中,机器翻译使用的计算资源非常有限,比如,一些离线设备上没有GPU,而且CPU的处理能力也很弱,甚至内存也非常有限。这时,让模型变得更小、系统变得更快就成为了重要的需求。 \parinterval 在机器翻译研究中,一般会假设计算资源是充足的。但是,在很多应用场景中,机器翻译使用的计算资源非常有限,比如,一些离线设备上没有GPU,而且CPU的处理能力也很弱,甚至内存也非常有限。这时,让模型变得更小、系统变得更快就成为了重要的需求。
...@@ -215,7 +215,7 @@ ...@@ -215,7 +215,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{机器翻译系统的部署} \section{机器翻译系统的部署}
\parinterval 除了在一些离线设备上使用机器翻译,更多时候机器翻译系统会部署在运算能力较强的服务器上。一方面随着神经机器翻译的大规模应用,在GPU服务器上部署机器翻译系统已经成为了常态。另一方面,GPU服务器的成本较高,而且很多应用中需要同时部署多个语言方向的系统。这时如何充分利用设备以满足大规模的翻译需求就成为了不可回避的问题。机器翻译系统的部署,有几个方向值得尝试: \parinterval 除了在一些离线设备上使用机器翻译,更多时候机器翻译系统会部署在运算能力较强的服务器上。一方面随着神经机器翻译的大规模应用,在GPU服务器上部署机器翻译系统已经成为了常态。另一方面,GPU服务器的成本较高,而且很多应用中需要同时部署多个语言方向的系统。这时如何充分利用设备以满足大规模的翻译需求就成为了不可回避的问题。机器翻译系统的部署,有几个方向值得尝试:
...@@ -253,7 +253,7 @@ ...@@ -253,7 +253,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{机器翻译的应用场景} \section{机器翻译的应用场景}
\parinterval 机器翻译有着十分广泛的应用,这里列举了一些常见的应用场景: \parinterval 机器翻译有着十分广泛的应用,这里列举了一些常见的应用场景:
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
\node [] (d1) at (-11.9em,-10em) {$d_1$}; \node [] (d1) at (-11.9em,-10em) {$d_1$};
\node [] (d2) at (-2.9em,-10em) {$d_2$}; \node [] (d2) at (-2.9em,-10em) {$d_2$};
\node [] (d3) at (6.2em,-10em) {$d_2$}; \node [] (d3) at (6.2em,-10em) {$d_3$};
\node [anchor=east] (d1p) at ([xshift=0.4em]d1.west) {$\funp{P}($}; \node [anchor=east] (d1p) at ([xshift=0.4em]d1.west) {$\funp{P}($};
\node [anchor=west] (d1p2) at ([xshift=-0.4em]d1.east) {$)=0.0123$}; \node [anchor=west] (d1p2) at ([xshift=-0.4em]d1.east) {$)=0.0123$};
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{中文分词} \section{中文分词}
\parinterval 对于机器翻译系统而言,输入的是已经切分好的单词序列,而不是原始的字符串(图\ref{fig:3.2-1})。比如,对于一个中文句子,单词之间是没有间隔的,因此需要把一个个的单词切分出来,这样机器翻译系统可以区分不同的翻译单元。甚至,可以对语言学上的单词进行进一步切分,得到词片段序列(比如:中国人$\to$中国/人)。广义上,可以把上述过程看作是一种分词过程,即:将一个输入的自然语言字符串切割成单元序列,每个{\small\sffamily\bfseries{单元}}\index{单元}(Token)\index{Token}都对应可以处理的最小单位。 \parinterval 对于机器翻译系统而言,输入的是已经切分好的单词序列,而不是原始的字符串(图\ref{fig:3.2-1})。比如,对于一个中文句子,单词之间是没有间隔的,因此需要把一个个的单词切分出来,这样机器翻译系统可以区分不同的翻译单元。甚至,可以对语言学上的单词进行进一步切分,得到词片段序列(比如:中国人$\to$中国/人)。广义上,可以把上述过程看作是一种分词过程,即:将一个输入的自然语言字符串切割成单元序列,每个{\small\sffamily\bfseries{单元}}\index{单元}(Token)\index{Token}都对应可以处理的最小单位。
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
\end{figure} \end{figure}
%------------------------------------------- %-------------------------------------------
\parinterval 分词得到的单元序列既可以是语言学上的词序列,也可以是根据其他方式定义的基本处理单元。在本章中,把分词得到的一个个单元称为单词或词,尽管这些单元可以不是语言学上的完整单词,而这个过程也被称作{\small\sffamily\bfseries{词法分析}}\index{词法分析}(Lexical Analysis)\index{Lexical Analysis}。除了汉语,词法分析在日语、泰语等单词之间无明确分割符的语言中有着广泛的应用,芬兰语、维吾尔语等一些形态学十分丰富的语言也需要使用词法分析来解决复杂的词尾、词缀变化等形态学变化。 \parinterval 分词得到的单元序列既可以是语言学上的词序列,也可以是根据其他方式定义的基本处理单元。在本章中,把分词得到的一个个单元称为单词或词,尽管这些单元可以不是语言学上的完整单词,而这个过程也被称作{\small\sffamily\bfseries{词法分析}}\index{词法分析}(Lexical Analysis)\index{Lexical Analysis}。除了汉语,词法分析在日语、泰语等单词之间无明确分割符的语言中有着广泛的应用,芬兰语、维吾尔语等一些形态十分丰富的语言也需要使用词法分析来解决复杂的词尾、词缀变化等形态变化。
\parinterval 在机器翻译中,分词系统的好坏往往会决定译文的质量。分词的目的是定义系统处理的基本单元,那么什么叫做“词” 呢?关于词的定义有很多,比如: \parinterval 在机器翻译中,分词系统的好坏往往会决定译文的质量。分词的目的是定义系统处理的基本单元,那么什么叫做“词” 呢?关于词的定义有很多,比如:
...@@ -96,13 +96,13 @@ ...@@ -96,13 +96,13 @@
\vspace{0.5em} \vspace{0.5em}
语言里最小的可以独立运用的单位。 语言里最小的可以独立运用的单位。
\begin{flushright}——《新华字典》\end{flushright} \begin{flushright}——《新华字典》\upcite{新华字典}\end{flushright}
单词,含有语义内容或语用内容,且能被单独念出来的的最小单位。 单词,含有语义内容或语用内容,且能被单独念出来的的最小单位。
\begin{flushright}——维基百科\end{flushright} \begin{flushright}——维基百科\end{flushright}
语句中具有完整概念,能独立自由运用的基本单位。 语句中具有完整概念,能独立自由运用的基本单位。
\begin{flushright}——《国语辞典》\end{flushright} \begin{flushright}——《国语辞典》\upcite{国语辞典}\end{flushright}
\end{definition} \end{definition}
...@@ -224,7 +224,7 @@ $计算这种切分的概率值。 ...@@ -224,7 +224,7 @@ $计算这种切分的概率值。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{命名实体识别} \section{命名实体识别}
\parinterval 在人类使用语言的过程中,单词往往不是独立出现的。很多时候,多个单词会组合成一个更大的单元来表达特定的意思。其中,最典型的代表是{\small\sffamily\bfseries{命名实体}}\index{命名实体}(Named Entity)\index{Named Entity}。通常,命名实体是指名词性的专用短语,例如公司名称、品牌名称、产品名称等专有名词和行业术语。准确地识别出这些命名实体,是提高机器翻译质量的关键。比如,在翻译技术文献时,往往需要对术语进行识别并进行准确翻译,因此引入{\small\sffamily\bfseries{命名实体识别}}\index{命名实体识别}(Named Entity Recognition)\index{Named Entity Recognition} 可以帮助系统对特定术语进行更加细致的处理。 \parinterval 在人类使用语言的过程中,单词往往不是独立出现的。很多时候,多个单词会组合成一个更大的单元来表达特定的意思。其中,最典型的代表是{\small\sffamily\bfseries{命名实体}}\index{命名实体}(Named Entity)\index{Named Entity}。通常,命名实体是指名词性的专用短语,例如公司名称、品牌名称、产品名称等专有名词和行业术语。准确地识别出这些命名实体,是提高机器翻译质量的关键。比如,在翻译技术文献时,往往需要对术语进行识别并进行准确翻译,因此引入{\small\sffamily\bfseries{命名实体识别}}\index{命名实体识别}(Named Entity Recognition)\index{Named Entity Recognition} 可以帮助系统对特定术语进行更加细致的处理。
...@@ -265,7 +265,7 @@ $计算这种切分的概率值。 ...@@ -265,7 +265,7 @@ $计算这种切分的概率值。
\parinterval 对于像命名实体识别这样的任务,早期的方法主要是基于词典和规则的方法。这些方法依赖于人工构造的识别规则,通过字符串匹配的方式识别出文本中的命名实体\upcite{1995University,krupka1998isoquest,DBLP:conf/muc/BlackRM98}。严格意义上来说,那时命名实体识别还并没有被看作是一种序列标注问题。 \parinterval 对于像命名实体识别这样的任务,早期的方法主要是基于词典和规则的方法。这些方法依赖于人工构造的识别规则,通过字符串匹配的方式识别出文本中的命名实体\upcite{1995University,krupka1998isoquest,DBLP:conf/muc/BlackRM98}。严格意义上来说,那时命名实体识别还并没有被看作是一种序列标注问题。
\parinterval 序列标注这个概念更多的是出现在基于统计建模的方法中。许多统计机器学习方法都被成功应用用于命名实体识别任务,例如{\small\sffamily\bfseries{隐马尔可夫模型}}\index{隐马尔可夫模型}(Hidden Markov Model,HMM)\index{Hidden Markov Model}\upcite{1996Hidden}{\small\sffamily\bfseries{条件随机场}}\index{条件随机场}(Conditional Random Fields,CRFs\index{Conditional Random Fields}\upcite{lafferty2001conditional}{\small\sffamily\bfseries{最大熵}}\index{最大熵}(Maximum Entropy,ME)\index{Maximum Entropy}模型\upcite{kapur1989maximum}{\small\sffamily\bfseries{支持向量机}}\index{支持向量机}(Support Vector Machine,SVM)\index{Support Vector Machine}\upcite{1998Support}等。此外,近些年深度学习的兴起也给命名实体识别带来了新的思路\upcite{2011Natural}。而命名实体识别也成为了验证机器学习方法有效性的重要任务之一。本节将对序列标注中几类基础的方法进行介绍。其中会涉及概率图模型、统计分类模型等方法。特别是统计分类的概念,在后续章节中也会被使用到。 \parinterval 序列标注这个概念更多的是出现在基于统计建模的方法中。许多统计机器学习方法都被成功应用用于命名实体识别任务,例如{\small\sffamily\bfseries{隐马尔可夫模型}}\index{隐马尔可夫模型}(Hidden Markov Model,HMM)\index{Hidden Markov Model}\upcite{1996Hidden}{\small\sffamily\bfseries{条件随机场}}\index{条件随机场}(Conditional Random Fields,CRF)\index{Conditional Random Fields}\upcite{lafferty2001conditional}{\small\sffamily\bfseries{最大熵}}\index{最大熵}(Maximum Entropy,ME)\index{Maximum Entropy}模型\upcite{kapur1989maximum}{\small\sffamily\bfseries{支持向量机}}\index{支持向量机}(Support Vector Machine,SVM)\index{Support Vector Machine}\upcite{1998Support}等。此外,近些年深度学习的兴起也给命名实体识别带来了新的思路\upcite{2011Natural}。而命名实体识别也成为了验证机器学习方法有效性的重要任务之一。本节将对序列标注中几类基础的方法进行介绍。其中会涉及概率图模型、统计分类模型等方法。特别是统计分类的概念,在后续章节中也会被使用到。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
...@@ -331,7 +331,7 @@ $计算这种切分的概率值。 ...@@ -331,7 +331,7 @@ $计算这种切分的概率值。
\parinterval 在上面的例子中,每次挑选并上抛硬币后得到的“正面”或“反面”即为“可见状态”,再次挑选并上抛硬币会获得新的“可见状态”,这个过程即为“状态的转移”,经过6次反复挑选上抛后得到的硬币正反序列叫做可见状态序列,由每个回合的可见状态构成。此外,在这个游戏中还暗含着一个会对最终“可见状态序列”产生影响的“隐含状态序列”\ \dash \ 每次挑选的硬币形成的序列,例如$CBABCA$ \parinterval 在上面的例子中,每次挑选并上抛硬币后得到的“正面”或“反面”即为“可见状态”,再次挑选并上抛硬币会获得新的“可见状态”,这个过程即为“状态的转移”,经过6次反复挑选上抛后得到的硬币正反序列叫做可见状态序列,由每个回合的可见状态构成。此外,在这个游戏中还暗含着一个会对最终“可见状态序列”产生影响的“隐含状态序列”\ \dash \ 每次挑选的硬币形成的序列,例如$CBABCA$
\parinterval 实际上,隐马尔夫模型在处理序列问题时的关键依据是两个至关重要的概率关系,并且这两个概率关系也始终贯穿于“抛硬币”的游戏中。一方面,隐马尔可夫模型用{\small\sffamily\bfseries{发射概率}}\index{发射概率}(Emission Probability)\index{Emission Probability}来描述隐含状态和可见状态之间存在的输出概率(即$A$$B$$C$抛出正面的输出概率为0.3、0.5、0.7),同样的,隐马尔可夫模型还会描述系统隐含状态的{\small\sffamily\bfseries{转移概率}}\index{转移概率}(Transition Probability)\index{Transition Probability},在这个例子中,$A$的下一个状态是$A$$B$$C$的概率都是1/3,$B$$C$的下一个状态是$A$$B$$C$的转移概率也同样是1/3。图\ref{fig:3.3-2}展示了在“抛硬币”游戏中的转移概率和发射概率,它们都可以被看做是条件概率矩阵。 \parinterval 实际上,隐马尔夫模型在处理序列问题时的关键依据是两个至关重要的概率关系,并且这两个概率关系也始终贯穿于“抛硬币”的游戏中。一方面,隐马尔可夫模型用{\small\sffamily\bfseries{发射概率}}\index{发射概率}(Emission Probability)\index{Emission Probability}来描述隐含状态和可见状态之间存在的输出概率(即$A$$B$$C$抛出正面的输出概率为0.3、0.5、0.7),同样的,隐马尔可夫模型还会描述系统隐含状态的{\small\sffamily\bfseries{转移概率}}\index{转移概率}(Transition Probability)\index{Transition Probability},在这个例子中,$A$的下一个状态是$A$$B$$C$的概率都是1/3,$B$$C$的下一个状态是$A$$B$$C$的转移概率也同样是1/3。图\ref{fig:3.3-2}展示了在“抛硬币”游戏中的转移概率和发射概率,它们都可以被看做是条件概率矩阵。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -372,17 +372,17 @@ $计算这种切分的概率值。 ...@@ -372,17 +372,17 @@ $计算这种切分的概率值。
& = & \prod_{i=1}^{m} \funp{P}(x_i|y_i) \funp{P}(y_i | y_{i-1}) \label{eq:joint-prob-xy} & = & \prod_{i=1}^{m} \funp{P}(x_i|y_i) \funp{P}(y_i | y_{i-1}) \label{eq:joint-prob-xy}
\end{eqnarray} \end{eqnarray}
\noindent 这里,$y_{0}$表示一个虚拟的隐含状态。这样,可以定义$\funp{P}(y_1|y_{0}) \equiv \funp{P}(y_1)$,它表示起始隐含状态出现的概率。隐马尔可夫模型的假设也大大化简了问题,因此可以通过式\eqref{eq:joint-prob-xy}很容易地计算隐含状态序列和可见状态序列出现的概率。值得注意的是,发射概率和转移概率都可以被看作是描述序列生成过程的“特征”。但是,这些“特征”并不是随意定义的,而是符合问题的概率解释。而这种基于事件发生的逻辑所定义的概率生成式模型,通常可以被看作是一种{\small\sffamily\bfseries{生成式模型}}\index{生成式模型}(Generative Model)\index{Generative Model} \noindent 这里,$y_{0}$表示一个虚拟的隐含状态。这样,可以定义$\funp{P}(y_1|y_{0}) \equiv \funp{P}(y_1)$\footnote{数学符号$\equiv$的含义为:等价于},它表示起始隐含状态出现的概率。隐马尔可夫模型的假设也大大化简了问题,因此可以通过式\eqref{eq:joint-prob-xy}很容易地计算隐含状态序列和可见状态序列出现的概率。值得注意的是,发射概率和转移概率都可以被看作是描述序列生成过程的“特征”。但是,这些“特征”并不是随意定义的,而是符合问题的概率解释。而这种基于事件发生的逻辑所定义的概率生成模型,通常可以被看作是一种{\small\sffamily\bfseries{生成模型}}\index{生成模型}(Generative Model)\index{Generative Model}
\parinterval 一般来说,隐马尔可夫模型中包含下面三个问题: \parinterval 一般来说,隐马尔可夫模型中包含下面三个问题:
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item {\small\sffamily\bfseries{隐含状态序列的概率计算}},即给定模型(转移概率和发射概率),根据可见状态序列(抛硬币的结果)计算在该模型下得到这个结果的概率,这个问题的求解需要用到前后向算法\upcite{baum1970maximization} \item {\small\sffamily\bfseries{隐含状态序列的概率计算}},即给定模型(转移概率和发射概率),根据可见状态序列(抛硬币的结果)计算在该模型下得到这个结果的概率,这个问题的求解需要用到{\small\sffamily\bfseries{前向后向算法}}\index{前向后向算法}(Forward-Backward Algorithm)\index{Forward-Backward Algorithm}\upcite{baum1970maximization}
\vspace{0.5em} \vspace{0.5em}
\item {\small\sffamily\bfseries{参数学习}},即给定硬币种类(隐含状态数量),根据多个可见状态序列(抛硬币的结果)估计模型的参数(转移概率),这个问题的求解需要用到EM算法\upcite{1977Maximum} \item {\small\sffamily\bfseries{参数学习}},即给定硬币种类(隐含状态数量),根据多个可见状态序列(抛硬币的结果)估计模型的参数(转移概率),这个问题的求解需要用到EM算法\upcite{1977Maximum}
\vspace{0.5em} \vspace{0.5em}
\item {\small\sffamily\bfseries{解码}},即给定模型(转移概率和发射概率)和可见状态序列(抛硬币的结果),根据可见状态序列,计算最可能出现的隐含状态序列,这个问题的求解需要用到基于动态规划的方法,通常也被称作{\small\sffamily\bfseries{维特比算法}}\index{维特比算法}(Viterbi Algorithm)\index{Viterbi Algorithm}\upcite{1967Error} \item {\small\sffamily\bfseries{解码}},即给定模型(转移概率和发射概率)和可见状态序列(抛硬币的结果),根据可见状态序列,计算最可能出现的隐含状态序列,这个问题的求解需要用到基于{\small\sffamily\bfseries{动态规划}}\index{动态规划}(Dynamic Programming)\index{Dynamic Programming}的方法,通常也被称作{\small\sffamily\bfseries{维特比算法}}\index{维特比算法}(Viterbi Algorithm)\index{Viterbi Algorithm}\upcite{1967Error}
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
...@@ -528,7 +528,7 @@ Z(\seq{x})&=&\sum_{\seq{y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1} ...@@ -528,7 +528,7 @@ Z(\seq{x})&=&\sum_{\seq{y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1}
\parinterval 与概率图模型一样,分类模型中也依赖特征定义。其定义形式与\ref{sec3:feature}节的描述一致,这里不再赘述。分类任务一般根据类别数量分为二分类任务和多分类任务,二分类任务是最经典的分类任务,只需要对输出进行非零即一的预测。多分类任务则可以有多种处理手段,比如,可以将其“拆解”为多个二分类任务求解,或者直接让模型输出多个类别中的一个。在命名实体识别中,往往会使用多类别分类模型。比如,在BIO标注下,有三个类别(B、I和O)。一般来说,类别数量越大分类的难度也越大。比如,BIOES标注包含5个类别,因此使用同样的分类器,它要比BIO标注下的分类问题难度大。此外,更多的类别有助于准确的刻画目标问题。因此在实践中需要在类别数量和分类难度之间找到一种平衡。 \parinterval 与概率图模型一样,分类模型中也依赖特征定义。其定义形式与\ref{sec3:feature}节的描述一致,这里不再赘述。分类任务一般根据类别数量分为二分类任务和多分类任务,二分类任务是最经典的分类任务,只需要对输出进行非零即一的预测。多分类任务则可以有多种处理手段,比如,可以将其“拆解”为多个二分类任务求解,或者直接让模型输出多个类别中的一个。在命名实体识别中,往往会使用多类别分类模型。比如,在BIO标注下,有三个类别(B、I和O)。一般来说,类别数量越大分类的难度也越大。比如,BIOES标注包含5个类别,因此使用同样的分类器,它要比BIO标注下的分类问题难度大。此外,更多的类别有助于准确的刻画目标问题。因此在实践中需要在类别数量和分类难度之间找到一种平衡。
\parinterval 在机器翻译和语言建模中也会遇到类似的问题,比如,生成单词的过程可以被看做是一个分类问题,类别数量就是词表的大小。显然,词表越大可以覆盖更多的单词和更多种类的单词形态变化,但是过大的词表里会包含很多低频词,其计算复杂度会显著增加。然而,过小的词表又无法包含足够多的单词。因此,在设计这类系统的时候对词表大小的选择(类别数量的选择)是十分重要的,往往要通过大量的实验得到最优的设置。 \parinterval 在机器翻译和语言建模中也会遇到类似的问题,比如,生成单词的过程可以被看做是一个分类问题,类别数量就是词表的大小。显然,词表越大可以覆盖更多的单词和更多种类的单词形态变化,但是过大的词表里会包含很多低频词,其计算复杂度会显著增加。然而,过小的词表又无法包含足够多的单词。因此,在设计这类系统的时候对词表大小的选择(类别数量的选择)是十分重要的,往往要通过大量的实验得到最优的设置。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
...@@ -555,7 +555,7 @@ Z(\seq{x})&=&\sum_{\seq{y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1} ...@@ -555,7 +555,7 @@ Z(\seq{x})&=&\sum_{\seq{y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1}
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SECTION % NEW SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\sectionnewpage
\section{句法分析} \section{句法分析}
\parinterval 前面已经介绍了什么叫做“词”以及如何对分词问题进行统计建模。同时,也介绍了如何对多个单词构成的命名实体进行识别。无论是分词还是命名实体识别都是句子浅层信息的一种表示。对于一个自然语言句子来说,它更深层次的结构信息可以通过更完整的句法结构来描述,而句法信息也是机器翻译和自然语言处理其他任务中常用的知识之一。 \parinterval 前面已经介绍了什么叫做“词”以及如何对分词问题进行统计建模。同时,也介绍了如何对多个单词构成的命名实体进行识别。无论是分词还是命名实体识别都是句子浅层信息的一种表示。对于一个自然语言句子来说,它更深层次的结构信息可以通过更完整的句法结构来描述,而句法信息也是机器翻译和自然语言处理其他任务中常用的知识之一。
...@@ -618,7 +618,7 @@ Z(\seq{x})&=&\sum_{\seq{y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1} ...@@ -618,7 +618,7 @@ Z(\seq{x})&=&\sum_{\seq{y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1}
\parinterval 句法树是对句子的一种抽象,这种树形结构表达了一种对句子结构的归纳过程,比如,从树的叶子开始,把每一个树节点看作一次抽象,最终形成一个根节点。那这个过程如何用计算机来实现呢?这就需要使用到形式文法。 \parinterval 句法树是对句子的一种抽象,这种树形结构表达了一种对句子结构的归纳过程,比如,从树的叶子开始,把每一个树节点看作一次抽象,最终形成一个根节点。那这个过程如何用计算机来实现呢?这就需要使用到形式文法。
\parinterval 形式文法是分析自然语言的一种重要工具。根据乔姆斯基的定义\upcite{chomsky1957syntactic},形式文法分为四种类型:无限制文法(0型文法)、上下文有关文法(1型文法)、上下文无关文法(2型文法)和正规文法(3型文法)。不同类型的文法有不同的应用,比如,正规文法可以用来描述有限状态自动机,因此也会被使用在语言模型等系统中。对于短语结构句法分析问题,常用的是{\small\sffamily\bfseries{上下文无关文法}}\index{上下文无关文法}(Context-free Grammar)\index{Context-free Grammar}。上下文无关文法的具体形式如下: \parinterval 形式文法是分析自然语言的一种重要工具。根据乔姆斯基的定义\upcite{chomsky1957syntactic},形式文法分为四种类型:无限制文法(0型文法)、上下文有关文法(1型文法)、上下文无关文法(2型文法)和正规文法(3型文法)。不同类型的文法有不同的应用,比如,正规文法可以用来描述有限状态自动机,因此也会被使用在语言模型等系统中。对于短语结构句法分析问题,常用的是{\small\sffamily\bfseries{上下文无关文法}}\index{上下文无关文法}(Context-free Grammar)\index{Context-free Grammar}\footnote{在上下文无关文法中,非终结符可以根据规则被终结符自由替换,而无需考虑非终结符所处的上下文,因此这种文法被命名为“上下文无关文法”。}。上下文无关文法的具体形式如下:
%------------------------------------------- %-------------------------------------------
\vspace{0.5em} \vspace{0.5em}
...@@ -869,10 +869,10 @@ r_6: & & \textrm{VP} \to \textrm{VV}\ \textrm{NN} \nonumber ...@@ -869,10 +869,10 @@ r_6: & & \textrm{VP} \to \textrm{VV}\ \textrm{NN} \nonumber
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item 在建模方面,本章描述了基于1-gram语言模型的分词、基于上下文无关文法的句法分析等,它们都是基于人工先验知识进行模型设计的思路。也就是,问题所表达的现象被“一步一步”生成出来。这是一种典型的生成式建模思想,它把要解决的问题看作一些观测结果的隐含变量(比如,句子是观测结果,分词结果是隐含在背后的变量),之后通过对隐含变量生成观测结果的过程进行建模,以达到对问题进行数学描述的目的。这类模型一般需要依赖一些独立性假设,假设的合理性对最终的性能有较大影响。相对于生成式模型,另一类方法是{\small\sffamily\bfseries{判别式模型}}\index{判别式模型}(Discriminative Model)\index{Discriminative Model}。本章序列标注内容中提到一些模型就是判别式模型,如条件随机场\upcite{lafferty2001conditional}。它直接描述了从隐含变量生成观测结果的过程,这样对问题的建模更加直接,同时这类模型可以更加灵活的引入不同的特征。判别式模型在自然语言处理中也有广泛应用\upcite{ng2002discriminative,manning2008introduction,berger1996maximum,mitchell1996m,DBLP:conf/acl/OchN02}。 在本书的第七章也会使用到判别式模型。 \item 在建模方面,本章描述了基于1-gram语言模型的分词、基于上下文无关文法的句法分析等,它们都是基于人工先验知识进行模型设计的思路。也就是,问题所表达的现象被“一步一步”生成出来。这是一种典型的生成式建模思想,它把要解决的问题看作一些观测结果的隐含变量(比如,句子是观测结果,分词结果是隐含在背后的变量),之后通过对隐含变量生成观测结果的过程进行建模,以达到对问题进行数学描述的目的。这类模型一般需要依赖一些独立性假设,假设的合理性对最终的性能有较大影响。相对于生成模型,另一类方法是{\small\sffamily\bfseries{判别模型}}\index{判别模型}(Discriminative Model)\index{Discriminative Model}。本章序列标注内容中提到一些模型就是判别模型,如条件随机场\upcite{lafferty2001conditional}。它直接描述了从隐含变量生成观测结果的过程,这样对问题的建模更加直接,同时这类模型可以更加灵活的引入不同的特征。判别模型在自然语言处理中也有广泛应用\upcite{ng2002discriminative,manning2008introduction,berger1996maximum,mitchell1996m,DBLP:conf/acl/OchN02}。 在本书的第七章也会使用到判别模型。
\vspace{0.5em} \vspace{0.5em}
\item 事实上,本章并没有对分词、句法分析中的预测问题进行深入介绍。比如,如何找到概率最大的分词结果?这个问题的解决可以直接借鉴{\chaptertwo}中介绍的搜索方法:对于基于$n$-­gram 语言模型的分词方法,可以使用动态规划方法\upcite{huang2008coling}进行搜索;在不满足动态规划的使用条件时,可以考虑使用更加复杂的搜索策略,并配合一定的剪枝方法找到最终的分词结果。实际上,无论是基于$n$-gram 语言模型的分词还是简单的上下文无关文法都有高效的推断方法。比如,$n$-gram语言模型可以被视为概率有限状态自动机,因此可以直接使用成熟的自动机工具\upcite{mohri2008speech}。对于更复杂的句法分析问题,可以考虑使用移进- 规约方法来解决预测问题\upcite{aho1972theory} \item 事实上,本章并没有对分词、句法分析中的预测问题进行深入介绍。比如,如何找到概率最大的分词结果?这个问题的解决可以直接借鉴{\chaptertwo}中介绍的搜索方法:对于基于$n$-­gram 语言模型的分词方法,可以使用动态规划方法\upcite{huang2008coling}进行搜索;在不满足动态规划的使用条件时,可以考虑使用更加复杂的搜索策略,并配合一定的剪枝方法找到最终的分词结果。实际上,无论是基于$n$-gram 语言模型的分词还是简单的上下文无关文法都有高效的推断方法。比如,$n$-gram语言模型可以被视为概率有限状态自动机,因此可以直接使用成熟的自动机工具\upcite{mohri2008speech}。对于更复杂的句法分析问题,可以考虑使用{\small\sffamily\bfseries{移进- 规约算法}}\index{移进- 规约算法}(Shift-Reduce Algorithm)\index{Shift-Reduce Algorithm}来解决预测问题\upcite{aho1972theory}
\vspace{0.5em} \vspace{0.5em}
\item 从自然语言处理的角度来看,词法分析和法分析中的很多问题都是序列标注问题,例如本章介绍的分词和命名实体识别。此外序列标注还可以被扩展到词性标注\upcite{brants-2000-tnt}、组块识别\upcite{tsuruoka-tsujii-2005-chunk}、关键词抽取\upcite{li-etal-2003-news-oriented}、词义角色标注\upcite{chomsky1993lectures}等任务,本章着重介绍了传统的方法,前沿方法大多与深度学习相结合,感兴趣的读者可以自行了解,其中比较有代表性的使用双向长短时记忆网络对序列进行建模,之后于不同模型进行融合得到最终的结果,例如,与条件随机场相结合的模型(BiLSTM-CRF)\upcite{2015Bidirectional}、与卷积神经网络相结合的模型(BiLSTM-CNNs)\upcite{chiu2016named}、与简单的Softmax结构相结合的模型\upcite{vzukov2018named}等。此外,对于序列标注任务,模型性能很大程度上依赖对输入序列的表示能力,因此基于预训练语言模型的方法也非常流行\upcite{Li2020A},如:BERT\upcite{devlin2019bert}、GPT\upcite{radford2018improving}、XLM\upcite{conneau2019unsupervised}等。 \item 从自然语言处理的角度来看,词法分析和法分析中的很多问题都是序列标注问题,例如本章介绍的分词和命名实体识别。此外序列标注还可以被扩展到词性标注\upcite{brants-2000-tnt}、组块识别\upcite{tsuruoka-tsujii-2005-chunk}、关键词抽取\upcite{li-etal-2003-news-oriented}、词义角色标注\upcite{chomsky1993lectures}等任务,本章着重介绍了传统的方法,前沿方法大多与深度学习相结合,感兴趣的读者可以自行了解,其中比较有代表性的使用双向长短时记忆网络对序列进行建模,之后于不同模型进行融合得到最终的结果,例如,与条件随机场相结合的模型(BiLSTM-CRF)\upcite{2015Bidirectional}、与卷积神经网络相结合的模型(BiLSTM-CNNs)\upcite{chiu2016named}、与简单的Softmax结构相结合的模型\upcite{vzukov2018named}等。此外,对于序列标注任务,模型性能很大程度上依赖对输入序列的表示能力,因此基于预训练语言模型的方法也非常流行\upcite{Li2020A},如:BERT\upcite{devlin2019bert}、GPT\upcite{radford2018improving}、XLM\upcite{conneau2019unsupervised}等。
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
\chapter{翻译质量评价} \chapter{翻译质量评价}
\parinterval 人们在使用机器翻译系统时需要评估系统输出结果的质量。这个过程也被称作机器翻译译文质量评价,简称为{\small\sffamily\bfseries{译文质量评价}}\index{译文质量评价}(Quality Evaluation of Translation)\index{Quality Evaluation of Translation}。在机器翻译的发展进程中,译文质量评价有着非常重要的作用。不论在系统研发的反复迭代中,还是在诸多的机器翻译应用场景中,都存在大量的译文质量评价环节。从某种意义上说,没有译文质量评价,机器翻译也不会发展成今天的样子。比如,本世纪初研究人员提出了译文质量自动评价方法BLEU\upcite{DBLP:conf/acl/PapineniRWZ02}。该方法使得机器系统的评价变得自动、快速、便捷,而且评价过程可以重复。正是由于BLEU等自动评价方法的提出,机器翻译研究人员可以在更短的时间内得到译文质量的评价结果,加速系统研发的进程。 \parinterval 人们在使用机器翻译系统时需要评估系统输出结果的质量。这个过程也被称作机器翻译译文质量评价,简称为{\small\sffamily\bfseries{译文质量评价}}\index{译文质量评价}(Quality Evaluation of Translation)\index{Quality Evaluation of Translation}。在机器翻译的发展进程中,译文质量评价有着非常重要的作用。不论在系统研发的反复迭代中,还是在诸多的机器翻译应用场景中,都存在大量的译文质量评价环节。从某种意义上说,没有译文质量评价,机器翻译也不会发展成今天的样子。比如,本世纪初研究人员提出了译文质量自动评价方法{\small\sffamily\bfseries{BLEU}}\index{BLEU}(Bilingual Evaluation Understudy)\index{Bilingual Evaluation Understudy}\upcite{DBLP:conf/acl/PapineniRWZ02}。该方法使得机器系统的评价变得自动、快速、便捷,而且评价过程可以重复。正是由于BLEU等自动评价方法的提出,机器翻译研究人员可以在更短的时间内得到译文质量的评价结果,加速系统研发的进程。
\parinterval 时至今日,译文质量评价方法已经非常丰富,针对不同的使用场景研究人员陆续提出了不同的方法。本章将会对其中的典型方法进行介绍,包括:人工评价、有参考答案自动评价、无参考答案自动评价等。相关方法及概念也会在本章的后续章节中被广泛使用。 \parinterval 时至今日,译文质量评价方法已经非常丰富,针对不同的使用场景研究人员陆续提出了不同的方法。本章将会对其中的典型方法进行介绍,包括:人工评价、有参考答案自动评价、无参考答案自动评价等。相关方法及概念也会在本章的后续章节中被广泛使用。
...@@ -209,7 +209,7 @@ ...@@ -209,7 +209,7 @@
\label{eg:4-1} \label{eg:4-1}
\end{example} \end{example}
\parinterval 在这个实例中,将机器译文序列转换为参考答案序列,需要进行两次替换操作,将“A” 替换为“The”,将“in” 替换为“on”。所以$\textrm{edit}(c,r)$ = 2,归一化因子$l$为参考答案的长度8(包括标点符号),所以该机器译文的TER 结果为2/8。 \parinterval 在这个实例中,将机器译文序列转换为参考答案序列,需要进行两次替换操作,将“A” 替换为“The”,将“in” 替换为“on”。所以$\textrm{edit}(o,g)$ = 2,归一化因子$l$为参考答案的长度8(包括标点符号),所以该机器译文的TER 结果为2/8。
\parinterval PER与WER的基本思想与TER相同,这三种方法的主要区别在于对“错误” 的定义和考虑的操作类型略有不同。WER使用的编辑操作包括:增加、删除、替换,由于没有移位操作,当机器译文出现词序问题时,会发生多次替代,因而一般会低估译文质量;而PER只考虑增加和删除两个动作,计算两个句子中出现相同单词的次数,根据机器译文与参考答案的长度差距,其余操作无非是插入词或删除词,而忽略了词序的错误,因此这样往往会高估译文质量。 \parinterval PER与WER的基本思想与TER相同,这三种方法的主要区别在于对“错误” 的定义和考虑的操作类型略有不同。WER使用的编辑操作包括:增加、删除、替换,由于没有移位操作,当机器译文出现词序问题时,会发生多次替代,因而一般会低估译文质量;而PER只考虑增加和删除两个动作,计算两个句子中出现相同单词的次数,根据机器译文与参考答案的长度差距,其余操作无非是插入词或删除词,而忽略了词序的错误,因此这样往往会高估译文质量。
...@@ -593,7 +593,7 @@ His house is on the south bank of the river . ...@@ -593,7 +593,7 @@ His house is on the south bank of the river .
\parinterval 在机器译文质量评价工作中,相比人工评价,有参考答案的自动评价具有效率高、成本低的优点,因而广受机器翻译系统研发人员青睐。在这种情况下,自动评价结果的可信度一般取决于它们与可靠的人工评价之间的相关性。随着越来越多有参考答案的自动评价方法的提出,“与人工评价之间的相关性”也被视为衡量一种新的自动评价方法是否可靠的衡量标准。 \parinterval 在机器译文质量评价工作中,相比人工评价,有参考答案的自动评价具有效率高、成本低的优点,因而广受机器翻译系统研发人员青睐。在这种情况下,自动评价结果的可信度一般取决于它们与可靠的人工评价之间的相关性。随着越来越多有参考答案的自动评价方法的提出,“与人工评价之间的相关性”也被视为衡量一种新的自动评价方法是否可靠的衡量标准。
\parinterval 很多研究工作中都曾对BLEU、NIST等有参考答案的自动评价与人工评价的相关性进行研究和讨论,其中也有很多工作对“相关性”的统计过程作过比较详细的阐述。在“相关性”的统计过程中,一般是分别利用人工评价方法和某种有参考答案的自动评价方法对若干个机器翻译系统的输出进行等级评价\upcite{coughlin2003correlating}或是相对排序\upcite{popescu2003experiment},从而对比两种评价手段的评价结果是否一致。该过程中的几个关键问题可能会对最终结果产生影响。 \parinterval 很多研究工作中都曾对BLEU、NIST等有参考答案的自动评价与人工评价的相关性进行研究和讨论,其中也有很多工作对“相关性”的统计过程作过比较详细的阐述。在“相关性”的统计过程中,一般是分别利用人工评价方法和某种有参考答案的自动评价方法对若干个机器翻译系统的输出进行等级评价\upcite{coughlin2003correlating}或是相对排序\upcite{popescu2003experiment},从而对比两种评价手段的评价结果是否一致。该过程中的几个关键问题可能会对最终结果产生影响。
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
...@@ -911,7 +911,7 @@ d&=&t \frac{s}{\sqrt{n}} ...@@ -911,7 +911,7 @@ d&=&t \frac{s}{\sqrt{n}}
\vspace{0.5em} \vspace{0.5em}
\item 基于句法和语义的机器译文质量自动评价方法。本章内容中介绍的自动评价多是基于表面字符串形式判定机器翻译结果和参考译文之间的相似度,而忽略了更抽象的语言层次的信息。基于句法和语义的机器译文质量自动评价方法在评价度量标准中加入能反映句法信息\upcite{DBLP:conf/acl/LiuG05}和语义信息\upcite{DBLP:conf/wmt/GimenezM07a}的相关内容,通过比较机器译文与参考答案之间的句法相似度和语义等价性\upcite{DBLP:journals/mt/PadoCGJM09},能够大大提高自动评价与人工评价之间的相关性。其中句法信息往往能够对机器译文流利度方面的评价起到促进作用\upcite{DBLP:conf/acl/LiuG05},常见的句法信息包括语法成分\upcite{DBLP:conf/acl/LiuG05}、依存关系\upcite{DBLP:conf/ssst/OwczarzakGW07,DBLP:conf/wmt/OwczarzakGW07,DBLP:conf/coling/YuWXJLL14}等。语义信息则对机器翻译的充分性评价更有帮助\upcite{DBLP:conf/acl/BanchsL11,reeder2006measuring},近年来也有很多用于机器译文质量评估的语义框架被提出,如AM-FM\upcite{DBLP:conf/acl/BanchsL11}、XMEANT\upcite{DBLP:conf/acl/LoBSW14}等。 \item 基于句法和语义的机器译文质量自动评价方法。本章内容中介绍的自动评价多是基于表面字符串形式判定机器翻译结果和参考译文之间的相似度,而忽略了更抽象的语言层次的信息。基于句法和语义的机器译文质量自动评价方法在评价度量标准中加入能反映句法信息\upcite{DBLP:conf/acl/LiuG05}和语义信息\upcite{DBLP:conf/wmt/GimenezM07a}的相关内容,通过比较机器译文与参考答案之间的句法相似度和语义等价性\upcite{DBLP:journals/mt/PadoCGJM09},能够大大提高自动评价与人工评价之间的相关性。其中句法信息往往能够对机器译文流利度方面的评价起到促进作用\upcite{DBLP:conf/acl/LiuG05},常见的句法信息包括语法成分\upcite{DBLP:conf/acl/LiuG05}、依存关系\upcite{DBLP:conf/ssst/OwczarzakGW07,DBLP:conf/wmt/OwczarzakGW07,DBLP:conf/coling/YuWXJLL14}等。语义信息则对机器翻译的充分性评价更有帮助\upcite{DBLP:conf/acl/BanchsL11,reeder2006measuring},近年来也有很多用于机器译文质量评估的语义框架被提出,如AM-FM\upcite{DBLP:conf/acl/BanchsL11}、XMEANT\upcite{DBLP:conf/acl/LoBSW14}等。
\vspace{0.5em} \vspace{0.5em}
\item 对机器译文中的错误分析和错误分类。无论是人工评价还是自动评价手段,其评价结果只能反映机器翻译系统性能,而无法确切表明机器翻译系统的优点和弱点是什么、系统最常犯什么类型的错误、一个特定的修改是否改善了系统的某一方面、排名较差的系统是否在任何方面都优于排名较好的系统等等。对机器译文进行错误分析和错误分类有助于找出机器翻译系统中存在的主要问题,以便集中精力进行研究改进\upcite{DBLP:conf/lrec/VilarXDN06}。相关的研究工作中,一些致力于错误分类方法的设计,如手动的机器译文错误分类框架\upcite{DBLP:conf/lrec/VilarXDN06}、自动的机器译文错误分类框架\upcite{popovic2011human}、基于语言学的错误分类方法\upcite{DBLP:journals/mt/CostaLLCC15}以及目前被用作篇章级质量评估注释标准的MQM错误分类框架\upcite{lommel2014using};其他的研究工作则致力于对机器译文进行错误分析,如引入形态句法信息的自动错误分析框架\upcite{DBLP:conf/wmt/PopovicGGLNMFB06}、引入词错误率(WER)和位置无关词错误率(PER)的错误分析框架\upcite{DBLP:conf/wmt/PopovicN07}、基于检索的错误分析工具tSEARCH\upcite{DBLP:conf/acl/GonzalezMM13}等等。 \item 对机器译文中的错误分析和错误分类。无论是人工评价还是自动评价手段,其评价结果只能反映机器翻译系统性能,而无法确切表明机器翻译系统的优点和弱点是什么、系统最常犯什么类型的错误、一个特定的修改是否改善了系统的某一方面、排名较好的系统是否在任何方面都优于排名较差的系统等等。对机器译文进行错误分析和错误分类有助于找出机器翻译系统中存在的主要问题,以便集中精力进行研究改进\upcite{DBLP:conf/lrec/VilarXDN06}。相关的研究工作中,一些致力于错误分类方法的设计,如手动的机器译文错误分类框架\upcite{DBLP:conf/lrec/VilarXDN06}、自动的机器译文错误分类框架\upcite{popovic2011human}、基于语言学的错误分类方法\upcite{DBLP:journals/mt/CostaLLCC15}以及目前被用作篇章级质量评估注释标准的MQM错误分类框架\upcite{lommel2014using};其他的研究工作则致力于对机器译文进行错误分析,如引入形态句法信息的自动错误分析框架\upcite{DBLP:conf/wmt/PopovicGGLNMFB06}、引入词错误率(WER)和位置无关词错误率(PER)的错误分析框架\upcite{DBLP:conf/wmt/PopovicN07}、基于检索的错误分析工具tSEARCH\upcite{DBLP:conf/acl/GonzalezMM13}等等。
\vspace{0.5em} \vspace{0.5em}
\item 译文质量的多角度评价。章节内主要介绍的几种经典方法如BLEU、TER、METEOR等,大都是从某个单一的角度计算机器译文和参考答案的相似性,如何对译文从多个角度进行综合评价是需要进一步思考的问题,\ref{Evaluation method of Multi Strategy fusion}节中介绍的多策略融合评价方法就可以看作是一种多角度评价方法,其思想是将各种评价方法下的译文得分通过某种方式进行组合,从而实现对译文的综合评价。译文质量多角度评价的另一种思路则是直接将BLEU、TER、Meteor等多种指标看做是某种特征,使用分类\upcite{kulesza2004learning,corston2001machine}、回归\upcite{albrecht2008regression}、排序\upcite{duh2008ranking}等机器学习手段形成一种综合度量。此外,也有相关工作专注于多等级的译文质量评价,使用聚类算法将大致译文按其质量分为不同等级,并对不同质量等级的译文按照不同权重组合几种不同的评价方法\upcite{chen2015multi} \item 译文质量的多角度评价。章节内主要介绍的几种经典方法如BLEU、TER、METEOR等,大都是从某个单一的角度计算机器译文和参考答案的相似性,如何对译文从多个角度进行综合评价是需要进一步思考的问题,\ref{Evaluation method of Multi Strategy fusion}节中介绍的多策略融合评价方法就可以看作是一种多角度评价方法,其思想是将各种评价方法下的译文得分通过某种方式进行组合,从而实现对译文的综合评价。译文质量多角度评价的另一种思路则是直接将BLEU、TER、Meteor等多种指标看做是某种特征,使用分类\upcite{kulesza2004learning,corston2001machine}、回归\upcite{albrecht2008regression}、排序\upcite{duh2008ranking}等机器学习手段形成一种综合度量。此外,也有相关工作专注于多等级的译文质量评价,使用聚类算法将大致译文按其质量分为不同等级,并对不同质量等级的译文按照不同权重组合几种不同的评价方法\upcite{chen2015multi}
\vspace{0.5em} \vspace{0.5em}
......
...@@ -649,7 +649,7 @@ g(\seq{s},\seq{t}) & \equiv & \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)} \ti ...@@ -649,7 +649,7 @@ g(\seq{s},\seq{t}) & \equiv & \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)} \ti
\label{eq:5-18} \label{eq:5-18}
\end{eqnarray} \end{eqnarray}
\parinterval 公式\eqref{eq:5-18}使用了简单的全概率公式把$\funp{P}(\seq{s}|\seq{t})$进行展开。通过访问$\seq{s}$$\seq{t}$之间所有可能的词对齐$\seq{a}$,并把对应的对齐概率进行求和,得到了$\seq{t}$$\seq{s}$的翻译概率。这里,可以把词对齐看作翻译的隐含变量,这样从$\seq{t}$$\seq{s}$的生成就变为从$\seq{t}$同时生成$\seq{s}$和隐含变量$\seq{a}$的问题。引入隐含变量是生成模型常用的手段,通过使用隐含变量,可以把较为困难的端到端学习问题转化为分步学习问题。 \parinterval 公式\eqref{eq:5-18}使用了简单的全概率公式把$\funp{P}(\seq{s}|\seq{t})$进行展开。通过访问$\seq{s}$$\seq{t}$之间所有可能的词对齐$\seq{a}$,并把对应的对齐概率进行求和,得到了$\seq{t}$$\seq{s}$的翻译概率。这里,可以把词对齐看作翻译的隐含变量,这样从$\seq{t}$$\seq{s}$的生成就变为从$\seq{t}$同时生成$\seq{s}$和隐含变量$\seq{a}$的问题。引入隐含变量是生成模型常用的手段,通过使用隐含变量,可以把较为困难的端到端学习问题转化为分步学习问题。
\parinterval 举个例子说明公式\eqref{eq:5-18}的实际意义。如图\ref{fig:5-17}所示,可以把从“谢谢\ 你”到“thank you”的翻译分解为9种可能的词对齐。因为源语言句子$\seq{s}$有2个词,目标语言句子$\seq{t}$加上空标记$t_0$共3个词,因此每个源语言单词有3个可能对齐的位置,整个句子共有$3\times3=9$种可能的词对齐。 \parinterval 举个例子说明公式\eqref{eq:5-18}的实际意义。如图\ref{fig:5-17}所示,可以把从“谢谢\ 你”到“thank you”的翻译分解为9种可能的词对齐。因为源语言句子$\seq{s}$有2个词,目标语言句子$\seq{t}$加上空标记$t_0$共3个词,因此每个源语言单词有3个可能对齐的位置,整个句子共有$3\times3=9$种可能的词对齐。
...@@ -753,13 +753,13 @@ g(\seq{s},\seq{t}) & \equiv & \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)} \ti ...@@ -753,13 +753,13 @@ g(\seq{s},\seq{t}) & \equiv & \prod_{j,i \in \widehat{A}}{\funp{P}(s_j,t_i)} \ti
\label{eq:5-22} \label{eq:5-22}
\end{eqnarray} \end{eqnarray}
\item 源语单词$s_j$的生成概率$\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\seq{t})$仅依赖与其对齐的译文单词$t_{a_j}$,即词汇翻译概率$f(s_j|t_{a_j})$。此时词汇翻译概率满足$\sum_{s_j}{f(s_j|t_{a_j})}=1$。比如在图\ref{fig:5-18}表示的例子中,源语单词“上”出现的概率只和与它对齐的单词“on”有关系,与其他单词没有关系。 \item 源语单词$s_j$的生成概率$\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\seq{t})$仅依赖与其对齐的译文单词$t_{a_j}$,即单词翻译概率$f(s_j|t_{a_j})$。此时单词翻译概率满足$\sum_{s_j}{f(s_j|t_{a_j})}=1$。比如在图\ref{fig:5-18}表示的例子中,源语单词“上”出现的概率只和与它对齐的单词“on”有关系,与其他单词没有关系。
\begin{eqnarray} \begin{eqnarray}
\funp{P}(s_j|a_1^{j},s_1^{j-1},m,\seq{t})& \equiv & f(s_j|t_{a_j}) \funp{P}(s_j|a_1^{j},s_1^{j-1},m,\seq{t})& \equiv & f(s_j|t_{a_j})
\label{eq:5-23} \label{eq:5-23}
\end{eqnarray} \end{eqnarray}
用一个简单的例子对公式\eqref{eq:5-23}进行说明。比如,在图\ref{fig:5-18}中,“桌子”对齐到“table”,可被描述为$f(s_2 |t_{a_2})=f(\textrm{“桌子”}|\textrm{“table”})$,表示给定“table”翻译为“桌子”的概率。通常,$f(s_2 |t_{a_2})$被认为是一种概率词典,它反应了两种语言词汇一级的对应关系。 用一个简单的例子对公式\eqref{eq:5-23}进行说明。比如,在图\ref{fig:5-18}中,“桌子”对齐到“table”,可被描述为$f(s_2 |t_{a_2})=f(\textrm{“桌子”}|\textrm{“table”})$,表示给定“table”翻译为“桌子”的概率。通常,$f(s_2 |t_{a_2})$被认为是一种概率词典,它反应了两种语言单词一级的对应关系。
\end{itemize} \end{itemize}
\parinterval 将上述三个假设和公式\eqref{eq:5-19}代入公式\eqref{eq:5-18}中,得到$\funp{P}(\seq{s}|\seq{t})$的表达式: \parinterval 将上述三个假设和公式\eqref{eq:5-19}代入公式\eqref{eq:5-18}中,得到$\funp{P}(\seq{s}|\seq{t})$的表达式:
...@@ -1093,7 +1093,7 @@ c_{\mathbb{E}}(s_u|t_v)&=&\sum\limits_{k=1}^{K} c_{\mathbb{E}}(s_u|t_v;s^{[k]}, ...@@ -1093,7 +1093,7 @@ c_{\mathbb{E}}(s_u|t_v)&=&\sum\limits_{k=1}^{K} c_{\mathbb{E}}(s_u|t_v;s^{[k]},
\vspace{0.5em} \vspace{0.5em}
\item 在IBM基础模型之上,有很多改进的工作。例如,对空对齐、低频词进行额外处理\upcite{DBLP:conf/acl/Moore04};考虑源语言-目标语言和目标语言-源语言双向词对齐进行更好地词对齐对称化\upcite{肖桐1991面向统计机器翻译的重对齐方法研究};使用词典、命名实体等多种信息对模型进行改进\upcite{2005Improvin};通过引入短语增强IBM基础模型\upcite{1998Grammar};引入相邻单词对齐之间的依赖关系增加模型健壮性\upcite{DBLP:conf/acl-vlc/DaganCG93}等;也可以对IBM模型的正向和反向结果进行对称化处理,以得到更加准确词对齐结果\upcite{och2003systematic} \item 在IBM基础模型之上,有很多改进的工作。例如,对空对齐、低频词进行额外处理\upcite{DBLP:conf/acl/Moore04};考虑源语言-目标语言和目标语言-源语言双向词对齐进行更好地词对齐对称化\upcite{肖桐1991面向统计机器翻译的重对齐方法研究};使用词典、命名实体等多种信息对模型进行改进\upcite{2005Improvin};通过引入短语增强IBM基础模型\upcite{1998Grammar};引入相邻单词对齐之间的依赖关系增加模型健壮性\upcite{DBLP:conf/acl-vlc/DaganCG93}等;也可以对IBM模型的正向和反向结果进行对称化处理,以得到更加准确词对齐结果\upcite{och2003systematic}
\item 随着词对齐概念的不断深入,也有很多词对齐方面的工作并不依赖IBM模型。比如,可以直接使用判别模型利用分类器解决词对齐问题\upcite{ittycheriah2005maximum};使用带参数控制的动态规划方法来提高词对齐准确率\upcite{DBLP:conf/naacl/GaleC91};甚至可以把对齐的思想用于短语和句法结构的双语对应\upcite{xiao2013unsupervised};无监督的对称词对齐方法,正向和反向模型联合训练,结合数据的相似性\upcite{DBLP:conf/naacl/LiangTK06};除了GIZA++,研究人员也开发了很多优秀的自动对齐工具,比如,FastAlign\upcite{DBLP:conf/naacl/DyerCS13}、Berkeley Word Aligner\upcite{taskar2005a}等,这些工具现在也有很广泛的应用。 \item 随着词对齐概念的不断深入,也有很多词对齐方面的工作并不依赖IBM模型。比如,可以直接使用判别模型利用分类器解决词对齐问题\upcite{ittycheriah2005maximum};使用带参数控制的动态规划方法来提高词对齐准确率\upcite{DBLP:conf/naacl/GaleC91};甚至可以把对齐的思想用于短语和句法结构的双语对应\upcite{xiao2013unsupervised};无监督的对称词对齐方法,正向和反向模型联合训练,结合数据的相似性\upcite{DBLP:conf/naacl/LiangTK06};除了GIZA++,研究人员也开发了很多优秀的自动对齐工具,比如,FastAlign\upcite{DBLP:conf/naacl/DyerCS13}、Berkeley Word Aligner\upcite{taskar2005a}等,这些工具现在也有很广泛的应用。
\vspace{0.5em} \vspace{0.5em}
\item 一种较为通用的词对齐评价标准是{\bfnew{对齐错误率}}(Alignment Error Rate, AER)\upcite{DBLP:journals/coling/FraserM07}。在此基础之上也可以对词对齐评价方法进行改进,以提高对齐质量与机器翻译评价得分BLEU的相关性\upcite{DBLP:conf/acl/DeNeroK07,paul2007all,黄书剑2009一种错误敏感的词对齐评价方法}。也有工作通过统计机器翻译系统性能的提升来评价对齐质量\upcite{DBLP:journals/coling/FraserM07}。不过,在相当长的时间内,词对齐质量对机器翻译系统的影响究竟如何并没有统一的结论。有些时候,词对齐的错误率下降了,但是机器翻译系统的译文品质却没有得到提升。但是,这个问题比较复杂,需要进一步的论证。不过,可以肯定的是,词对齐可以帮助人们分析机器翻译的行为。甚至在最新的神经机器翻译中,如何在神经网络模型中寻求两种语言单词之间的对应关系也是对模型进行解释的有效手段之一\upcite{DBLP:journals/corr/FengLLZ16} \item 一种较为通用的词对齐评价标准是{\bfnew{对齐错误率}}(Alignment Error Rate, AER)\upcite{DBLP:journals/coling/FraserM07}。在此基础之上也可以对词对齐评价方法进行改进,以提高对齐质量与机器翻译评价得分BLEU的相关性\upcite{DBLP:conf/acl/DeNeroK07,paul2007all,黄书剑2009一种错误敏感的词对齐评价方法}。也有工作通过统计机器翻译系统性能的提升来评价对齐质量\upcite{DBLP:journals/coling/FraserM07}。不过,在相当长的时间内,词对齐质量对机器翻译系统的影响究竟如何并没有统一的结论。有些时候,词对齐的错误率下降了,但是机器翻译系统的译文品质却没有得到提升。但是,这个问题比较复杂,需要进一步的论证。不过,可以肯定的是,词对齐可以帮助人们分析机器翻译的行为。甚至在最新的神经机器翻译中,如何在神经网络模型中寻求两种语言单词之间的对应关系也是对模型进行解释的有效手段之一\upcite{DBLP:journals/corr/FengLLZ16}
......
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
\label{eq:6-4} \label{eq:6-4}
\end{eqnarray} \end{eqnarray}
\parinterval 类似于模型1,模型2的表达式\eqref{eq:6-4}也能被拆分为两部分进行理解。第一部分:遍历所有的$\seq{a}$;第二部分:对于每个$\seq{a}$累加对齐概率$\funp{P}(\seq{s},\seq{a}| \seq{t})$,即计算对齐概率$a(a_j|j,m,l)$词汇翻译概率$f(s_j|t_{a_j})$对于所有源语言位置的乘积。 \parinterval 类似于模型1,模型2的表达式\eqref{eq:6-4}也能被拆分为两部分进行理解。第一部分:遍历所有的$\seq{a}$;第二部分:对于每个$\seq{a}$累加对齐概率$\funp{P}(\seq{s},\seq{a}| \seq{t})$,即计算对齐概率$a(a_j|j,m,l)$单词翻译概率$f(s_j|t_{a_j})$对于所有源语言位置的乘积。
\parinterval 同样的,模型2的解码及训练优化和模型1的十分相似,在此不再赘述,详细推导过程可以参看{\chapterfive}\ref{IBM-model1}小节解码及计算优化部分。这里直接给出IBM模型2的最终表达式: \parinterval 同样的,模型2的解码及训练优化和模型1的十分相似,在此不再赘述,详细推导过程可以参看{\chapterfive}\ref{IBM-model1}小节解码及计算优化部分。这里直接给出IBM模型2的最终表达式:
\begin{eqnarray} \begin{eqnarray}
...@@ -232,7 +232,7 @@ ...@@ -232,7 +232,7 @@
\vspace{0.5em} \vspace{0.5em}
\item 第二部分:对$i=0$时的产出率建模({\color{blue!70} 蓝色}),即空标记$t_0$的产出率生成概率。它依赖于$\seq{t}$和区间$[1,i-1]$的目标语单词的产出率$\varphi_1^l$ \item 第二部分:对$i=0$时的产出率建模({\color{blue!70} 蓝色}),即空标记$t_0$的产出率生成概率。它依赖于$\seq{t}$和区间$[1,i-1]$的目标语单词的产出率$\varphi_1^l$
\vspace{0.5em} \vspace{0.5em}
\item 第三部分:对词汇翻译建模({\color{green!70} 绿色}),目标语言单词$t_i$生成第$k$个源语言单词$\tau_{ik}$时的概率,依赖于$\seq{t}$、所有目标语言单词的产出率$\varphi_0^l$、区间$i\in[1,l]$的目标语言单词生成的源语言单词$\tau_1^{i-1}$和目标语单词$t_i$生成的前$k$个源语言单词$\tau_{i1}^{k-1}$ \item 第三部分:对单词翻译建模({\color{green!70} 绿色}),目标语言单词$t_i$生成第$k$个源语言单词$\tau_{ik}$时的概率,依赖于$\seq{t}$、所有目标语言单词的产出率$\varphi_0^l$、区间$i\in[1,l]$的目标语言单词生成的源语言单词$\tau_1^{i-1}$和目标语单词$t_i$生成的前$k$个源语言单词$\tau_{i1}^{k-1}$
\vspace{0.5em} \vspace{0.5em}
\item 第四部分:对于每个$i\in[1,l]$的目标语言单词生成的源语言单词的扭曲度建模({\color{yellow!70!black} 黄色}),即第$i$个目标语言单词生成的第$k$个源语言单词在源文中的位置$\pi_{ik}$ 的概率。其中$\pi_1^{i-1}$ 表示区间$[1,i-1]$的目标语言单词生成的源语言单词的扭曲度,$\pi_{i1}^{k-1}$表示第$i$目标语言单词生成的前$k-1$个源语言单词的扭曲度。 \item 第四部分:对于每个$i\in[1,l]$的目标语言单词生成的源语言单词的扭曲度建模({\color{yellow!70!black} 黄色}),即第$i$个目标语言单词生成的第$k$个源语言单词在源文中的位置$\pi_{ik}$ 的概率。其中$\pi_1^{i-1}$ 表示区间$[1,i-1]$的目标语言单词生成的源语言单词的扭曲度,$\pi_{i1}^{k-1}$表示第$i$目标语言单词生成的前$k-1$个源语言单词的扭曲度。
\vspace{0.5em} \vspace{0.5em}
...@@ -445,7 +445,7 @@ p_0+p_1 & = & 1 \label{eq:6-21} ...@@ -445,7 +445,7 @@ p_0+p_1 & = & 1 \label{eq:6-21}
\parinterval 在IBM模型中,$\funp{P}(\seq{t})\funp{P}(\seq{s}| \seq{t})$会随着目标语言句子长度的增加而减少,因为这种模型有多个概率化的因素组成,乘积项越多结果的值越小。这也就是说,IBM模型会更倾向选择长度短一些的目标语言句子。显然这种对短句子的偏向性并不是机器翻译所期望的。 \parinterval 在IBM模型中,$\funp{P}(\seq{t})\funp{P}(\seq{s}| \seq{t})$会随着目标语言句子长度的增加而减少,因为这种模型有多个概率化的因素组成,乘积项越多结果的值越小。这也就是说,IBM模型会更倾向选择长度短一些的目标语言句子。显然这种对短句子的偏向性并不是机器翻译所期望的。
\parinterval 这个问题在很多机器翻译系统中都存在。它实际上也是了一种{\small\bfnew{系统偏置}}\index{系统偏置}(System Bias)\index{System Bias}的体现。为了消除这种偏置,可以通过在模型中增加一个短句子惩罚因子来抵消掉模型对短句子的倾向性。比如,可以定义一个惩罚因子,它的值随着长度的减少而增加。不过,简单引入这样的惩罚因子会导致模型并不符合一个严格的噪声信道模型。它对应一个基于判别式框架的翻译模型,这部分内容会在{\chapterseven}进行介绍。 \parinterval 这个问题在很多机器翻译系统中都存在。它实际上也是一种{\small\bfnew{系统偏置}}\index{系统偏置}(System Bias)\index{System Bias}的体现。为了消除这种偏置,可以通过在模型中增加一个短句子惩罚因子来抵消掉模型对短句子的倾向性。比如,可以定义一个惩罚因子,它的值随着长度的减少而增加。不过,简单引入这样的惩罚因子会导致模型并不符合一个严格的噪声信道模型。它对应一个基于判别框架的翻译模型,这部分内容会在{\chapterseven}进行介绍。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
......
...@@ -147,7 +147,7 @@ ...@@ -147,7 +147,7 @@
\end{definition} \end{definition}
%------------------------------------------- %-------------------------------------------
\parinterval 根据这个定义,对于一个由$n$个单词构成的句子,可以包含$\frac{n(n-1)}{2}$个短语(子串)。进一步,可以把每个句子看作是由一系列短语构成的序列。组成这个句子的短语序列也可以被看作是句子的一个{\small\bfnew{短语切分}}\index{短语切分}(Phrasal Segmentation)\index{Phrasal Segmentation} \parinterval 根据这个定义,对于一个由$n$个单词构成的句子,可以包含$\frac{n(n-1)}{2}$个短语(子串)。进一步,可以把每个句子看作是由一系列短语构成的序列。组成这个句子的短语序列也可以被看作是句子的一个{\small\bfnew{短语切分}}\index{短语切分}(Phrase Segmentation)\index{Phrase Segmentation}
%------------------------------------------- %-------------------------------------------
\vspace{0.5em} \vspace{0.5em}
...@@ -313,7 +313,7 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2) ...@@ -313,7 +313,7 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)
\subsection{对数线性模型} \subsection{对数线性模型}
\parinterval 对于如何定义$\funp{P}(d,\seq{t}|\seq{s})$有很多种思路,比如,可以把$d$拆解为若干步骤,然后对这些步骤分别建模,最后形成描述$d$的生成式模型。这种方法在{\chapterfive}{\chaptersix}的IBM模型中也大量使用。但是,生成式模型的每一步推导需要有严格的概率解释,这也限制了研究人员从更多的角度对$d$进行描述。这里,可以使用另外一种方法\ \dash \ 判别式模型来对$\funp{P}(d,\seq{t}|\seq{s})$进行描述\upcite{DBLP:conf/acl/OchN02}。其模型形式如下: \parinterval 对于如何定义$\funp{P}(d,\seq{t}|\seq{s})$有很多种思路,比如,可以把$d$拆解为若干步骤,然后对这些步骤分别建模,最后形成描述$d$的生成模型。这种方法在{\chapterfive}{\chaptersix}的IBM模型中也大量使用。但是,生成模型的每一步推导需要有严格的概率解释,这也限制了研究人员从更多的角度对$d$进行描述。这里,可以使用另外一种方法\ \dash \ 判别模型来对$\funp{P}(d,\seq{t}|\seq{s})$进行描述\upcite{DBLP:conf/acl/OchN02}。其模型形式如下:
\begin{eqnarray} \begin{eqnarray}
\funp{P}(d,\seq{t}|\seq{s}) &=& \frac{\textrm{exp}(\textrm{score}(d,\seq{t},\seq{s}))}{\sum_{d',\seq{t}'} \textrm{exp}(\textrm{score}(d',\seq{t}',\seq{s}))} \label{eqa4.10} \funp{P}(d,\seq{t}|\seq{s}) &=& \frac{\textrm{exp}(\textrm{score}(d,\seq{t},\seq{s}))}{\sum_{d',\seq{t}'} \textrm{exp}(\textrm{score}(d',\seq{t}',\seq{s}))} \label{eqa4.10}
...@@ -339,14 +339,14 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2) ...@@ -339,14 +339,14 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)
% NEW SUB-SECTION % NEW SUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsection{判别模型中的特征} \subsection{判别模型中的特征}
\parinterval 判别模型最大的好处在于它可以更灵活地引入特征。某种意义上,每个特征都是在描述翻译的某方面属性。在各种统计分类模型中,也大量使用了“特征”这个概念(见{\chapterthree})。比如,要判别一篇新闻是体育方面的还是文化方面的,可以设计一个分类器,用词作为特征。这个分类器就会有能力区分“体育”和“文化”两个类别的特征,最终决定这篇文章属于哪个类别。统计机器翻译也在做类似的事情。系统研发者可以通过设计翻译相关的特征,来区分不同翻译结果的好坏。翻译模型会综合这些特征对所有可能的译文进行打分和排序,并选择得分最高的译文输出。 \parinterval 判别模型最大的好处在于它可以更灵活地引入特征。某种意义上,每个特征都是在描述翻译的某方面属性。在各种统计分类模型中,也大量使用了“特征”这个概念(见{\chapterthree})。比如,要判别一篇新闻是体育方面的还是文化方面的,可以设计一个分类器,用词作为特征。这个分类器就会有能力区分“体育”和“文化”两个类别的特征,最终决定这篇文章属于哪个类别。统计机器翻译也在做类似的事情。系统研发者可以通过设计翻译相关的特征,来区分不同翻译结果的好坏。翻译模型会综合这些特征对所有可能的译文进行打分和排序,并选择得分最高的译文输出。
\parinterval 在判别模型中,系统开发者可以设计任意的特征来描述翻译,特征的设计甚至都不需要统计上的解释,包括0-1特征、计数特征等。比如,可以设计特征来回答“you这个单词是否出现在译文中?”。如果答案为真,这个特征的值为1,否则为0。再比如,可以设计特征来回答“译文里有多少个单词?”。这个特征相当于一个统计目标语单词数的函数,它的值即为译文的长度。此外,还可以设计更加复杂的实数特征,甚至具有概率意义的特征。在随后的内容中还将看到,翻译的调序、译文流畅度等都会被建模为特征,而机器翻译系统会融合这些特征,综合得到最优的输出译文。 \parinterval 在判别模型中,系统开发者可以设计任意的特征来描述翻译,特征的设计甚至都不需要统计上的解释,包括0-1特征、计数特征等。比如,可以设计特征来回答“you这个单词是否出现在译文中?”。如果答案为真,这个特征的值为1,否则为0。再比如,可以设计特征来回答“译文里有多少个单词?”。这个特征相当于一个统计目标语单词数的函数,它的值即为译文的长度。此外,还可以设计更加复杂的实数特征,甚至具有概率意义的特征。在随后的内容中还将看到,翻译的调序、译文流畅度等都会被建模为特征,而机器翻译系统会融合这些特征,综合得到最优的输出译文。
\parinterval 此外,判别式模型并不需要像生成式模型那样对问题进行具有统计学意义的“分解”,更不需要对每个步骤进行严格的数学推导。相反,它直接对问题的后验概率进行建模。由于不像生成式模型那样需要引入假设来对每个生成步骤进行化简,判别式模型对问题的刻画更加直接,因此也受到自然语言处理研究者的青睐。 \parinterval 此外,判别模型并不需要像生成模型那样对问题进行具有统计学意义的“分解”,更不需要对每个步骤进行严格的数学推导。相反,它直接对问题的后验概率进行建模。由于不像生成模型那样需要引入假设来对每个生成步骤进行化简,判别模型对问题的刻画更加直接,因此也受到自然语言处理研究者的青睐。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
...@@ -354,7 +354,7 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2) ...@@ -354,7 +354,7 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)
\subsection{搭建模型的基本流程} \subsection{搭建模型的基本流程}
\parinterval 对于翻译的判别建模,需要回答两个问题: \parinterval 对于翻译的判别建模,需要回答两个问题:
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
...@@ -366,7 +366,7 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2) ...@@ -366,7 +366,7 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)
在基于短语的翻译模型中,通常包含三类特征:短语翻译特征、调序特征、语言模型相关的特征。这些特征都需要从训练数据中学习。 在基于短语的翻译模型中,通常包含三类特征:短语翻译特征、调序特征、语言模型相关的特征。这些特征都需要从训练数据中学习。
\parinterval\ref{fig:7-8}展示了一个基于短语的机器翻译模型的搭建流程。其中的训练数据包括双语平行语料和目标语言单语语料。首先,需要从双语平行数据中学习短语的翻译,并形成一个短语翻译表;然后,再从双语平行数据中学习调序模型;最后,从目标语单语数据中学习语言模型。短语翻译表、调序模型、语言模型都会作为特征被送入判别模型,由解码器完成对新句子的翻译。而这些特征的权重可以在额外的开发集上进行调优。关于短语抽取、调序模型和翻译特征的学习,会在本章的\ref{section-7.3}-\ref{section-7.6}节进行介绍。 \parinterval\ref{fig:7-8}展示了一个基于短语的机器翻译模型的搭建流程。其中的训练数据包括双语平行语料和目标语言单语语料。首先,需要从双语平行数据中学习短语的翻译,并形成一个短语翻译表;然后,再从双语平行数据中学习调序模型;最后,从目标语单语数据中学习语言模型。短语翻译表、调序模型、语言模型都会作为特征被送入判别模型,由解码器完成对新句子的翻译。而这些特征的权重可以在额外的开发集上进行调优。关于短语抽取、调序模型和翻译特征的学习,会在本章的\ref{section-7.3}-\ref{section-7.6}节进行介绍。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -481,7 +481,7 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2) ...@@ -481,7 +481,7 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)
\parinterval 给定一个双语句对$(\seq{s},\seq{t})$$c(\bar{s})$表示短语$\bar{s}$$\seq{s}$中出现的次数,$c(\bar{s},\bar{t})$表示双语短语$(\bar{s},\bar{t})$$(\seq{s},\seq{t})$中被抽取出来的次数。对于一个包含多个句子的语料库,$c(\bar{s})$$c(\bar{s},\bar{t})$可以按句子进行累加。类似的,也可以用同样的方法,计算$\bar{t}$$\bar{s}$的翻译概率,即$\funp{P}(\bar{s}|\bar{t})$。一般会同时使用$\funp{P}(\bar{t}|\bar{s})$$\funp{P}(\bar{s}|\bar{t})$度量一个双语短语的好与坏。 \parinterval 给定一个双语句对$(\seq{s},\seq{t})$$c(\bar{s})$表示短语$\bar{s}$$\seq{s}$中出现的次数,$c(\bar{s},\bar{t})$表示双语短语$(\bar{s},\bar{t})$$(\seq{s},\seq{t})$中被抽取出来的次数。对于一个包含多个句子的语料库,$c(\bar{s})$$c(\bar{s},\bar{t})$可以按句子进行累加。类似的,也可以用同样的方法,计算$\bar{t}$$\bar{s}$的翻译概率,即$\funp{P}(\bar{s}|\bar{t})$。一般会同时使用$\funp{P}(\bar{t}|\bar{s})$$\funp{P}(\bar{s}|\bar{t})$度量一个双语短语的好与坏。
\parinterval 当遇到低频短语时,短语翻译概率的估计可能会不准确。例如,短语$\bar{s}$$\bar{t}$在语料中只出现了一次,且在一个句子中共现,那么$\bar{s}$$\bar{t}$的翻译概率为$\funp{P}(\bar{t}|\bar{s})=1$,这显然是不合理的,因为$\bar{s}$$\bar{t}$的出现完全可能是偶然事件。既然直接度量双语短语的好坏会面临数据稀疏问题,一个自然的想法就是把短语拆解成单词,利用双语短语中单词翻译的好坏间接度量双语短语的好坏。为了达到这个目的,可以使用{\small\bfnew{词汇化翻译概率}}\index{词汇化翻译概率}(Lexical Translation Probability)\index{Lexical Translation Probability}。前面借助词对齐信息完成了双语短语的抽取,可以看出,词对齐信息本身就包含了短语内部单词之间的对应关系。因此同样可以借助词对齐来计算词汇翻译概率,公式如下: \parinterval 当遇到低频短语时,短语翻译概率的估计可能会不准确。例如,短语$\bar{s}$$\bar{t}$在语料中只出现了一次,且在一个句子中共现,那么$\bar{s}$$\bar{t}$的翻译概率为$\funp{P}(\bar{t}|\bar{s})=1$,这显然是不合理的,因为$\bar{s}$$\bar{t}$的出现完全可能是偶然事件。既然直接度量双语短语的好坏会面临数据稀疏问题,一个自然的想法就是把短语拆解成单词,利用双语短语中单词翻译的好坏间接度量双语短语的好坏。为了达到这个目的,可以使用{\small\bfnew{词汇化翻译概率}}\index{单词化翻译概率}(Lexical Translation Probability)\index{Lexical Translation Probability}。前面借助词对齐信息完成了双语短语的抽取,可以看出,词对齐信息本身就包含了短语内部单词之间的对应关系。因此同样可以借助词对齐来计算词汇翻译概率,公式如下:
\begin{eqnarray} \begin{eqnarray}
\funp{P}_{\textrm{lex}}(\bar{t}|\bar{s}) & = & \prod_{j=1}^{|\bar{s}|} \frac{1}{|\{j|a(j,i) = 1\}|} \sum_{\forall(j,i):a(j,i) = 1} \sigma (t_i|s_j) \funp{P}_{\textrm{lex}}(\bar{t}|\bar{s}) & = & \prod_{j=1}^{|\bar{s}|} \frac{1}{|\{j|a(j,i) = 1\}|} \sum_{\forall(j,i):a(j,i) = 1} \sigma (t_i|s_j)
\label{eq:7-14} \label{eq:7-14}
...@@ -493,14 +493,14 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2) ...@@ -493,14 +493,14 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
\input{./Chapter7/Figures/figure-example-of-vocabulary-translation-probability} \input{./Chapter7/Figures/figure-example-of-vocabulary-translation-probability}
\caption{词汇翻译概率实例} \caption{单词翻译概率实例}
\label{fig:7-14} \label{fig:7-14}
\end{figure} \end{figure}
%------------------------------------------- %-------------------------------------------
\parinterval 来看一个具体的例子,如图\ref{fig:7-14}所示。对于一个双语短语,将它们的词对齐关系代入到公式\eqref{eq:7-14}就会得到短语的词汇翻译概率。对于词汇翻译概率,可以使用IBM 模型中的单词翻译表,也可以通过统计获得\upcite{koehn2002learning}。如果一个单词的词对齐为空,则用$N$表示它翻译为空的概率。和短语翻译概率一样,可以使用双向的词汇化翻译概率来评价双语短语的好坏。 \parinterval 来看一个具体的例子,如图\ref{fig:7-14}所示。对于一个双语短语,将它们的词对齐关系代入到公式\eqref{eq:7-14}就会得到短语的单词翻译概率。对于单词翻译概率,可以使用IBM 模型中的单词翻译表,也可以通过统计获得\upcite{koehn2002learning}。如果一个单词的词对齐为空,则用$N$表示它翻译为空的概率。和短语翻译概率一样,可以使用双向的单词化翻译概率来评价双语短语的好坏。
\parinterval 经过上面的介绍,可以从双语平行语料中把双语短语抽取出来,同时得到相应的翻译概率(即特征),组成{\small\bfnew{短语表}}\index{短语表}(Phrase Table)\index{Phrase Table}。图\ref{fig:7-15}展示了一个真实短语表的片段。其中包括源语言短语和目标语言短语,用|||进行分割。每个双语对应的得分,包括正向和反向的词汇翻译概率以及短语翻译概率,还包括词对齐信息(0-0、1-1)等其他信息。 \parinterval 经过上面的介绍,可以从双语平行语料中把双语短语抽取出来,同时得到相应的翻译概率(即特征),组成{\small\bfnew{短语表}}\index{短语表}(Phrase Table)\index{Phrase Table}。图\ref{fig:7-15}展示了一个真实短语表的片段。其中包括源语言短语和目标语言短语,用|||进行分割。每个双语对应的得分,包括正向和反向的单词翻译概率以及短语翻译概率,还包括词对齐信息(0-0、1-1)等其他信息。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -519,7 +519,7 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2) ...@@ -519,7 +519,7 @@ d & = & {(\bar{s}_{\bar{a}_1},\bar{t}_1)} \circ {(\bar{s}_{\bar{a}_2},\bar{t}_2)
\parinterval 尽管已经知道了如何将一个源语言短语翻译成目标语言短语,但是想要获得一个高质量的译文,仅有互译的双语短语是远远不够的。 \parinterval 尽管已经知道了如何将一个源语言短语翻译成目标语言短语,但是想要获得一个高质量的译文,仅有互译的双语短语是远远不够的。
\parinterval 如图\ref{fig:7-16}所示,按照从左到右的顺序对一个句子“在/桌子/上/的/苹果”进行翻译,得到的译文“on the table the apple”的语序是不对的。虽然可以使用$n$-gram语言模型对语序进行建模,但是此处仍然需要用更加准确的方式描述目标语短语间的次序。一般,把这个问题称为短语调序,或者简称{\small\bfnew{调序}}\index{调序}(Reordering)\index{Reordering}。通常,基于短语的调序模型会作为判别模型的特征参与到翻译过程中来。接下来,会介绍3 种不同的调序方法,分别是基于距离的调序、基于方向的调序(MSD模型)以及基于分类的调序。 \parinterval 如图\ref{fig:7-16}所示,按照从左到右的顺序对一个句子“在/桌子/上/的/苹果”进行翻译,得到的译文“on the table the apple”的语序是不对的。虽然可以使用$n$-gram语言模型对语序进行建模,但是此处仍然需要用更加准确的方式描述目标语短语间的次序。一般,把这个问题称为短语调序,或者简称{\small\bfnew{调序}}\index{调序}(Reordering)\index{Reordering}。通常,基于短语的调序模型会作为判别模型的特征参与到翻译过程中来。接下来,会介绍3 种不同的调序方法,分别是基于距离的调序、基于方向的调序(MSD模型)以及基于分类的调序。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -565,7 +565,7 @@ dr & = & {\rm{start}}_i-{\rm{end}}_{i-1}-1 ...@@ -565,7 +565,7 @@ dr & = & {\rm{start}}_i-{\rm{end}}_{i-1}-1
\subsection{基于方向的调序} \subsection{基于方向的调序}
\parinterval 基于方向的调序模型是另一种常用的调序模型。该模型是一种典型的词汇化调序模型,因此调序的结果会根据不同短语有所不同。简单来说,在两个短语目标语言端连续的情况下,该模型会判断两个双语短语在源语言端的调序情况,包含三种调序类型:顺序的单调翻译(M)、与前一个短语交换位置(S)、非连续翻译(D)。因此,这个模型也被称作MSD调序模型,也是Moses等经典的机器翻译系统所采用的调序模型\upcite{Koehn2007Moses} \parinterval 基于方向的调序模型是另一种常用的调序模型。该模型是一种典型的单词化调序模型,因此调序的结果会根据不同短语有所不同。简单来说,在两个短语目标语言端连续的情况下,该模型会判断两个双语短语在源语言端的调序情况,包含三种调序类型:顺序的单调翻译(M)、与前一个短语交换位置(S)、非连续翻译(D)。因此,这个模型也被称作MSD调序模型,也是Moses等经典的机器翻译系统所采用的调序模型\upcite{Koehn2007Moses}
\parinterval\ref{fig:7-18}展示了这三种调序类型,当两个短语对在源语言和目标语言中都是按顺序排列时,它们就是单调的(如:从左边数前两个短语);如果对应的短语顺序在目标语中是反过来的,属于交换调序(如:从左边数第三和第四个短语);如果两个短语之间还有其他的短语,就是非连续调序(如:从右边数的前两个短语)。 \parinterval\ref{fig:7-18}展示了这三种调序类型,当两个短语对在源语言和目标语言中都是按顺序排列时,它们就是单调的(如:从左边数前两个短语);如果对应的短语顺序在目标语中是反过来的,属于交换调序(如:从左边数第三和第四个短语);如果两个短语之间还有其他的短语,就是非连续调序(如:从右边数的前两个短语)。
...@@ -573,7 +573,7 @@ dr & = & {\rm{start}}_i-{\rm{end}}_{i-1}-1 ...@@ -573,7 +573,7 @@ dr & = & {\rm{start}}_i-{\rm{end}}_{i-1}-1
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
\input{./Chapter7/Figures/figure-three-types-of-reorder-method-in-msd} \input{./Chapter7/Figures/figure-three-types-of-reorder-method-in-msd}
\caption{词汇化调序模型的三种调序类型} \caption{单词化调序模型的三种调序类型}
\label{fig:7-18} \label{fig:7-18}
\end{figure} \end{figure}
%------------------------------------------- %-------------------------------------------
...@@ -621,13 +621,13 @@ dr & = & {\rm{start}}_i-{\rm{end}}_{i-1}-1 ...@@ -621,13 +621,13 @@ dr & = & {\rm{start}}_i-{\rm{end}}_{i-1}-1
\sectionnewpage \sectionnewpage
\section{翻译特征} \section{翻译特征}
\parinterval 基于短语的模型使用判别模型对翻译推导进行建模,给定双语句对$(\seq{s},\seq{t})$,每个翻译推导$d$都有一个模型得分,由$M$个特征线性加权得到,记为$\textrm{score}(d,\seq{t},\seq{s}) = \sum_{i=1}^{M} \lambda_i \cdot h_i (d,\seq{t},\seq{s})$,其中$\lambda_i$表示特征权重,$h_i (d,\seq{t},\seq{s})$表示特征函数(简记为$h_i (d)$)。这些特征包含刚刚介绍过的短语翻译概率、调序模型得分等,除此之外,还包含语言模型等其他特征,它们共同组成了特征集合。这里列出了基于短语的模型中的一些基础特征: \parinterval 基于短语的模型使用判别模型对翻译推导进行建模,给定双语句对$(\seq{s},\seq{t})$,每个翻译推导$d$都有一个模型得分,由$M$个特征线性加权得到,记为$\textrm{score}(d,\seq{t},\seq{s}) = \sum_{i=1}^{M} \lambda_i \cdot h_i (d,\seq{t},\seq{s})$,其中$\lambda_i$表示特征权重,$h_i (d,\seq{t},\seq{s})$表示特征函数(简记为$h_i (d)$)。这些特征包含刚刚介绍过的短语翻译概率、调序模型得分等,除此之外,还包含语言模型等其他特征,它们共同组成了特征集合。这里列出了基于短语的模型中的一些基础特征:
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item 短语翻译概率(取对数),包含正向翻译概率$\textrm{log}(\funp{P}(\bar{t}|\bar{s}))$和反向翻译概率$\textrm{log}(\funp{P}(\bar{s}$\\$|\bar{t}))$,它们是基于短语的模型中最主要的特征。 \item 短语翻译概率(取对数),包含正向翻译概率$\textrm{log}(\funp{P}(\bar{t}|\bar{s}))$和反向翻译概率$\textrm{log}(\funp{P}(\bar{s}$\\$|\bar{t}))$,它们是基于短语的模型中最主要的特征。
\vspace{0.5em} \vspace{0.5em}
\item 词汇化翻译概率(取对数),同样包含正向词汇化翻译概率$\textrm{log}(\funp{P}_{\textrm{lex}}(\bar{t}|\bar{s}))$和反向词汇化翻译概率$\textrm{log}(\funp{P}_{\textrm{lex}}(\bar{s}|\bar{t}))$,它们用来描述双语短语中单词间对应的好坏。 \item 单词化翻译概率(取对数),同样包含正向单词化翻译概率$\textrm{log}(\funp{P}_{\textrm{lex}}(\bar{t}|\bar{s}))$和反向单词化翻译概率$\textrm{log}(\funp{P}_{\textrm{lex}}(\bar{s}|\bar{t}))$,它们用来描述双语短语中单词间对应的好坏。
\item $n$-gram语言模型,用来度量译文的流畅程度,可以通过大规模目标端单语数据得到。 \item $n$-gram语言模型,用来度量译文的流畅程度,可以通过大规模目标端单语数据得到。
\vspace{0.5em} \vspace{0.5em}
\item 译文长度,避免模型倾向于短译文,同时让系统自动学习对译文长度的偏好。 \item 译文长度,避免模型倾向于短译文,同时让系统自动学习对译文长度的偏好。
...@@ -902,17 +902,17 @@ dr & = & {\rm{start}}_i-{\rm{end}}_{i-1}-1 ...@@ -902,17 +902,17 @@ dr & = & {\rm{start}}_i-{\rm{end}}_{i-1}-1
\parinterval 统计机器翻译模型是近三十年内自然语言处理的重要里程碑之一。其统计建模的思想长期影响着自然语言处理的研究。无论是前面介绍的基于单词的模型,还是本章介绍的基于短语的模型,甚至后面即将介绍的基于句法的模型,大家都在尝试回答:究竟应该用什么样的知识对机器翻译进行统计建模?不过,这个问题至今还没有确定的答案。但是,显而易见,统计机器翻译为机器翻译的研究提供了一种范式,即让计算机用概率化的 “知识” 描述翻译问题。这些 “ 知识” 体现在统计模型的结构和参数中,并且可以从大量的双语和单语数据中自动学习。这种建模思想在今天的机器翻译研究中仍然随处可见。 \parinterval 统计机器翻译模型是近三十年内自然语言处理的重要里程碑之一。其统计建模的思想长期影响着自然语言处理的研究。无论是前面介绍的基于单词的模型,还是本章介绍的基于短语的模型,甚至后面即将介绍的基于句法的模型,大家都在尝试回答:究竟应该用什么样的知识对机器翻译进行统计建模?不过,这个问题至今还没有确定的答案。但是,显而易见,统计机器翻译为机器翻译的研究提供了一种范式,即让计算机用概率化的 “知识” 描述翻译问题。这些 “ 知识” 体现在统计模型的结构和参数中,并且可以从大量的双语和单语数据中自动学习。这种建模思想在今天的机器翻译研究中仍然随处可见。
\parinterval 本章对统计机器翻译中的基于短语的模型进行了介绍。可以说,基于短语的模型是机器翻译中最成功的机器翻译模型之一。其结构简单,而且翻译速度快,因此也被大量应用于机器翻译产品及服务中。此外,包括判别模型、最小错误率训练、短语抽取等经典问题都是源自基于短语的模型。可是,基于短语的模型所涉及的非常丰富,很难通过一章的内容进行面面俱到的介绍。还有很多方向值得读者进一步了解: \parinterval 本章对统计机器翻译中的基于短语的模型进行了介绍。可以说,基于短语的模型是机器翻译中最成功的机器翻译模型之一。其结构简单,而且翻译速度快,因此也被大量应用于机器翻译产品及服务中。此外,包括判别模型、最小错误率训练、短语抽取等经典问题都是源自基于短语的模型。可是,基于短语的模型所涉及的非常丰富,很难通过一章的内容进行面面俱到的介绍。还有很多方向值得读者进一步了解:
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item 基于短语的机器翻译的想法很早就出现了,比如直接对把机器翻译看作基于短语的生成问题\upcite{DBLP:conf/acl/OchW98,DBLP:phd/dnb/Och02,och2004alignment},或者单独对短语翻译进行建模,之后集成到基于单词的模型中\upcite{DBLP:conf/acl/WangW98,DBLP:conf/acl/WatanabeSO03,DBLP:conf/acl/Marcu01}。现在,最通用的框架是Koehn等人提出的模型\upcite{koehn2003statistical},与其类似的还有Zens等人的工作\upcite{DBLP:conf/ki/ZensON02,DBLP:conf/naacl/ZensN04}。这类模型把短语翻译分解为短语学习问题和解码问题。因此,在随后相当长一段时间里,如何获取双语短语也是机器翻译领域的热点。比如,一些团队研究如何直接从双语句对中学习短语翻译,而不是通过简单的启发性规则进行短语抽取\upcite{DBLP:conf/emnlp/MarcuW02,DBLP:conf/wmt/DeNeroGZK06}。也有研究者对短语边界的建模进行研究,以获得更高质量的短语,同时减小模型大小\upcite{german2011bilingual,DBLP:conf/coling/BlackwoodGB08,DBLP:conf/naacl/XiongZL10} \item 基于短语的机器翻译的想法很早就出现了,比如直接对把机器翻译看作基于短语的生成问题\upcite{DBLP:conf/acl/OchW98,DBLP:phd/dnb/Och02,och2004alignment},或者单独对短语翻译进行建模,之后集成到基于单词的模型中\upcite{DBLP:conf/acl/WangW98,DBLP:conf/acl/WatanabeSO03,DBLP:conf/acl/Marcu01}。现在,最通用的框架是Koehn等人提出的模型\upcite{koehn2003statistical},与其类似的还有Zens等人的工作\upcite{DBLP:conf/ki/ZensON02,DBLP:conf/naacl/ZensN04}。这类模型把短语翻译分解为短语学习问题和解码问题。因此,在随后相当长一段时间里,如何获取双语短语也是机器翻译领域的热点。比如,一些团队研究如何直接从双语句对中学习短语翻译,而不是通过简单的启发性规则进行短语抽取\upcite{DBLP:conf/emnlp/MarcuW02,DBLP:conf/wmt/DeNeroGZK06}。也有研究者对短语边界的建模进行研究,以获得更高质量的短语,同时减小模型大小\upcite{german2011bilingual,DBLP:conf/coling/BlackwoodGB08,DBLP:conf/naacl/XiongZL10}
\vspace{0.5em} \vspace{0.5em}
\item 调序是基于短语的模型中经典的问题之一。早期的模型都是词汇化的调序模型,这类模型把调序定义为短语之间的相对位置建模问题\upcite{DBLP:conf/naacl/Tillman04,DBLP:conf/naacl/KumarB05,DBLP:conf/acl/NagataSYO06}。后来,也有一些工作使用判别式模型来集成更多的调序特征\upcite{xiong2006maximum,DBLP:conf/wmt/ZensN06,DBLP:conf/naacl/GreenGM10,DBLP:conf/naacl/Cherry13}。实际上,除了基于短语的模型,调序也在基于句法的模型中被广泛讨论。因此,一些工作尝试将基于短语的调序模型集成到基于句法的机器翻译系统中\upcite{DBLP:conf/wmt/HuckWRN13,matthias2012discriminative,vinh2009improving,xiong2006maximum}。此外,也有研究者对不同的调序模型进行了系统化的对比和分析,可以作为相关研究的参考\upcite{DBLP:journals/coling/BisazzaF16}。与在机器翻译系统中集成调序模型不同,预调序(Pre-ordering)也是一种解决调序问题的思路\upcite{DBLP:conf/coling/XiaM04,DBLP:conf/acl/CollinsKK05,DBLP:conf/emnlp/WangCK07,DBLP:conf/ijcnlp/WuSDTN11}。机器翻译中的预调序是指将输入的源语言句子按目标语言的顺序进行排列,这样在翻译中就尽可能减少调序操作。这种方法大多依赖源语言的句法树进行调序的建模,不过它与机器翻译系统的耦合很小,因此很容易进行系统集成。 \item 调序是基于短语的模型中经典的问题之一。早期的模型都是单词化的调序模型,这类模型把调序定义为短语之间的相对位置建模问题\upcite{DBLP:conf/naacl/Tillman04,DBLP:conf/naacl/KumarB05,DBLP:conf/acl/NagataSYO06}。后来,也有一些工作使用判别模型来集成更多的调序特征\upcite{xiong2006maximum,DBLP:conf/wmt/ZensN06,DBLP:conf/naacl/GreenGM10,DBLP:conf/naacl/Cherry13}。实际上,除了基于短语的模型,调序也在基于句法的模型中被广泛讨论。因此,一些工作尝试将基于短语的调序模型集成到基于句法的机器翻译系统中\upcite{DBLP:conf/wmt/HuckWRN13,matthias2012discriminative,vinh2009improving,xiong2006maximum}。此外,也有研究者对不同的调序模型进行了系统化的对比和分析,可以作为相关研究的参考\upcite{DBLP:journals/coling/BisazzaF16}。与在机器翻译系统中集成调序模型不同,预调序(Pre-ordering)也是一种解决调序问题的思路\upcite{DBLP:conf/coling/XiaM04,DBLP:conf/acl/CollinsKK05,DBLP:conf/emnlp/WangCK07,DBLP:conf/ijcnlp/WuSDTN11}。机器翻译中的预调序是指将输入的源语言句子按目标语言的顺序进行排列,这样在翻译中就尽可能减少调序操作。这种方法大多依赖源语言的句法树进行调序的建模,不过它与机器翻译系统的耦合很小,因此很容易进行系统集成。
\vspace{0.5em} \vspace{0.5em}
\item 统计机器翻译中使用的栈解码方法源自Tillmann等人的工作\upcite{tillmann1997a}。这种方法在Pharaoh\upcite{DBLP:conf/amta/Koehn04}、Moses\upcite{Koehn2007Moses}等开源系统中被成功的应用,在机器翻译领域产生了很大的影响力。特别是,这种解码方法效率很高,因此在许多工业系统里也大量使用。对于栈解码也有很多改进工作,比如,早期的工作考虑剪枝或者限制调序范围以加快解码速度\upcite{DBLP:conf/acl/WangW97,DBLP:conf/coling/TillmannN00,DBLP:conf/iwslt/ShenDA06a,robert2007faster}。随后,也有研究工作从解码算法和语言模型集成方式的角度对这类方法进行改进\upcite{DBLP:conf/acl/HeafieldKM14,DBLP:conf/acl/WuebkerNZ12,DBLP:conf/iwslt/ZensN08} \item 统计机器翻译中使用的栈解码方法源自Tillmann等人的工作\upcite{tillmann1997a}。这种方法在Pharaoh\upcite{DBLP:conf/amta/Koehn04}、Moses\upcite{Koehn2007Moses}等开源系统中被成功的应用,在机器翻译领域产生了很大的影响力。特别是,这种解码方法效率很高,因此在许多工业系统里也大量使用。对于栈解码也有很多改进工作,比如,早期的工作考虑剪枝或者限制调序范围以加快解码速度\upcite{DBLP:conf/acl/WangW97,DBLP:conf/coling/TillmannN00,DBLP:conf/iwslt/ShenDA06a,robert2007faster}。随后,也有研究工作从解码算法和语言模型集成方式的角度对这类方法进行改进\upcite{DBLP:conf/acl/HeafieldKM14,DBLP:conf/acl/WuebkerNZ12,DBLP:conf/iwslt/ZensN08}
\vspace{0.5em} \vspace{0.5em}
\item 统计机器翻译的成功很大程度上来自判别模型引入任意特征的能力。因此,在统计机器翻译时代,很多工作都集中在新特征的设计上。比如,可以基于不同的统计特征和先验知识设计翻译特征\upcite{och2004smorgasbord,Chiang200911,gildea2003loosely},也可以模仿分类任务设计大规模的稀疏特征\upcite{DBLP:conf/emnlp/ChiangMR08}。模型训练和特征权重调优也是统计机器翻译中的重要问题,除了最小错误率训练,还有很多方法,比如,最大似然估计\upcite{koehn2003statistical,DBLP:journals/coling/BrownPPM94}、判别式方法\upcite{Blunsom2008A}、贝叶斯方法\upcite{Blunsom2009A,Cohn2009A}、最小风险训练\upcite{smith2006minimum,li2009first}、基于Margin的方法\upcite{watanabe2007online,Chiang200911}以及基于排序模型的方法(PRO)\upcite{Hopkins2011Tuning,dreyer2015apro}。实际上,统计机器翻译的训练和解码也存在不一致的问题,比如,特征值由双语数据上的极大似然估计得到(没有剪枝),而解码时却使用束剪枝,而且模型的目标是最大化机器翻译评价指标。对于这个问题也可以通过调整训练的目标函数进行缓解\upcite{XiaoA,marcu2006practical} \item 统计机器翻译的成功很大程度上来自判别模型引入任意特征的能力。因此,在统计机器翻译时代,很多工作都集中在新特征的设计上。比如,可以基于不同的统计特征和先验知识设计翻译特征\upcite{och2004smorgasbord,Chiang200911,gildea2003loosely},也可以模仿分类任务设计大规模的稀疏特征\upcite{DBLP:conf/emnlp/ChiangMR08}。模型训练和特征权重调优也是统计机器翻译中的重要问题,除了最小错误率训练,还有很多方法,比如,最大似然估计\upcite{koehn2003statistical,DBLP:journals/coling/BrownPPM94}、判别式方法\upcite{Blunsom2008A}、贝叶斯方法\upcite{Blunsom2009A,Cohn2009A}、最小风险训练\upcite{smith2006minimum,li2009first}、基于Margin的方法\upcite{watanabe2007online,Chiang200911}以及基于排序模型的方法(PRO)\upcite{Hopkins2011Tuning,dreyer2015apro}。实际上,统计机器翻译的训练和解码也存在不一致的问题,比如,特征值由双语数据上的极大似然估计得到(没有剪枝),而解码时却使用束剪枝,而且模型的目标是最大化机器翻译评价指标。对于这个问题也可以通过调整训练的目标函数进行缓解\upcite{XiaoA,marcu2006practical}
\vspace{0.5em} \vspace{0.5em}
\item 短语表是基于短语的系统中的重要模块。但是,简单地利用基于频次的方法估计得到的翻译概率无法很好地处理低频短语。这时就需要对短语表进行平滑\upcite{DBLP:conf/iwslt/ZensN08,DBLP:conf/emnlp/SchwenkCF07,boxing2011unpacking,DBLP:conf/coling/DuanSZ10}。另一方面,随着数据量的增长和抽取短语长度的增大,短语表的体积会急剧膨胀,这也大大增加了系统的存储消耗,同时过大的短语表也会带来短语查询效率的下降。针对这个问题,很多工作尝试对短语表进行压缩。一种思路是限制短语的长度\upcite{DBLP:conf/naacl/QuirkM06,DBLP:journals/coling/MarinoBCGLFC06};另一种广泛使用的思路是使用一些指标或者分类器来对短语进行剪枝,其核心思想是判断每个短语的质量\upcite{DBLP:conf/emnlp/ZensSX12},并过滤掉低质量的短语。代表性的方法有:基于假设检验的剪枝\upcite{DBLP:conf/emnlp/JohnsonMFK07}、基于熵的剪枝\upcite{DBLP:conf/emnlp/LingGTB12}、两阶段短语抽取方法\upcite{DBLP:conf/naacl/ZettlemoyerM07}、基于解码中短语使用频率的方法\upcite{DBLP:conf/naacl/EckVW07}等。此外,短语表的存储方式也是在实际使用中需要考虑的问题。因此,也有研究者尝试使用更加紧凑、高效的结构保存短语表。其中最具代表性的结构是后缀数组(Suffix Arrays),这种结构可以充分利用短语之间有重叠的性质,减少了重复存储\upcite{DBLP:conf/acl/Callison-BurchBS05,DBLP:conf/acl/Callison-BurchBS05,DBLP:conf/naacl/ZensN07,2014Dynamic} \item 短语表是基于短语的系统中的重要模块。但是,简单地利用基于频次的方法估计得到的翻译概率无法很好地处理低频短语。这时就需要对短语表进行平滑\upcite{DBLP:conf/iwslt/ZensN08,DBLP:conf/emnlp/SchwenkCF07,boxing2011unpacking,DBLP:conf/coling/DuanSZ10}。另一方面,随着数据量的增长和抽取短语长度的增大,短语表的体积会急剧膨胀,这也大大增加了系统的存储消耗,同时过大的短语表也会带来短语查询效率的下降。针对这个问题,很多工作尝试对短语表进行压缩。一种思路是限制短语的长度\upcite{DBLP:conf/naacl/QuirkM06,DBLP:journals/coling/MarinoBCGLFC06};另一种广泛使用的思路是使用一些指标或者分类器来对短语进行剪枝,其核心思想是判断每个短语的质量\upcite{DBLP:conf/emnlp/ZensSX12},并过滤掉低质量的短语。代表性的方法有:基于假设检验的剪枝\upcite{DBLP:conf/emnlp/JohnsonMFK07}、基于熵的剪枝\upcite{DBLP:conf/emnlp/LingGTB12}、两阶段短语抽取方法\upcite{DBLP:conf/naacl/ZettlemoyerM07}、基于解码中短语使用频率的方法\upcite{DBLP:conf/naacl/EckVW07}等。此外,短语表的存储方式也是在实际使用中需要考虑的问题。因此,也有研究者尝试使用更加紧凑、高效的结构保存短语表。其中最具代表性的结构是后缀数组(Suffix Arrays),这种结构可以充分利用短语之间有重叠的性质,减少了重复存储\upcite{DBLP:conf/acl/Callison-BurchBS05,DBLP:conf/acl/Callison-BurchBS05,DBLP:conf/naacl/ZensN07,2014Dynamic}
\vspace{0.5em} \vspace{0.5em}
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
\node[scale=0.9,anchor=west,minimum size=18pt] (tw13) at ([yshift=0.1em,xshift=0.5em]tw12.east){worried}; \node[scale=0.9,anchor=west,minimum size=18pt] (tw13) at ([yshift=0.1em,xshift=0.5em]tw12.east){worried};
\node[scale=0.9,anchor=west,minimum size=18pt] (tw14) at ([xshift=0.5em]tw13.east){about}; \node[scale=0.9,anchor=west,minimum size=18pt] (tw14) at ([xshift=0.5em]tw13.east){about};
\node[scale=0.9,anchor=west,minimum size=18pt] (tw15) at ([xshift=0.5em]tw14.east){the}; \node[scale=0.9,anchor=west,minimum size=18pt] (tw15) at ([xshift=0.5em]tw14.east){the};
\node[scale=0.9,anchor=west,minimum size=18pt] (tw16) at ([yshift=-0.1em,xshift=0.5em]tw15.east){situation}; \node[scale=0.9,anchor=west,minimum size=18pt] (tw16) at ([xshift=0.5em]tw15.east){situation};
\draw[dashed] ([xshift=-0.3em]cfrag1.south) -- ([yshift=-0.3em]tw11.north); \draw[dashed] ([xshift=-0.3em]cfrag1.south) -- ([yshift=-0.3em]tw11.north);
\draw[dashed] (cfrag2.south) -- ([yshift=-0.4em]tw14.north); \draw[dashed] (cfrag2.south) -- ([yshift=-0.4em]tw14.north);
......
...@@ -245,7 +245,7 @@ r_3:\quad \funp{X}\ &\to\ &\langle \ \text{大幅度},\quad \textrm{drastically} ...@@ -245,7 +245,7 @@ r_3:\quad \funp{X}\ &\to\ &\langle \ \text{大幅度},\quad \textrm{drastically}
r_4:\quad \funp{X}\ &\to\ &\langle \ \text{},\quad \textrm{have}\ \rangle \nonumber r_4:\quad \funp{X}\ &\to\ &\langle \ \text{},\quad \textrm{have}\ \rangle \nonumber
\end{eqnarray} \end{eqnarray}
\noindent 其中,规则$r_1$$r_2$是含有变量的规则,这些变量可以被其他规则的右部替换;规则$r_2$是调序规则;规则$r_3$$r_4$是纯词汇化规则,表示单词或者短语的翻译。 \noindent 其中,规则$r_1$$r_2$是含有变量的规则,这些变量可以被其他规则的右部替换;规则$r_2$是调序规则;规则$r_3$$r_4$是纯单词化规则,表示单词或者短语的翻译。
\parinterval 对于一个双语句对: \parinterval 对于一个双语句对:
\begin{eqnarray} \begin{eqnarray}
...@@ -389,7 +389,7 @@ y&=&\beta_0 y_{\pi_1} ... \beta_{m-1} y_{\pi_m} \beta_m ...@@ -389,7 +389,7 @@ y&=&\beta_0 y_{\pi_1} ... \beta_{m-1} y_{\pi_m} \beta_m
\vspace{0.5em} \vspace{0.5em}
\item ($h_{1-2}$)短语翻译概率(取对数),即$\textrm{log}(\funp{P}(\alpha \mid \beta))$$\textrm{log}(\funp{P}(\beta \mid \alpha))$,特征的计算与基于短语的模型完全一样; \item ($h_{1-2}$)短语翻译概率(取对数),即$\textrm{log}(\funp{P}(\alpha \mid \beta))$$\textrm{log}(\funp{P}(\beta \mid \alpha))$,特征的计算与基于短语的模型完全一样;
\vspace{0.5em} \vspace{0.5em}
\item ($h_{3-4}$)词汇化翻译概率(取对数),即$\textrm{log}(\funp{P}_{\textrm{lex}}(\alpha \mid \beta))$$\textrm{log}(\funp{P}_{\textrm{lex}}(\beta \mid \alpha))$,特征的计算与基于短语的模型完全一样; \item ($h_{3-4}$)单词化翻译概率(取对数),即$\textrm{log}(\funp{P}_{\textrm{lex}}(\alpha \mid \beta))$$\textrm{log}(\funp{P}_{\textrm{lex}}(\beta \mid \alpha))$,特征的计算与基于短语的模型完全一样;
\vspace{0.5em} \vspace{0.5em}
\item ($h_{5}$)翻译规则数量,让模型自动学习对规则数量的偏好,同时避免使用过少规则造成分数偏高的现象; \item ($h_{5}$)翻译规则数量,让模型自动学习对规则数量的偏好,同时避免使用过少规则造成分数偏高的现象;
\vspace{0.5em} \vspace{0.5em}
...@@ -696,8 +696,8 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q ...@@ -696,8 +696,8 @@ span\textrm{[0,4]}&=&\textrm{“猫} \quad \textrm{喜欢} \quad \textrm{吃} \q
&都是基于串的解码方法 \\ &都是基于串的解码方法 \\
\rule{0pt}{15pt}基于森林 &(源语言)使用句法森林,这里森林只是对多个句法树的一 \\ \rule{0pt}{15pt}基于森林 &(源语言)使用句法森林,这里森林只是对多个句法树的一 \\
& 种压缩结构表示 \\ & 种压缩结构表示 \\
\rule{0pt}{15pt}词汇化规则 & 含有终结符的规则 \\ \rule{0pt}{15pt}单词化规则 & 含有终结符的规则 \\
\rule{0pt}{15pt}词汇规则 & 不含有终结符的规则 \\ \rule{0pt}{15pt}单词规则 & 不含有终结符的规则 \\
\rule{0pt}{15pt}句法软约束 & 不强制规则推导匹配语言学句法树,通常把句法信息作为特\\ \rule{0pt}{15pt}句法软约束 & 不强制规则推导匹配语言学句法树,通常把句法信息作为特\\
&征使用 \\ &征使用 \\
\rule{0pt}{15pt}句法硬约束 & 要求推导必须符合语言学句法树,不符合的推导会被过滤掉 \\ \rule{0pt}{15pt}句法硬约束 & 要求推导必须符合语言学句法树,不符合的推导会被过滤掉 \\
...@@ -1313,7 +1313,7 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex ...@@ -1313,7 +1313,7 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex
\subsection{句法翻译模型的特征} \subsection{句法翻译模型的特征}
\parinterval 基于语言学句法的翻译模型使用判别模型对翻译推导进行建模({\chapterseven}数学建模小节)。给定双语句对($\seq{s}$,$\seq{t}$),由$M$个特征经过线性加权,得到每个翻译推导$d$的得分,记为$\textrm{score(}d,\seq{t},\seq{s})=\sum_{i=1}^{M} \lambda_i \cdot h_{i}(d,\seq{t},\seq{s})$,其中$\lambda_i$表示特征权重,$h_{i}(d,\seq{t},\seq{s})$表示特征函数。翻译的目标就是要找到使$\textrm{score(}d,\seq{t},\seq{s})$达到最高的推导$d$ \parinterval 基于语言学句法的翻译模型使用判别模型对翻译推导进行建模({\chapterseven}数学建模小节)。给定双语句对($\seq{s}$,$\seq{t}$),由$M$个特征经过线性加权,得到每个翻译推导$d$的得分,记为$\textrm{score(}d,\seq{t},\seq{s})=\sum_{i=1}^{M} \lambda_i \cdot h_{i}(d,\seq{t},\seq{s})$,其中$\lambda_i$表示特征权重,$h_{i}(d,\seq{t},\seq{s})$表示特征函数。翻译的目标就是要找到使$\textrm{score(}d,\seq{t},\seq{s})$达到最高的推导$d$
\parinterval 这里,可以使用最小错误率训练对特征权重进行调优({\chapterseven}最小错误率训练小节)。而特征函数可参考如下定义: \parinterval 这里,可以使用最小错误率训练对特征权重进行调优({\chapterseven}最小错误率训练小节)。而特征函数可参考如下定义:
...@@ -1333,7 +1333,7 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex ...@@ -1333,7 +1333,7 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex
\end{eqnarray} \end{eqnarray}
\noindent 于是,可以定义短语翻译概率特征为$\log(\textrm{P(}\tau( \alpha_r )|\tau( \beta_r )))$$\log(\textrm{P(}\tau( \beta_r )|\tau( \alpha_r )))$。它们的计算方法与基于短语的系统是完全一样的\footnote[9]{对于树到串规则,$\tau( \beta_r )$就是规则目标语言端的符号串。} \noindent 于是,可以定义短语翻译概率特征为$\log(\textrm{P(}\tau( \alpha_r )|\tau( \beta_r )))$$\log(\textrm{P(}\tau( \beta_r )|\tau( \alpha_r )))$。它们的计算方法与基于短语的系统是完全一样的\footnote[9]{对于树到串规则,$\tau( \beta_r )$就是规则目标语言端的符号串。}
\vspace{0.5em} \vspace{0.5em}
\item ($h_{3-4}$) 词汇化翻译概率(取对数),即$\log(\funp{P}_{\textrm{lex}}(\tau( \alpha_r )|\tau( \beta_r )))$$\log(\funp{P}_{\textrm{lex}}(\tau( \beta_r )|\tau( \alpha_r )))$。这两个特征的计算方法与基于短语的系统也是一样的。 \item ($h_{3-4}$) 单词化翻译概率(取对数),即$\log(\funp{P}_{\textrm{lex}}(\tau( \alpha_r )|\tau( \beta_r )))$$\log(\funp{P}_{\textrm{lex}}(\tau( \beta_r )|\tau( \alpha_r )))$。这两个特征的计算方法与基于短语的系统也是一样的。
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
...@@ -1362,7 +1362,7 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex ...@@ -1362,7 +1362,7 @@ r_9: \quad \textrm{IP(}\textrm{NN}_1\ \textrm{VP}_2) \rightarrow \textrm{S(}\tex
\vspace{0.5em} \vspace{0.5em}
\item ($h_{11}$)组合规则的数量,学习对组合规则的偏好; \item ($h_{11}$)组合规则的数量,学习对组合规则的偏好;
\vspace{0.5em} \vspace{0.5em}
\item ($h_{12}$)词汇化规则的数量,学习对含有终结符规则的偏好; \item ($h_{12}$)单词化规则的数量,学习对含有终结符规则的偏好;
\vspace{0.5em} \vspace{0.5em}
\item ($h_{13}$)低频规则的数量,学习对训练数据中出现频次低于3的规则的偏好。低频规则大多不可靠,设计这个特征的目的也是为了区分不同质量的规则。 \item ($h_{13}$)低频规则的数量,学习对训练数据中出现频次低于3的规则的偏好。低频规则大多不可靠,设计这个特征的目的也是为了区分不同质量的规则。
\end{itemize} \end{itemize}
...@@ -1571,7 +1571,7 @@ d_1 & = & {d'} \circ {r_5} ...@@ -1571,7 +1571,7 @@ d_1 & = & {d'} \circ {r_5}
\parinterval 对于这个问题,有两种常用的解决办法: \parinterval 对于这个问题,有两种常用的解决办法:
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item 对文法进行限制。比如,可以限制规则中变量的数量;或者不允许连续的变量,这样的规则也被称作满足{\small\bfnew{词汇化标准形式}}\index{词汇化标准形式}(Lexicalized Norm Form)\index{Lexicalized Norm Form} (LNF)的规则。比如,层次短语规则就是LNF规则。由于LNF 中单词(终结符)可以作为锚点,因此规则匹配时所有变量的匹配范围是固定的; \item 对文法进行限制。比如,可以限制规则中变量的数量;或者不允许连续的变量,这样的规则也被称作满足{\small\bfnew{单词化标准形式}}\index{单词化标准形式}(Lexicalized Norm Form)\index{Lexicalized Norm Form} (LNF)的规则。比如,层次短语规则就是LNF规则。由于LNF 中单词(终结符)可以作为锚点,因此规则匹配时所有变量的匹配范围是固定的;
\vspace{0.5em} \vspace{0.5em}
\item 对规则进行二叉化,使用CKY方法进行分析。这个方法也是句法分析中常用的策略。所谓规则二叉化是把规则转化为最多只含两个变量或连续词串的规则(串到树规则)。比如,对于如下的规则: \item 对规则进行二叉化,使用CKY方法进行分析。这个方法也是句法分析中常用的策略。所谓规则二叉化是把规则转化为最多只含两个变量或连续词串的规则(串到树规则)。比如,对于如下的规则:
\begin{eqnarray} \begin{eqnarray}
......
...@@ -45,9 +45,9 @@ ...@@ -45,9 +45,9 @@
} }
\draw[decorate,thick,decoration={brace,mirror,raise=0.2em}] (0,-0.2) -- (2.95,-0.2); \draw[decorate,thick,decoration={brace,mirror,raise=0.2em}] (0,-0.2) -- (2.95,-0.2);
\draw[decorate,thick,decoration={brace,mirror,raise=0.2em}] (3.05,-0.2) -- (6,-0.2); \draw[decorate,thick,decoration={brace,mirror,raise=0.2em}] (3.05,-0.2) -- (6,-0.2);
\node [anchor=north] (subtensor1) at (1.5,-0.4) {\footnotesize{$3 \times 2$ 子张量}}; \node [anchor=north] (subtensor1) at (1.5,-0.4) {\footnotesize{$2 \times 3$ 子张量}};
\node [anchor=north] (subtensor1) at (4.5,-0.4) {\footnotesize{$3 \times 2$ 子张量}}; \node [anchor=north] (subtensor1) at (4.5,-0.4) {\footnotesize{$2 \times 3$ 子张量}};
\node [anchor=north] (labelc) at (3,-1.1) {\small{(c)1阶张量}}; \node [anchor=north] (labelc) at (3,-1.1) {\small{(c)3阶张量}};
\end{scope} \end{scope}
\end{tikzpicture} \end{tikzpicture}
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
\node [anchor=west] (flabel) at ([xshift=1in]y.east) {\footnotesize{Sigmoid:}}; \node [anchor=west] (flabel) at ([xshift=1in]y.east) {\footnotesize{Sigmoid:}};
\node [anchor=north east] (slabel) at ([xshift=0]flabel.south east) {\footnotesize{Sum:}}; \node [anchor=north east] (slabel) at ([xshift=0]flabel.south east) {\footnotesize{Sum:}};
\node [anchor=west,inner sep=2pt] (flabel2) at (flabel.east) {\footnotesize{$f(s_2)=1/(1+{\textrm e}^{-s_2})$}}; \node [anchor=west,inner sep=2pt] (flabel2) at (flabel.east) {\footnotesize{$f(s_2)=1/(1+{\textrm e}^{-s_2})$}};
\node [anchor=west,inner sep=2pt] (flabel3) at (slabel.east) {\footnotesize{$s_2=x_1 \cdot w_{12} + b$}}; \node [anchor=west,inner sep=2pt] (flabel3) at (slabel.east) {\footnotesize{$s_2=x_1 \cdot w_{12} + b_2$}};
\draw [->,thick,dotted] ([yshift=-0.3em,xshift=-0.1em]n11.60) .. controls +(east:1) and +(west:2) .. ([xshift=-0.2em]flabel.west) ; \draw [->,thick,dotted] ([yshift=-0.3em,xshift=-0.1em]n11.60) .. controls +(east:1) and +(west:2) .. ([xshift=-0.2em]flabel.west) ;
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
......
...@@ -465,7 +465,7 @@ l_p({\mathbi{x}}) & = & {\Vert{\mathbi{x}}\Vert}_p \nonumber \\ ...@@ -465,7 +465,7 @@ l_p({\mathbi{x}}) & = & {\Vert{\mathbi{x}}\Vert}_p \nonumber \\
\parinterval $ l_{\infty} $范数为向量的各个元素的最大绝对值: \parinterval $ l_{\infty} $范数为向量的各个元素的最大绝对值:
\begin{eqnarray} \begin{eqnarray}
{\Vert{\mathbi{x}}\Vert}_{\infty}&=&{\textrm{max}}\{x_1,x_2,\dots,x_n\} {\Vert{\mathbi{x}}\Vert}_{\infty}&=&{\textrm{max}}\{\vert x_1\vert,\vert x_2\vert,\dots,\vert x_n\vert\}
\label{eq:9-17} \label{eq:9-17}
\end{eqnarray} \end{eqnarray}
...@@ -912,13 +912,13 @@ x_1\cdot w_1+x_2\cdot w_2+x_3\cdot w_3 & = & 0\cdot 1+0\cdot 1+1\cdot 1 \nonumbe ...@@ -912,13 +912,13 @@ x_1\cdot w_1+x_2\cdot w_2+x_3\cdot w_3 & = & 0\cdot 1+0\cdot 1+1\cdot 1 \nonumbe
\parinterval 简单来说,张量是一种通用的工具,用于描述由多个数据构成的量。比如,输入的量有三个维度在变化,用矩阵不容易描述,但是用张量却很容易。 \parinterval 简单来说,张量是一种通用的工具,用于描述由多个数据构成的量。比如,输入的量有三个维度在变化,用矩阵不容易描述,但是用张量却很容易。
\parinterval 从计算机实现的角度来看,现在所有深度学习框架都把张量定义为“多维数组”。张量有一个非常重要的属性\ \dash \ {\small\bfnew{}}\index{}(Rank)\index{Rank}。可以将多维数组中“维”的属性与张量的“阶”的属性作类比,这两个属性都表示多维数组(张量)有多少个独立的方向。例如,3是一个标量,相当于一个0维数组或0阶张量;$ {(\begin{array}{cccc} 2 & -3 & 0.8 & 0.2\end{array})}^{\textrm T} $ 是一个向量,相当于一个1维数组或1阶张量;$ \begin{pmatrix} -1 & 3 & 7\\ 0.2 & 2 & 9\end{pmatrix} $是一个矩阵,相当于一个2维数组或2阶张量;如图\ref{fig:9-25}所示,这是一个3 维数组或3阶张量,其中,每个$4 \times 4$的方形代表一个2阶张量,这样的方形有4个,最终形成3阶张量。 \parinterval 从计算机实现的角度来看,现在所有深度学习框架都把张量定义为“多维数组”。张量有一个非常重要的属性\ \dash \ {\small\bfnew{}}\index{}(Rank)\index{Rank}。可以将多维数组中“维”的属性与张量的“阶”的属性作类比,这两个属性都表示多维数组(张量)有多少个独立的方向。例如,3是一个标量,相当于一个0维数组或0阶张量;$ {(\begin{array}{cccc} 2 & -3 & 0.8 & 0.2\end{array})}^{\textrm T} $ 是一个向量,相当于一个1维数组或1阶张量;$ \begin{pmatrix} -1 & 3 & 7\\ 0.2 & 2 & 9\end{pmatrix} $是一个矩阵,相当于一个2维数组或2阶张量;如图\ref{fig:9-25}所示,这是一个3维数组或3阶张量,其中,每个$3 \times 3$的方形代表一个2阶张量,这样的方形有4个,最终形成3阶张量。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
\input{./Chapter9/Figures/figure-tensor-sample} \input{./Chapter9/Figures/figure-tensor-sample}
\caption{3阶张量示例($4 \times 4 \times 4$} \caption{3阶张量示例($4 \times 3 \times 3$}
\label{fig:9-25} \label{fig:9-25}
\end{figure} \end{figure}
%------------------------------------------- %-------------------------------------------
...@@ -1159,8 +1159,8 @@ y&=&{\textrm{Sigmoid}}({\textrm{Tanh}}({\mathbi{x}}{\mathbi{W}}^{[1]}+{\mathbi{b ...@@ -1159,8 +1159,8 @@ y&=&{\textrm{Sigmoid}}({\textrm{Tanh}}({\mathbi{x}}{\mathbi{W}}^{[1]}+{\mathbi{b
\rule{0pt}{15pt} Logistic损失 & $ L={\textrm{log}}(1+{\mathbi{y}}^{[i]}\cdot {\hat{\mathbi{y}}}^{[i]}) $ & 回归 \\ \rule{0pt}{15pt} Logistic损失 & $ L={\textrm{log}}(1+{\mathbi{y}}^{[i]}\cdot {\hat{\mathbi{y}}}^{[i]}) $ & 回归 \\
\rule{0pt}{15pt} 平方损失 & $ L={({\mathbi{y}}^{[i]}-{\hat{\mathbi{y}}}^{[i]})}^2 $ & 回归 \\ \rule{0pt}{15pt} 平方损失 & $ L={({\mathbi{y}}^{[i]}-{\hat{\mathbi{y}}}^{[i]})}^2 $ & 回归 \\
\rule{0pt}{15pt} 指数损失 & $ L={\textrm{exp}}(-{\mathbi{y}}^{[i]}\cdot{\hat{\mathbi{y}}}^{[i]}) $ & AdaBoost \\ \rule{0pt}{15pt} 指数损失 & $ L={\textrm{exp}}(-{\mathbi{y}}^{[i]}\cdot{\hat{\mathbi{y}}}^{[i]}) $ & AdaBoost \\
\rule{0pt}{15pt} 交叉熵损失 & $ L=-\sum_{k}{\hat{\mathbi{y}}}^{[i]}_{k}{\textrm {log}} {\mathbi{y}}^{[i]}_{k} $ & 多分类 \\ \rule{0pt}{15pt} 交叉熵损失 & $ L=-\sum_{k}{{y}}^{[i]}_{k}{\textrm {log}}{\hat{{y}}}^{[i]}_{k}$ & 多分类 \\
\rule{0pt}{15pt} & 其中,${\mathbi{y}}^{[i]}_{k}$ 表示 ${\mathbi{y}}^{[i]}$的第$k$ \rule{0pt}{15pt} & 其中,${{y}}^{[i]}_{k}$ 表示 ${\mathbi{y}}^{[i]}$的第$k$
\end{tabular} \end{tabular}
\end{table} \end{table}
%-------------------------------------------------------------------- %--------------------------------------------------------------------
...@@ -1730,7 +1730,7 @@ z_t&=&\gamma z_{t-1}+(1-\gamma) \frac{\partial J}{\partial {\theta}_t} \cdot \f ...@@ -1730,7 +1730,7 @@ z_t&=&\gamma z_{t-1}+(1-\gamma) \frac{\partial J}{\partial {\theta}_t} \cdot \f
\end{itemize} \end{itemize}
\end{spacing} \end{spacing}
\parinterval 这个过程可以得到$ {\mathbi{s}}^K $节点处的梯度$ {\bm \pi}^K= \frac{\partial L}{\partial {\mathbi{s}}^K} $,在后续的过程中可以直接使用其作为前一层提供的梯度计算结果,而不需要从$ {\mathbi{h}}^K $节点处重新计算。这也体现了自动微分与符号微分的差别,对于计算图的每一个阶段,并不需要得到完的微分表达式,而是通过前一层提供的梯度,直接计算当前的梯度即可,这样避免了大量的重复计算。 \parinterval 这个过程可以得到$ {\mathbi{s}}^K $节点处的梯度$ {\bm \pi}^K= \frac{\partial L}{\partial {\mathbi{s}}^K} $,在后续的过程中可以直接使用其作为前一层提供的梯度计算结果,而不需要从$ {\mathbi{h}}^K $节点处重新计算。这也体现了自动微分与符号微分的差别,对于计算图的每一个阶段,并不需要得到完的微分表达式,而是通过前一层提供的梯度,直接计算当前的梯度即可,这样避免了大量的重复计算。
\parinterval 在得到$ {\bm \pi}^K= \frac{\partial L}{\partial {\mathbi{s}}^K} $之后,下一步的目标是:1)计算损失函数$ L $相对于第$ K-1 $层与输出层之间连接权重$ {\mathbi{W}}^K $的梯度;2)计算损失函数$ L $相对于神经网络第$ K-1 $层输出结果$ {\mathbi{h}}^{K-1} $的梯度。这部分内容如图\ref{fig:9-55}所示。 \parinterval 在得到$ {\bm \pi}^K= \frac{\partial L}{\partial {\mathbi{s}}^K} $之后,下一步的目标是:1)计算损失函数$ L $相对于第$ K-1 $层与输出层之间连接权重$ {\mathbi{W}}^K $的梯度;2)计算损失函数$ L $相对于神经网络第$ K-1 $层输出结果$ {\mathbi{h}}^{K-1} $的梯度。这部分内容如图\ref{fig:9-55}所示。
...@@ -1924,7 +1924,7 @@ z_t&=&\gamma z_{t-1}+(1-\gamma) \frac{\partial J}{\partial {\theta}_t} \cdot \f ...@@ -1924,7 +1924,7 @@ z_t&=&\gamma z_{t-1}+(1-\gamma) \frac{\partial J}{\partial {\theta}_t} \cdot \f
\subsubsection{3. 隐藏层和输出层} \subsubsection{3. 隐藏层和输出层}
\parinterval 把得到的$ {\mathbi{e}}_0 $$ {\mathbi{e}}_1 $$ {\mathbi{e}}_2 $三个向量级联在一起,经过两层网络,最后通过Softmax函数(橙色方框)得到输出,具体过程为: \parinterval 把得到的$ {\mathbi{e}}_1 $$ {\mathbi{e}}_2 $$ {\mathbi{e}}_3 $三个向量级联在一起,经过两层网络,最后通过Softmax函数(橙色方框)得到输出,具体过程为:
\begin{eqnarray} \begin{eqnarray}
{\mathbi{y}}&=&{\textrm{Softmax}}({\mathbi{h}}_0{\mathbi{U}})\label{eq:9-61}\\ {\mathbi{y}}&=&{\textrm{Softmax}}({\mathbi{h}}_0{\mathbi{U}})\label{eq:9-61}\\
{\mathbi{h}}_0&=&{\textrm{Tanh}}([{\mathbi{e}}_{i-3},{\mathbi{e}}_{i-2},{\mathbi{e}}_{i-1}]{\mathbi{H}}+{\mathbi{d}}) {\mathbi{h}}_0&=&{\textrm{Tanh}}([{\mathbi{e}}_{i-3},{\mathbi{e}}_{i-2},{\mathbi{e}}_{i-1}]{\mathbi{H}}+{\mathbi{d}})
......
...@@ -748,6 +748,20 @@ new ...@@ -748,6 +748,20 @@ new
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% chapter 3------------------------------------------------------ %%%%% chapter 3------------------------------------------------------
@book{新华字典,
title={新华字典(第11版)},
author={中国社会科学院语言研究所词典编辑室},
year={2011},
publisher={商务印书馆}
}
@book{国语辞典,
title={国语辞典},
author={中国大辞典编纂处},
year={2011},
publisher={商务印书馆国际有限公司}
}
@inproceedings{ng2002discriminative, @inproceedings{ng2002discriminative,
author = {Ng, Andrew Y and Jordan, Michael I}, author = {Ng, Andrew Y and Jordan, Michael I},
title = {On Discriminative vs. Generative Classifiers: {A} comparison of logistic title = {On Discriminative vs. Generative Classifiers: {A} comparison of logistic
...@@ -5402,8 +5416,7 @@ author = {Yoshua Bengio and ...@@ -5402,8 +5416,7 @@ author = {Yoshua Bengio and
@inproceedings{garcia-martinez2016factored, @inproceedings{garcia-martinez2016factored,
title={Factored Neural Machine Translation Architectures}, title={Factored Neural Machine Translation Architectures},
author={Mercedes {Garcia-Martinez} and Loïc {Barrault} and Fethi {Bougares}}, author={Mercedes {Garcia-Martinez} and Loïc {Barrault} and Fethi {Bougares}},
publisher={International Workshop on Spoken Language Translation (IWSLT'16)}, publisher={International Workshop on Spoken Language Translation},
notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2949810612},
year={2016} year={2016}
} }
@inproceedings{DBLP:conf/acl/Kudo18, @inproceedings{DBLP:conf/acl/Kudo18,
...@@ -5695,7 +5708,7 @@ author = {Yoshua Bengio and ...@@ -5695,7 +5708,7 @@ author = {Yoshua Bengio and
@inproceedings{britz2017effective, @inproceedings{britz2017effective,
title={Effective domain mixing for neural machine translation}, title={Effective domain mixing for neural machine translation},
author={Britz, Denny and Le, Quoc and Pryzant, Reid}, author={Britz, Denny and Le, Quoc and Pryzant, Reid},
publisher={Proceedings of the Second Conference on Machine Translation}, publisher={Annual Meeting of the Association for Computational Linguistics},
pages={118--126}, pages={118--126},
year={2017} year={2017}
} }
...@@ -5770,7 +5783,7 @@ author = {Yoshua Bengio and ...@@ -5770,7 +5783,7 @@ author = {Yoshua Bengio and
Wolfgang Menzel}, Wolfgang Menzel},
title = {Automatic Threshold Detection for Data Selection in Machine Translation}, title = {Automatic Threshold Detection for Data Selection in Machine Translation},
pages = {483--488}, pages = {483--488},
publisher = {Proceedings of the Second Conference on Machine Translation}, publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2017} year = {2017}
} }
@inproceedings{DBLP:conf/wmt/BiciciY11, @inproceedings{DBLP:conf/wmt/BiciciY11,
...@@ -5778,7 +5791,7 @@ author = {Yoshua Bengio and ...@@ -5778,7 +5791,7 @@ author = {Yoshua Bengio and
Deniz Yuret}, Deniz Yuret},
title = {Instance Selection for Machine Translation using Feature Decay Algorithms}, title = {Instance Selection for Machine Translation using Feature Decay Algorithms},
pages = {272--283}, pages = {272--283},
publisher = {Proceedings of the Sixth Workshop on Statistical Machine Translation}, publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2011} year = {2011}
} }
@inproceedings{poncelas2018feature, @inproceedings{poncelas2018feature,
...@@ -6047,7 +6060,7 @@ author = {Yoshua Bengio and ...@@ -6047,7 +6060,7 @@ author = {Yoshua Bengio and
@inproceedings{hoang2018iterative, @inproceedings{hoang2018iterative,
title={Iterative back-translation for neural machine translation}, title={Iterative back-translation for neural machine translation},
author={Hoang, Vu Cong Duy and Koehn, Philipp and Haffari, Gholamreza and Cohn, Trevor}, author={Hoang, Vu Cong Duy and Koehn, Philipp and Haffari, Gholamreza and Cohn, Trevor},
publisher={Proceedings of the 2nd Workshop on Neural Machine Translation and Generation}, publisher={Annual Meeting of the Association for Computational Linguistics},
pages={18--24}, pages={18--24},
year={2018} year={2018}
} }
...@@ -6257,7 +6270,7 @@ author = {Yoshua Bengio and ...@@ -6257,7 +6270,7 @@ author = {Yoshua Bengio and
Jingbo Zhu}, Jingbo Zhu},
title = {Dynamic Curriculum Learning for Low-Resource Neural Machine Translation}, title = {Dynamic Curriculum Learning for Low-Resource Neural Machine Translation},
pages = {3977--3989}, pages = {3977--3989},
publisher = {International Committee on Computational Linguistics}, publisher = {International Conference on Computational Linguistics},
year = {2020} year = {2020}
} }
@inproceedings{DBLP:conf/acl/ZhouYWWC20, @inproceedings{DBLP:conf/acl/ZhouYWWC20,
...@@ -6307,7 +6320,7 @@ author = {Yoshua Bengio and ...@@ -6307,7 +6320,7 @@ author = {Yoshua Bengio and
Andrew McCallum}, Andrew McCallum},
title = {Active Bias: Training More Accurate Neural Networks by Emphasizing title = {Active Bias: Training More Accurate Neural Networks by Emphasizing
High Variance Samples}, High Variance Samples},
publisher = {Annual Conference on Neural Information Processing Systems}, publisher = {Conference on Neural Information Processing Systems},
pages = {1002--1012}, pages = {1002--1012},
year = {2017} year = {2017}
} }
...@@ -6360,7 +6373,7 @@ author = {Yoshua Bengio and ...@@ -6360,7 +6373,7 @@ author = {Yoshua Bengio and
title = {Investigating Catastrophic Forgetting During Continual Training for title = {Investigating Catastrophic Forgetting During Continual Training for
Neural Machine Translation}, Neural Machine Translation},
pages = {4315--4326}, pages = {4315--4326},
publisher = {International Committee on Computational Linguistics}, publisher = {International Conference on Computational Linguistics},
year = {2020} year = {2020}
} }
@inproceedings{DBLP:conf/cvpr/RebuffiKSL17, @inproceedings{DBLP:conf/cvpr/RebuffiKSL17,
...@@ -6392,7 +6405,7 @@ author = {Yoshua Bengio and ...@@ -6392,7 +6405,7 @@ author = {Yoshua Bengio and
Oriol Vinyals and Oriol Vinyals and
Navdeep Jaitly and Navdeep Jaitly and
Noam Shazeer}, Noam Shazeer},
publisher = {Annual Conference on Neural Information Processing Systems}, publisher = {Conference on Neural Information Processing Systems},
pages = {1171--1179}, pages = {1171--1179},
year = {2015} year = {2015}
} }
...@@ -6835,7 +6848,7 @@ author = {Yoshua Bengio and ...@@ -6835,7 +6848,7 @@ author = {Yoshua Bengio and
@inproceedings{Gu2019LevenshteinT, @inproceedings{Gu2019LevenshteinT,
title={Levenshtein Transformer}, title={Levenshtein Transformer},
author={Jiatao Gu and Changhan Wang and Jake Zhao}, author={Jiatao Gu and Changhan Wang and Jake Zhao},
publisher = {Annual Conference on Neural Information Processing Systems}, publisher = {Conference on Neural Information Processing Systems},
pages = {11179--11189}, pages = {11179--11189},
year = {2019}, year = {2019},
} }
...@@ -6963,7 +6976,7 @@ author = {Yoshua Bengio and ...@@ -6963,7 +6976,7 @@ author = {Yoshua Bengio and
@inproceedings{Jiang2012LearnedPF, @inproceedings{Jiang2012LearnedPF,
title={Learned Prioritization for Trading Off Accuracy and Speed}, title={Learned Prioritization for Trading Off Accuracy and Speed},
author={Jiarong Jiang and Adam R. Teichert and Hal Daum{\'e} and Jason Eisner}, author={Jiarong Jiang and Adam R. Teichert and Hal Daum{\'e} and Jason Eisner},
publisher={Annual Conference on Neural Information Processing Systems}, publisher={Conference on Neural Information Processing Systems},
pages={1340--1348}, pages={1340--1348},
year= {2012} year= {2012}
} }
...@@ -7123,7 +7136,7 @@ author = {Yoshua Bengio and ...@@ -7123,7 +7136,7 @@ author = {Yoshua Bengio and
author = {Paul Michel and author = {Paul Michel and
Omer Levy and Omer Levy and
Graham Neubig}, Graham Neubig},
publisher = {Annual Conference on Neural Information Processing Systems}, publisher = {Conference on Neural Information Processing Systems},
pages = {14014--14024}, pages = {14014--14024},
year = {2019} year = {2019}
} }
...@@ -7157,7 +7170,7 @@ author = {Yoshua Bengio and ...@@ -7157,7 +7170,7 @@ author = {Yoshua Bengio and
title={Generative Neural Machine Translation}, title={Generative Neural Machine Translation},
author={Harshil Shah and author={Harshil Shah and
David Barber}, David Barber},
publisher={Annual Conference on Neural Information Processing Systems}, publisher={Conference on Neural Information Processing Systems},
pages={1353--1362}, pages={1353--1362},
year={2018} year={2018}
} }
...@@ -7246,7 +7259,7 @@ author = {Yoshua Bengio and ...@@ -7246,7 +7259,7 @@ author = {Yoshua Bengio and
Jeff Pool and Jeff Pool and
John Tran and John Tran and
William J. Dally}, William J. Dally},
publisher={Annual Conference on Neural Information Processing Systems}, publisher={Conference on Neural Information Processing Systems},
pages={1135--1143}, pages={1135--1143},
year={2015} year={2015}
} }
...@@ -7281,9 +7294,8 @@ author = {Yoshua Bengio and ...@@ -7281,9 +7294,8 @@ author = {Yoshua Bengio and
Tinghui Zhou and Tinghui Zhou and
Gao Huang and Gao Huang and
Trevor Darrell}, Trevor Darrell},
publisher={ArXiv}, publisher={International Conference on Learning Representations},
year={2019}, year={2019}
volume={abs/1810.05270}
} }
@inproceedings{Liu2017LearningEC, @inproceedings{Liu2017LearningEC,
author = {Zhuang Liu and author = {Zhuang Liu and
...@@ -7341,8 +7353,8 @@ author = {Zhuang Liu and ...@@ -7341,8 +7353,8 @@ author = {Zhuang Liu and
Luke Zettlemoyer and Luke Zettlemoyer and
Omer Levy}, Omer Levy},
title = {Aligned Cross Entropy for Non-Autoregressive Machine Translation}, title = {Aligned Cross Entropy for Non-Autoregressive Machine Translation},
publisher = {CoRR}, publisher = { International Conference on Machine Learning},
volume = {abs/2004.01655}, volume = {119},
year = {2020}, year = {2020},
} }
@inproceedings{Shao2020MinimizingTB, @inproceedings{Shao2020MinimizingTB,
...@@ -7394,9 +7406,8 @@ author = {Zhuang Liu and ...@@ -7394,9 +7406,8 @@ author = {Zhuang Liu and
@inproceedings{Zhou2020UnderstandingKD, @inproceedings{Zhou2020UnderstandingKD,
title={Understanding Knowledge Distillation in Non-autoregressive Machine Translation}, title={Understanding Knowledge Distillation in Non-autoregressive Machine Translation},
author={Chunting Zhou and Graham Neubig and Jiatao Gu}, author={Chunting Zhou and Graham Neubig and Jiatao Gu},
publisher={ArXiv}, publisher={International Conference on Learning Representations},
year={2020}, year={2020}
volume={abs/1911.02727}
} }
@inproceedings{Wang2019NonAutoregressiveMT, @inproceedings{Wang2019NonAutoregressiveMT,
title={Non-Autoregressive Machine Translation with Auxiliary Regularization}, title={Non-Autoregressive Machine Translation with Auxiliary Regularization},
...@@ -7417,6 +7428,15 @@ author = {Zhuang Liu and ...@@ -7417,6 +7428,15 @@ author = {Zhuang Liu and
pages={2395--2404}, pages={2395--2404},
year={2018} year={2018}
} }
@inproceedings{DBLP:conf/nips/SternSU18,
author = {Mitchell Stern and
Noam Shazeer and
Jakob Uszkoreit},
title = {Blockwise Parallel Decoding for Deep Autoregressive Models},
publisher = {Annual Conference on Neural Information Processing Systems 2018},
pages = {10107--10116},
year = {2018},
}
@inproceedings{Tu2020ENGINEEI, @inproceedings{Tu2020ENGINEEI,
title={ENGINE: Energy-Based Inference Networks for Non-Autoregressive Machine Translation}, title={ENGINE: Energy-Based Inference Networks for Non-Autoregressive Machine Translation},
author={Lifu Tu and Richard Yuanzhe Pang and Sam Wiseman and Kevin Gimpel}, author={Lifu Tu and Richard Yuanzhe Pang and Sam Wiseman and Kevin Gimpel},
...@@ -7456,16 +7476,16 @@ author = {Zhuang Liu and ...@@ -7456,16 +7476,16 @@ author = {Zhuang Liu and
@inproceedings{Ho2016GenerativeAI, @inproceedings{Ho2016GenerativeAI,
title={Generative Adversarial Imitation Learning}, title={Generative Adversarial Imitation Learning},
author={Jonathan Ho and Stefano Ermon}, author={Jonathan Ho and Stefano Ermon},
publisher={Annual Conference on Neural Information Processing Systems}, publisher={Conference on Neural Information Processing Systems},
pages={4565--4573}, pages={4565--4573},
year={2016} year={2016}
} }
@inproceedings{Duan2017OneShotIL, @inproceedings{Duan2017OneShotIL,
title={One-Shot Imitation Learning}, title={One-Shot Imitation Learning},
author={Yan Duan and Marcin Andrychowicz and Bradly C. Stadie and Jonathan Ho and Jonas Schneider and Ilya Sutskever and Pieter Abbeel and Wojciech Zaremba}, author={Yan Duan and Marcin Andrychowicz and Bradly C. Stadie and Jonathan Ho and Jonas Schneider and Ilya Sutskever and Pieter Abbeel and Wojciech Zaremba},
publisher={CoRR}, publisher={Conference on Neural Information Processing Systems},
year={2017}, year={2017},
volume={abs/1703.07326} pages= {1087--1098}
} }
@inproceedings{Wang2018SemiAutoregressiveNM, @inproceedings{Wang2018SemiAutoregressiveNM,
title={Semi-Autoregressive Neural Machine Translation}, title={Semi-Autoregressive Neural Machine Translation},
...@@ -7486,7 +7506,7 @@ author = {Zhuang Liu and ...@@ -7486,7 +7506,7 @@ author = {Zhuang Liu and
@inproceedings{Kasai2020NonAutoregressiveMT, @inproceedings{Kasai2020NonAutoregressiveMT,
title={Non-Autoregressive Machine Translation with Disentangled Context Transformer}, title={Non-Autoregressive Machine Translation with Disentangled Context Transformer},
author={Jungo Kasai and J. Cross and Marjan Ghazvininejad and Jiatao Gu}, author={Jungo Kasai and J. Cross and Marjan Ghazvininejad and Jiatao Gu},
publisher={arXiv: Computation and Language}, publisher={International Conference on Machine Learning},
year={2020} year={2020}
} }
@inproceedings{Zhou2019SynchronousBN, @inproceedings{Zhou2019SynchronousBN,
...@@ -7517,7 +7537,7 @@ author = {Zhuang Liu and ...@@ -7517,7 +7537,7 @@ author = {Zhuang Liu and
@inproceedings{Xiao2016ALA, @inproceedings{Xiao2016ALA,
title={A Loss-Augmented Approach to Training Syntactic Machine Translation Systems}, title={A Loss-Augmented Approach to Training Syntactic Machine Translation Systems},
author={Tong Xiao and Derek F. Wong and Jingbo Zhu}, author={Tong Xiao and Derek F. Wong and Jingbo Zhu},
publisher={IEEE/ACM Transactions on Audio, Speech, and Language Processing}, publisher={IEEE Transactions on Audio, Speech, and Language Processing},
year={2016}, year={2016},
volume={24}, volume={24},
pages={2069-2083} pages={2069-2083}
...@@ -7571,7 +7591,7 @@ author = {Zhuang Liu and ...@@ -7571,7 +7591,7 @@ author = {Zhuang Liu and
Ran El-Yaniv and Ran El-Yaniv and
Yoshua Bengio}, Yoshua Bengio},
title = {Binarized Neural Networks}, title = {Binarized Neural Networks},
publisher = {Annual Conference on Neural Information Processing Systems}, publisher = {Conference on Neural Information Processing Systems},
pages = {4107--4115}, pages = {4107--4115},
year = {2016} year = {2016}
} }
...@@ -7702,7 +7722,7 @@ author = {Zhuang Liu and ...@@ -7702,7 +7722,7 @@ author = {Zhuang Liu and
author = {Alexei Baevski and author = {Alexei Baevski and
Michael Auli}, Michael Auli},
title = {Adaptive Input Representations for Neural Language Modeling}, title = {Adaptive Input Representations for Neural Language Modeling},
publisher = {arXiv preprint arXiv:1809.10853}, publisher = {International Conference on Learning Representations},
year = {2019} year = {2019}
} }
@inproceedings{DBLP:journals/corr/abs-2006-04768, @inproceedings{DBLP:journals/corr/abs-2006-04768,
...@@ -7736,8 +7756,7 @@ author = {Zhuang Liu and ...@@ -7736,8 +7756,7 @@ author = {Zhuang Liu and
Dawei Song and Dawei Song and
Ming Zhou}, Ming Zhou},
title = {A Tensorized Transformer for Language Modeling}, title = {A Tensorized Transformer for Language Modeling},
publisher = {CoRR}, publisher = {Conference on Neural Information Processing Systems},
volume = {abs/1906.09777},
year = {2019} year = {2019}
} }
@inproceedings{DBLP:conf/nips/YangLSL19, @inproceedings{DBLP:conf/nips/YangLSL19,
...@@ -7816,7 +7835,7 @@ author = {Zhuang Liu and ...@@ -7816,7 +7835,7 @@ author = {Zhuang Liu and
Zhongjun He and Zhongjun He and
Hua Wu and Hua Wu and
Haifeng Wang}, Haifeng Wang},
publisher={arXiv preprint arXiv:1909.01101}, publisher={Conference on Empirical Methods in Natural Language Processing},
year={2019} year={2019}
} }
@inproceedings{DBLP:conf/aclnmt/KoehnK17, @inproceedings{DBLP:conf/aclnmt/KoehnK17,
...@@ -7876,7 +7895,7 @@ author = {Zhuang Liu and ...@@ -7876,7 +7895,7 @@ author = {Zhuang Liu and
@inproceedings{Eisner2011LearningST, @inproceedings{Eisner2011LearningST,
title={Learning Speed-Accuracy Tradeoffs in Nondeterministic Inference Algorithms}, title={Learning Speed-Accuracy Tradeoffs in Nondeterministic Inference Algorithms},
author={J. Eisner and Hal Daum{\'e}}, author={J. Eisner and Hal Daum{\'e}},
publisher={Annual Conference on Neural Information Processing Systems}, publisher={Conference on Neural Information Processing Systems},
year={2011} year={2011}
} }
@inproceedings{Kazimi2017CoverageFC, @inproceedings{Kazimi2017CoverageFC,
...@@ -8929,7 +8948,7 @@ author = {Zhuang Liu and ...@@ -8929,7 +8948,7 @@ author = {Zhuang Liu and
Jesse Bettencourt and Jesse Bettencourt and
David Duvenaud}, David Duvenaud},
title = {Neural Ordinary Differential Equations}, title = {Neural Ordinary Differential Equations},
publisher = {Annual Conference on Neural Information Processing Systems}, publisher = {Conference on Neural Information Processing Systems},
pages = {6572--6583}, pages = {6572--6583},
year = {2018} year = {2018}
} }
...@@ -9189,7 +9208,7 @@ author = {Zhuang Liu and ...@@ -9189,7 +9208,7 @@ author = {Zhuang Liu and
Michael Wilber and Michael Wilber and
Serge Belongie}, Serge Belongie},
title = {Residual Networks Behave Like Ensembles of Relatively Shallow Networks}, title = {Residual Networks Behave Like Ensembles of Relatively Shallow Networks},
publisher = {Annual Conference on Neural Information Processing Systems}, publisher = {Conference on Neural Information Processing Systems},
pages = {550--558}, pages = {550--558},
year = {2016} year = {2016}
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论