Commit b71c66fc by xiaotong

fixed formatting issues

parent 8f911175
......@@ -27,3 +27,5 @@ Section07-Towards-Strong-NMT-Systems/section07.pdf
Book/mt-book.run.xml
Book/mt-book-xelatex.bcf
Book/mt-book-xelatex.idx
Book/mt-book-xelatex.run.xml
Book/mt-book-xelatex.synctex(busy)
......@@ -87,7 +87,7 @@
%表1--------------------------------------------------------------------
\begin{table}[htp]
\centering
\caption{离散变量A的概率分布}
\caption{离散变量$A$的概率分布}
\begin{tabular}{c|c c c c c c}
\rule{0pt}{15pt} A & $a_1=1$ & $a_2=2$ & $a_3=3$ & $a_4=4$ & $a_5=5$ & $a_6=6$\\
\hline
......@@ -101,7 +101,7 @@
\parinterval 对于离散变量$A$$\textrm{P}(A=a)$是个确定的值,可以表示事件$A=a$的可能性大小;而对于连续变量,求在某个定点处的概率是无意义的,只能求其落在某个取值区间内的概率。因此,用\textbf{概率分布函数$\textrm{F}(x)$}\textbf{概率密度函数$\textrm{f}(x)$}来统一描述随机变量的取值分布情况。概率分布函数$\textrm{F}(x)$取值小于某个值的概率,是概率的累加形式。假设$A$是一个随机变量,$a$是任意实数,将函数$\textrm{F}(a)=\textrm{P}\{A\leq a\}$$-\infty<a<\infty $定义为$A$的分布函数。通过分布函数,我们可以清晰地表示任何随机变量的概率。
\parinterval 对于连续变量,我们不能像离散变量一样列出所有的概率取值,而是用概率密度函数来描述分布情况。概率密度函数反映了变量在某个区间内的概率变化快慢,概率密度函数的值是概率的变化率,该连续变量的概率也就是对概率密度函数求积分得到的结果。设$\textrm{f}(x) \geq 0$是连续变量$X$的概率密度函数,$X$的分布函数就可以用$\textrm{F}(X)=\int_{-\infty}^x \textrm{f}(x)dx \ (x\in R)$来表示。
\parinterval 对于连续变量,我们不能像离散变量一样列出所有的概率取值,而是用概率密度函数来描述分布情况。概率密度函数反映了变量在某个区间内的概率变化快慢,概率密度函数的值是概率的变化率,该连续变量的概率也就是对概率密度函数求积分得到的结果。设$\textrm{f}(x) \geq 0$是连续变量$X$的概率密度函数,$X$的分布函数就可以用$\textrm{F}(X)=\int_{-\infty}^x \textrm{f}(x)dx \ (x\in \mathbb{R})$来表示。
%----------------------------------------------
% 图2.3
......@@ -310,7 +310,7 @@
\parinterval 一个事件X的自信息(self-information)的表达式为:
\begin{eqnarray}
\textrm{I}(x)=-log\textrm{P}(x)
\textrm{I}(x)=-\log\textrm{P}(x)
\label{eqC2.17-new}
\end{eqnarray}
......@@ -327,18 +327,18 @@
\parinterval 自信息只处理单一的结果。若量化整个概率分布中的不确定性或者说信息量,我们可以用信息熵,其公式如下:
\begin{eqnarray}
\textrm{H}(x)=\sum_{x \in \textrm{X}}[ \textrm{P}(x) \textrm{I}(x)] =- \sum_{x \in \textrm{X} } [\textrm{P}(x)log(\textrm{P}(x)) ]
\textrm{H}(x)=\sum_{x \in \textrm{X}}[ \textrm{P}(x) \textrm{I}(x)] =- \sum_{x \in \textrm{X} } [\textrm{P}(x)\log(\textrm{P}(x)) ]
\label{eqC2.18-new}
\end{eqnarray}
\parinterval 一个分布的信息熵也就是从该分布中得到的一个事件的期望信息量。比如,$a$$b$$c$$d$三支球队,三支队伍夺冠的概率分别是$P1$$P2$$P3$$P4$,某个人对比赛不感兴趣但是又想知道哪只球队夺冠,通过使用二分法2次就确定哪支球队夺冠了。但其实,我们知道这四只球队中c的实力比较强劲,那么猜1次就可以确定。所以对于前者,哪只球队夺冠的信息量较高,信息熵也相对较高,对于后者信息量和信息熵也就相对较低。因此我们可以得知:较为尖锐的分布具有较低的熵;分布越接近均匀熵越大。
\parinterval 一个分布的信息熵也就是从该分布中得到的一个事件的期望信息量。比如,$a$$b$$c$$d$三支球队,三支队伍夺冠的概率分别是$P_1$$P_2$$P_3$$P_4$,某个人对比赛不感兴趣但是又想知道哪只球队夺冠,通过使用二分法2次就确定哪支球队夺冠了。但其实,我们知道这四只球队中c的实力比较强劲,那么猜1次就可以确定。所以对于前者,哪只球队夺冠的信息量较高,信息熵也相对较高,对于后者信息量和信息熵也就相对较低。因此我们可以得知:较为尖锐的分布具有较低的熵;分布越接近均匀熵越大。
\subsubsection{(二)KL距离}\index{Chapter2.2.5.2}
\parinterval 如果在相同的随机变量$X$上有两个独立的概率分布P$(x)$和Q$(x)$,那么我们可以使用KL距离("Kullback-Leibler" 散度)来衡量这两个分布的不同,也就是大家所说的相对熵,其公式如下:
\begin{eqnarray}
\textrm{D}_{KL}(P\parallel Q) & = & \sum_{x \in \textrm{X}} [ \textrm{P}(x)\log \frac{\textrm{P}(x) }{ \textrm{Q}(x) } ] \nonumber \\
& = & \sum_{x \in \textrm{X} }[ \textrm{P}(x)(\log\textrm{P}(x)-\log \textrm{Q}(x))]
\textrm{D}_{\textrm{KL}}(\textrm{P}\parallel \textrm{Q}) & = & \sum_{x \in \textrm{X}} [ \textrm{P}(x)\log \frac{\textrm{P}(x) }{ \textrm{Q}(x) } ] \nonumber \\
& = & \sum_{x \in \textrm{X} }[ \textrm{P}(x)(\log\textrm{P}(x)-\log \textrm{Q}(x))]
\label{eqC2.19-new}
\end{eqnarray}
......@@ -346,9 +346,9 @@
\vspace{0.5em}
\begin{itemize}
\item 非负性,即$\textrm{D}_{KL} (P \parallel Q) \geqslant 0$,等号成立条件是$P$$Q$在离散情况下具有相同的概率分布,在连续条件下处处相等。可简单理解为$P$$Q$等价。
\item 非负性,即$\textrm{D}_{\textrm{KL}} (\textrm{P} \parallel \textrm{Q}) \geqslant 0$,等号成立条件是$P$$Q$在离散情况下具有相同的概率分布,在连续条件下处处相等。可简单理解为$P$$Q$等价。
\vspace{0.5em}
\item 不对称性,即$\textrm{D}_{KL} (P \parallel Q) \neq \textrm{D}_{KL} (Q \parallel P)$,所以$KL$距离并不代表我们日常生活中的那个距离。这种不对称性意味着在选择使用$\textrm{D}_{KL} (P \parallel Q)$或者$\textrm{D}_{KL} (Q \parallel P)$,将会产生重要的影响。
\item 不对称性,即$\textrm{D}_{\textrm{KL}} (\textrm{P} \parallel \textrm{Q}) \neq \textrm{D}_{\textrm{KL}} (\textrm{Q} \parallel \textrm{P})$,所以$KL$距离并不代表我们日常生活中的那个距离。这种不对称性意味着在选择使用$\textrm{D}_{\textrm{KL}} (\textrm{P} \parallel \textrm{Q})$或者$\textrm{D}_{\textrm{KL}} (\textrm{Q} \parallel \textrm{P})$,将会产生重要的影响。
\end{itemize}
\vspace{0.5em}
......@@ -356,7 +356,7 @@
\parinterval 交叉熵是一个与KL距离密切相关的概念,它的公式是:
\begin{eqnarray}
\textrm{H}(P,Q)=-\sum_{x \in \textrm{X}} [\textrm{P}(x) log \textrm{Q}(x) ]
\textrm{H}(\textrm{P},\textrm{Q})=-\sum_{x \in \textrm{X}} [\textrm{P}(x) \log \textrm{Q}(x) ]
\label{eqC2.20-new}
\end{eqnarray}
......
......@@ -11,7 +11,7 @@
\chapterimage{chapter_head_1} % Chapter heading image
%公式1.7之后往后串一个
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{基于词的翻译模型}
\chapter{基于词的机器翻译模型}
\parinterval 使用统计方法对翻译问题进行建模是机器翻译发展中的重要里程碑。这种思想也影响了当今的统计机器翻译和神经机器翻译方法。虽然技术不断发展,传统的统计模型已经不再``新鲜'',但它对于今天机器翻译的研究仍然有着重要的启示作用。在了解前沿、展望未来的同时,我们更要冷静的思考前人给我们带来了什么。基于此,本章将介绍统计机器翻译的开山之作\ \dash \ IBM模型,它提出了使用统计模型进行翻译的思想,并在建模中引入了单词对齐这一重要概念。IBM模型由Peter E. Brown等人于上世纪九十年代初提出\cite{brown1993mathematics}。客观的说,这项工作的视野和对问题的理解,已经超过当时很多人所能看到的东西,其衍生出来的一系列方法和新的问题还被后人花费将近10年的时间来进行研究与讨论。时至今日,IBM模型中的一些思想仍然影响着很多研究工作。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
......@@ -147,7 +147,7 @@ NMT & $ 21.7^{\ast}$ & $18.7^{\ast}$ & -1
\end{table}
%--------------------------------------
\noindent 更振奋人心的是,神经机器翻译在某些任务上已经达到了人类水平,比如在汉英新闻翻译任务中,神经机器翻译就取得了至少和专业翻译人员相媲美的效果\cite{Hassan2018AchievingHP}。在该任务中,神经机器系统(Combo-4、Combo-5 和 Combo-6)的人工评价得分与Reference-HT(专业翻译人员翻译)得分无显著差别,且远超Reference-WMT(WMT的参考译文,也是由人类翻译)得分(表\ref{tab:Human assessment})。
\noindent 更振奋人心的是,神经机器翻译在某些任务上的结果已经相当惊艳,比如在汉英新闻翻译任务中,神经机器翻译就取得了至少和专业翻译人员相媲美的效果\cite{Hassan2018AchievingHP}。在该任务中,神经机器系统(Combo-4、Combo-5 和 Combo-6)的人工评价得分与Reference-HT(专业翻译人员翻译)得分无显著差别,且远超Reference-WMT(WMT的参考译文,也是由人类翻译)得分(表\ref{tab:Human assessment})。
%----------------------------------------------
% 表
......@@ -168,16 +168,16 @@ NMT & $ 21.7^{\ast}$ & $18.7^{\ast}$ & -1
%--------------------------------------
\parinterval 应用神经网络解决神经机器翻译问题的方法从诞生到迎来现在全面爆发的时期,一直被工业界和学术界广泛关注,直至现在基于深度学习的方法在机器翻译这一领域占据着统治地位,性能远远优于基于短语的统计机器翻译系统。但即便如此,神经机器翻译也仍然在不断的推陈出新,使用更新颖的网络结构,更强大的学习算法,以及利用统计机器翻译的思想不断优化现有的神经机器翻译系统,各种优秀的系统层出不穷。而在各种公开的不同语种,不同数据量的数据集上,虽然最佳性能一直在被不断刷新,但是榜首的位置却一直被基于深度学习,采用神经网络方法的机器翻译系统霸占。ACL2019的论文\cite{WangLearning}[Learning Deep Transformer Models for Machine Translation]中将神经机器翻译系统在多个数据集上的性能做出了对比,同时提出的基于动态层信息融合的深层神经机器翻译系统(DLCL)再次刷新了多项数据集的最佳性能。如下表是在WMT14英德数据上,神经机器翻译模型在不断发展过程中的性能表现。由此可见,提高神经机器翻译的性能一直是对机器翻译研究的宗旨,即便是目前,神经机器翻译已经达到了可以和人工翻译可比的性能,但是仍然具有巨大对潜力,等待着研究人员不断去发掘
\parinterval 在最近两年,神经机器翻译的发展更加迅速,新的模型、方法层出不穷。表\cite{tab:result-of-wmt14}就给了2019年对当时一些主流的神经机器翻译模型的对比\cite{WangLearning}。可以看到,相比2017年,2018-2019年中机器翻译仍然有明显的进步
%----------------------------------------------
% 表
\begin{table}[htp]
\centering
\caption{wmt14英德数据集上神经机器翻译系统的表现}
\label{tab:result of wmt14}
\caption{WMT14英德数据集上神经机器翻译系统的表现\cite{WangLearning}}
\label{tab:result-of-wmt14}
\begin{tabular}{ l | l l l}
\textbf{模型} &\textbf{作者} &\textbf{年份} &\textbf{BLEU} \\ \hline
模型 &作者 & 年份 & BLEU \\ \hline
ConvS2S &Gehring &2017 &25.2 \\
Transformer-Base &Vaswani &2017 &27.3 \\
Transformer-Big &Vaswani &2017 &28.4 \\
......@@ -198,7 +198,7 @@ NMT & $ 21.7^{\ast}$ & $18.7^{\ast}$ & -1
\caption{统计机器翻译 vs 神经机器翻译}
\label{tab:nmt vs smt}
\begin{tabular}{ l | l }
\rule{0pt}{15pt} \parbox{12em}{\textbf{(统计机器翻译)} } &\textbf{(神经机器翻译)}\\ \hline
\rule{0pt}{15pt} \parbox{12em}{\textbf{统计机器翻译} } &\textbf{神经机器翻译}\\ \hline
\rule{0pt}{13pt} 基于离散空间的表示模型 &基于连续空间的表示模型 \\
\rule{0pt}{13pt} NLP问题的隐含结构假设 &无隐含结构假设,端到端学习 \\
\rule{0pt}{13pt} 特征工程为主 &无显性特征,但需要设计网络 \\
......@@ -237,7 +237,7 @@ NMT & $ 21.7^{\ast}$ & $18.7^{\ast}$ & -1
\subsection{框架结构}\index{Chapter6.2.1}
\parinterval 编码器-解码器框架是一种典型的基于''表示''的模型。编码器的作用是将输入的文字序列通过某种转换变为一种新的''表示''形式,这种''表示''包含了输入序列的所有信息。之后,解码器通把这种''表示''重新转换为输出的文字序列。这其中的一个核心问题是表示学习,即:如何定义对输入文字序列的表示形式,并自动学习这种表示,同时应用它生成输出序列。一般来说,不同的表示学习方法可以对应不同的机器翻译模型,比如,在最初的神经机器翻译模型中,源语言句子都被表示为一个独立的向量,这时表示结果是静态的;而在注意力机制中,源语言句子的表示是动态的,也就是翻译目标语每个单词时都会使用不同的表示结果。
\parinterval\ref{fig:6-4}是一个应用编码器-解码器结构来解决机器翻译问题的简单实例,给定一个中文句子''我 对 你 感到 满意'',编码器会将这句话编码成一个实数向量(0.2,-1,6,5,0.7,-2),这个向量就是我们所说的源语言句子的''表示''结果。虽然有些不可思议,但是神经机器翻译模型把这个向量等同于输入序列。向量中的数字在我们看来并没有实际的意义,然而解码器却能从中提取到源语句子中所包含的信息。也有研究者把向量的每一个维度看作是一个''特征'',这样源语言句子就被表示成多个''特征''的联合,而且这些特征可以被自动学习。有了这样的源语言句子的''表示'',解码器可以把这个实数向量作为输入,然后逐词生成目标语句子''I am satisfied with you''。
\parinterval\ref{fig:6-4}是一个应用编码器-解码器结构来解决机器翻译问题的简单实例,给定一个中文句子''我 对 你 感到 满意'',编码器会将这句话编码成一个实数向量(0.2,-1,6,5,0.7,-2),这个向量就是我们所说的源语言句子的''表示''结果。虽然有些不可思议,但是神经机器翻译模型把这个向量等同于输入序列。向量中的数字在我们看来并没有实际的意义,然而解码器却能从中提取到源语句子中所包含的信息。也有研究者把向量的每一个维度看作是一个''特征'',这样源语言句子就被表示成多个''特征''的联合,而且这些特征可以被自动学习。有了这样的源语言句子的''表示'',解码器可以把这个实数向量作为输入,然后逐词生成目标语句子``I am satisfied with you''。
%----------------------------------------------
% 图3.10
......@@ -863,8 +863,8 @@ $\textrm{a}(\cdot)$可以被看作是目标语表示和源语言表示的一种'
\label{tab:word-translation-examples}
\begin{tabular}{ l | l }
\rule{0pt}{13pt} \textbf{引入注意力之前} &\textbf{引入注意力之后} \\ \hline
\rule{0pt}{16pt} $''\textrm{have}'' = \mathrm{argmax}_{y_1}\mathrm{P}(y_1 | {\red \mathbf{C}} , y_0)$ &$''\textrm{have}'' = \mathrm{argmax}_{y_1}\mathrm{P}(y_1 | {\red \mathbf{C}_1} , y_0)$ \\
\rule{0pt}{16pt} $''\textrm{you}'' = \mathrm{argmax}_{y_2}\mathrm{P}(y_2 | \mathbf{s}_1 , y_1)$ &$''\textrm{you}'' = \mathrm{argmax}_{y_2}\mathrm{P}(y_2 | \mathbf{s}_1, {\red \mathbf{C}_2} , y_1)$ \\
\rule{0pt}{16pt} $\textrm{``have''} = \mathrm{argmax}_{y_1}\mathrm{P}(y_1 | {\red \mathbf{C}} , y_0)$ &$\textrm{``have''} = \mathrm{argmax}_{y_1}\mathrm{P}(y_1 | {\red \mathbf{C}_1} , y_0)$ \\
\rule{0pt}{16pt} $\textrm{``you''} = \mathrm{argmax}_{y_2}\mathrm{P}(y_2 | \mathbf{s}_1 , y_1)$ &$\textrm{``you''} = \mathrm{argmax}_{y_2}\mathrm{P}(y_2 | \mathbf{s}_1, {\red \mathbf{C}_2} , y_1)$ \\
\end{tabular}
\end{table}
......@@ -1074,7 +1074,7 @@ L(\mathbf{Y},\hat{\mathbf{Y}}) = \sum_{j=1}^n L_{ce}(\mathbf{y}_j,\hat{\mathbf{y
\end{figure}
%----------------------------------------------
\ref{fig:6-30}以三层循环网络为例展示了对句子''你 很 不错 。''进行模型并行的过程。其中,每一层网络都被放到了一个设备上。当模型根据已经生成的第一个词''你''后预测下一个词时(\ref{fig:6-30}(a)),同层的下一个时刻的计算和对''你''的第二层的计算就可以同时开展(\ref{fig:6-30}(b))。以此类推,就完成了模型的并行计算。
\ref{fig:6-30}以三层循环网络为例展示了对句子''你 很 不错 。''进行模型并行的过程。其中,每一层网络都被放到了一个设备上。当模型根据已经生成的第一个词''你''后预测下一个词时(\ref{fig:6-30}(a)),同层的下一个时刻的计算和对''你''的第二层的计算就可以同时开展(\ref{fig:6-30}(b))。以此类推,就完成了模型的并行计算。
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{神经机器翻译模型的推断}\index{Chapter6.3.6}
......@@ -1093,7 +1093,7 @@ L(\mathbf{Y},\hat{\mathbf{Y}}) = \sum_{j=1}^n L_{ce}(\mathbf{y}_j,\hat{\mathbf{y
\label{eqC6.34}
\end{equation}
\noindent 其中,$\hat{y}_j$表示位置$j$概率最高的单词,$\hat{\mathbf{y}}_{<j} = \{ \hat{y}_1,...,\hat{y}_{j-1} \}$表示已经生成的最优译文单词序列。也就是,我们把最优的译文看作是所有位置上最优单词的组合。显然,这是一个基于贪婪的搜索(greedy search),因为我们无法保证$\{ \hat{y}_1,...,\hat{y}_{n} \}$是全局最优解。一种缓解这个问题的方法是,在每步中引入更多的候选。我们定义$\hat{y}_{jk} $表示在目标语第$j$个位置排名在第$k$位的单词。在每一步,我们可以生成$K$个最可能的单词,而不是1个,这个过程可以被描述为
\noindent 其中,$\hat{y}_j$表示位置$j$概率最高的单词,$\hat{\mathbf{y}}_{<j} = \{ \hat{y}_1,...,\hat{y}_{j-1} \}$表示已经生成的最优译文单词序列。也就是,我们把最优的译文看作是所有位置上最优单词的组合。显然,这是一个贪婪的搜索(greedy search),因为我们无法保证$\{ \hat{y}_1,...,\hat{y}_{n} \}$是全局最优解。一种缓解这个问题的方法是,在每步中引入更多的候选。我们定义$\hat{y}_{jk} $表示在目标语第$j$个位置排名在第$k$位的单词。在每一步,我们可以生成$K$个最可能的单词,而不是1个,这个过程可以被描述为
\begin{equation}
\{ \hat{y}_{j1},...,\hat{y}_{jk} \} = \textrm{argmax}_{ \{ \hat{y}_{j1},...,\hat{y}_{jk} \} }
\textrm{P}(y_j | \{ \hat{\mathbf{y}}_{<{j^{\textrm{*}}}} \},\mathbf{x})
......@@ -1104,7 +1104,7 @@ L(\mathbf{Y},\hat{\mathbf{Y}}) = \sum_{j=1}^n L_{ce}(\mathbf{y}_j,\hat{\mathbf{y
\parinterval 不论是贪婪搜索还是束搜索都是一个自左向右的过程,也就是每个位置的处理需要等前面位置处理完才能执行。这是一种典型的自回归模型(autoregressive model),它通常用来描述时序上的随机过程,其中每一个时刻的结果对时序上其它部分的结果有依赖\cite{NIPS2017_7181}。相对应的,也有非自回归模型(non-autoregressive model),它消除了不同时刻结果之间的直接依赖\cite{Gu2017NonAutoregressiveNM}。由于自回归模型是当今神经机器翻译主流的推断方法,这里我们仍以自回归的贪婪搜索和束搜索为基础进行讨论。
%%%%%%%%%%%%%%%%%%
\subsubsection{基于贪婪的方法}\index{Chapter6.3.6.1}
\subsubsection{贪婪搜索}\index{Chapter6.3.6.1}
\parinterval\ref{fig:6-31}展示了一个基于贪婪方法的神经机器翻译解码过程。每一个时间步的单词预测都依赖于其前一步单词的生成。在解码第一个单词时,由于没有之前的单词信息,会用<eos>进行填充,作为起始的单词,且会用一个零向量(可以理解为没有之前时间步的信息)表示第0步的中间层状态。
%----------------------------------------------
......@@ -1132,17 +1132,17 @@ L(\mathbf{Y},\hat{\mathbf{Y}}) = \sum_{j=1}^n L_{ce}(\mathbf{y}_j,\hat{\mathbf{y
\parinterval 贪婪搜索的优点在于速度快。在对翻译速度有较高要求的场景中,贪婪搜索是一种十分有效的加速系统的方法。而且贪婪搜索的原理非常简单,易于快速原型。不过,由于每一步只保留一个最好的局部结果,贪婪搜索往往会带来翻译品质上的损失。
%%%%%%%%%%%%%%%%%%
\subsubsection{束搜索}\index{Chapter6.3.6.2}
\parinterval 束搜索是一种启发式图搜索算法。相比于全搜索,它可以减少搜索所占用的空间和时间,在每一步扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。具体到机器翻译任务,对于每一个目标语位置,束搜索选择了概率最大的前$K$个单词进行扩展(其中$K$叫做束宽度,或简称为束宽)。如图\ref{fig:6-33}所示,当$K=3$时,若令\{$y_1, y_2,…, y_n$\}表示生成的目标语序列,则束搜索的具体过程为:在预测第一个位置时,我们通过模型得到$y_1$的概率分布,选取概率最大的前3个单词作为候选结果(假设分别为''have'', ''has'', ''it'')。在预测第二个位置的单词时,模型针对已经得到的三个候选结果(''have'', ''has'', ''it'')计算第二个单词的概率分布。例如,我们可以在将''have''作为第二步的输入,计算$y_2$的概率分布。此时,译文序列的概率为
\parinterval 束搜索是一种启发式图搜索算法。相比于全搜索,它可以减少搜索所占用的空间和时间,在每一步扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。具体到机器翻译任务,对于每一个目标语位置,束搜索选择了概率最大的前$K$个单词进行扩展(其中$K$叫做束宽度,或简称为束宽)。如图\ref{fig:6-33}所示,当$K=3$时,若令\{$y_1, y_2,…, y_n$\}表示生成的目标语序列,则束搜索的具体过程为:在预测第一个位置时,我们通过模型得到$y_1$的概率分布,选取概率最大的前3个单词作为候选结果(假设分别为''have'', ''has'', ''it'')。在预测第二个位置的单词时,模型针对已经得到的三个候选结果(``have'', ``has'', ``it'')计算第二个单词的概率分布。例如,我们可以在将``have''作为第二步的输入,计算$y_2$的概率分布。此时,译文序列的概率为
%--------------------------------------------
\begin{eqnarray}
\begin{array}{ll}
\textrm{P} (y_2,y_1 | \mathbf{x}) &= \textrm{P} (y_2, ''\textrm{have}'' | \mathbf{x}) \\
&= \textrm{P}(y_2 | ''\textrm{have}'' , \mathbf{x}) \textrm{P} (''\textrm{have}'' | \mathbf{x})
\textrm{P} (y_2,y_1 | \mathbf{x}) &= \textrm{P} (y_2, \textrm{``have''} | \mathbf{x}) \\
&= \textrm{P}(y_2 | \textrm{``have''} , \mathbf{x}) \textrm{P} (\textrm{``have''} | \mathbf{x})
\end{array}
\label{eqC6.36}
\end{eqnarray}
\noindent 类似的,对''has''和''it''进行同样的操作,分别计算得到$ \textrm{P} (y_2, ''\textrm{have}'' | \mathbf{x})$$ \textrm{P} (y_2, ''\textrm{has}'' | \mathbf{x})$\\ $ \textrm{P} (y_2, ''\textrm{it}'' | \mathbf{x})$,因为$y_2$对应$|V|$种可能,总共可以得到$3 \times |V|$种结果。然后从中选取使序列概率$\textrm{P}(y_2,y_1| \mathbf{x})$最大的前三个$y_2$作为新的输出结果,这样我们便得到了前两个位置的top-3译文。在预测其它位置时也是如此,不断重复此过程直到推断结束。可以看到,束搜索的搜索空间大小与束宽度有关,也就是:束宽度越大,搜索空间越大,更有可能搜索到质量更高的译文,但是搜索会更慢。束宽度等于3,意味着我们每次考虑三个最有可能的结果,贪婪搜索实际上便是集束宽度为1的情况。在神经机器翻译系统实现中,一般束宽度设置在4~8之间。
\noindent 类似的,对''has''和''it''进行同样的操作,分别计算得到$ \textrm{P} (y_2, \textrm{``have''} | \mathbf{x})$$ \textrm{P} (y_2, \textrm{``has''} | \mathbf{x})$\\ $ \textrm{P} (y_2, \textrm{``it''} | \mathbf{x})$,因为$y_2$对应$|V|$种可能,总共可以得到$3 \times |V|$种结果。然后从中选取使序列概率$\textrm{P}(y_2,y_1| \mathbf{x})$最大的前三个$y_2$作为新的输出结果,这样我们便得到了前两个位置的top-3译文。在预测其它位置时也是如此,不断重复此过程直到推断结束。可以看到,束搜索的搜索空间大小与束宽度有关,也就是:束宽度越大,搜索空间越大,更有可能搜索到质量更高的译文,但是搜索会更慢。束宽度等于3,意味着我们每次考虑三个最有可能的结果,贪婪搜索实际上便是集束宽度为1的情况。在神经机器翻译系统实现中,一般束宽度设置在4~8之间。
%----------------------------------------------
% 图3.10
......@@ -1243,7 +1243,7 @@ L(\mathbf{Y},\hat{\mathbf{Y}}) = \sum_{j=1}^n L_{ce}(\mathbf{y}_j,\hat{\mathbf{y
\label{tab:rnn vs cnn vs trf}
\begin{tabular}{l | l l l}
%\rule{0pt}{20pt} \textbf{Layer Type} &\parbox{5em}{\textbf{Complexity per Layer} }&\parbox{6em}{\textbf{Sequential Operations} } &\parbox{6em}{\textbf{Maximum Path Length}}\\ \hline
\rule{0pt}{20pt} \textbf{Layer Type} & \textbf{\begin{tabular}[l]{@{}l@{}}Complexity\\ per Layer\end{tabular}} & \textbf{\begin{tabular}[l]{@{}l@{}}Sequential\\ Operations\end{tabular}} & \textbf{\begin{tabular}[l]{@{}l@{}}Maximum\\ Path Length\end{tabular}} \\ \hline
\rule{0pt}{20pt} Layer Type & \begin{tabular}[l]{@{}l@{}}Complexity\\ per Layer\end{tabular} & \begin{tabular}[l]{@{}l@{}}Sequential\\ Operations\end{tabular} & \begin{tabular}[l]{@{}l@{}}Maximum\\ Path Length\end{tabular} \\ \hline
\rule{0pt}{13pt}Self-Attention &$O(n^2\cdot d)$ &$O(1)$ &$O(1)$ \\
\rule{0pt}{13pt}Recurrent &$O(n \cdot d^2)$ &$O(n)$ &$O(n)$ \\
\rule{0pt}{13pt}Convolutional &$O(k\cdot n \cdot d^2)$ &$O(1)$ &$O(\mathrm{log}_k(n))$ \\
......@@ -1262,12 +1262,12 @@ L(\mathbf{Y},\hat{\mathbf{Y}}) = \sum_{j=1}^n L_{ce}(\mathbf{y}_j,\hat{\mathbf{y
\label{tab:performence form different models}
\begin{tabular}{l l l l}
\multicolumn{1}{l|}{\multirow{2}{*}{\#}} & \multicolumn{2}{c}{\textbf{BLEU}} & \multirow{2}{*}{\parbox{6em}{\textbf{Training Cost(FLOPs)}}} \\
\multicolumn{1}{l|}{} & \textbf{EN-DE} & \textbf{EN-FR} & \\ \hline
\multicolumn{1}{l|}{\multirow{2}{*}{\#}} & \multicolumn{2}{c}{BLEU} & \multirow{2}{*}{\parbox{6em}{Training Cost(FLOPs)}} \\
\multicolumn{1}{l|}{} & EN-DE & EN-FR & \\ \hline
\multicolumn{1}{l|}{GNMT+RL} & 24.6 & 39.92 & 1.4$\times 10^{20}$ \\
\multicolumn{1}{l|}{ConvS2S} & 25.16 & 40.46 & 1.5$\times 10^{20}$ \\
\multicolumn{1}{l|}{MoE} & 26.03 & 40.56 & 1.2$\times 10^{20}$ \\
\multicolumn{1}{l|}{Transformer(big)} & \textbf{28.4} & \textbf{41.8} & 2.3$\times 10^{19}$ \\
\multicolumn{1}{l|}{Transformer(Big)} & \textbf{28.4} & \textbf{41.8} & 2.3$\times 10^{19}$ \\
%\multicolumn{4}{l}{Transformer versus previous state-of-the-art models}
\end{tabular}
\end{table}
......
......@@ -9,14 +9,14 @@
\node [pos=0.4,left,xshift=-36em,yshift=7em,font=\small] (original0) {\quad 源语(中文)输入:};
\node [pos=0.4,left,xshift=-22em,yshift=7em,font=\small] (original1) {
\begin{tabular}[t]{l}
\parbox{14em}{''我''、''很''、''好''、''<eos>'' }
\parbox{14em}{``我''、``很''、``好''、``<eos>'' }
\end{tabular}
};
%译文1--------------mt1
\node[font=\small] (mt1) at ([xshift=0em,yshift=-1em]original0.south) {目标语(英文)输出:};
\node[font=\small] (ts1) at ([xshift=0em,yshift=-1em]original1.south) {
\begin{tabular}[t]{l}
\parbox{14em}{''I''、''am''、''fine''、''<eos>''}
\parbox{14em}{``I''、``am''、``fine''、``<eos>''}
\end{tabular}
};
......
......@@ -20,12 +20,11 @@
\node (cell010) at ([xshift=-9em,yshift=0em]cell01.west){\quad};
%\rightarrow {}
\node [anchor=west,minimum width=1.5em,minimum size=1.5em] (cell07) at (cell06.east) {\hspace{0.07em}\footnotesize{--->}};
\node [anchor=west,minimum width=1.5em,minimum size=1.5em] (cell07) at (cell06.east) {\hspace{0.07em}\footnotesize{$\longrightarrow$}};
\node [anchor=west,minimum width=1.5em,minimum size=1.5em] (cell08) at (cell06.east){\small{
\hspace{0.6em}
\begin{tabular}{l}
源语言句\\
{\red''表示''}
源语言句子的``表示''
\end{tabular}
}
};
......
......@@ -44,7 +44,7 @@
\node(eq1) at ([xshift=0.5em,yshift=0]bra.east){=};
\node(sof1) at ([xshift=2em,yshift=0]eq1.east){softmax(};
\node(sof1) at ([xshift=2em,yshift=0]eq1.east){Softmax(};
%-----------------------------------------------------------
%QK+MASK
......@@ -103,7 +103,7 @@
%------------------------------
%第二行
\node(eq2) at ([xshift=0em,yshift=-6em]eq1.south){=};
\node(sof2) at ([xshift=2em,yshift=0]eq2.east){softmax(};
\node(sof2) at ([xshift=2em,yshift=0]eq2.east){Softmax(};
%中间粉色矩阵
\node(mid) at ([xshift=1.5em,yshift=0em]sof2.east){
\begin{tabular}{|l|l|l|}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论