Commit 129235d7 by 单韦乔

第二章搜索文字修改和第二章深入阅读

parent 1bef4e83
......@@ -756,9 +756,9 @@ c_{\textrm{KN}}(\cdot) = \left\{\begin{array}{ll}
\sectionnewpage
\section{搜索}
\parinterval 语言模型的应用非常广泛,比如,可以用语言模型来判断一个句子是否通顺;也可以用语言模型在缺失单词的位置选择出最适合的单词;甚至使用语言模型完成更加复杂的任务。比如写作文时,需要生成出一个完整的句子甚至一篇完整的文章,此时并没有指定某个单词序列作为输入,而是要求直接生成一个合理的单词序列。这时,语言模型是否能够根据自己的判断来完成生成过程呢?
\parinterval 语言模型的应用非常广泛,比如,可以用语言模型判断一个句子是否通顺;也可以用语言模型在缺失单词的位置选择出最适合的单词。但是语言模型是否可以完成更加复杂的任务呢?比如写作文时,需要生成出一个完整的句子甚至一篇完整的文章,此时并没有指定某个单词序列作为输入,而是要求直接生成一个合理的单词序列。
\parinterval类问题也对应着一大类自然语言处理问题\ \dash\ {\small\bfnew{序列生成}}\index{序列生成}(Sequence Generation)\index{Sequence Generation}。机器翻译就是一个非常典型的序列生成问题:在机器翻译任务中,需要根据源语言序列直接生成与之相对应的目标语言序列。但是语言模型本身并不能“制造”单词序列的,它的基础功能是评判给定的、已经生成的单词序列是否流畅合理。因此严格地说,序列生成问题的本质并非是语言模型凭空“生成”序列,而是使用语言模型在所有候选的单词序列中找出其中的“最佳”序列。实际上,在序列生成任务中寻找最佳单词序列过程的本质是经典的{\small\bfnew{搜索问题}}\index{搜索问题}(Search Problem)\index{Search Problem}。也就是,在所有可能的序列中,根据语言模型的打分找出最佳的序列作为生成的结果。下面将着重介绍序列生成背后的搜索问题建模方法,以及在序列生成里常用的搜索技术。相关的搜索算法也会在后续统计机器翻译和神经机器翻译中被深入使用
\parinterval个问题也对应着一大类自然语言处理问题\ \dash\ {\small\bfnew{序列生成}}\index{序列生成}(Sequence Generation)\index{Sequence Generation}。机器翻译就是一个非常典型的序列生成问题:在机器翻译任务中,需要根据源语言序列直接生成与之相对应的目标语言序列。但是语言模型本身并不能“制造”单词序列的,它的基础功能是评判给定的、已经生成的单词序列是否流畅合理。因此严格地说,序列生成问题的本质并非是语言模型凭空“生成”序列,而是使用语言模型在所有候选的单词序列中找出其中的“最佳”序列。实际上,在序列生成任务中寻找最佳单词序列过程的本质是经典的{\small\bfnew{搜索问题}}\index{搜索问题}(Search Problem)\index{Search Problem}。也就是,在所有可能的序列中,根据语言模型的打分找出最佳的序列作为生成的结果。下面将着重介绍序列生成背后的搜索问题建模方法,以及在序列生成里常用的搜索技术
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -766,15 +766,15 @@ c_{\textrm{KN}}(\cdot) = \left\{\begin{array}{ll}
\subsection{搜索问题的建模}
\parinterval 具体来说,基于语言模型的序列生成问题的本质是在无数任意排列的单词序列中搜索出最合理、最流畅的“最优解”。这里单词序列$w = w_1 w_2 \ldots w_m$的合理性和流畅性可以通过语言模型的打分$\funp{P}(w)$衡量。因此在序列生成中,基于语言模型的搜索问题可以被建模为如下形式:
\parinterval 具体来说,基于语言模型的序列生成问题的本质是在无数任意排列的单词序列中搜索出最合理、最流畅的“最优解”。这里单词序列$w = w_1 w_2 \ldots w_m$的合理性和流畅性可以通过语言模型的打分$\funp{P}(w)$衡量。因此在序列生成任务中,基于语言模型的搜索问题可以被建模为如下形式:
\begin{eqnarray}
w^{'} = \argmax_{w \in \chi}\funp{P}(w)
\label{eq:2-40}
\end{eqnarray}
\parinterval 这里$\arg$即argument,$\argmax_{w \in \chi}\funp{P}(w)$表示想要找到使语言模型得分$\funp{P}(w)$达到最大的单词序列$w$$\chi$是搜索问题的解空间 \footnote[1]{解空间,是一个算法执行后,所得到的所有解构成的集合。}在这里是所有可能的单词序列$w$的集合。$w^{'}$可以被看做该搜索问题中的“最优解”,即“出现概率最大的单词序列”。
\parinterval 这里$\arg$即argument,$\argmax_{w \in \chi}\funp{P}(w)$表示想要找到使语言模型得分$\funp{P}(w)$达到最大的单词序列$w$$\chi$是搜索问题的解空间 \footnote[1]{解空间,是一个算法执行后,所得到的所有解构成的集合。}是所有可能的单词序列$w$的集合。$w^{'}$可以被看做该搜索问题中的“最优解”,即“出现概率最大的单词序列”。
\parinterval 在序列生成问题中,最简单的策略就是对词表中的词汇进行任意组合,通过这种枚举的方式得到全部可能的序列。但是,很多时候并没有预先指定序列的长度。比如,机器翻译中目标语句子的长度是无法预先知道的。那么怎样判断一个序列何时完成了生成过程呢?回顾人类书写文字的过程可以发现,句子的生成首先从一片空白开始,然后从左到右逐词生成,除了第一个单词,所有单词的生成都依赖于前面已经生成的单词。为了方便计算机实现,通常定义单词序列从一个特殊的符号<sos>后开始生成。同样地,一个单词序列的结束也用一个特殊的符号<eos>来表示。
\parinterval 在序列生成任务中,最简单的策略就是对词表中的词汇进行任意组合,通过这种枚举的方式得到全部可能的序列。但是,很多时候并没有预先指定生成序列的长度。比如,机器翻译中目标语序列的长度是无法预先知道的。那么怎样判断一个序列何时完成了生成过程呢?回顾人类书写文字的过程可以发现,句子的生成首先从一片空白开始,然后从左到右逐词生成,除了第一个单词,所有单词的生成都依赖于前面已经生成的单词。为了方便计算机实现,通常定义单词序列从一个特殊的符号<sos>后开始生成。同样地,一个单词序列的结束也用一个特殊的符号<eos>来表示。
\parinterval 对于一个序列$<$sos$>$\ \ I\ \ agree\ \ $<$eos$>$,图\ref{fig:2-13}展示语言模型视角该序列的生成过程。该过程通过在序列的末尾不断附加词表中的单词来逐渐扩展序列,直到这段序列结束。这种生成单词序列的过程被称作{\small\bfnew{自左向右生成}}\index{自左向右生成}(Left-To-Right Generation)\index{Left-To-Right Generation}
......@@ -787,7 +787,7 @@ w^{'} = \argmax_{w \in \chi}\funp{P}(w)
\end{figure}
%-------------------------------------------
\parinterval 在这种序列生成方式的基础上,实现对候选序列的搜索过程通常有两种方法\ \dash\ 深度优先遍历和宽度优先遍历\upcite{DBLP:books/mg/CormenLR89}。在深度优先遍历中,每次从词表中可重复地选择一个单词,然后从左至右地生成序列,直到<eos>被选择,此时一个完整的单词序列被生成出来。然后从<eos>回退到上一个单词,选择之前没有被选择到的候选单词代替<eos>,并继续挑选下一个单词直到<eos>被选到,如果上一个单词的所有可能都被枚举过,那么回退到上上一个单词继续枚举,直到回退到<sos>,这时候枚举结束。在宽度优先遍历中,每次不是只选择一个单词而是枚举所有单词。一个简单的例子是一个只有两个单词\{a, b\}的词表,从<sos>开始枚举所有单词,可以生成:
\parinterval 在这种序列生成方式的基础上,实现对候选序列的搜索过程通常有两种方法\ \dash\ 深度优先遍历和宽度优先遍历\upcite{DBLP:books/mg/CormenLR89}。在深度优先遍历中,每次从词表中可重复地选择一个单词,然后从左至右地生成序列,直到<eos>被选择,此时一个完整的单词序列被生成出来。然后从<eos>回退到上一个单词,选择之前词表中未被选择到的候选单词代替<eos>,并继续挑选下一个单词直到<eos>被选到,如果上一个单词的所有可能都被枚举过,那么回退到上上一个单词继续枚举,直到回退到<sos>,这时候枚举结束。在宽度优先遍历中,每次不是只选择一个单词而是枚举所有单词。一个简单的例子是一个只有两个单词\{a, b\}的词表,从<sos>开始枚举所有单词,可以生成:
\begin{eqnarray}
\text{\{<sos> a, <sos> b, <sos> <eos>\}} \nonumber
\end{eqnarray}
......@@ -797,9 +797,9 @@ w^{'} = \argmax_{w \in \chi}\funp{P}(w)
\text{\{<sos> a a, <sos> a b, <sos> a <eos>, <sos> b a, <sos> b b, <sos> b <eos>\}} \nonumber
\end{eqnarray}
\parinterval 此时可以划分出长度为1的完整单词序列集合\{<sos> a <eos>, <sos> b <eos>\},以及长度为2的未结束的单词序列片段集合\{<sos> a a, <sos> a b, <sos> b a, <sos> b b\}。如此类推,继续生成未结束序列,直到单词序列的长度达到所允许的最大长度。
\parinterval 此时可以划分出长度为1的完整单词序列集合\{<sos> a <eos>, <sos> b <eos>\},以及长度为2的未结束单词序列片段集合\{<sos> a a, <sos> a b, <sos> b a, <sos> b b\}。以此类推,继续生成未结束序列,直到单词序列的长度达到所允许的最大长度。
\parinterval 对于搜索算法,通常可以从以下四个方面评价:
\parinterval 对于这两种搜索算法,通常可以从以下四个方面评价:
\begin{itemize}
\vspace{0.5em}
......@@ -833,7 +833,7 @@ w^{'} = \argmax_{w \in \chi}\funp{P}(w)
\parinterval 此时上述生成策略虽然可以满足完备性和最优性,但其仍然算不上是优秀的生成策略,因为这两种算法在时间复杂度和空间复杂度上的表现很差,如表\ref{tab:2-3}所示。其中$|V|$为词表大小,$m$为序列长度,$\ast$表示“当且仅当在单词序列的最大长度被确定”。值得注意的是,在之前的遍历过程中,除了在序列开头一定会挑选<sos>之外,其他位置每次可挑选的单词并不只有词表中的单词,还有结束符号<eos>,因此实际上生成过程中每个位置的单词候选数量为$|V|+1$
\parinterval 那么是否能改进枚举策略使得它更高效呢?答案是肯定的。从图\ref{fig:2-14}可以看到,对于一个最大长度为4的序列的搜索过程,生成某个单词序列的过程实际上就是访问解空间树\footnote[2]{解空间树是搜索路径的树型表示,它包含了搜索过程中可生成的全部序列。该树的根节点恒为$<$sos$>$,代表序列均从$<$sos$>$开始。该树结构中非叶子节点的兄弟节点有$|V|$个,由词表和结束符号$<$eos$>$构成。}中从根节点<sos>开始一直到叶子节点<eos>结束的某条路径,而这条的路径上节点按顺序组成了一段独特的单词序列。此时对所有可能单词序列的枚举就变成了对解空间树的遍历。并且枚举的过程与语言模型打分的过程也是一致的,每枚举一个词$i$也就是在上图选择$w_i$一列的一个节点,语言模型就可以为当前的树节点$w_i$给出一个分值,即$\funp{P}(w_i | w_1 w_2 \ldots w_{i-1})$
\parinterval 那么是否有比枚举策略更高效的方法呢?答案是肯定的。从图\ref{fig:2-14}可以看到,对于一个最大长度为4的序列的搜索过程,生成某个单词序列的过程实际上就是访问解空间树\footnote[2]{解空间树是搜索路径的树型表示,它包含了搜索过程中可生成的全部序列。该树的根节点恒为$<$sos$>$,代表序列均从$<$sos$>$开始。该树结构中非叶子节点的兄弟节点有$|V|$个,由词表和结束符号$<$eos$>$构成。}中从根节点<sos>开始一直到叶子节点<eos>结束的某条路径,而这条的路径上节点按顺序组成了一段独特的单词序列。此时对所有可能单词序列的枚举就变成了对解空间树的遍历。并且枚举的过程与语言模型打分的过程也是一致的,每枚举一个词$i$也就是在上图选择$w_i$一列的一个节点,语言模型就可以为当前的树节点$w_i$给出一个分值,即$\funp{P}(w_i | w_1 w_2 \ldots w_{i-1})$
%----------------------------------------------
\begin{figure}[htp]
......@@ -876,9 +876,9 @@ w^{'} = \argmax_{w \in \chi}\funp{P}(w)
\subsubsection{1.无信息搜索策略}
\parinterval 上述搜索过程中,在每次对当前节点进行扩展的时候,可以借助语言模型计算从当前节点的权重。因此很自然的一个想法是:在单词序列的生成过程中使用权重信息可以帮助系统更快找到合适的解。
\parinterval 上述搜索过程中,在每次对当前节点进行扩展的时候,可以借助语言模型计算当前节点的权重。因此很自然的一个想法是:在单词序列的生成过程中使用权重信息可以帮助系统更快地找到合适的解。
\parinterval 在深度优先搜索中,每次总是先挑选一个单词,等枚举完当前单词全部子节点构成的序列后,才会选择下一个兄弟节点继续进行搜索。但是在挑选过程中先枚举词表中的哪个词是未定义的,也就是先选择哪个兄弟节点进行搜索是随机的。既然最终目标是寻找权重之和最大的路径,那么可以优先挑选分数较高的单词进行枚举。因为在路径长度有限的情况下,权重和最大的路径上每个节点的权重也会比较大,而先尝试分数大的单词可以让系统更快地找到最优解。如图\ref{fig:2-16}所示,红色线表示了第一次搜索的路径。这是对深度优先搜索的一个自然的扩展。
\parinterval 在深度优先搜索中,每次总是先挑选一个单词,等枚举完当前单词全部子节点构成的序列后,才会选择下一个兄弟节点继续进行搜索。但是在挑选过程中先枚举词表中的哪个词是未定义的,也就是先选择哪个兄弟节点进行搜索是随机的。既然最终目标是寻找权重之和最大的路径,那么可以优先挑选分数较高的单词进行枚举。如图\ref{fig:2-16}所示,红色线表示了第一次搜索的路径。在路径长度有限的情况下,权重和最大的路径上每个节点的权重也会比较大,先尝试分数较大的单词可以让系统更快地找到最优解,这是对深度优先搜索的一个自然的扩展。
%----------------------------------------------
\begin{figure}[htp]
......@@ -912,9 +912,9 @@ w^{'} = \argmax_{w \in \chi}\funp{P}(w)
\parinterval 在搜索问题中,一个单词序列的生成可以分为两部分:已生成部分和未生成部分。既然最终目标是使得一个完整的单词序列得分最高,那么关注未生成部分的得分也许能为现有搜索策略的改进提供思路。
\parinterval 但是,问题在于未生成部分来自搜索树中未被搜索过的区域,直接得到其得分并不现实。既然仅依赖于问题本身的信息无法得到未生成部分的得分,那么是否可以通过一些外部信息来估计未生成部分得分$\textrm{h}(w_1 w_2 \ldots w_m)$呢?在前面所提到的剪枝技术中,借助语言模型的特性可以使得搜索变得高效。与其类似,利用语言模型的其他特性也可以实现对未生成部分得分的估计。这个对未生成部分得分的估计通常被称为{\small\bfnew{启发式函数}}\index{启发式函数}(Heuristic Function)\index{Heuristic Function}。在扩展假设过程中,可以优先挑选当前得分$\log \funp{P}(w_1 w_2 \ldots w_m)$和启发式函数值$\textrm{h}(w_1 w_2 \ldots w_m)$最大的候选进行扩展,从而大大提高搜索的效率。这种基于启发式函数的一致代价搜索通常也被称为$\textrm{A}^{\ast}$搜索或{\small\bfnew{启发式搜索}}\index{启发式搜索}(Heuristically Search)\index{Heuristically Search}\upcite{hart1968a}
\parinterval 但是,问题在于未生成部分来自搜索树中未被搜索过的区域,直接得到其得分并不现实。既然仅依赖于问题本身的信息无法得到未生成部分的得分,那么是否可以通过一些外部信息来估计未生成部分得分$h(w_1 w_2 \ldots w_m)$呢?在前面所提到的剪枝技术中,借助语言模型的特性可以使得搜索变得高效。与其类似,利用语言模型的其他特性也可以实现对未生成部分得分的估计。这个对未生成部分得分的估计通常被称为{\small\bfnew{启发式函数}}\index{启发式函数}(Heuristic Function)\index{Heuristic Function}。在扩展假设过程中,可以优先挑选当前得分$\log \funp{P}(w_1 w_2 \ldots w_m)$和启发式函数值$h(w_1 w_2 \ldots w_m)$最大的候选进行扩展,从而大大提高搜索的效率。这种基于启发式函数的一致代价搜索通常也被称为$\textrm{A}^{\ast}$搜索或{\small\bfnew{启发式搜索}}\index{启发式搜索}(Heuristically Search)\index{Heuristically Search}\upcite{hart1968a}
\parinterval 通常可以把启发式函数看成是计算当前状态跟最优解的距离的一种方法,并把关于最优解的一些性质的猜测放到启发式函数里。比如,在序列生成中,一般认为最优序列应该在某个特定的长度附近,那么就可以把启发式函数定义成该长度与当前单词序列长度的差值。这样,在搜索过程中,启发式函数会引导搜索倾向于先生成当前得分高且序列长度接近预设长度的单词序列。此外除了手工设计启发式函数,还可以借助强化学习的手段,学习关于未来得分的估计\upcite{DBLP:conf/nips/HeLXQ0L17}
\parinterval 通常可以把启发式函数看成是计算当前状态跟最优解的距离的一种方法,并把关于最优解的一些性质的猜测放到启发式函数里。比如,在序列生成中,一般认为最优序列应该在某个特定的长度附近,那么就可以把启发式函数定义成该长度与当前单词序列长度的差值。这样,在搜索过程中,启发式函数会引导搜索先生成当前得分高且序列长度接近预设长度的单词序列。此外除了手工设计启发式函数,还可以借助强化学习的手段,学习关于未来得分的估计\upcite{DBLP:conf/nips/HeLXQ0L17}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -922,7 +922,7 @@ w^{'} = \argmax_{w \in \chi}\funp{P}(w)
\subsection{局部搜索}
\parinterval 由于全局搜索策略要遍历整个解空间,所以它的时间、空间复杂度一般都比较高。在对于完备性与最优性要求不那么严格的搜索问题上,可以使用非经典搜索策略。非经典搜索涵盖的内容非常广泛,其中包括局部搜索\upcite{lowerre1976the}、连续空间搜索\upcite{bishop1995neural}、信念状态搜索\upcite{åström1965optimal}和实时搜索\upcite{korf1990real}等等。局部搜索是非经典搜索里的一个重要方面,局部搜索策略不必遍历完整的解空间,因此降低了时间、空间复杂度,但是这也导致可能会丢失最优解甚至找不到解,所以局部搜索都是不完备的而且非最优的。但是,在自然语言处理中,很多问题由于搜索空间过大无法使用全局搜索,因此使用局部搜索是非常普遍的。
\parinterval 由于全局搜索策略要遍历整个解空间,所以它的时间、空间复杂度一般都比较高。在对于完备性与最优性要求不那么严格的搜索问题上,可以使用非经典搜索策略。非经典搜索涵盖的内容非常广泛,其中包括局部搜索\upcite{lowerre1976the}、连续空间搜索\upcite{bishop1995neural}、信念状态搜索\upcite{åström1965optimal}和实时搜索\upcite{korf1990real}等等。局部搜索是非经典搜索里的一个重要方面,局部搜索策略不必遍历完整的解空间,因此降低了时间、空间复杂度,但是这也导致可能会丢失最优解甚至找不到解,所以局部搜索都是不完备的而且非最优的。但是,在自然语言处理中,很多问题由于搜索空间过大无法使用全局搜索,因此使用局部搜索是非常普遍的。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -964,7 +964,7 @@ w^{'} = \argmax_{w \in \chi}\funp{P}(w)
\parinterval 束搜索也有很多的改进版本。比如,在无信息搜索策略中可以使用剪枝技术来提升搜索的效率。而实际上,束搜索本身也是一种剪枝方法。因此有时也把束搜索称作{\small\bfnew{束剪枝}}\index{束剪枝}(Beam Pruning)\index{Beam Pruning}。在这里有很多其它的剪枝策略可供选择,例如可以只保留与当前最佳路径得分相差在$\theta$之内的路径,也就是搜索只保留得分差距在一定范围内的路径,这种方法也被称作{\small\bfnew{直方图剪枝}}\index{直方图剪枝}(Histogram Pruning)\index{Histogram Pruning}
\parinterval 对于语言模型来说,当进行搜索时正在搜索的多个路径中最高得分比当前搜索到的最好的解的得分低之后可以立刻停止搜索,因为此时序列越长语言模型得分$\log \funp{P}(w_1 w_2 \ldots w_m)$会越低,因此继续扩展这些路径不会产生更好的结果。这个技术通常也被称为{\small\bfnew{最佳停止条件}}\index{最佳停止条件}(Optimal Stopping Criteria)\index{Optimal Stopping Criteria}
\parinterval 对于语言模型来说,当进行搜索时正在搜索的多个路径中最高得分比当前搜索到的最好的解的得分低时,可以立刻停止搜索。因为此时序列越长语言模型得分$\log \funp{P}(w_1 w_2 \ldots w_m)$会越低,继续扩展这些路径不会产生更好的结果。这个技术通常也被称为{\small\bfnew{最佳停止条件}}\index{最佳停止条件}(Optimal Stopping Criteria)\index{Optimal Stopping Criteria}
\parinterval 总的来说,虽然局部搜索由于没有遍历完整的解空间,使得这类方法无法保证找到最优解。但是,局部搜索算法大大降低了搜索过程的时间、空间复杂度。因此在语言模型生成和机器翻译的解码过程中常常使用局部搜索算法。在{\chapterseven}{\chapterten}{\chaptereleven}中还将介绍这些算法的具体应用。
......@@ -975,18 +975,20 @@ w^{'} = \argmax_{w \in \chi}\funp{P}(w)
\sectionnewpage
\section{小结及深入阅读} \label{sec2:summary}
\parinterval 本章重点介绍了如何对自然语言处理问题进行统计建模,并从数据中自动学习统计模型的参数,最终使用学习到的模型对新的问题进行处理。之后,本章将这种思想应用到语言建模这个自然语言处理任务中,它也和机器翻译有着紧密的联系。通过系统化的建模,可以发现:经过适当的假设和化简,统计模型可以很好的描述复杂的自然语言处理问题。相关概念和方法也会在后续章节的内容中被广泛使用。
\parinterval 本章重点介绍了如何对自然语言处理问题进行统计建模,并从数据中自动学习统计模型的参数,最终使用学习到的模型对新的问题进行处理。之后,将这种思想应用到语言建模任务中,该任务与机器翻译有着紧密的联系。通过系统化的建模,可以发现:经过适当的假设和化简,统计模型可以很好的描述复杂的自然语言处理问题。相关概念和方法也会在后续章节的内容中被广泛使用。
\parinterval 由于本章重点介绍如何用统计的思想对自然语言处理任务进行建模,因此并没有对具体的问题展开深入讨论。关于不同语言模型的对比和分析可以进一步参考相关综述\upcite{goodman2001a,jing2019survey}。此外,有几方面内容,读者可以继续关注
\parinterval 此外,有几方面内容,读者可以继续深入了解
\begin{adjustwidth}{1em}{}
\begin{itemize}
\vspace{0.5em}
\item{\small\sffamily\bfseries{建模}}方面,本章介绍的语言建模采用的是基于人工先验知识进行模型设计的思路。也就是,问题所表达的现象被“一步一步”生成出来。这是一种典型的生成式建模思想,它把要解决的问题看作一些观测结果的隐含变量(比如,句子是观测结果,新句子出现的可能性是隐含在背后的变量),之后通过对隐含变量生成观测结果的过程进行建模,以达到对问题进行数学描述的目的。这类模型一般需要依赖一些独立性假设,假设的合理性对最终的性能有较大影响。相对于{\small\sffamily\bfseries{生成模型}}\index{生成模型}(Generative Model)\index{Generative Model},另一类方法是{\small\sffamily\bfseries{判别模型}}\index{判别模型}(Discriminative Model)\index{Discriminative Model},它直接描述了从隐含变量生成观测结果的过程,这样对问题的建模更加直接,同时这类模型可以更加灵活地引入不同的特征\upcite{DBLP:conf/acl/OchN02}。判别模型在自然语言处理中也有广泛应用\upcite{shannon1948mathematical}\upcite{ng2002discriminative}。 在本书的第四章也会使用到判别式模型
\item本章介绍的$n$-gram语言模型中,通过对语料库中词汇频率进行统计,进而计算句子的概率。但是由于语料中存在大量的低频词汇以及未登录词,这些概率为0或接近0的词汇将导致语言模型无法给出合理的句子概率。因此本章介绍了三种平滑方法,以解决上述问题。实际上,平滑方法是语言建模中的重要研究方向。除了上述三种方法之外,还有Jelinek–Mercer平滑\upcite{jelinek1980interpolated}、Katz平滑\upcite{katz1987estimation}以及Witten–Bell平滑等等\upcite{bell1990text}\upcite{witten1991the}。相关工作也对这些平滑方法进行了详细对比\upcite{chen1999an}\upcite{goodman2001a}
\vspace{0.5em}
\item 从现在{\small\sffamily\bfseries{自然语言处理的前沿}}看,基于端到端学习的深度学习方法在很多任务中都取得了领先的性能。语言模型同样可以使用这些方法,而且在近些年取得了巨大成功\upcite{DBLP:conf/nips/BengioDV00}。关于神经语言模型的内容,会在{\chapternine}进行进一步介绍。这里更多地关注了语言模型的基本问题和求解思路,因为对问题的建模是自然语言处理的基础,对问题的本质刻画并不会因为方法的改变而改变。在后续章节还将看到,这里所使用的生成序列的建模方法会作为机器翻译最基本的范式
\item 除了平滑方法,也有很多对$n$-gram语言模型的改进工作。比如,对于形态学丰富的语言,可以考虑对单词的形态学变化来进行建模。这类语言模型在一些机器翻译系统中也体现出了很好的潜力\upcite{kirchhoff2005improved}\upcite{sarikaya2007joint}\upcite{koehn2007factored}。此外,如何使用超大规模数据进行语言模型训练也是备受关注的研究方向。比如,有研究者探索了对超大语言模型进行压缩和存储的方法\upcite{federico2007efficient}\upcite{federico2006how}\upcite{heafield2011kenlm}。另一个有趣的方向是,利用随机存储算法对大规模语言模型进行有效存储\upcite{talbot2007smoothed}\upcite{talbot2007randomised},比如,在语言模型中使用Bloom\ Filter等随机存储的数据结构
\vspace{0.5em}
\item 此外,本章结合序列生成任务对{\small\sffamily\bfseries{搜索技术}}进行了介绍。而搜索问题也是语言建模和机器翻译中的最基本问题之一。在这些任务中,搜索空间往往较大,因此枚举与大多数全局搜索方法是不可行的。但是,由于启发式搜索不仅具有完备性,并且兼顾了搜索效率,因此也有研究尝试使用启发式搜索\upcite{DBLP:conf/acl/OchUN01,DBLP:conf/acl/WangW97}。同时现在许多基于强化学习的方法本质上也是一种对启发式搜索的引申\upcite{DBLP:conf/nips/HeLXQ0L17}。对于局部搜索算法,除了经常在翻译任务中使用的束搜索\upcite{DBLP:journals/corr/LiMJ16}以外还有模拟退火搜索,他们都是对贪婪搜索的一种改进,并且遗传算法作为随机束搜索的变形也常常被使用。最后,在机器翻译任务中,搜索技术也被应用于神经结构搜索。其中常用的方法包括使用强化学习的方法\upcite{DBLP:conf/iclr/ZophL17,DBLP:conf/iclr/SchrimpfM0S18}或使用遗传算法搜索网络结构。由于整个模型结构的表示空间巨大,因此在搜索过程中也往往采用束搜索等方式对结构空间进行裁剪,以达到在有限算力条件下搜索到最佳模型结构的目的。
\item 本章更多地关注了语言模型的基本问题和求解思路,但是基于$n$-gram的方法并不是语言建模的唯一方法。从现在自然语言处理的前沿看,基于端到端学习的深度学习方法在很多任务中都取得了领先的性能。语言模型同样可以使用这些方法\upcite{jing2019a},而且在近些年取得了巨大成功\upcite{DBLP:conf/nips/BengioDV00}。例如,最早提出的前馈神经语言模型\upcite{bengio2003a}和后来的基于循环单元的语言模型\upcite{mikolov2010recurrent}、基于长短期记忆单元的语言模型\upcite{sundermeyer2012lstm}以及现在非常流行的Transformer\upcite{vaswani2017attention}\upcite{dai2019transformer}。关于神经语言模型的内容,会在{\chapternine}进行进一步介绍。
\vspace{0.5em}
\item 最后,本章结合语言模型的序列生成任务对搜索技术进行了介绍。类似地,机器翻译任务也需要从大量的翻译后选中快速寻找最优译文。因此在机器翻译任务中也使用了搜索方法,这个过程通常被称作{\small\bfnew{解码}}\index{解码}(Decoding)\index{Decoding}。例如,有研究者在基于词的翻译模型中尝试使用启发式搜索\upcite{DBLP:conf/acl/OchUN01,DBLP:conf/acl/WangW97}以及贪婪搜索方法\upcite{germann2001fast}\upcite{germann2003greedy},也有研究者在基于短语的栈解码中使用$\textrm{A}^{\ast}$搜索\upcite{tillmann1997a}\upcite{wang1997decoding}。此外,解码方法还包括有限状态机解码\upcite{bangalore2001a}\upcite{bangalore2000stochastic}以及基于语言学约束的解码\upcite{venugopal2007an}\upcite{huang2007forest}。相关内容将在{\chaptereight}{\chapterfourteen}进行介绍。
\vspace{0.5em}
\end{itemize}
\end{adjustwidth}
......@@ -1098,8 +1098,8 @@
//bibsource = {dblp computer science bibliography, https://dblp.org}
}
@inproceedings{wang-etal-2018-niutrans,
title = "The {N}iu{T}rans Machine Translation System for {WMT}18",
author = "Wang, Qiang and
title = {The {N}iu{T}rans Machine Translation System for {WMT}18},
author = {Wang, Qiang and
Li, Bei and
Liu, Jiqiang and
Jiang, Bojian and
......@@ -1107,15 +1107,15 @@
Li, Yinqiao and
Lin, Ye and
Xiao, Tong and
Zhu, Jingbo",
booktitle = "Proceedings of the Third Conference on Machine Translation: Shared Task Papers",
month = oct,
year = "2018",
address = "Belgium, Brussels",
publisher = "Association for Computational Linguistics",
Zhu, Jingbo},
booktitle = {Proceedings of the Third Conference on Machine Translation: Shared Task Papers},
month = {oct},
year = {2018},
address = {Belgium, Brussels},
publisher = {Association for Computational Linguistics},
//url = "https://www.aclweb.org/anthology/W18-6430",
//doi = "10.18653/v1/W18-6430",
pages = "528--534"
pages = {528--534}
}
@article{zhu2015long,
author = {Xiaodan Zhu and
......@@ -1213,7 +1213,7 @@
@article{goodman2001a,
title={A bit of progress in language modeling},
author={Joshua T. {Goodman}},
journal={Computer Speech & Language},
journal={Computer Speech \& Language},
volume={15},
number={4},
pages={403--434},
......@@ -1376,7 +1376,7 @@
volume={10},
number={1},
pages={174--205},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2011418219",
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2011418219},
year={1965}
}
......@@ -1387,7 +1387,7 @@
volume={42},
number={2},
pages={189--211},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2021061679",
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2021061679},
year={1990}
}
......@@ -1398,7 +1398,7 @@
volume={8},
number={1},
pages={1--38},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2075201173",
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2075201173},
year={1994}
}
......@@ -1407,9 +1407,269 @@
author={H. {Ney} and U. {Essen}},
booktitle={[Proceedings] ICASSP 91: 1991 International Conference on Acoustics, Speech, and Signal Processing},
pages={825--828},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2020749563",
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2020749563},
year={1991}
}
@article{chen1999an,
title={An empirical study of smoothing techniques for language modeling},
author={Stanley F. {Chen} and Joshua {Goodman}},
journal={Computer Speech \& Language},
volume={13},
number={4},
pages={359--394},
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2158195707},
year={1999}
}
%需要确认
@book{bell1990text,
title={Text compression},
author={Timothy C. {Bell} and John G. {Cleary} and Ian H. {Witten}},
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2611071497},
year={1990},
publisher={Prentice-Hall, Inc.}
}
@article{katz1987estimation,
title={Estimation of probabilities from sparse data for the language model component of a speech recognizer},
author={S. {Katz}},
journal={IEEE Transactions on Acoustics, Speech, and Signal Processing},
volume={35},
number={3},
pages={400--401},
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2134237567},
year={1987}
}
@article{witten1991the,
title={The zero-frequency problem: estimating the probabilities of novel events in adaptive text compression},
author={I.H. {Witten} and T.C. {Bell}},
journal={IEEE Transactions on Information Theory},
volume={37},
number={4},
pages={1085--1094},
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2113641473},
year={1991}
}
@article{jelinek1980interpolated,
title={Interpolated estimation of Markov source parameters from sparse data},
author={F. {Jelinek}},
journal={Proc. Workshop on Pattern Recognition in Practice, 1980},
pages={381--397},
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/1597533204},
year={1980}
}
@article{goodman2001a,
title={A Bit of Progress in Language Modeling Extended Version},
author={Joshua T. {Goodman}},
journal={Machine Learning and Applied Statistics Group Microsoft Research. Technical Report, MSR-TR-2001-72},
volume={28},
////notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/10704533},
year={2001}
}
@inproceedings{heafield2011kenlm,
title={KenLM: Faster and Smaller Language Model Queries},
author={Kenneth {Heafield}},
booktitle={Proceedings of the Sixth Workshop on Statistical Machine Translation},
pages={187--197},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2134800885",
year={2011}
}
@inproceedings{koehn2007factored,
title={Factored Translation Models},
author={Philipp {Koehn} and Hieu {Hoang}},
booktitle={Proceedings of the 2007 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning (EMNLP-CoNLL)},
pages={868--876},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2113788796",
year={2007}
}
@inproceedings{talbot2007randomised,
title={Randomised Language Modelling for Statistical Machine Translation},
author={David {Talbot} and Miles {Osborne}},
booktitle={Proceedings of the 45th Annual Meeting of the Association of Computational Linguistics},
pages={512--519},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2106540279",
year={2007}
}
@inproceedings{federico2007efficient,
title={Efficient Handling of N-gram Language Models for Statistical Machine Translation},
author={Marcello {Federico} and Mauro {Cettolo}},
booktitle={Proceedings of the Second Workshop on Statistical Machine Translation},
pages={88--95},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2125750666",
year={2007}
}
@inproceedings{talbot2007smoothed,
title={Smoothed Bloom Filter Language Models: Tera-Scale LMs on the Cheap},
author={David {Talbot} and Miles {Osborne}},
booktitle={Proceedings of the 2007 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning (EMNLP-CoNLL)},
pages={468--476},
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/162552777},
year={2007}
}
@inproceedings{kirchhoff2005improved,
title={Improved Language Modeling for Statistical Machine Translation},
author={Katrin {Kirchhoff} and Mei {Yang}},
booktitle={Proceedings of the ACL Workshop on Building and Using Parallel Texts},
pages={125--128},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2097661835",
year={2005}
}
@inproceedings{federico2006how,
title={How Many Bits Are Needed To Store Probabilities for Phrase-Based Translation?},
author={Marcello {Federico} and Nicola {Bertoldi}},
booktitle={Proceedings on the Workshop on Statistical Machine Translation},
pages={94--101},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2103803302",
year={2006}
}
@inproceedings{sarikaya2007joint,
title={Joint Morphological-Lexical Language Modeling for Machine Translation},
author={Ruhi {Sarikaya} and Yonggang {Deng}},
booktitle={Human Language Technologies 2007: The Conference of the North American Chapter of the Association for Computational Linguistics; Companion Volume, Short Papers},
pages={145--148},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2152277656",
year={2007}
}
@inproceedings{vaswani2017attention,
title={Attention is All You Need},
author={Ashish {Vaswani} and Noam {Shazeer} and Niki {Parmar} and Jakob {Uszkoreit} and Llion {Jones} and Aidan N. {Gomez} and Lukasz {Kaiser} and Illia {Polosukhin}},
booktitle={Proceedings of the 31st International Conference on Neural Information Processing Systems},
pages={5998--6008},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2963403868",
year={2017}
}
@inproceedings{mikolov2010recurrent,
title={Recurrent neural network based language model},
author={Tomas {Mikolov} and Martin {Karafiát} and Lukás {Burget} and Jan {Cernocký} and Sanjeev {Khudanpur}},
booktitle={INTERSPEECH},
pages={1045--1048},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/179875071",
year={2010}
}
@article{bengio2003a,
title={A neural probabilistic language model},
author={Yoshua {Bengio} and Réjean {Ducharme} and Pascal {Vincent} and Christian {Janvin}},
journal={Journal of Machine Learning Research},
volume={3},
number={6},
pages={1137--1155},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2132339004",
year={2003}
}
@inproceedings{sundermeyer2012lstm,
title={LSTM Neural Networks for Language Modeling.},
author={Martin {Sundermeyer} and Ralf {Schlüter} and Hermann {Ney}},
booktitle={INTERSPEECH},
pages={194--197},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2402268235",
year={2012}
}
@inproceedings{dai2019transformer,
title={Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context},
author={Zihang {Dai} and Zhilin {Yang} and Yiming {Yang} and Jaime {Carbonell} and Quoc {Le} and Ruslan {Salakhutdinov}},
booktitle={ACL 2019 : The 57th Annual Meeting of the Association for Computational Linguistics},
pages={2978--2988},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2964110616",
year={2019}
}
@article{jing2019a,
title={A Survey on Neural Network Language Models.},
author={Kun {Jing} and Jungang {Xu}},
journal={arXiv preprint arXiv:1906.03591},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2948559998",
year={2019}
}
@inproceedings{germann2001fast,
title={Fast Decoding and Optimal Decoding for Machine Translation},
author={Ulrich {Germann} and Michael {Jahr} and Kevin {Knight} and Daniel {Marcu} and Kenji {Yamada}},
booktitle={Proceedings of 39th Annual Meeting of the Association for Computational Linguistics},
pages={228--235},
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2139403546},
year={2001}
}
@inproceedings{huang2007forest,
title={Forest Rescoring: Faster Decoding with Integrated Language Models},
author={Liang {Huang} and David {Chiang}},
booktitle={Proceedings of the 45th Annual Meeting of the Association of Computational Linguistics},
pages={144--151},
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2161227214},
year={2007}
}
@inproceedings{tillmann1997a,
title={A DP-based Search Using Monotone Alignments in Statistical Translation},
author={Christoph {Tillmann} and Stephan {Vogel} and Hermann {Ney} and Alex {Zubiaga}},
booktitle={Proceedings of the 35th Annual Meeting of the Association for Computational Linguistics},
pages={289--296},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2158164089",
year={1997}
}
@inproceedings{wang1997decoding,
title={Decoding Algorithm in Statistical Machine Translation},
author={Ye-Yi {Wang} and Alex {Waibel}},
booktitle={Proceedings of the 35th Annual Meeting of the Association for Computational Linguistics},
pages={366--372},
//notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2012511220},
year={1997}
}
@inproceedings{germann2003greedy,
title={Greedy decoding for statistical machine translation in almost linear time},
author={Ulrich {Germann}},
booktitle={NAACL '03 Proceedings of the 2003 Conference of the North American Chapter of the Association for Computational Linguistics on Human Language Technology - Volume 1},
pages={1--8},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2160233880",
year={2003}
}
@inproceedings{venugopal2007an,
title={An Efficient Two-Pass Approach to Synchronous-CFG Driven Statistical MT},
author={Ashish {Venugopal} and Andreas {Zollmann} and Vogel {Stephan}},
booktitle={Human Language Technologies 2007: The Conference of the North American Chapter of the Association for Computational Linguistics; Proceedings of the Main Conference},
pages={500--507},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2105132850",
year={2007}
}
@inproceedings{bangalore2001a,
title={A finite-state approach to machine translation},
author={S. {Bangalore} and G. {Riccardi}},
booktitle={IEEE Workshop on Automatic Speech Recognition and Understanding, 2001. ASRU '01.},
pages={381--388},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2116912781",
year={2001}
}
@inproceedings{bangalore2000stochastic,
title={Stochastic finite-state models for spoken language machine translation},
author={Srinivas {Bangalore} and Giuseppe {Riccardi}},
booktitle={NAACL-ANLP-EMTS '00 Proceedings of the 2000 NAACL-ANLP Workshop on Embedded machine translation systems - Volume 5},
pages={52--59},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2114532736",
year={2000}
}
%%%%% chapter 2------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论