Commit ae8ddd39 by 曹润柘

合并分支 'caorunzhe' 到 'master'

Caorunzhe

查看合并请求 !1071
parents badf7cdd 8c3e7531
......@@ -20,7 +20,7 @@
\node [modelnode,anchor=north,minimum height=1.7em,minimum width=8em] (t4) at ([yshift=-1.5em]t3.south) {{ \small{目标语句法生成}}};
\node [datanode,anchor=north,minimum height=1.7em,minimum width=8em] (t5) at ([yshift=-1.5em]t4.south) {{ \small{译文结构}}};
\node [decodingnode,anchor=west,minimum height=1.7em,minimum width=13em,inner sep=3pt] (st1) at ([xshift=3.5em,yshift=0.85em]s5.east) {{ \small{源语-目标语词汇转换}}};
\node [decodingnode,anchor=west,minimum height=1.7em,minimum width=13em,inner sep=3pt] (st1) at ([xshift=3.5em,yshift=0.85em]s5.east) {{ \small{源语-目标语单词转换}}};
\node [decodingnode,anchor=north,minimum height=1.7em,minimum width=13em,inner sep=3pt] (st2) at ([yshift=0.05em]st1.south) {{ \small{源语-目标语结构转换}}};
\draw [->,very thick] (s1.south) -- (s2.north);
......
......@@ -46,7 +46,7 @@
\parinterval 一直以来,文字的翻译往往是由人完成。让计算机像人一样进行翻译似乎还是电影中的桥段,因为很难想象语言的多样性和复杂性可以用计算机语言进行描述。但是时至今日,人工智能技术的发展已经大大超越了人类传统的认知,用计算机进行自动翻译也不再是一种梦想,它已经深入到人们生活的很多方面,并发挥着重要作用。而这种由计算机进行自动翻译的过程也被称作{\small\bfnew{机器翻译}}\index{机器翻译}(Machine Translation)\index{Machine Translation}。类似地,自动翻译、智能翻译、多语言自动转换等概念也是指同样的事情。如果将今天的机器翻译和人工翻译进行对比,可以发现机器翻译系统所生成的译文还不够完美,甚至有时翻译质量非常差,但是它的生成速度快且成本低廉,更为重要的是机器翻译系统可以从大量数据中不断学习和进化。
\parinterval 人工翻译尽管精度很高,但是费时费力。当需要翻译大量的文本且精度要求不那么高时,比如海量数据的浏览型任务,机器翻译的优势就体现出来了。对于人工作业无法完成的事情,使用机器翻译可能只需花费几个小时甚至几分钟就能完成。这就类似于拿着锄头耕地种庄稼和使用现代化机器作业之间的区别。
\parinterval 人工翻译尽管精度很高,但是费时费力。当需要翻译大量的文本且精度要求不那么高时,比如海量数据的浏览型任务,机器翻译的优势就体现出来了。对于那些使用人工翻译无法完成的事情,使用机器翻译可能只需花费几个小时甚至几分钟就能完成。这就类似于拿着锄头耕地种庄稼和使用现代化机器作业之间的区别。
\parinterval 实现机器翻译往往需要多个学科知识的融合,如数学、语言学、计算机科学、心理学等等。而最终呈现给使用者的是一套软件系统\ \dash\ 机器翻译系统。通俗来讲,机器翻译系统就是一个可以在计算机上运行的软件工具,与人们使用的其他软件一样,只不过机器翻译系统是由“不可见的程序”组成。虽然这个系统非常复杂,但是呈现出来的形式却很简单,比如输入是待翻译的句子或文本,输出是译文句子或文本。
......@@ -71,7 +71,7 @@
\vspace{0.5em}
\end{itemize}
\parinterval 构建一个强大的机器翻译系统需要“资源”和“系统”两方面共同作用。在资源方面,随着语料库语言学的发展,已经有大量的高质量的双语和单语数据(称为语料)被整理并且被电子化存储,因此可以说具备了研发机器翻译系统所需要的语料基础。特别是像英语、汉语等世界主流语种,相关语料资源已经非常丰富,这也大大加速了相关研究的进展。当然,对于一些稀缺资源语种或者特殊的领域,语料库中的语料仍然匮乏,但是这些并不影响机器翻译领域整体的发展速度。因此在现有语料库的基础上,很多研究者把精力集中在“系统”研发上。
\parinterval 构建一个强大的机器翻译系统需要“资源”和“系统”两方面共同作用。在资源方面,随着语料库语言学的发展,已经有大量的高质量的双语和单语数据(称为语料)被整理并且被数字化存储,因此可以说具备了研发机器翻译系统所需要的语料基础。特别是像英语、汉语等世界主流语种,相关语料资源已经非常丰富,这也大大加速了相关研究的进展。当然,对于一些稀缺资源语种或者特殊的领域,语料库中的语料仍然匮乏,但是这些并不影响机器翻译领域整体的发展速度。因此在现有语料库的基础上,很多研究者把精力集中在“系统”研发上。
%----------------------------------------------------------------------------------------
% NEW SECTION
......@@ -125,7 +125,7 @@
\subsection{机器翻译的受挫}
\parinterval 随着电子计算机的发展,研究者开始尝试使用计算机来进行自动翻译。1954年,美国乔治敦大学在IBM公司支持下,启动了第一次真正的机器翻译实验。翻译的目标是将几个简单的俄语句子翻译成为英语,翻译系统包含6条翻译规则和250词汇。这次翻译实验中测试了50个化学文本句子,取得了初步成功。在某种意义上来说,这个实验显示了采用基于词典和翻译规则的方法可以实现机器翻译过程。虽然只是取得了初步成功,但却引起了苏联、英国和日本研究机构的机器翻译研究热,大大推动了早期机器翻译的研究进展。
\parinterval 随着电子计算机的发展,研究者开始尝试使用计算机来进行自动翻译。1954年,美国乔治敦大学在IBM公司支持下,启动了第一次真正的机器翻译实验。翻译的目标是将几个简单的俄语句子翻译成为英语,翻译系统包含6条翻译规则和250个单词。这次翻译实验中测试了50个化学文本句子,取得了初步成功。在某种意义上来说,这个实验显示了采用基于词典和翻译规则的方法可以实现机器翻译过程。虽然只是取得了初步成功,但却引起了苏联、英国和日本研究机构的机器翻译研究热,大大推动了早期机器翻译的研究进展。
\parinterval 1957年,Noam Chomsky在\emph{Syntactic Structures}中描述了转换生成语法\upcite{chomsky1957syntactic},并使用数学方法来研究自然语言,建立了包括上下文有关语法、上下文无关语法等4种类型的语法。这些工作最终为今天计算机中广泛使用的“形式语言”奠定了基础。而他的思想也深深地影响了同时期的语言学和自然语言处理领域的学者。特别的是,早期基于规则的机器翻译中也大量使用了这些思想。
......@@ -229,7 +229,7 @@
\begin{itemize}
\vspace{0.5em}
\item {\small\bfnew{自然语言翻译问题的复杂性极高}}语言是人类进化的最高成就之一,自然语言具有高度的概括性、灵活性、多样性,这些都很难用几个简单的模型和算法进行描述。因此,翻译问题的数学建模和计算机程序实现难度很大。虽然近几年AlphaGo等人工智能系统在围棋等领域取得了令人瞩目的成绩,但是,相比翻译来说,围棋等棋类任务仍然“简单”。正如不同人对同一句话的理解不尽相同,一个句子往往不存在绝对的标准译文,其潜在的译文几乎是不可穷尽的。甚至人类译员在翻译一个句子、一个单词的时候,都要考虑整个篇章的上下文语境。这些难点都不是传统棋类任务所具有的。
\item {\small\bfnew{自然语言翻译问题的复杂性极高}}。自然语言具有高度的概括性、灵活性、多样性,这些都很难用几个简单的模型和算法进行描述。因此,翻译问题的数学建模和计算机程序实现难度很大。虽然近几年AlphaGo等人工智能系统在围棋等领域取得了令人瞩目的成绩,但是,相比翻译来说,围棋等棋类任务仍然“简单”。正如不同人对同一句话的理解不尽相同,一个句子往往不存在绝对的标准译文,其潜在的译文几乎是不可穷尽的。甚至人类译员在翻译一个句子、一个单词的时候,都要考虑整个篇章的上下文语境。这些难点都不是传统棋类任务所具有的。
\vspace{0.5em}
\item {\small\bfnew{计算机的“理解”与人类的“理解”存在鸿沟}}。人类一直希望把自己翻译时所使用的知识描述出来,并用计算机程序进行实现,例如早期基于规则的机器翻译方法就源自这个思想。但是,经过实践发现,人和计算机在“理解”自然语言上存在着明显差异。首先,人类的语言能力是经过长时间在多种外部环境因素共同作用下形成的,这种能力很难用计算机准确地刻画。况且人类的语言知识本身就很难描述,更不用说让计算机来理解;其次,人和机器翻译系统理解语言的目的不一样。人理解和使用语言是为了进行生活和工作,而机器翻译系统更多的是为了对某些数学上定义的目标函数进行优化。也就是说,机器翻译系统关注的是翻译这个单一目标,而并不是像人一样进行复杂的活动;此外,人和计算机的运行方式有着本质区别。人类语言能力的生物学机理与机器翻译系统所使用的计算模型本质上是不同的,机器翻译系统使用的是其自身能够理解的“知识”,比如,统计学上的词语表示。这种“知识”并不需要人来理解,当然从系统开发的角度,计算机也并不需要理解人是如何思考的。
\vspace{0.5em}
......@@ -287,7 +287,7 @@
\subsection{转换法}
\parinterval 通常一个典型的{\small\bfnew{基于转换规则的机器翻译}}\index{基于转换规则的机器翻译}(Transfer-based Translation)\index{Transfer-based Translation}的过程可以被视为“独立分析-相关转换-独立生成”的过程\upcite{parsing2009speech}。如图\ref{fig:1-10}所示,这些过程可以分成六个步骤,其中每一个步骤都是通过相应的翻译规则来完成。比如,第一个步骤中需要构建源语词法分析规则,第二个步骤中需要构建源语句法分析规则,第三个和第四个步骤中需要构建转换规则,其中包括源语言-目标语言词汇和结构转换规则等等。
\parinterval 通常一个典型的{\small\bfnew{基于转换规则的机器翻译}}\index{基于转换规则的机器翻译}(Transfer-based Translation)\index{Transfer-based Translation}的过程可以被视为“独立分析-相关转换-独立生成”的过程\upcite{parsing2009speech}。如图\ref{fig:1-10}所示,这些过程可以分成六个步骤,其中每一个步骤都是通过相应的翻译规则来完成。比如,第一个步骤中需要构建源语词法分析规则,第二个步骤中需要构建源语句法分析规则,第三个和第四个步骤中需要构建转换规则,其中包括源语言-目标语言单词和结构转换规则等等。
%----------------------------------------------
\begin{figure}[htp]
......@@ -309,7 +309,7 @@
\end{figure}
%-------------------------------------------
\parinterval 在转换法中,翻译规则通常会分成两类:通用规则和个性规则。所谓通用的规则主要用于句法分析、语义分析、结构转换和句法生成等,是不具体依赖于某个源语言或者目标语言词汇而设计的翻译规则;个性规则通常以具体源语言词汇来做索引,比如图\ref{fig:1-8}中规则5就是针对主语是“I”的个性规则,它直接针对某个具体词汇进行分析和翻译。
\parinterval 在转换法中,翻译规则通常会分成两类:通用规则和个性规则。所谓通用的规则主要用于句法分析、语义分析、结构转换和句法生成等,是不具体依赖于某个源语言或者目标语言单词而设计的翻译规则;个性规则通常以具体源语言单词来做索引,比如图\ref{fig:1-8}中规则5就是针对主语是“I”的个性规则,它直接针对某个具体单词进行分析和翻译。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -406,7 +406,7 @@
\parinterval 统计机器翻译兴起于上世纪90年代\upcite{brown1990statistical,gale1993a},它利用统计模型从单/双语语料中自动学习翻译知识。具体来说,可以使用单语语料学习语言模型,使用双语平行语料学习翻译模型,并使用这些统计模型完成对翻译过程的建模。整个过程不需要人工编写规则,也不需要从实例中构建翻译模板。无论是词还是短语,甚至是句法结构,统计机器翻译系统都可以自动学习。人更多的是定义翻译所需的特征和基本翻译单元的形式,而翻译知识都保存在模型的参数中。
\parinterval\ref{fig:1-14}展示了一个统计机器翻译系统运行的简单实例。整个系统需要两个模型:翻译模型和语言模型。其中,翻译模型从双语平行语料中学习翻译知识,得到短语表,短语表包含了各种词汇的翻译及其概率,这样可以度量源语言和目标语言片段之间互为翻译的可能性大小;语言模型从单语语料中学习目标语的词序列生成规律,来衡量目标语言译文的流畅性。最后,将这两种模型联合使用,通过翻译引擎来搜索尽可能多的翻译结果,并计算不同翻译结果的可能性大小,最后将概率最大的译文作为最终结果输出。这个过程并没有显性地使用人工翻译规则和模板,译文的生成仅仅依赖翻译模型和语言模型中的统计参数。
\parinterval\ref{fig:1-14}展示了一个统计机器翻译系统运行的简单实例。整个系统需要两个模型:翻译模型和语言模型。其中,翻译模型从双语平行语料中学习翻译知识,得到短语表,短语表包含了各种单词的翻译及其概率,这样可以度量源语言和目标语言片段之间互为翻译的可能性大小;语言模型从单语语料中学习目标语的词序列生成规律,来衡量目标语言译文的流畅性。最后,将这两种模型联合使用,通过翻译引擎来搜索尽可能多的翻译结果,并计算不同翻译结果的可能性大小,最后将概率最大的译文作为最终结果输出。这个过程并没有显性地使用人工翻译规则和模板,译文的生成仅仅依赖翻译模型和语言模型中的统计参数。
%----------------------------------------------
\begin{figure}[htp]
......@@ -441,7 +441,7 @@
\parinterval 与统计机器翻译相比,神经机器翻译的优势体现在其不需要特征工程,所有信息由神经网络自动从原始输入中提取。而且,相比于统计机器翻译中所使用的离散化的表示。神经机器翻译中词和句子的分布式连续空间表示可以为建模提供更为丰富的信息,同时可以使用相对成熟的基于梯度的方法优化模型。此外,神经网络的存储需求较小,天然适合小设备上的应用。当然,神经机器翻译也存在问题:
\begin{itemize}
\vspace{0.5em}
\item 虽然脱离了特征工程,但神经网络的结构需要人工设计,即使设计好结构,系统的调优、超参数的设置等仍然依赖大量的实验。
\item 虽然脱离了特征工程,但神经网络的结构需要人工设计,即使设计好结构,系统的调优、{\small\bfnew{超参数}}\index{超参数}(Hyperparameter)\index{Hyperparameter}的设置等仍然依赖大量的实验。
\vspace{0.5em}
\item 神经机器翻译现在缺乏可解释性,其过程和人的认知差异很大,通过人的先验知识干预的程度差。
\vspace{0.5em}
......
......@@ -432,7 +432,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\
\subsection{极大似然估计的问题}\label{subsec-13.3.1}
\parinterval 极大似然估计已成为机器翻译乃至整个自然语言处理领域中使用最广泛的训练用目标函数。但是,使用极大似然估存在{\small\bfnew{曝光偏置}}\index{曝光偏置}(Exposure Bias\index{Exposure Bias})问题和训练目标函数与任务评价指标不一致问题,具体体现在如下两个方面。
\parinterval 极大似然估计已成为机器翻译乃至整个自然语言处理领域中使用最广泛的训练用目标函数。但是,使用极大似然估存在{\small\bfnew{曝光偏置}}\index{曝光偏置}(Exposure Bias\index{Exposure Bias})问题和训练目标函数与任务评价指标不一致问题,具体体现在如下两个方面。
\begin{itemize}
\vspace{0.5em}
......@@ -448,7 +448,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\
\end{figure}
%----------------------------------------------
\item {\small\bfnew{训练目标函数与任务评价指标不一致问题}}。在训练数据上使用极大似然估计,而在新数据上进行推断的时候,通常使用BLEU等外部评价指标来评价模型的性能。在机器翻译任务中,这个问题的一种体现是,训练数据上更低的困惑度不一定能带来BLEU的提升。更加理想的情况是,模型应该直接最大化性能评价指标,而不是训练集数据上的似然函数\upcite{DBLP:conf/acl/ShenCHHWSL16}。但是很多模型性能评价指标不可微分,这使得研究人员无法直接利用基于梯度的方法来优化这些指标。
\item {\small\bfnew{训练目标函数与任务评价指标不一致问题}}。在训练数据上使用极大似然估计,而在新数据上进行推断的时候,通常使用BLEU等外部评价指标来评价模型的性能。在机器翻译任务中,这个问题的一种体现是,训练数据上更低的困惑度不一定能带来BLEU的提升。更加理想的情况是,模型应该直接使性能评价指标最大化,而不是训练集数据上的似然函数\upcite{DBLP:conf/acl/ShenCHHWSL16}。但是很多模型性能评价指标不可微分,这使得研究人员无法直接利用基于梯度的方法来优化这些指标。
\vspace{0.5em}
\end{itemize}
......@@ -651,8 +651,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\
\parinterval 理想的机器翻译系统应该是品质好、速度快、存储占用少。不过,为了追求更好的翻译品质,往往需要更大的模型,但是相应的翻译速度会降低,模型的体积会变大。在很多场景下,这样的模型无法直接使用。比如,Transformer-Big等“大”模型通常在专用服务器上运行,在手机等受限环境下仍很难应用。
\parinterval 但是,直接训练“小”模型的效果往往并不理想,其翻译品质与“大”模型相比仍有比较明显的差距。既然直接训练小模型无法达到很好的效果,一种有趣的想法是把“大”模型的知识传递给“小”模型。这类似于,教小孩子学习数学,是请一个权威数学家(数据中的标准答案)进行教学,而是会请一个小学数
学教师(“大”模型)来教小孩子。这就是知识蒸馏的基本思想。
\parinterval 但是,直接训练“小”模型的效果往往并不理想,其翻译品质与“大”模型相比仍有比较明显的差距。既然直接训练小模型无法达到很好的效果,一种有趣的想法是把“大”模型的知识传递给“小”模型。这类似于,教小孩子学习数学,是请一个权威数学家(即数据中的标准答案)进行教学,而是会请一个小学数学教师(即“大”模型)来教小孩子。这就是知识蒸馏的基本思想。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -688,7 +687,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\
\begin{itemize}
\vspace{0.5em}
\item {\small\bfnew{基于单词的知识蒸馏}}\index{基于单词的知识蒸馏}(Word-level Knowledge Distillation)\index{Word-level Knowledge Distillation}。该方法的目标是使得学生模型的预测(分布)尽可能逼近教师模型的预测(分布)。令$\seq{x}=\{x_1,\ldots,x_m\}$$\seq{y}=\{y_1,\ldots,y_n\}$分别表示输入和输出(数据中的答案)序列,$V$表示目标语言词表,则基于单词的知识蒸馏的损失函数被定义为:
\item {\small\bfnew{单词级的知识蒸馏}}\index{单词级的知识蒸馏}(Word-level Knowledge Distillation)\index{Word-level Knowledge Distillation}。该方法的目标是使得学生模型的预测(分布)尽可能逼近教师模型的预测(分布)。令$\seq{x}=\{x_1,\ldots,x_m\}$$\seq{y}=\{y_1,\ldots,y_n\}$分别表示输入和输出(数据中的答案)序列,$V$表示目标语言词表,则单词级的知识蒸馏的损失函数被定义为:
\begin{eqnarray}
L_{\textrm{word}} = - \sum_{j=1}^n \sum_{y_j \in V} \textrm{P}_{\textrm{t}} (y_{\textrm{j}}|\seq{x})\textrm{logP}_{\textrm{s}}(y_j|\seq{x})
\label{eq:13-22}
......@@ -696,7 +695,7 @@ L_{\textrm{word}} = - \sum_{j=1}^n \sum_{y_j \in V} \textrm{P}_{\textrm{t}} (y_{
这里, $\textrm{P}_{\textrm{s}}(y_j|\seq{x})$$\textrm{P}_{\textrm{t}} (y_j|\seq{x})$分别表示学生模型和教师模型在$j$位置输出的概率。公式\eqref{eq:13-22}实际上在最小化教师模型和学生模型输出分布之间的交叉熵。
\vspace{0.5em}
\item {\small\bfnew{基于序列的知识蒸馏}}\index{基于序列的知识蒸馏}(Sequence-level Knowledge Distillation)\index{Sequence-level Knowledge Distillation}。除了单词一级输出的拟合,基于序列的知识蒸馏希望在序列整体上进行拟合。其损失函数被定义为:
\item {\small\bfnew{序列级的知识蒸馏}}\index{序列级的知识蒸馏}(Sequence-level Knowledge Distillation)\index{Sequence-level Knowledge Distillation}。除了单词一级输出的拟合,序列级的知识蒸馏希望在序列整体上进行拟合。其损失函数被定义为:
\begin{eqnarray}
L_{\textrm{seq}} = - \sum_{\seq{y}}\textrm{P}_{\textrm{t}} (\seq{y}|\seq{x})\textrm{logP}_{\textrm{s}}(\seq{y}|\seq{x})
\label{eq:13-23}
......@@ -721,7 +720,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\seq{y}} | \seq{x})
\end{figure}
%-------------------------------------------
\parinterval 本质上,基于单词的知识蒸馏与语言建模等问题的建模方式是一致的。在传统方法中,训练数据中的答案会被看作是一个One-hot分布,之后让模型去尽可能拟合这种分布。而这里,答案不再是一个One-hot分布,而是由教师模型生成的真实分布,但是损失函数的形式是一模一样的。在具体实现时,一个容易出现的问题是在词级别的知识蒸馏中,教师模型的Softmax可能会生成非常尖锐的分布。这时需要考虑对分布进行平滑,提高模型的泛化能力,比如,可以在Softmax函数中加入一个参数$\alpha$,如$\textrm{Softmax}(s_i)=\frac{\exp(s_i/\alpha)}{\sum_{i'} \exp(s_{i'}/\alpha)}$。这样可以通过$\alpha$ 控制分布的平滑程度。
\parinterval 本质上,单词级的知识蒸馏与语言建模等问题的建模方式是一致的。在传统方法中,训练数据中的答案会被看作是一个One-hot分布,之后让模型去尽可能拟合这种分布。而这里,答案不再是一个One-hot分布,而是由教师模型生成的真实分布,但是损失函数的形式是一模一样的。在具体实现时,一个容易出现的问题是在词级别的知识蒸馏中,教师模型的Softmax可能会生成非常尖锐的分布。这时需要考虑对分布进行平滑,提高模型的泛化能力,比如,可以在Softmax函数中加入一个参数$\alpha$,如$\textrm{Softmax}(s_i)=\frac{\exp(s_i/\alpha)}{\sum_{i'} \exp(s_{i'}/\alpha)}$。这样可以通过$\alpha$ 控制分布的平滑程度。
\parinterval 除了在模型最后输出的分布上进行知识蒸馏,同样可以使用教师模型对学生模型的中间层输出和注意力分布进行约束。这种方法在{\chapterfourteen}中会有具体应用。
......@@ -785,7 +784,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\seq{y}} | \seq{x})
\parinterval 当机器翻译系统应用于不同领域时,训练语料与所应用领域的相关性就显得非常重要\upcite{DBLP:journals/mt/EetemadiLTR15,britz2017effective}。不同领域往往具有自己独特的属性,比如语言风格、句子结构、专业术语等,例如,“bank”这个英语单词,在金融领域通常被翻译为“银行”,而在计算机领域,一般被解释为“库”、“存储体”等。这也会导致,使用通用领域数据训练出来的模型在特定领域上的翻译效果往往不理想,这本质上是训练数据和测试数据的领域属性不匹配造成的。
\parinterval 一种解决办法是只使用特定领域的数据进行模型训练,然而这种数据往往比较稀缺。那能不能利用通用领域数据来帮助数据稀少的领域呢?这个研究方向被称为机器翻译的{\small\bfnew{领域适应}}\index{领域适应}(Domain Adaptation\index{Domain Adaptation}),即把数据从资源丰富的领域(称为{\small\bfnew{源领域}}\index{源领域},Source Domain\index{Source Domain})向资源稀缺的领域(称为{\small\bfnew{目标领域}}\index{目标领域},Target Domain\index{Target Domain})迁移。这本身也对应着资源稀缺场景下的机器翻译问题,这类问题会在{\chaptersixteen}进行详细讨论。本章更加关注如何有效地利用训练样本以更好地适应目标领域。具体来说,可以使用{\small\bfnew{数据选择}}\index{数据选择}(Data Selection\index{Selection})从源领域训练数据中选择与目标领域更加相关的样本进行模型训练。这样做的一个好处是,源领域中混有大量与目标领域不相关的样本,数据选择可以有效降低这部分数据的比例,这样可以更加突出与领域相关样本的作用。
\parinterval 一种解决办法是只使用特定领域的数据进行模型训练,然而这种数据往往比较稀缺。那能不能利用通用领域数据来帮助数据稀少的领域呢?这个研究方向被称为机器翻译的{\small\bfnew{领域适应}}\index{领域适应}(Domain Adaptation\index{Domain Adaptation}),即把数据从资源丰富的领域(称为{\small\bfnew{源领域}}\index{源领域},Source Domain\index{Source Domain})向资源稀缺的领域(称为{\small\bfnew{目标领域}}\index{目标领域},Target Domain\index{Target Domain})迁移。这本身也对应着资源稀缺场景下的机器翻译问题,这类问题会在{\chaptersixteen}进行详细讨论。本章更加关注如何有效地利用训练样本以更好地适应目标领域。具体来说,可以使用{\small\bfnew{数据选择}}\index{数据选择}(Data Selection\index{Data Selection})从源领域训练数据中选择与目标领域更加相关的样本进行模型训练。这样做的一个好处是,源领域中混有大量与目标领域不相关的样本,数据选择可以有效降低这部分数据的比例,这样可以更加突出与领域相关样本的作用。
\parinterval 数据选择所要解决的核心问题是:给定一个目标领域/任务数据集(如,目标任务的开发集),如何衡量原始训练样本与目标领域/任务的相关性?主要方法可以分为以下几类:
......
......@@ -205,7 +205,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\subsection{搜索终止条件}
\parinterval 在机器翻译推断中,何时终止搜索是一个非常基础的问题。如{\chaptertwo}所述,系统研发者一方面希望尽可能遍历更大的搜索空间,找到更好的结果,另一方面也希望在尽可能短的时间内得到结果。这时搜索的终止条件就是一个非常关键的指标。在束搜索中有很多终止条件可以使用,比如,在生成一定数量的译文之后就终止搜索,或者当最佳译文与排名第二的译文之间的分差距超过一个阈值时就终止搜索等。
\parinterval 在机器翻译推断中,何时终止搜索是一个非常基础的问题。如{\chaptertwo}所述,系统研发者一方面希望尽可能遍历更大的搜索空间,找到更好的结果,另一方面也希望在尽可能短的时间内得到结果。这时搜索的终止条件就是一个非常关键的指标。在束搜索中有很多终止条件可以使用,比如,在生成一定数量的译文之后就终止搜索,或者当最佳译文与排名第二的译文之间的分差距超过一个阈值时就终止搜索等。
\parinterval 在统计机器翻译中,搜索的终止条件相对容易设计。因为所有的翻译结果都可以用相同步骤的搜索过程生成,比如,在CYK推断中搜索的步骤仅与构建的分析表大小有关。在神经机器翻译中,这个问题要更加复杂。当系统找到一个完整的译文之后,可能还有很多译文没有被生成完,这时就面临着一个问题\ \dash \ 如何决定是否继续搜索。
......
......@@ -95,7 +95,7 @@
\begin{itemize}
\vspace{0.5em}
\item {\small\bfnew{相对位置编码}}\index{相对位置编码或相对位置表示}(Relative Positional Representation)\index{Relative Positional Representation}\upcite{Shaw2018SelfAttentionWR}。核心思想是在能够捕获全局依赖的自注意力机制中引入相对位置信息。该方法可以有效补充绝对位置编码的不足,甚至完全取代绝对位置编码。对于Transformer模型中的任意一层,假设$\mathbi{x}_i$$\mathbi{x}_j$是位置$i$$j$的输入向量(也就是来自上一层位置$i$$j$的输出向量),二者的位置关系可以通过向量$\mathbi{a}_{ij}^V$$\mathbi{a}_{ij}^K$来表示,定义如下:
\item {\small\bfnew{相对位置表示}}\index{相对位置表示}(Relative Positional Representation)\index{Relative Positional Representation}\upcite{Shaw2018SelfAttentionWR}。核心思想是在能够捕获全局依赖的自注意力机制中引入相对位置信息。该方法可以有效补充绝对位置编码的不足,甚至完全取代绝对位置编码。对于Transformer模型中的任意一层,假设$\mathbi{x}_i$$\mathbi{x}_j$是位置$i$$j$的输入向量(也就是来自上一层位置$i$$j$的输出向量),二者的位置关系可以通过向量$\mathbi{a}_{ij}^V$$\mathbi{a}_{ij}^K$来表示,定义如下:
\begin{eqnarray}
\mathbi{a}_{ij}^K &=& \mathbi{w}^K_{\textrm{clip}(j-i,k)} \label{eq:15-7} \\
\mathbi{a}_{ij}^V &=& \mathbi{w}^V_{\textrm{clip}(j-i,k)} \label{eq:15-8} \\
......@@ -150,13 +150,13 @@ A_{ij}^{\rm rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{\te
\label{eq:15-14}
\end{eqnarray}
\noindent 其中,$A_{ij}^{\rm rel}$为使用相对位置编码后位置$i$$j$关系的表示结果,$\mathbi{R}$是一个固定的正弦矩阵。不同于公式\eqref{eq:15-13},公式\eqref{eq:15-14}对(c)中的$\mathbi{E}_{x_j}^{\textrm{T}}$与(d)中的$\mathbi{R}_{i-j}^{\textrm{T}}$采用了不同的映射矩阵,分别为$\mathbi{W}_{K,E}^{\textrm{T}}$$\mathbi{W}_{K,R}^{\textrm{T}}$,这两项分别代表了键$\mathbi{K}$中的词嵌入表示和相对位置编码表示,并且由于此时只采用了相对位置编码,因此公式\eqref{eq:15-14}在(c)与(d)部分使用了$\mathbi{u}$$\mathbi{v}$两个可学习的矩阵代替$\mathbi{U}_i\mathbi{W}_Q$$\mathbi{U}_i\mathbi{W}_Q$,即查询$\mathbi{Q}$中的绝对位置编码部分。此时公式中各项的含义为:(a)表示位置$i$与位置$j$之间词嵌入的相关性,可以看作是基于内容的表示,(b)表示基于内容的位置偏置,(c)表示全局内容的偏置,(d)表示全局位置的偏置。公式\eqref{eq:15-13}中的(a)、(b)两项与前面介绍的绝对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置编码引入了额外的线性变换矩阵。同时,这种方法兼顾了全局内容偏置和全局位置偏置,可以更好地利用正余弦函数的归纳偏置特性。
\noindent 其中,$A_{ij}^{\rm rel}$为使用相对位置表示后位置$i$$j$关系的表示结果,$\mathbi{R}$是一个固定的正弦矩阵。不同于公式\eqref{eq:15-13},公式\eqref{eq:15-14}对(c)中的$\mathbi{E}_{x_j}^{\textrm{T}}$与(d)中的$\mathbi{R}_{i-j}^{\textrm{T}}$采用了不同的映射矩阵,分别为$\mathbi{W}_{K,E}^{\textrm{T}}$$\mathbi{W}_{K,R}^{\textrm{T}}$,这两项分别代表了键$\mathbi{K}$中的词嵌入表示和相对位置表示,并且由于此时只采用了相对位置表示,因此公式\eqref{eq:15-14}在(c)与(d)部分使用了$\mathbi{u}$$\mathbi{v}$两个可学习的矩阵代替$\mathbi{U}_i\mathbi{W}_Q$$\mathbi{U}_i\mathbi{W}_Q$,即查询$\mathbi{Q}$中的绝对位置编码部分。此时公式中各项的含义为:(a)表示位置$i$与位置$j$之间词嵌入的相关性,可以看作是基于内容的表示,(b)表示基于内容的位置偏置,(c)表示全局内容的偏置,(d)表示全局位置的偏置。公式\eqref{eq:15-13}中的(a)、(b)两项与前面介绍的绝对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置表示引入了额外的线性变换矩阵。同时,这种方法兼顾了全局内容偏置和全局位置偏置,可以更好地利用正余弦函数的归纳偏置特性。
\vspace{0.5em}
\item {\small\bfnew{结构化位置编码}}\index{结构化位置编码或结构化位置表示}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}。 通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置,并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
\item {\small\bfnew{结构化位置表示}}\index{结构化位置表示}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}。 通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置,并在此基础上利用相对位置表示的思想计算节点之间的相对位置信息。
\vspace{0.5em}
\item {\small\bfnew{基于连续动态系统}}\index{基于连续动态系统}(Continuous Dynamic Model)\index{Continuous Dynamic Model}{\small\bfnew{的位置编码}}\upcite{Liu2020LearningTE}。使用神经常微分方程{\small\bfnew{求解器}}\index{求解器}(Solver)\index{Solver}来建模位置信息\upcite{DBLP:conf/nips/ChenRBD18},模型具有更好的归纳偏置能力,可以处理变长的输入序列,同时能够从不同的数据中进行自适应学习。
\item {\small\bfnew{基于连续动态系统}}\index{连续动态系统}(Continuous Dynamic Model)\index{Continuous Dynamic Model}{\small\bfnew{的位置编码}}\upcite{Liu2020LearningTE}。使用神经常微分方程{\small\bfnew{求解器}}\index{求解器}(Solver)\index{Solver}来建模位置信息\upcite{DBLP:conf/nips/ChenRBD18},模型具有更好的归纳偏置能力,可以处理变长的输入序列,同时能够从不同的数据中进行自适应学习。
\vspace{0.5em}
\end{itemize}
......@@ -345,7 +345,7 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\vspace{0.5em}
\item {\small\bfnew{跨步注意力}}:该模型是一种稀疏的注意力机制,通常会设置一个固定的间隔,也就是说在计算注意力表示时,每次跳过固定数量的词,并将下一个词纳入注意力计算的考虑范围内\upcite{DBLP:journals/corr/abs-2004-05150}。和分片段进行注意力计算类似,假设最终参与注意力计算的间隔长度为$N/B$,每次参与注意力计算的单词数为$B$,那么注意力的计算复杂度将从$O(N^2)$缩减为$O(N/B \times B^2)$,即$O(NB)$
\vspace{0.5em}
\item {\small\bfnew{内存压缩注意力}}:这种方式的主要的思想是使用一些操作,如卷积、池化等对序列进行下采样,来缩短序列长度。例如,使用{\small\bfnew{跨步卷积}}\index{跨步卷积}(Stride Convolution)\index{Stride Convolution}来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力权重计算时的复杂度\upcite{DBLP:conf/iclr/LiuSPGSKS18}。其计算复杂度取决于跨步卷积时步幅的大小$K$,形式上可以理解为每$K$个单元做一次特征融合后,将关注的目标缩减为$N/K$,整体的计算复杂度为$N^2/K$。相比于使用前两种方式对局部进行注意力计算,该方式仍是对全局的建模。
\item {\small\bfnew{内存压缩注意力}}:这种方式的主要的思想是使用一些操作,如卷积、池化等对序列进行{\small\bfnew{下采样}}\index{下采样}(subsampled)\index{subsampled},来缩短序列长度。例如,使用{\small\bfnew{跨步卷积}}\index{跨步卷积}(Stride Convolution)\index{Stride Convolution}来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力权重计算时的复杂度\upcite{DBLP:conf/iclr/LiuSPGSKS18}。其计算复杂度取决于跨步卷积时步幅的大小$K$,形式上可以理解为每$K$个单元做一次特征融合后,将关注的目标缩减为$N/K$,整体的计算复杂度为$N^2/K$。相比于使用前两种方式对局部进行注意力计算,该方式仍是对全局的建模。
\vspace{0.5em}
\end{itemize}
......@@ -364,7 +364,7 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\label{eq:15-24}
\end{eqnarray}
\noindent 其中,$\mathbi{W}$为映射矩阵。为了保证每个簇内的单词数量一致,利用聚类算法将$\mathbi{S}$中的向量分配到$\sqrt{N}$个簇中,其中$N$为序列长度,即分别计算$\mathbi{S}$中每个向量与质心的距离,并对每个质心取距离最近的若干个节点。
\noindent 其中,$\mathbi{W}$为映射矩阵。为了保证每个簇内的单词数量一致,利用聚类算法将$\mathbi{S}$中的向量分配到$\sqrt{N}$个簇中,其中$N$为序列长度,即分别计算$\mathbi{S}$中每个向量与质心(聚类中心)的距离,并对每个质心取距离最近的若干个节点。
\vspace{0.5em}
\end{itemize}
......@@ -398,7 +398,7 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\subsection{Post-Norm vs Pre-Norm}
\label{sec:post-pre-norm}
\parinterval 为了探究为何深层Transformer模型很难直接训练,首先对Transformer的模型结构进行简单的回顾,详细内容可以参考{\chaptertwelve}。以Transformer的编码器为例,在多头自注意力和前馈神经网络中间,Transformer模型利用残差连接\upcite{DBLP:journals/corr/HeZRS15}和层标准化操作\upcite{Ba2016LayerN}来提高信息的传递效率。Transformer模型大致分为图\ref{fig:15-9}中的两种结构\ \dash \ 后作方式的残差单元(Post-Norm)和前作方式的残差单元(Pre-Norm)
\parinterval 为了探究为何深层Transformer模型很难直接训练,首先对Transformer的模型结构进行简单的回顾,详细内容可以参考{\chaptertwelve}。以Transformer的编码器为例,在多头自注意力和前馈神经网络中间,Transformer模型利用残差连接\upcite{DBLP:journals/corr/HeZRS15}和层标准化操作\upcite{Ba2016LayerN}来提高信息的传递效率。Transformer模型大致分为图\ref{fig:15-9}中的两种结构\ \dash \ 后作方式(Post-Norm)的残差单元和前作方式(Pre-Norm)的残差单元
%----------------------------------------------
\begin{figure}[htp]
......@@ -941,7 +941,7 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\parinterval 在标准的英语到日语的翻译中,英语短语“a cup of green tea”只会被翻译为“緑茶”一词。在加入句法树后,“a cup of green tea”会作为树中一个节点,这样可以更容易地把这个英语短语作为一个整体进行翻译。
\parinterval 只是,这种自底向上的树结构表示方法也存在问题:每个树节点的状态并不能包含树中其它位置的信息。也就是说,从每个节点上看,其表示结果没有很好地利用句法树中的上下文信息。因此,可以同时使用自下而上和自上而下的信息传递方式进行句法树的表示\upcite{Yang2017TowardsBH,DBLP:conf/acl/ChenHCC17},这样增加了树中每个节点对其覆盖的子树以及周围上下文的建模能力。如图\ref{fig:15-21} 所示,$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$分别代表向上传输节点和向下传输节点的状态,虚线框代表了$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$会拼接到一起,并作为这个节点的整体表示参与注意力模型的计算。显然,自下而上的传递,可以保证句子的浅层信息(如短距离词搭配)被传递给上层节点,而自上而下的传递,可以保证句子上层结构的抽象被有效地传递给下层节点。这样,每个节点就同时含有浅层和深层句子表示的信息。
\parinterval 只是,这种自底向上的树结构表示方法也存在问题:每个树节点的状态并不能包含树中其它位置的信息。也就是说,从每个节点上看,其表示结果没有很好地利用句法树中的上下文信息。因此,可以同时使用自下而上和自上而下的信息传递方式进行句法树的表示\upcite{Yang2017TowardsBH,DBLP:conf/acl/ChenHCC17},这样增加了树中每个节点对其覆盖的子树以及周围上下文的建模能力。如图\ref{fig:15-21} 所示,$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$分别代表向上传输节点和向下传输节点的状态,虚线框代表了$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$会拼接到一起,并作为这个节点的整体表示参与注意力模型的计算。显然,自下而上的传递,可以保证句子的浅层信息(如短距离词搭配)被传递给上层节点,而自上而下的传递,可以保证句子上层结构的抽象被有效地传递给下层节点。这样,每个节点就同时含有浅层和深层句子表示的信息。
%----------------------------------------------
\begin{figure}[htp]
......@@ -1041,7 +1041,7 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\end{figure}
%-------------------------------------------
\parinterval 不过,融合树结构和目标语言词串的方法也存在问题:它会导致目标语言端的序列过长,使得模型难以训练。为了缓解这个问题,可以使用两个模型,一个生成句子,另一个生成树结构\upcite{DBLP:conf/acl/WuZYLZ17,DBLP:journals/corr/abs-1808-09374}。以生成目标语言依存树为例,生成依存树的模型是一个生成移进-规约序列的生成模型,称为动作模型。另一个模型负责预测目标语言词序列,称为词预测模型,它只有在第一个模型进行移位操作的时候才会预测一下词,同时会将当前词的状态送入到第一个模型中。整个过程如图\ref{fig:15-26}所示,这里使用循环神经网络构建了动作模型和词预测模型。$\mathbi{h}_i^\textrm{action}$ 表示动作模型的隐藏层状态,$\mathbi{h}_i^\textrm{word}$表示词预测模型的隐藏层状态。动作模型会结合词预测模型的状态预测出“移位”,“左规约”,“右规约”三种动作,只有当动作模型预测出“移位”操作时,词预测模型才会预测下一时刻的词语;而动作模型预测“左规约”和“右规约”相当于完成了依存关系的预测(依存树见图\ref{fig:15-26}右侧)。最后词预测模型预测出结束符号<eos> 时,整个过程结束。
\parinterval 不过,融合树结构和目标语言词串的方法也存在问题:它会导致目标语言端的序列过长,使得模型难以训练。为了缓解这个问题,可以使用两个模型,一个生成句子,另一个生成树结构\upcite{DBLP:conf/acl/WuZYLZ17,DBLP:journals/corr/abs-1808-09374}。以生成目标语言依存树为例,生成依存树的模型是一个生成移进-规约序列的生成模型,称为动作模型。另一个模型负责预测目标语言词序列,称为词预测模型,它只有在第一个模型进行移位操作的时候才会预测下一个词,同时会将当前词的状态送入到第一个模型中。整个过程如图\ref{fig:15-26}所示,这里使用循环神经网络构建了动作模型和词预测模型。$\mathbi{h}_i^\textrm{action}$ 表示动作模型的隐藏层状态,$\mathbi{h}_i^\textrm{word}$表示词预测模型的隐藏层状态。动作模型会结合词预测模型的状态预测出“移位”,“左规约”,“右规约”三种动作,只有当动作模型预测出“移位”操作时,词预测模型才会预测下一时刻的词语;而动作模型预测“左规约”和“右规约”相当于完成了依存关系的预测(依存树见图\ref{fig:15-26}右侧)。最后词预测模型预测出结束符号<eos> 时,整个过程结束。
%----------------------------------------------
\begin{figure}[htp]
......
......@@ -521,7 +521,7 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\end{itemize}
\vspace{0.5em}
\parinterval 极大似然估计方法(基于频次的方法)和掷骰子游戏中介绍的统计词汇概率的方法是一致的,它的核心是使用$n$-gram出现的频次进行参数估计。基于人工神经网络的方法在近些年也非常受关注,它直接利用多层神经网络对问题的输入$w_{m-n+1} \ldots w_{m-1}$和输出$\funp{P}(w_m|w_{m-n+1} \ldots w_{m-1})$进行建模,而模型的参数通过网络中神经元之间连接的权重进行体现。严格来说,基于人工神经网络的方法并不算基于$n$-gram的方法,或者说它并没有显性记录$n$-gram的生成概率,也不依赖$n$-gram的频次进行参数估计。为了保证内容的连贯性,接下来仍以传统$n$-gram语言模型为基础进行讨论,基于人工神经网络的方法将会在{\chapternine}进行详细介绍。
\parinterval 极大似然估计方法(基于频次的方法)和掷骰子游戏中介绍的统计单词概率的方法是一致的,它的核心是使用$n$-gram出现的频次进行参数估计。基于人工神经网络的方法在近些年也非常受关注,它直接利用多层神经网络对问题的输入$w_{m-n+1} \ldots w_{m-1}$和输出$\funp{P}(w_m|w_{m-n+1} \ldots w_{m-1})$进行建模,而模型的参数通过网络中神经元之间连接的权重进行体现。严格来说,基于人工神经网络的方法并不算基于$n$-gram的方法,或者说它并没有显性记录$n$-gram的生成概率,也不依赖$n$-gram的频次进行参数估计。为了保证内容的连贯性,接下来仍以传统$n$-gram语言模型为基础进行讨论,基于人工神经网络的方法将会在{\chapternine}进行详细介绍。
\parinterval $n$-gram语言模型的使用非常简单。可以直接用它来对词序列出现的概率进行计算。比如,可以使用一个2-gram语言模型计算一个句子出现的概率,其中单词之间用斜杠分隔,如下:
\begin{eqnarray}
......@@ -555,7 +555,7 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\begin{figure}[htp]
\centering
\input{./Chapter2/Figures/figure-word-frequency-distribution}
\caption{词汇出现频次的分布}
\caption{单词出现频次的分布}
\label{fig:2-10}
\end{figure}
%---------------------------
......@@ -819,7 +819,7 @@ c(\cdot) & \textrm{当计算最高阶模型时} \\
\noindent 这里$\arg$即argument(参数),$\argmax_x f(x)$表示返回使$f(x)$达到最大的$x$$\argmax_{w \in \chi}$\\$\funp{P}(w)$表示找到使语言模型得分$\funp{P}(w)$达到最大的单词序列$w$$\chi$ 是搜索问题的解空间,它是所有可能的单词序列$w$的集合。$\hat{w}$可以被看做该搜索问题中的“最优解”,即概率最大的单词序列。
\parinterval 在序列生成任务中,最简单的策略就是对词表中的词汇进行任意组合,通过这种枚举的方式得到全部可能的序列。但是,很多时候待生成序列的长度是无法预先知道的。比如,机器翻译中目标语序列的长度是任意的。那么怎样判断一个序列何时完成了生成过程呢?这里借用现代人类书写中文和英文的过程:句子的生成首先从一片空白开始,然后从左到右逐词生成,除了第一个单词,所有单词的生成都依赖于前面已经生成的单词。为了方便计算机实现,通常定义单词序列从一个特殊的符号<sos>后开始生成。同样地,一个单词序列的结束也用一个特殊的符号<eos>来表示。
\parinterval 在序列生成任务中,最简单的策略就是对词表中的单词进行任意组合,通过这种枚举的方式得到全部可能的序列。但是,很多时候待生成序列的长度是无法预先知道的。比如,机器翻译中目标语序列的长度是任意的。那么怎样判断一个序列何时完成了生成过程呢?这里借用现代人类书写中文和英文的过程:句子的生成首先从一片空白开始,然后从左到右逐词生成,除了第一个单词,所有单词的生成都依赖于前面已经生成的单词。为了方便计算机实现,通常定义单词序列从一个特殊的符号<sos>后开始生成。同样地,一个单词序列的结束也用一个特殊的符号<eos>来表示。
\parinterval 对于一个序列$<$sos$>$\ I\ agree\ $<$eos$>$,图\ref{fig:2-12}展示语言模型视角下该序列的生成过程。该过程通过在序列的末尾不断附加词表中的单词来逐渐扩展序列,直到这段序列结束。这种生成单词序列的过程被称作{\small\bfnew{自左向右生成}}\index{自左向右生成}(Left-to-Right Generation)\index{Left-to-Right Generation}。注意,这种序列生成策略与$n$-gram的思想天然契合,因为$n$-gram语言模型中,每个词的生成概率依赖前面(左侧)若干词,因此$n$-gram语言模型也是一种自左向右的计算模型。
......@@ -1044,7 +1044,7 @@ c(\cdot) & \textrm{当计算最高阶模型时} \\
\vspace{0.5em}
\item$n$-gram语言模型中,由于语料中往往存在大量的低频词以及未登录词,模型会产生不合理的概率预测结果。因此本章介绍了三种平滑方法,以解决上述问题。实际上,平滑方法是语言建模中的重要研究方向。除了上文中介绍的三种平滑方法之外,还有如Jelinek–Mercer平滑\upcite{jelinek1980interpolated}、Katz 平滑\upcite{katz1987estimation}以及Witten–Bell平滑等等\upcite{bell1990text,witten1991the}的平滑方法。相关工作也对这些平滑方法进行了详细对比\upcite{chen1999empirical,goodman2001a}
\vspace{0.5em}
\item 除了平滑方法,也有很多工作对$n$-gram语言模型进行改进。比如,对于形态学丰富的语言,可以考虑对单词的形态变化进行建模。这类语言模型在一些机器翻译系统中也体现出了很好的潜力\upcite{kirchhoff2005improved,sarikaya2007joint,koehn2007factored}。此外,如何使用超大规模数据进行语言模型训练也是备受关注的研究方向。比如,有研究者探索了对超大语言模型进行压缩和存储的方法\upcite{federico2007efficient,federico2006how,heafield2011kenlm}。另一个有趣的方向是,利用随机存储算法对大规模语言模型进行有效存储\upcite{talbot2007smoothed,talbot2007randomised},比如,在语言模型中使用Bloom\ Filter等随机存储的数据结构。
\item 除了平滑方法,也有很多工作对$n$-gram语言模型进行改进。比如,对于形态学丰富的语言,可以考虑对单词的形态变化进行建模。这类语言模型在一些机器翻译系统中也体现出了很好的潜力\upcite{kirchhoff2005improved,sarikaya2007joint,koehn2007factored}。此外,如何使用超大规模数据进行语言模型训练也是备受关注的研究方向。比如,有研究者探索了对超大语言模型进行压缩和存储的方法\upcite{federico2007efficient,federico2006how,heafield2011kenlm}。另一个有趣的方向是,利用随机存储算法对大规模语言模型进行有效存储\upcite{talbot2007smoothed,talbot2007randomised},比如,在语言模型中使用Bloom\ Filter等随机存储的数据结构。
\vspace{0.5em}
\item 本章更多地关注了语言模型的基本问题和求解思路,但是基于$n$-gram的方法并不是语言建模的唯一方法。从现在自然语言处理的前沿看,端到端的深度学习方法在很多任务中都取得了领先的性能。语言模型同样可以使用这些方法\upcite{jing2019a},而且在近些年取得了巨大成功。例如,最早提出的前馈神经语言模型\upcite{bengio2003a}和后来的基于循环单元的语言模型\upcite{mikolov2010recurrent}、基于长短期记忆单元的语言模型\upcite{sundermeyer2012lstm}以及现在非常流行的Transformer\upcite{vaswani2017attention}。 关于神经语言模型的内容,会在{\chapternine}进行进一步介绍。
\vspace{0.5em}
......
......@@ -87,7 +87,7 @@
\end{figure}
%-------------------------------------------
\parinterval 分词得到的单元序列既可以是语言学上的词序列,也可以是根据其他方式定义的基本处理单元。在本章中,把分词得到的一个个单元称为单词或词,尽管这些单元可以不是语言学上的完整单词,而这个过程也被称作{\small\sffamily\bfseries{词法分析}}\index{词法分析}(Lexical Analysis)\index{Lexical Analysis}。除了汉语,词法分析在日语、泰语等单词之间无明确分割符的语言中有着广泛的应用,芬兰语、维吾尔语等一些形态学十分丰富的语言也需要使用词法分析来解决复杂的词尾、词缀变化等形态学变化。
\parinterval 分词得到的单元序列既可以是语言学上的词序列,也可以是根据其他方式定义的基本处理单元。在本章中,把分词得到的一个个单元称为单词或词,尽管这些单元可以不是语言学上的完整单词,而这个过程也被称作{\small\sffamily\bfseries{词法分析}}\index{词法分析}(Lexical Analysis)\index{Lexical Analysis}。除了汉语,词法分析在日语、泰语等单词之间无明确分割符的语言中有着广泛的应用,芬兰语、维吾尔语等一些形态十分丰富的语言也需要使用词法分析来解决复杂的词尾、词缀变化等形态变化。
\parinterval 在机器翻译中,分词系统的好坏往往会决定译文的质量。分词的目的是定义系统处理的基本单元,那么什么叫做“词” 呢?关于词的定义有很多,比如:
......@@ -96,13 +96,13 @@
\vspace{0.5em}
语言里最小的可以独立运用的单位。
\begin{flushright}——《新华字典》\end{flushright}
\begin{flushright}——《新华字典》\upcite{新华字典}\end{flushright}
单词,含有语义内容或语用内容,且能被单独念出来的的最小单位。
\begin{flushright}——维基百科\end{flushright}
语句中具有完整概念,能独立自由运用的基本单位。
\begin{flushright}——《国语辞典》\end{flushright}
\begin{flushright}——《国语辞典》\upcite{国语辞典}\end{flushright}
\end{definition}
......@@ -265,7 +265,7 @@ $计算这种切分的概率值。
\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
......@@ -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}
\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 一般来说,隐马尔可夫模型中包含下面三个问题:
\begin{itemize}
\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}
\item {\small\sffamily\bfseries{参数学习}},即给定硬币种类(隐含状态数量),根据多个可见状态序列(抛硬币的结果)估计模型的参数(转移概率),这个问题的求解需要用到EM算法\upcite{1977Maximum}
\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}
\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}
\parinterval 与概率图模型一样,分类模型中也依赖特征定义。其定义形式与\ref{sec3:feature}节的描述一致,这里不再赘述。分类任务一般根据类别数量分为二分类任务和多分类任务,二分类任务是最经典的分类任务,只需要对输出进行非零即一的预测。多分类任务则可以有多种处理手段,比如,可以将其“拆解”为多个二分类任务求解,或者直接让模型输出多个类别中的一个。在命名实体识别中,往往会使用多类别分类模型。比如,在BIO标注下,有三个类别(B、I和O)。一般来说,类别数量越大分类的难度也越大。比如,BIOES标注包含5个类别,因此使用同样的分类器,它要比BIO标注下的分类问题难度大。此外,更多的类别有助于准确的刻画目标问题。因此在实践中需要在类别数量和分类难度之间找到一种平衡。
\parinterval 在机器翻译和语言建模中也会遇到类似的问题,比如,生成单词的过程可以被看做是一个分类问题,类别数量就是词表的大小。显然,词表越大可以覆盖更多的单词和更多种类的单词形态变化,但是过大的词表里会包含很多低频词,其计算复杂度会显著增加。然而,过小的词表又无法包含足够多的单词。因此,在设计这类系统的时候对词表大小的选择(类别数量的选择)是十分重要的,往往要通过大量的实验得到最优的设置。
\parinterval 在机器翻译和语言建模中也会遇到类似的问题,比如,生成单词的过程可以被看做是一个分类问题,类别数量就是词表的大小。显然,词表越大可以覆盖更多的单词和更多种类的单词形态变化,但是过大的词表里会包含很多低频词,其计算复杂度会显著增加。然而,过小的词表又无法包含足够多的单词。因此,在设计这类系统的时候对词表大小的选择(类别数量的选择)是十分重要的,往往要通过大量的实验得到最优的设置。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -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 形式文法是分析自然语言的一种重要工具。根据乔姆斯基的定义\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}
......@@ -869,10 +869,10 @@ r_6: & & \textrm{VP} \to \textrm{VV}\ \textrm{NN} \nonumber
\begin{itemize}
\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}
\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}
\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}
\end{itemize}
......@@ -23,7 +23,7 @@
\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 时至今日,译文质量评价方法已经非常丰富,针对不同的使用场景研究人员陆续提出了不同的方法。本章将会对其中的典型方法进行介绍,包括:人工评价、有参考答案自动评价、无参考答案自动评价等。相关方法及概念也会在本章的后续章节中被广泛使用。
......@@ -911,7 +911,7 @@ d&=&t \frac{s}{\sqrt{n}}
\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}等。
\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}
\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}
......
......@@ -1730,7 +1730,7 @@ z_t&=&\gamma z_{t-1}+(1-\gamma) \frac{\partial J}{\partial {\theta}_t} \cdot \f
\end{itemize}
\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}所示。
......
......@@ -748,6 +748,20 @@ new
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% chapter 3------------------------------------------------------
@book{新华字典,
title={新华字典(第11版)},
author={中国社会科学院语言研究所词典编辑室},
year={2011},
publisher={商务印书馆}
}
@book{国语辞典,
title={国语辞典},
author={中国大辞典编纂处},
year={2011},
publisher={商务印书馆国际有限公司}
}
@inproceedings{ng2002discriminative,
author = {Ng, Andrew Y and Jordan, Michael I},
title = {On Discriminative vs. Generative Classifiers: {A} comparison of logistic
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论