Commit e854e71c by 孟霞

孟霞index

parent 178a1ae7
......@@ -211,7 +211,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\parinterval 针对这些问题,研究人员设计了很多新的方法。比如,可以在束搜索中使用启发性信息让搜索尽可能早地停止,同时保证搜索结果是“最优的”\upcite{DBLP:conf/emnlp/HuangZM17}。也可以将束搜索建模为优化问题\upcite{Wiseman2016SequencetoSequenceLA,DBLP:conf/emnlp/Yang0M18},进而设计出新的终止条件\upcite{Ma2019LearningTS}。很多开源机器翻译系统也都使用了简单有效的终止条件,比如,在OpenNMT 系统中当搜索束中当前最好的假设生成了完整的译文搜索就会停止\upcite{KleinOpenNMT},在RNNSearch系统中当找到预设数量的译文时搜索就会停止,同时在这个过程中会不断减小搜索束的大小\upcite{bahdanau2014neural}
\parinterval 实际上,设计搜索终止条件反映了搜索时延和搜索精度的一种折中\upcite{Eisner2011LearningST,Jiang2012LearnedPF}。在很多应用中,这个问题会非常关键。比如,在同声传译中,对于输入的长文本,何时开始翻译、何时结束翻译都是十分重要的\upcite{Zheng2020OpportunisticDW,Ma2019STACLST}。在很多线上翻译应用中,翻译结果的响应不能超过一定的时间,这时就需要一种{\small\sffamily\bfseries{时间受限的搜索}}\index{时间受限的搜索}(Time-constrained Search)\index{Time-constrained Search}策略\upcite{DBLP:conf/emnlp/StahlbergHSB17}
\parinterval 实际上,设计搜索终止条件反映了搜索时延和搜索精度的一种折中\upcite{Eisner2011LearningST,Jiang2012LearnedPF}。在很多应用中,这个问题会非常关键。比如,在同声传译中,对于输入的长文本,何时开始翻译、何时结束翻译都是十分重要的\upcite{Zheng2020OpportunisticDW,Ma2019STACLST}。在很多线上翻译应用中,翻译结果的响应不能超过一定的时间,这时就需要一种{\small\sffamily\bfseries{时间受限搜索}}\index{时间受限搜索}(Time-constrained Search)\index{Time-constrained Search}策略\upcite{DBLP:conf/emnlp/StahlbergHSB17}
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -401,7 +401,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\footnotetext{表中比较了几种通用数据类型的乘法运算速度,不同硬件和架构上不同类型的数据的计算速度略有不同。总体来看整型数据类型和浮点型数据相比具有显著的计算速度优势,INT4相比于FP32数据类型的计算最高能达到8倍的速度提升。}
%--------------------------------------
\parinterval 实际上,低精度运算的另一个好处是可以减少模型存储的体积。比如,如果要把机器翻译模型作为软件的一部分打包存储,这时可以考虑用低精度的方式保存模型参数,使用时再恢复成原始精度的参数。值得注意的是,参数的离散化表示(比如整型表示)的一个极端例子是{\small\sffamily\bfseries{二值网络}}\index{二值网络}(Binarized Neural Networks)\index{Binarized Neural Networks}\upcite{DBLP:conf/nips/HubaraCSEB16},即只用−1和+1 表示神经网络的每个参数\footnote{也存在使用0或1表示神经网络参数的二值网络。}。二值化可以被看作是一种极端的量化手段。不过,这类方法还没有在机器翻译中得到大规模验证。
\parinterval 实际上,低精度运算的另一个好处是可以减少模型存储的体积。比如,如果要把机器翻译模型作为软件的一部分打包存储,这时可以考虑用低精度的方式保存模型参数,使用时再恢复成原始精度的参数。值得注意的是,参数的离散化表示(比如整型表示)的一个极端例子是{\small\sffamily\bfseries{二值神经网络}}\index{二值神经网络}(Binarized Neural Networks)\index{Binarized Neural Networks}\upcite{DBLP:conf/nips/HubaraCSEB16},即只用−1和+1 表示神经网络的每个参数\footnote{也存在使用0或1表示神经网络参数的二值神经网络。}。二值化可以被看作是一种极端的量化手段。不过,这类方法还没有在机器翻译中得到大规模验证。
%----------------------------------------------------------------------------------------
% NEW SECTION
......@@ -448,13 +448,13 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\parinterval 完全独立地对每个词建模,会出现什么问题呢?来看一个例子,将汉语句子“干/得/好/!”翻译成英文,可以翻译成“Good job !”或者“Well done !”。假设生成这两种翻译的概率是相等的,即一半的概率是“Good job !”,另一半的概率是“Well done !”。由于非自回归模型的条件独立性假设,推断时第一个词“Good”和“Well”的概率是差不多大的,如果第二个词“job”和“done”的概率也差不多大,会使得模型生成出“Good done !”或者“Well job !”这样错误的翻译,如图\ref{fig:14-13}所示。这便是影响句子质量的关键问题,称之为{\small\sffamily\bfseries{多峰问题}}\index{多峰问题}(Multimodality Problem)\index{Multimodality Problem}\upcite{Gu2017NonAutoregressiveNM}。如何有效处理非自回归模型中的多峰问题 是提升非自回归模型质量的关键。
\parinterval 完全独立地对每个词建模,会出现什么问题呢?来看一个例子,将汉语句子“干/得/好/!”翻译成英文,可以翻译成“Good job !”或者“Well done !”。假设生成这两种翻译的概率是相等的,即一半的概率是“Good job !”,另一半的概率是“Well done !”。由于非自回归模型的条件独立性假设,推断时第一个词“Good”和“Well”的概率是差不多大的,如果第二个词“job”和“done”的概率也差不多大,会使得模型生成出“Good done !”或者“Well job !”这样错误的翻译,如图\ref{fig:14-13}所示。这便是影响句子质量的关键问题,称之为{\small\sffamily\bfseries{多峰性问题}}\index{多峰性问题}(Multimodality Problem)\index{Multimodality Problem}\upcite{Gu2017NonAutoregressiveNM}。如何有效处理非自回归模型中的多峰性问题 是提升非自回归模型质量的关键。
%----------------------------------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter14/Figures/figure-multi-modality}
\caption{非自回归模型中的多峰问题}
\caption{非自回归模型中的多峰问题}
\label{fig:14-13}
\end{figure}
%----------------------------------------------------------------------
......@@ -480,7 +480,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\end{figure}
%----------------------------------------------------------------------
\parinterval 实际上,使用繁衍率的另一个好处在于可以缓解多峰问题。因为,繁衍率本身可以看作是模型的一个隐变量。使用这个隐变量本质上是在对可能的译文空间进行剪枝,因为只有一部分译文满足给定的繁衍率序列。从这个角度说,在翻译率的作用下,不同单词译文组合的情况变少了,因此多峰问题也就被缓解了。
\parinterval 实际上,使用繁衍率的另一个好处在于可以缓解多峰性问题。因为,繁衍率本身可以看作是模型的一个隐变量。使用这个隐变量本质上是在对可能的译文空间进行剪枝,因为只有一部分译文满足给定的繁衍率序列。从这个角度说,在翻译率的作用下,不同单词译文组合的情况变少了,因此多峰性问题也就被缓解了。
\parinterval 另外,在每个解码器层中还新增了额外的位置注意力模块,该模块与其它部分中使用的多头注意力机制相同。其仍然基于$\mathbi{Q}$$\mathbi{K}$$\mathbi{V}$之间的计算(见{\chaptertwelve}),只是把位置编码作为$\mathbi{Q}$$\mathbi{K}$, 解码器端前一层的输出作为$\mathbi{V}$。这种方法提供了更强的位置信息。
......@@ -490,7 +490,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\subsubsection{2. 句子级知识蒸馏}
\parinterval 知识蒸馏的基本思路是把教师模型的知识传递给学生模型,让学生模型可以更好地学习(见\chapterthirteen)。通过这种方法,可以降低非自回归模型的学习难度。具体来说,可以让自回归模型作为“教师”,非自回归模型作为“学生”。把自回归神经机器翻译模型生成的句子作为新的训练样本,送给非自回归机器翻译模型进行学习\upcite{Lee2018DeterministicNN,Zhou2020UnderstandingKD,Guo2020FineTuningBC}。有研究发现自回归模型生成的结果的“确定性”更高,也就是不同句子中相同源语言片段翻译的多样性相对低一些\upcite{Gu2017NonAutoregressiveNM}。虽然从人工翻译的角度看,这可能并不是理想的译文,但是使用这样的译文可以在一定程度上缓解多峰问题。因为,经过训练的自回归模型会始终将相同的源语言句子翻译成相同的译文。这样得到的数据集噪声更少,能够降低非自回归模型学习的难度。此外,相比人工标注的译文,自回归模型输出的译文更容易让模型进行学习,这也是句子级知识蒸馏有效的原因之一。
\parinterval 知识蒸馏的基本思路是把教师模型的知识传递给学生模型,让学生模型可以更好地学习(见\chapterthirteen)。通过这种方法,可以降低非自回归模型的学习难度。具体来说,可以让自回归模型作为“教师”,非自回归模型作为“学生”。把自回归神经机器翻译模型生成的句子作为新的训练样本,送给非自回归机器翻译模型进行学习\upcite{Lee2018DeterministicNN,Zhou2020UnderstandingKD,Guo2020FineTuningBC}。有研究发现自回归模型生成的结果的“确定性”更高,也就是不同句子中相同源语言片段翻译的多样性相对低一些\upcite{Gu2017NonAutoregressiveNM}。虽然从人工翻译的角度看,这可能并不是理想的译文,但是使用这样的译文可以在一定程度上缓解多峰问题。因为,经过训练的自回归模型会始终将相同的源语言句子翻译成相同的译文。这样得到的数据集噪声更少,能够降低非自回归模型学习的难度。此外,相比人工标注的译文,自回归模型输出的译文更容易让模型进行学习,这也是句子级知识蒸馏有效的原因之一。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......
......@@ -45,7 +45,7 @@
\begin{itemize}
\vspace{0.5em}
\item {\small\sffamily\bfseries{分词}}\index{分词}Segmentation)\index{Segmentation}:这个过程会把词串进行切分,切割成最小的具有完整功能的单元\ \dash\ {\small\sffamily\bfseries{单词}}\index{单词}(Word\index{单词})。因为只有知道了什么是单词,机器翻译系统才能完成对句子的表示、分析和生成。
\item {\small\sffamily\bfseries{分词}}\index{分词} Word Segmentation)\index{Word Segmentation}:这个过程会把词串进行切分,切割成最小的具有完整功能的单元\ \dash\ {\small\sffamily\bfseries{单词}}\index{单词}(Word\index{单词})。因为只有知道了什么是单词,机器翻译系统才能完成对句子的表示、分析和生成。
\vspace{0.5em}
\item {\small\sffamily\bfseries{句法分析}}\index{句法分析}(Parsing)\index{Parsing}:这个过程会对分词的结果进行进一步分析。比如,可以对句子进行浅层分析,得到句子中实体的信息(如人名、地名等)。也可以对句子进行更深层次的分析,得到完整的句法结构,类似于图\ref{fig:3.1-2}中的结果。这种结构可以被看作是对句子的进一步抽象,被称为短语结构树,比如,NP+VP就可以表示由名词短语(Noun Phrase,NP)和动词短语(Verb Phrase,VP)构成的主谓结构。利用这些信息,机器翻译可以更加准确地对句子的结构进行分析和生成。
\vspace{0.5em}
......@@ -372,7 +372,7 @@ $计算这种切分的概率值。
& = & \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)$,它表示起始隐含状态出现的概率。隐马尔可夫模型的假设也大大化简了问题,因此可以通过式\eqref{eq:joint-prob-xy}很容易地计算隐含状态序列和可见状态序列出现的概率。值得注意的是,发射概率和转移概率都可以被看作是描述序列生成过程的“特征”。但是,这些“特征”并不是随意定义的,而是符合问题的概率解释。而这种基于事件发生的逻辑所定义的概率生成模型,通常可以被看作是一种{\small\sffamily\bfseries{生成模型}}\index{生成模型}(Generative Model)\index{Generative Model}
\parinterval 一般来说,隐马尔可夫模型中包含下面三个问题:
......@@ -566,7 +566,7 @@ Z(\seq{x})&=&\sum_{\seq{y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1}
\subsection{句法树}
\parinterval {\small\sffamily\bfseries{句法}}\index{句法}(Syntax)\index{Syntax}是研究句子的每个组成部分和它们之间的组合方式。一般来说,句法和语言是相关的,比如,英文是主谓宾结构,而日语是主宾谓结构,因此不同的语言也会有不同的句法描述方式。自然语言处理领域最常用的两种句法分析形式是{\small\sffamily\bfseries{短语结构分析}}\index{短语结构分析}(Phrase Structure Parsing)\index{Phrase Structure Parsing}{\small\sffamily\bfseries{依存分析}}\index{依存分析}(Dependency Parsing)\index{Dependency Parsing}。图\ref{fig:3.4-1}展示了这两种的句法表示形式的实例。其中,左侧是短语结构树,它描述的是短语的结构功能,比如“吃”是动词(记为VV),“鱼”是名词(记为NN),“吃/鱼”组成动词短语,这个短语再与“喜欢”这一动词组成新的动词短语。短语结构树的每个子树都是一个句法功能单元,比如,子树VP(VV(吃) NN(鱼))就表示了“吃/鱼”这个动词短语的结构,其中子树根节点VP是句法功能标记。短语结构树利用嵌套的方式描述了语言学的功能,短语结构树中,每个词都有词性(或词类),不同的词或者短语可以组成名动结构、动宾结构等语言学短语结构,短语结构分析一般也被称为{\small\sffamily\bfseries{成分分析}}\index{成分分析}(Constituency Parsing)或{\small\sffamily\bfseries{完全分析}}\index{完全分析}(Full Parsing)\index{Full Parsing}
\parinterval {\small\sffamily\bfseries{句法}}\index{句法}(Syntax)\index{Syntax}是研究句子的每个组成部分和它们之间的组合方式。一般来说,句法和语言是相关的,比如,英文是主谓宾结构,而日语是主宾谓结构,因此不同的语言也会有不同的句法描述方式。自然语言处理领域最常用的两种句法分析形式是{\small\sffamily\bfseries{短语结构句法分析}}\index{短语结构句法分析}(Phrase Structure Parsing)\index{Phrase Structure Parsing}{\small\sffamily\bfseries{依存句法分析}}\index{依存句法分析}(Dependency Parsing)\index{Dependency Parsing}。图\ref{fig:3.4-1}展示了这两种的句法表示形式的实例。其中,左侧是短语结构树,它描述的是短语的结构功能,比如“吃”是动词(记为VV),“鱼”是名词(记为NN),“吃/鱼”组成动词短语,这个短语再与“喜欢”这一动词组成新的动词短语。短语结构树的每个子树都是一个句法功能单元,比如,子树VP(VV(吃) NN(鱼))就表示了“吃/鱼”这个动词短语的结构,其中子树根节点VP是句法功能标记。短语结构树利用嵌套的方式描述了语言学的功能,短语结构树中,每个词都有词性(或词类),不同的词或者短语可以组成名动结构、动宾结构等语言学短语结构,短语结构句法分析一般也被称为{\small\sffamily\bfseries{成分句法分析}}\index{成分句法分析}(Constituency Parsing)或{\small\sffamily\bfseries{完全句法分析}}\index{完全句法分析}(Full Parsing)\index{Full Parsing}
\parinterval\ref{fig:3.4-1}右侧展示的是另一种句法结构,被称作依存句法树。依存句法树表示了句子中单词和单词之间的依存关系。比如,从这个例子可以了解,“猫”依赖“喜欢”,“吃”依赖“喜欢”,“鱼”依赖“吃”。
......@@ -579,9 +579,9 @@ Z(\seq{x})&=&\sum_{\seq{y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1}
\end{figure}
%---------------------------
\parinterval 短语结构树和依存句法树的结构和功能有很大不同。短语结构树的叶子节点是单词,中间节点是词性或者短语句法标记。在短语结构分析中,通常把单词称作{\small\sffamily\bfseries{终结符}}\index{终结符}(Terminal)\index{Terminal},把词性称为{\small\sffamily\bfseries{预终结符}}\index{预终结符}(Pre-terminal)\index{Pre-terminal},而把其他句法标记称为{\small\sffamily\bfseries{非终结符}}\index{非终结符}(Non-terminal)\index{Non-terminal}。依存句法树没有预终结符和非终结符,所有的节点都是句子里的单词,通过不同节点间的连线表示句子中各个单词之间的依存关系。每个依存关系实际上都是有方向的,头和尾分别指向“接受”和“发出”依存关系的词。依存关系也可以进行分类,例如,图\ref{fig:3.4-1}中的对每个依存关系的类型都有一个标记,这也被称作是有标记的依存分析。如果不生成这些标记,这样的句法分析被称作无标记的依存分析。
\parinterval 短语结构树和依存句法树的结构和功能有很大不同。短语结构树的叶子节点是单词,中间节点是词性或者短语句法标记。在短语结构句法分析中,通常把单词称作{\small\sffamily\bfseries{终结符}}\index{终结符}(Terminal)\index{Terminal},把词性称为{\small\sffamily\bfseries{预终结符}}\index{预终结符}(Pre-terminal)\index{Pre-terminal},而把其他句法标记称为{\small\sffamily\bfseries{非终结符}}\index{非终结符}(Non-terminal)\index{Non-terminal}。依存句法树没有预终结符和非终结符,所有的节点都是句子里的单词,通过不同节点间的连线表示句子中各个单词之间的依存关系。每个依存关系实际上都是有方向的,头和尾分别指向“接受”和“发出”依存关系的词。依存关系也可以进行分类,例如,图\ref{fig:3.4-1}中的对每个依存关系的类型都有一个标记,这也被称作是有标记的依存句法分析。如果不生成这些标记,这样的句法分析被称作无标记的依存句法分析。
\parinterval 虽然短语结构树和依存树的句法表现形式有很大不同,但是它们在某些条件下能相互转化。比如,可以使用启发性规则将短语结构树自动转化为依存树。从应用的角度,依存分析由于形式更加简单,而且直接建模词语之间的依赖,因此在自然语言处理领域中受到很多关注。在机器翻译中,无论是哪种句法树结构,都已经被证明会对机器翻译系统产生帮助。特别是短语结构树,在机器翻译中的应用历史更长,研究更为深入,因此本节将会以短语结构分析为例介绍句法分析的相关概念。
\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}
\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}。上下文无关文法的具体形式如下:
%-------------------------------------------
\vspace{0.5em}
......@@ -869,7 +869,7 @@ 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}
\vspace{0.5em}
......
......@@ -53,9 +53,9 @@
\end{center}
}\end{table}
\parinterval 这里的一个核心问题是:从哪个角度对译文质量进行评价呢?常用的标准有:{\small\sffamily\bfseries{流畅度}}\index{流畅度}(Fluency)\index{Fluency}{\small\sffamily\bfseries{忠诚度}}\index{忠诚度}(Fidelity)\index{Fidelity}\upcite{DBLP:journals/mt/ChurchH93}。其中流畅度是指译文在目标语言中的流畅程度,越通顺的译文流畅度越高;忠诚度是指译文表达源文意思的程度,如果译文能够全面、准确的表达源文的意思,那么它具有较高的翻译忠诚度。在一些极端的情况下,译文可以非常流畅,但是与源文完全不对应。或者,译文可以非常好的对应源文,但是读起来非常不连贯。这些译文都不是很好的译文。
\parinterval 这里的一个核心问题是:从哪个角度对译文质量进行评价呢?常用的标准有:{\small\sffamily\bfseries{流畅度}}\index{流畅度}(Fluency)\index{Fluency}{\small\sffamily\bfseries{保真度}}\index{保真度}(Fidelity)\index{Fidelity}\upcite{DBLP:journals/mt/ChurchH93}。其中流畅度是指译文在目标语言中的流畅程度,越通顺的译文流畅度越高;保真度是指译文表达源文意思的程度,如果译文能够全面、准确的表达源文的意思,那么它具有较高的翻译保真度。在一些极端的情况下,译文可以非常流畅,但是与源文完全不对应。或者,译文可以非常好的对应源文,但是读起来非常不连贯。这些译文都不是很好的译文。
\parinterval 传统观点把翻译分为“信”、“达”、“雅”三个层次,而忠诚度体现的是一种“信”的思想,而流畅度体现的是一种“达”的思想。不过“雅”在机器翻译评价中还不是一个常用的标准,而且机器翻译还没有达到“雅”的水平,是未来所追求的目标。
\parinterval 传统观点把翻译分为“信”、“达”、“雅”三个层次,而保真度体现的是一种“信”的思想,而流畅度体现的是一种“达”的思想。不过“雅”在机器翻译评价中还不是一个常用的标准,而且机器翻译还没有达到“雅”的水平,是未来所追求的目标。
\parinterval 给定评价标准,译文质量评价有很多实现方式。比如,可以使用人工评价的方式让评委对每个译文进行打分(\ref{Manual evaluation}节),也可以用自动评价的方式让计算机比对译文和参考答案之间的匹配的程度(\ref{Automatic evaluation with reference answers}节)。但是,自然语言的翻译是最复杂的人工智能问题之一。这不仅仅体现在相关问题的建模和系统实现的复杂性上,译文质量评价也同样面临着诸多挑战。
......@@ -63,7 +63,7 @@
\vspace{0.5em}
\item {\small\sffamily\bfseries{译文不唯一}}。自然语言表达的丰富性决定了同一个意思往往有很多种表达方式。同一句话,由不同译者的翻译也往往存在差异。译者的背景、翻译水平、翻译所处的语境,甚至译者的情绪都会对译文产生影响。如何在评价过程中尽可能考虑多样的译文,是译文质量评价中最具挑战的问题之一。
\vspace{0.5em}
\item {\small\sffamily\bfseries{评价标准不唯一}}。虽然流畅度和忠诚度给译文质量评价提供了很好的参考依据,但是在实践中往往会有更多样的需求。比如,在专利翻译中,术语翻译的准确性就是必须要考虑的因素,一个术语的翻译错误会导致整个译文不可用。此外,术语翻译的一致性也是非常重要的,即使同一个术语有多种正确的译文,但是在同一个专利文档中,术语翻译需要保持一致。不同的需求使得很难用统一的标准对译文质量进行评价。在实践中,往往需要针对不同应用场景设计不同的评价标准。
\item {\small\sffamily\bfseries{评价标准不唯一}}。虽然流畅度和保真度给译文质量评价提供了很好的参考依据,但是在实践中往往会有更多样的需求。比如,在专利翻译中,术语翻译的准确性就是必须要考虑的因素,一个术语的翻译错误会导致整个译文不可用。此外,术语翻译的一致性也是非常重要的,即使同一个术语有多种正确的译文,但是在同一个专利文档中,术语翻译需要保持一致。不同的需求使得很难用统一的标准对译文质量进行评价。在实践中,往往需要针对不同应用场景设计不同的评价标准。
\vspace{0.5em}
\item {\small\sffamily\bfseries{自动评价与人工评价存在着偏差}}。固然使用人工的方式可以准确地评估译文质量,但是这种方式费时、费力。而且由于人工评价的主观性,其结果不易重现,也就是不同人的评价结果会有差异。这些因素也造成了人工评价不能被过于频繁的使用。翻译质量的自动评价可以充分利用计算机的计算能力,对译文与参考答案进行比对,具有速度快、结果可重现的优点,但是其精度不如人工评价。使用何种评价方法也是实践中需要考虑的重要问题之一。
\vspace{0.5em}
......@@ -101,7 +101,7 @@
\sectionnewpage
\section{人工评价}\label{Manual evaluation}
\parinterval 顾名思义,人工评价是指评价者根据翻译结果好坏对译文进行评价。例如,可以根据句子的忠诚度和流畅度对其进行打分,这样能够准确评定出译文是否准确翻译出源文的意思以及译文是否通顺。在人工评价时,一般由多个评价者匿名对译文打分,之后综合所有评价者的评价结果给出最终的得分。人工评价可以准确反映句子的翻译质量,是最权威、可信度最高的评价方法,但是其缺点也十分明显:需要耗费人力物力,而且评价的周期长,不能及时得到有效的反馈。因此在实际系统开发中,纯人工评价不会过于频繁地被使用,它往往和自动评价一起配合,帮助系统研发人员准确的了解当前系统的状态。
\parinterval 顾名思义,人工评价是指评价者根据翻译结果好坏对译文进行评价。例如,可以根据句子的保真度和流畅度对其进行打分,这样能够准确评定出译文是否准确翻译出源文的意思以及译文是否通顺。在人工评价时,一般由多个评价者匿名对译文打分,之后综合所有评价者的评价结果给出最终的得分。人工评价可以准确反映句子的翻译质量,是最权威、可信度最高的评价方法,但是其缺点也十分明显:需要耗费人力物力,而且评价的周期长,不能及时得到有效的反馈。因此在实际系统开发中,纯人工评价不会过于频繁地被使用,它往往和自动评价一起配合,帮助系统研发人员准确的了解当前系统的状态。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -109,7 +109,7 @@
\subsection{评价策略}
\parinterval 合理的评价指标是人工评价得以顺利进行的基础。机器译文质量的人工评价可以追溯到1966年,自然语言处理咨询委员会提出{\small\sffamily\bfseries{可理解度}}\index{可理解度}(Intelligibility)\index{Intelligibility}忠诚度作为机器译文质量人工评价指标\upcite{DBLP:journals/mtcl/Carroll66}。1994 年,{\small\sffamily\bfseries{充分性}}\index{充分性}(Adequacy)\index{Adequacy}、流畅度和{\small\sffamily\bfseries{信息性}}\index{信息性}(Informativeness)\index{Informativeness}成为ARPA MT\footnote{ARPA MT计划是美国高级研究计划局软件和智能系统技术处人类语言技术计划的一部分。}的人工评价标准\upcite{DBLP:conf/amta/WhiteOO94}。此后,有不少研究者提出了更多的机器译文质量人工评估指标,例如将{\small\sffamily\bfseries{清晰度}}\index{清晰度}(Clarity)\index{Clarity}{\small\sffamily\bfseries{连贯性}}\index{连贯性}(Coherence)\index{Coherence}加入人工评价指标中\upcite{Miller:2005:MTS}。甚至有人将各种人工评价指标集中在一起,组成了尽可能全面的机器翻译评估框架\upcite{king2003femti}
\parinterval 合理的评价指标是人工评价得以顺利进行的基础。机器译文质量的人工评价可以追溯到1966年,自然语言处理咨询委员会提出{\small\sffamily\bfseries{可理解度}}\index{可理解度}(Intelligibility)\index{Intelligibility}保真度作为机器译文质量人工评价指标\upcite{DBLP:journals/mtcl/Carroll66}。1994 年,{\small\sffamily\bfseries{充分性}}\index{充分性}(Adequacy)\index{Adequacy}、流畅度和{\small\sffamily\bfseries{信息量}}\index{信息量}(Informativeness)\index{Informativeness}成为ARPA MT\footnote{ARPA MT计划是美国高级研究计划局软件和智能系统技术处人类语言技术计划的一部分。}的人工评价标准\upcite{DBLP:conf/amta/WhiteOO94}。此后,有不少研究者提出了更多的机器译文质量人工评估指标,例如将{\small\sffamily\bfseries{清晰度}}\index{清晰度}(Clarity)\index{Clarity}{\small\sffamily\bfseries{连贯性}}\index{连贯性}(Coherence)\index{Coherence}加入人工评价指标中\upcite{Miller:2005:MTS}。甚至有人将各种人工评价指标集中在一起,组成了尽可能全面的机器翻译评估框架\upcite{king2003femti}
\parinterval 人工评价的策略非常多。考虑不同的因素,往往会使用不同的评价方案,比如:
......@@ -290,18 +290,18 @@
\vspace{0.5em}
\item 在机器译文与参考答案之间建立单词之间的对应关系。单词之间的对应关系在建立过程中主要涉及三个模型,在对齐过程中依次使用这三个模型进行匹配:
\begin{itemize}
\item {\small\sffamily\bfseries{“绝对”匹配模型}}\index{“绝对”匹配模型}(Exact Model)\index{Exact Model}。绝对匹配模型在建立单词对应关系时,要求机器译文端的单词与参考答案端的单词完全一致,并且在参考答案端至多有1个单词与机器译文端的单词对应,否则会将其视为多种对应情况。对于实例\ref{eg:4-2},使用“绝对”匹配模型,共有两种匹配结果,如图\ref{fig:4-3}所示。
\item {\small\sffamily\bfseries{精确模型}}\index{精确模型}(Exact Model)\index{Exact Model}。精确模型在建立单词对应关系时,要求机器译文端的单词与参考答案端的单词完全一致,并且在参考答案端至多有1个单词与机器译文端的单词对应,否则会将其视为多种对应情况。对于实例\ref{eg:4-2},使用精确模型,共有两种匹配结果,如图\ref{fig:4-3}所示。
%----------------------------------------------
\begin{figure}[htp]
\centering
\subfigure[\small{“绝对”匹配词对齐-1}]{\input{./Chapter4/Figures/figure-absolute-match-word-alignment-1}}
\subfigure[\small{“绝对”匹配词对齐-2}]{\input{./Chapter4/Figures/figure-absolute-match-word-alignment-2}}
\caption{“绝对”匹配模型}
\subfigure[\small{精确匹配词对齐-1}]{\input{./Chapter4/Figures/figure-absolute-match-word-alignment-1}}
\subfigure[\small{精确匹配词对齐-2}]{\input{./Chapter4/Figures/figure-absolute-match-word-alignment-2}}
\caption{精确匹配词对齐}
\label{fig:4-3}
\end{figure}
%----------------------------------------------
\item {\small\sffamily\bfseries{“波特词干”匹配模型}}\index{“波特词干”匹配模型}(Porter Stem Model)\index{Porter Stem Model}。该模型在“绝对”匹配结果的基础上,对尚未对齐的单词进行基于词干的匹配,只需机器译文端单词与参考答案端单词的词干相同即可,如上文中的“do”和“did”。对于图\ref{fig:4-3}中显示的词对齐结果,再使用“波特词干” 匹配模型,得到如图\ref{fig:4-4}所示的结果。
\item {\small\sffamily\bfseries{“波特词干”模型}}\index{“波特词干”模型}(Porter Stem Model)\index{Porter Stem Model}。该模型在精确匹配结果的基础上,对尚未对齐的单词进行基于词干的匹配,只需机器译文端单词与参考答案端单词的词干相同即可,如上文中的“he”和“him”。对于图\ref{fig:4-3}中显示的词对齐结果,再使用“波特词干” 模型,得到如图\ref{fig:4-4}所示的结果。
%----------------------------------------------
\begin{figure}[htp]
......@@ -311,7 +311,7 @@
\label{fig:4-4}
\end{figure}
%----------------------------------------------
\item {\small\sffamily\bfseries{“同义词”匹配模型}}\index{“同义词”匹配模型}(WN Synonymy Model)\index{WN Synonymy Model}。该模型在前两个模型匹配结果的基础上,对尚未对齐的单词进行同义词的匹配,即基于WordNet词典匹配机器译文与参考答案中的同义词。如实例\ref{eg:4-2}中的“eat”和“have”。图\ref{fig:4-5}给出了一个真实的例子。
\item {\small\sffamily\bfseries{“同义词”模型}}\index{“同义词”模型}(WN Synonymy Model)\index{WN Synonymy Model}。该模型在前两个模型匹配结果的基础上,对尚未对齐的单词进行同义词的匹配,即基于WordNet词典匹配机器译文与参考答案中的同义词。如实例\ref{eg:4-2}中的“eat”和“have”。图\ref{fig:4-5}给出了一个真实的例子。
%----------------------------------------------
\begin{figure}[htp]
......@@ -367,7 +367,7 @@
\label{eq:4-12}
\end{eqnarray}
\parinterval Meteor方法是经典的自动评价方法之一。它的创新点在于引入了词干匹配和同义词匹配,扩大了词汇匹配的范围。Meteor方法被提出后,很多人尝试对其进行了改进,使其评价结果与人工评价结果更相近。例如Meteor-next在Meteor的基础上增加{\small\sffamily\bfseries{释义匹配器}}\index{释义匹配器}(Paraphrase Matcher)\index{Paraphrase Matcher},利用该匹配器能够捕获机器译文中与参考答案意思相近的短语,从而在短语层面进行匹配。此外这种方法还引入了{\small\sffamily\bfseries{可调权值向量}}\index{可调权值向量}(Tunable Weight Vector)\index{Tunable Weight Vector},用于调节每个匹配类型的相应贡献\upcite{DBLP:conf/wmt/DenkowskiL10};Meteor 1.3在Meteor的基础上增加了改进的{\small\sffamily\bfseries{文本规范器}}\index{文本规范器}Meteor Normalizer)\index{Meteor Normalizer}、更高精度的释义匹配以及区分内容词和功能词等指标,其中文本规范器能够根据一些规范化规则,将机器译文中意义等价的标点减少到通用的形式。而区分内容词和功能词则能够得到更为准确的词汇对应关系\upcite{DBLP:conf/wmt/DenkowskiL11};Meteor Universial则通过机器学习方法学习不同语言的可调权值,在对低资源语言进行评价时可对其进行复用,从而实现对低资源语言的译文更准确的评价\upcite{DBLP:conf/wmt/DenkowskiL14}
\parinterval Meteor方法是经典的自动评价方法之一。它的创新点在于引入了词干匹配和同义词匹配,扩大了词汇匹配的范围。Meteor方法被提出后,很多人尝试对其进行了改进,使其评价结果与人工评价结果更相近。例如Meteor-next在Meteor的基础上增加{\small\sffamily\bfseries{释义匹配器}}\index{释义匹配器}(Paraphrase Matcher)\index{Paraphrase Matcher},利用该匹配器能够捕获机器译文中与参考答案意思相近的短语,从而在短语层面进行匹配。此外这种方法还引入了{\small\sffamily\bfseries{可调权值向量}}\index{可调权值向量}(Tunable Weight Vector)\index{Tunable Weight Vector},用于调节每个匹配类型的相应贡献\upcite{DBLP:conf/wmt/DenkowskiL10};Meteor 1.3在Meteor的基础上增加了改进的{\small\sffamily\bfseries{文本规范器}}\index{文本规范器}Text Normalizer)\index{Text Normalizer}、更高精度的释义匹配以及区分内容词和功能词等指标,其中文本规范器能够根据一些规范化规则,将机器译文中意义等价的标点减少到通用的形式。而区分内容词和功能词则能够得到更为准确的词汇对应关系\upcite{DBLP:conf/wmt/DenkowskiL11};Meteor Universial则通过机器学习方法学习不同语言的可调权值,在对低资源语言进行评价时可对其进行复用,从而实现对低资源语言的译文更准确的评价\upcite{DBLP:conf/wmt/DenkowskiL14}
\parinterval 由于召回率反映参考答案在何种程度上覆盖目标译文的全部内容,而Meteor在评价过程中显式引入召回率,所以Meteor的评价与人工评价更为接近。但Meteor方法需要借助同义词表、功能词表等外部数据,当外部数据中的目标词对应不正确或缺失相应的目标词时,评价水准就会降低。特别是,针对汉语等与英语差异较大的语言,使用Meteor方法也会面临很多挑战。不仅如此,超参数的设置和使用,对于评分也有较大影响。
......@@ -783,7 +783,7 @@ d&=&t \frac{s}{\sqrt{n}}
\vspace{0.5em}
\item {\small\sffamily\bfseries{预测译文句子的相对排名}}。当相对排序(详见\ref{sec:human-eval-scoring}节)的译文评价方法被引入后,给出机器译文的相对排名成为句子级质量评估的任务目标。
\vspace{0.5em}
\item {\small\sffamily\bfseries{预测译文句子的后编辑工作量}}。在最近的研究中,句子级的质量评估一直在探索各种类型的离散或连续的后编辑标签。例如,通过测量以秒为单位的后编辑时间对译文句子进行评分;通过测量预测后编辑过程所需的击键数对译文句子进行评分;通过计算{\small\sffamily\bfseries{人工译后编辑距离}}\index{人工译后编辑距离}(Human Translation Error Rate,HTER)\index{Human Translation Error Rate},即在后编辑过程中编辑(插入/删除/替换)数量与参考翻译长度的占比率对译文句子进行评分。HTER的计算公式为:
\item {\small\sffamily\bfseries{预测译文句子的后编辑工作量}}。在最近的研究中,句子级的质量评估一直在探索各种类型的离散或连续的后编辑标签。例如,通过测量以秒为单位的后编辑时间对译文句子进行评分;通过测量预测后编辑过程所需的击键数对译文句子进行评分;通过计算{\small\sffamily\bfseries{人工译后错误率}}\index{人工译后错误率}(Human Translation Error Rate,HTER)\index{Human Translation Error Rate},即在后编辑过程中编辑(插入/删除/替换)数量与参考翻译长度的占比率对译文句子进行评分。HTER的计算公式为:
\vspace{0.5em}
\begin{eqnarray}
\textrm{HTER}&=& \frac{\mbox{编辑操作数目}}{\mbox{翻译后编辑结果长度}}
......
......@@ -299,7 +299,7 @@
\vspace{0.5em}
\end{itemize}
\parinterval 矩阵的{\small\bfnew{数乘}}\index{数乘}(Scalar Multiplication)\index{Scalar Multiplication}是指标量(实数)与矩阵的乘法运算,计算过程是将标量与矩阵的每个元素相乘,最终得到与原矩阵形状相同的矩阵。例如,矩阵$ {\mathbi{A}}={(a_{ij})}_{m\times n} $与标量$ k $进行数乘运算,其结果矩阵$ {\mathbi{B}}={(ka_{ij})}_{m\times n} $,即$ k{(a_{ij})}_{m\times n}={(ka_{ij})}_{m\times n} $。公式\eqref{eq:9-102}\eqref{eq:9-5}展示了矩阵数乘的计算过程:
\parinterval 矩阵的{\small\bfnew{数乘}}\index{数乘}也称{\small\bfnew{标量乘法}}\index{标量乘法}(Scalar Multiplication)\index{Scalar Multiplication}是指标量(实数)与矩阵的乘法运算,计算过程是将标量与矩阵的每个元素相乘,最终得到与原矩阵形状相同的矩阵。例如,矩阵$ {\mathbi{A}}={(a_{ij})}_{m\times n} $与标量$ k $进行数乘运算,其结果矩阵$ {\mathbi{B}}={(ka_{ij})}_{m\times n} $,即$ k{(a_{ij})}_{m\times n}={(ka_{ij})}_{m\times n} $。公式\eqref{eq:9-102}\eqref{eq:9-5}展示了矩阵数乘的计算过程:
\begin{eqnarray}
{\mathbi{A}} & = &
\begin{pmatrix}
......@@ -1098,7 +1098,7 @@ y&=&{\textrm{Sigmoid}}({\textrm{Tanh}}({\mathbi{x}}\cdot {\mathbi{W}}^{[1]}+{\ma
\end{figure}
%-------------------------------------------
\parinterval\ref{fig:9-38}实际上是神经网络的一种{\small\bfnew{计算图}}\index{计算图}(Computation Graph)\index{Computation Graph}表示。现在很多深度学习框架都是把神经网络转化为计算图,这样可以把复杂的运算分解为简单的运算,称为{\small\bfnew{算子}}\index{算子}Calculus\index{Calculus})。通过对计算图中节点的遍历,可以方便地完成神经网络的计算。比如,可以对图中节点进行拓扑排序(由输入到输出),之后依次访问每个节点,同时完成相应的计算,这也就实现了一个前向计算的过程。
\parinterval\ref{fig:9-38}实际上是神经网络的一种{\small\bfnew{计算图}}\index{计算图}(Computation Graph)\index{Computation Graph}表示。现在很多深度学习框架都是把神经网络转化为计算图,这样可以把复杂的运算分解为简单的运算,称为{\small\bfnew{算子}}\index{算子}Operator\index{Operator})。通过对计算图中节点的遍历,可以方便地完成神经网络的计算。比如,可以对图中节点进行拓扑排序(由输入到输出),之后依次访问每个节点,同时完成相应的计算,这也就实现了一个前向计算的过程。
\parinterval 使用计算图的另一个优点在于,这种方式易于参数梯度的计算。在后面的内容中会看到,计算神经网络中参数的梯度是模型训练的重要步骤。在计算图中,可以使用{\small\bfnew{反向传播}}\index{反向传播} (Backward Propagation\index{Backward Propagation})的方式逐层计算不同节点上的梯度信息。在\ref{sec9:para-training} 节会看到使用计算图这种结构可以非常方便、高效地计算反向传播中所需的梯度信息。
......@@ -1129,7 +1129,7 @@ y&=&{\textrm{Sigmoid}}({\textrm{Tanh}}({\mathbi{x}}\cdot {\mathbi{W}}^{[1]}+{\ma
\subsection{损失函数}
\parinterval 在神经网络的有监督学习中,训练模型的数据是由输入和正确答案所组成的样本构成的。假设有多个输入样本$ \{{\mathbi{x}}^{[1]}\dots,{\mathbi{x}}^{[n]}\} $,每一个$ {\mathbi{x}}^{[i]}$都对应一个正确答案$ {\mathbi{y}}^{[i]} $$ \{{\mathbi{x}}^{[i]},{\mathbi{y}}^{[i]}\} $就构成一个优化神经网络的{\small\sffamily\bfseries{训练数据集}}\index{训练数据集合}(Training Data Set)\index{Training Data Set}。对于一个神经网络模型${\mathbi{y}}=f({\mathbi{x}}) $,每个$ {\mathbi{x}}^{[i]} $也会有一个输出$ {\hat{\mathbi{y}}}^{[i]} $。如果可以度量正确答案$ {\mathbi{y}}^{[i]} $和神经网络输出$ {\hat{\mathbi{y}}}^{[i]} $之间的偏差,进而通过调整网络参数减小这种偏差,就可以得到更好的模型。
\parinterval 在神经网络的有监督学习中,训练模型的数据是由输入和正确答案所组成的样本构成的。假设有多个输入样本$ \{{\mathbi{x}}^{[1]}\dots,{\mathbi{x}}^{[n]}\} $,每一个$ {\mathbi{x}}^{[i]}$都对应一个正确答案$ {\mathbi{y}}^{[i]} $$ \{{\mathbi{x}}^{[i]},{\mathbi{y}}^{[i]}\} $就构成一个优化神经网络的{\small\sffamily\bfseries{训练数据集}}\index{训练数据集}(Training Data Set)\index{Training Data Set}。对于一个神经网络模型${\mathbi{y}}=f({\mathbi{x}}) $,每个$ {\mathbi{x}}^{[i]} $也会有一个输出$ {\hat{\mathbi{y}}}^{[i]} $。如果可以度量正确答案$ {\mathbi{y}}^{[i]} $和神经网络输出$ {\hat{\mathbi{y}}}^{[i]} $之间的偏差,进而通过调整网络参数减小这种偏差,就可以得到更好的模型。
%----------------------------------------------
\begin{figure}[htp]
......@@ -1182,7 +1182,7 @@ y&=&{\textrm{Sigmoid}}({\textrm{Tanh}}({\mathbi{x}}\cdot {\mathbi{W}}^{[1]}+{\ma
\noindent 其中,$ \widehat{\bm \theta} $表示在训练数据上使损失的平均值达到最小的参数,$n$为训练数据总量。$ \frac{1}{n}\sum \limits_{i=1}^{n}{L({\mathbi{x}}^{[i]},{\mathbi{y}}^{[i]};{\bm \theta})} $也被称作{\small\sffamily\bfseries{代价函数}}\index{代价函数}(Cost Function)\index{Cost Function},它是损失函数均值期望的估计,记为$ J({\bm \theta}) $
\parinterval 参数优化的核心问题是:找到使代价函数$ J({\bm\theta}) $达到最小的$ \bm \theta $。然而$ J({\bm\theta}) $可能会包含大量的参数,比如,基于神经网络的机器翻译模型的参数量可能会超过一亿个。这时不可能用手动方法进行调参。为了实现高效的参数优化,比较常用的手段是使用{\small\bfnew{梯度下降方法}}\index{梯度下降方}(The Gradient Descent Method)\index{The Gradient Descent Method}
\parinterval 参数优化的核心问题是:找到使代价函数$ J({\bm\theta}) $达到最小的$ \bm \theta $。然而$ J({\bm\theta}) $可能会包含大量的参数,比如,基于神经网络的机器翻译模型的参数量可能会超过一亿个。这时不可能用手动方法进行调参。为了实现高效的参数优化,比较常用的手段是使用{\small\bfnew{梯度下降}}\index{梯度下降}(The Gradient Descent Method)\index{The Gradient Descent Method}
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -1201,7 +1201,7 @@ y&=&{\textrm{Sigmoid}}({\textrm{Tanh}}({\mathbi{x}}\cdot {\mathbi{W}}^{[1]}+{\ma
\end{figure}
%-------------------------------------------
\parinterval 应用梯度下降算法时,首先需要初始化参数${\bm \theta}$。一般情况下深度学习中的参数应该初始化为一个不太大的随机数。一旦初始化${\bm \theta}$后,就开始对模型进行不断的更新,{\small\sffamily\bfseries{参数更新的规则}}\index{参数更新的规则}Update Rule)\index{Update Rule}如下:
\parinterval 应用梯度下降算法时,首先需要初始化参数${\bm \theta}$。一般情况下深度学习中的参数应该初始化为一个不太大的随机数。一旦初始化${\bm \theta}$后,就开始对模型进行不断的更新,{\small\sffamily\bfseries{参数更新的规则}}\index{参数更新的规则}Parameter Update Rule)\index{Parameter Update Rule}如下:
\begin{eqnarray}
{\bm \theta}_{t+1}&=&{\bm \theta}_{t}-\alpha \cdot \frac{\partial J({\bm \theta})}{\partial {\bm \theta}}
\label{eq:9-29}
......@@ -1218,7 +1218,7 @@ y&=&{\textrm{Sigmoid}}({\textrm{Tanh}}({\mathbi{x}}\cdot {\mathbi{W}}^{[1]}+{\ma
\noindent {\small\sffamily\bfseries{1)批量梯度下降\index{批量梯度下降}(Batch Gradient Descent)\index{Batch Gradient Descent}}}
\vspace{0.5em}
\parinterval 批量梯度下降是梯度下降方法中最原始的形式,这种梯度下降方法在每一次迭代时使用所有的样本进行参数更新。参数优化的目标函数如下:
\parinterval 批量梯度下降是梯度下降法中最原始的形式,这种梯度下降法在每一次迭代时使用所有的样本进行参数更新。参数优化的目标函数如下:
\begin{eqnarray}
J({\bm \theta})&=&\frac{1}{n}\sum_{i=1}^{n}{L({\mathbi{x}}^{[i]},{\mathbi{y}}^{[i]};{\bm \theta})}
\label{eq:9-30}
......@@ -1394,9 +1394,9 @@ $+2x^2+x+1)$ & \ \ $(x^4+2x^3+2x^2+x+1)$ & $+6x+1$ \\
\label{eq:9-200}
\end{eqnarray}
\noindent 其中,$ \alpha $是一个超参数,表示更新步幅的大小,称作学习率。当然,这是一种最基本的梯度下降法。如果函数的形状非均向,比如呈延伸状,搜索最优点的路径就会非常低效,因为这时梯度的方向并没有指向最小值的方向,并且随着参数的更新,梯度方向往往呈锯齿状,这将是一条相当低效的路径;此外这种梯度下降算法并不是总能到达最优点,而是在其附近徘徊;还有一个最令人苦恼的问题\ \dash \ 设置学习率,如果学习率设置的比较小,会导致训练收敛速度慢,如果学习率设置的比较大,会导致训练过程中因为优化幅度过大而频频跳过最优点。我们希望网络在优化的时候损失函数有一个很好的收敛速度同时又不至于摆动幅度太大。
\noindent 其中,$ \alpha $是一个超参数,表示更新步幅的大小,称作学习率。当然,这是一种最基本的梯度下降法。如果函数的形状非均向,比如呈延伸状,搜索最优点的路径就会非常低效,因为这时梯度的方向并没有指向最小值的方向,并且随着参数的更新,梯度方向往往呈锯齿状,这将是一条相当低效的路径;此外这种梯度下降算法并不是总能到达最优点,而是在其附近徘徊;还有一个最令人苦恼的问题\ \dash \ 设置学习率,如果学习率设置的比较小,会导致训练收敛速度慢,如果学习率设置的比较大,会导致训练过程中因为优化幅度过大而频频跳过最优点。我们希望网络在优化的时候损失函数有一个很好的收敛速度同时又不至于摆动幅度太大。
\parinterval 针对以上问题,很多学者尝试对梯度下降法做出改进,如Momentum\upcite{qian1999momentum}, AdaGrad\upcite{duchi2011adaptive}, Adadelta\upcite{Zeiler2012ADADELTAAA}, RMSProp\upcite{tieleman2012rmsprop}, Adam\upcite{kingma2014adam}, AdaMax\upcite{kingma2014adam}, Nadam\upcite{Dozat2016IncorporatingNM}, AMSGrad\upcite{Reddi2018OnTC}等等,在这里将介绍Momentum、AdaGrad、RMSProp、Adam这4 种方法。
\parinterval 针对以上问题,很多学者尝试对梯度下降法做出改进,如Momentum\upcite{qian1999momentum}, AdaGrad\upcite{duchi2011adaptive}, Adadelta\upcite{Zeiler2012ADADELTAAA}, RMSProp\upcite{tieleman2012rmsprop}, Adam\upcite{kingma2014adam}, AdaMax\upcite{kingma2014adam}, Nadam\upcite{Dozat2016IncorporatingNM}, AMSGrad\upcite{Reddi2018OnTC}等等,在这里将介绍Momentum、AdaGrad、RMSProp、Adam这4 种方法。
%----------------------------------------------------------------------------------------
%
......@@ -1958,7 +1958,7 @@ z_t&=&\gamma z_{t-1}+(1-\gamma) \frac{\partial J}{\partial {\theta}_t} \cdot \f
\parinterval 值得注意的是,在FNNLM中,单词已经不再是一个孤立的符号串,而是被表示为一个实数向量。这样,两个单词之间可以通过向量计算某种相似度或距离。这导致相似的单词会具有相似的分布,进而缓解$n$-gram语言模型的问题\ \dash \ 明明意思很相近的两个词但是概率估计的结果差异性却很大。
\parinterval 在FNNLM中,所有的参数、输入、输出都是连续变量,因此FNNLM也是一个典型的连续空间模型。通过使用交叉熵等损失函数,可以很容易地对FNNLM进行优化。比如,可以使用梯度下降法对FNNLM的模型参数进行训练。
\parinterval 在FNNLM中,所有的参数、输入、输出都是连续变量,因此FNNLM也是一个典型的连续空间模型。通过使用交叉熵等损失函数,可以很容易地对FNNLM进行优化。比如,可以使用梯度下降法对FNNLM的模型参数进行训练。
\parinterval 虽然FNNLM形式简单,却为处理自然语言提供了一个全新的视角。首先,该模型重新定义了“词是什么”\ \dash \ 它并非词典的一项,而是可以用一个连续实数向量进行表示的可计算的“量”。此外,由于$n$-gram不再是离散的符号序列,模型不需要记录$n$-gram,所以很好的缓解了上面所提到的数据稀疏问题,模型体积也大大减小。
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论