Commit 4f88c767 by 曹润柘

合并分支 'caorunzhe' 到 'master'

Caorunzhe

查看合并请求 !765
parents 35a1347f 934796f3
......@@ -34,7 +34,7 @@
\section{卷积神经网络}
\parinterval {\small\bfnew{卷积神经网络}}\index{卷积神经网络}(Convolutional Neural Network,CNN)\index{Convolutional Neural Network} 是一种前馈神经网络,由若干的卷积层与池化层组成。早期,卷积神经网络被应用在语音识别任务上\upcite{Waibel1989PhonemeRU},之后在图像处理领域取得了很好的效果\upcite{LeCun1989BackpropagationAT,726791}。近年来,卷积神经网络已经成为语音、自然语言处理、图像处理任务的基础框架\upcite{DBLP:conf/icassp/ZhangCJ17,DBLP:conf/icassp/DengAY13,Kalchbrenner2014ACN,Kim2014ConvolutionalNN,DBLP:journals/corr/HeZRS15,DBLP:conf/cvpr/HuangLMW17,Girshick2015FastR,He2020MaskR}。在自然语言处理领域,卷积神经网络已经得到广泛应用,在文本分类\upcite{Kalchbrenner2014ACN,Kim2014ConvolutionalNN,Ma2015DependencybasedCN}、情感分析\upcite{Santos2014DeepCN,}、语言建模\upcite{DBLP:conf/acl/WangLLJL15,Dauphin2017LanguageMW}、机器翻译\upcite{devlin-etal-2014-fast,kalchbrenner-blunsom-2013-recurrent,Gehring2017ACE,DBLP:journals/corr/GehringAGYD17,Kaiser2018DepthwiseSC,Wu2019PayLA}等任务中取得不错的成绩。
\parinterval {\small\bfnew{卷积神经网络}}\index{卷积神经网络}(Convolutional Neural Network,CNN)\index{Convolutional Neural Network} 是一种前馈神经网络,由若干的卷积层与池化层组成。早期,卷积神经网络被应用在语音识别任务上\upcite{Waibel1989PhonemeRU},之后在图像处理领域取得了很好的效果\upcite{LeCun1989BackpropagationAT,726791}。近年来,卷积神经网络已经成为语音、自然语言处理、图像处理任务的基础框架\upcite{DBLP:conf/icassp/ZhangCJ17,DBLP:conf/icassp/DengAY13,Kalchbrenner2014ACN,Kim2014ConvolutionalNN,DBLP:journals/corr/HeZRS15}。在自然语言处理领域,卷积神经网络已经得到广泛应用,在文本分类\upcite{Kalchbrenner2014ACN,Kim2014ConvolutionalNN,Ma2015DependencybasedCN}、情感分析\upcite{Santos2014DeepCN,}、语言建模\upcite{DBLP:conf/acl/WangLLJL15,Dauphin2017LanguageMW}、机器翻译\upcite{devlin-etal-2014-fast,kalchbrenner-blunsom-2013-recurrent,Gehring2017ACE,DBLP:journals/corr/GehringAGYD17,Kaiser2018DepthwiseSC}等任务中取得不错的成绩。
\parinterval\ref{fig:11-1}展示了全连接层和卷积层的结构对比,可以看到在全连接层中,模型考虑了所有的输入,层输出中的每一个元素都依赖于所有输入。这种全连接层适用于大多数任务,但是当处理图像这种网格数据的时候,规模过大的数据会导致模型参数量过大,难以处理。其次,在一些网格数据中,通常具有局部不变性的特征,比如图像中不同位置的相同物体,语言序列中相同的$n$-gram等。而全连接网络很难提取这些局部不变性特征。为此,一些研究人员提出使用卷积层来替换全连接层\upcite{DBLP:conf/eccv/LiuAESRFB16,DBLP:journals/pami/RenHG017}
......
......@@ -594,7 +594,7 @@ Transformer Deep(48层) & 30.2 & 43.1 & 194$\times 10^
\vspace{0.5em}
\item 神经机器翻译依赖成本较高的GPU设备,因此对模型的裁剪和加速也是很多系统研发人员所感兴趣的方向。比如,从工程上,可以考虑减少运算强度,比如使用低精度浮点数\upcite{Ott2018ScalingNM} 或者整数\upcite{DBLP:journals/corr/abs-1906-00532,Lin2020TowardsF8}进行计算,或者引入缓存机制来加速模型的推断\upcite{Vaswani2018Tensor2TensorFN};也可以通过对模型参数矩阵的剪枝来减小整个模型的体积\upcite{DBLP:journals/corr/SeeLM16};另一种方法是知识蒸馏\upcite{Hinton2015Distilling,kim-rush-2016-sequence}。 利用大模型训练小模型,这样往往可以得到比单独训练小模型更好的效果\upcite{DBLP:journals/corr/ChenLCL17}
\vspace{0.5em}
\item 自注意力网络作为Transformer模型中重要组成部分,近年来受到研究人员的广泛关注,尝试设计更高效地操作来替代它。比如,利用动态卷积网络来替换编码器与解码器的自注意力网络,在保证推断效率的同时取得了和Transformer相当甚至略好的翻译性能\upcite{Wu2019PayLA};为了加速Transformer处理较长输入文本的效率,利用局部敏感哈希替换自注意力机制的Reformer模型也吸引了广泛的关注\upcite{Kitaev2020ReformerTE}。此外,在自注意力网络引入额外的编码信息能够进一步提高模型的表示能力。比如,引入固定窗口大小的相对位置编码信息\upcite{Shaw2018SelfAttentionWR,dai-etal-2019-transformer},或利用动态系统的思想从数据中学习特定的位置编码表示,具有更好的泛化能力\upcite{Liu2020LearningTE}。通过对Transformer模型中各层输出进行可视化分析,研究人员发现Transformer自底向上各层网络依次聚焦于词级-语法级-语义级的表示\upcite{Jawahar2019WhatDB,li2020shallow},因此在底层的自注意力网络中引入局部编码信息有助于模型对局部特征的抽象\upcite{Yang2018ModelingLF,DBLP:journals/corr/abs-1904-03107}
\item 自注意力网络作为Transformer模型中重要组成部分,近年来受到研究人员的广泛关注,尝试设计更高效地操作来替代它。比如,利用动态卷积网络来替换编码器与解码器的自注意力网络,在保证推断效率的同时取得了和Transformer相当甚至略好的翻译性能\upcite{Wu2019PayLA};为了加速Transformer处理较长输入文本的效率,利用局部敏感哈希替换自注意力机制的Reformer模型也吸引了广泛的关注\upcite{Kitaev2020ReformerTE}。此外,在自注意力网络引入额外的编码信息能够进一步提高模型的表示能力。比如,引入固定窗口大小的相对位置编码信息\upcite{Shaw2018SelfAttentionWR,Dai2019TransformerXLAL},或利用动态系统的思想从数据中学习特定的位置编码表示,具有更好的泛化能力\upcite{Liu2020LearningTE}。通过对Transformer模型中各层输出进行可视化分析,研究人员发现Transformer自底向上各层网络依次聚焦于词级-语法级-语义级的表示\upcite{Jawahar2019WhatDB,li2020shallow},因此在底层的自注意力网络中引入局部编码信息有助于模型对局部特征的抽象\upcite{Yang2018ModelingLF,DBLP:journals/corr/abs-1904-03107}
\vspace{0.5em}
\item 除了针对Transformer中子层的优化,网络各层之间的连接方式在一定程度上也能影响模型的表示能力。近年来针对网络连接优化的工作如下:在编码器顶部利用平均池化或权重累加等融合手段得到编码器各层的全局表示\upcite{Wang2018MultilayerRF,Bapna2018TrainingDN,Dou2018ExploitingDR,Wang2019ExploitingSC},利用之前各层表示来生成当前层的输入表示\upcite{WangLearning,Dou2019DynamicLA,Wei2020MultiscaleCD}
\end{itemize}
\begin{tikzpicture}
\tikzstyle{node1}=[inner sep=0mm,minimum height=1em,minimum width=3em,fill=ugreen!10!blue!10]
\tikzstyle{node2}=[inner sep=0mm,minimum height=1em,minimum width=3em,fill=ugreen!20!blue!20]
\tikzstyle{node3}=[inner sep=0mm,minimum height=1em,minimum width=3em,fill=ugreen!30!blue!30]
\tikzstyle{node4}=[inner sep=0mm,minimum height=1em,minimum width=3em,fill=ugreen!40!blue!40]
\tikzstyle{node5}=[inner sep=0mm,minimum height=1em,minimum width=3em,fill=ugreen!50!blue!50]
\begin{scope}
\node[anchor=north west] (l1) at (0,0) {};
\node[anchor=west] (l2) at ([xshift=10.3em,yshift=0em]l1.east) {};
\draw [->,thick] ([xshift=-2em,yshift=-1em]l1.south) -- ([xshift=2em,yshift=-1em]l2.south);
\node[anchor=north,node1] (c1) at ([xshift=0em,yshift=-2em]l1.south) {};
\node[anchor=west,node2] (c2) at ([xshift=0em,yshift=0em]c1.east) {};
\node[anchor=west,node3] (c3) at ([xshift=0em,yshift=0em]c2.east) {};
\node[anchor=west,node4] (c4) at ([xshift=0em,yshift=0em]c3.east) {};
\node[anchor=west,node5] (c5) at ([xshift=0em,yshift=0em]c4.east) {};
\node[anchor=north] (lb1) at ([xshift=0em,yshift=-1.5em]c3.south) {(a)样本难易程度图示};
\end{scope}
\begin{scope}[yshift = -1.7in]
\foreach \i / \j / \z in
{0/0/node1, 1/0/node1, 2/0/node1, 3/0/node1, 4/0/node1, 5/0/node1, 6/0/node1,
1/1/node2, 2/1/node2, 3/1/node2, 4/1/node2, 5/1/node2, 6/1/node2,
2/2/node3, 3/2/node3, 4/2/node3, 5/2/node3, 6/2/node3,
3/3/node4, 4/3/node4, 5/3/node4, 6/3/node4,
4/4/node5, 5/4/node5, 6/4/node5,
}
\node[anchor=north west,\z,draw=white](n\i\j) at (1.0*3em*\j + 0*0em,-1.0*1em*\i + 0*0em){};
\node[anchor=north west,node1,draw=white](nc) at (0,0){};
\draw [->,very thick] ([xshift=-1em,yshift=1em]n00.north west) -- ([xshift=16em,yshift=1em]n00.north west);
\draw [->,very thick] ([xshift=-1em,yshift=1em]n00.north west) -- ([xshift=-1em,yshift=-9em]n00.north west);
\node[anchor=west] (x1) at ([xshift=12em,yshift=2em]n00.north west) {数据块};
\node[anchor=east] (y1) at ([xshift=-1em,yshift=-7.5em]n00.north west) {轮次};
\node[anchor=west,font=\small] (t1) at ([xshift=0em,yshift=-1em]n60.south west) {$\ldots$直到模型收敛};
\node[anchor=north] (lb2) at ([xshift=0em,yshift=-3em]n62.south) {(b)不同训练阶段使用的数据};
\end{scope}
\end{tikzpicture}
\ No newline at end of file
......@@ -17,7 +17,7 @@
\draw[->,line width=.03cm] ([yshift=0em]node5.south) -- ([yshift=0em]node6.north);
\node[node,anchor = west] (node8) at ([xshift = 2em,yshift = 2em]node7.east) {对于词表外的词lowest};
\node[node,anchor = north west] (node9) at ([yshift = 0.3em]node8.south west) {可以被分割为low est};
\node[node,anchor = north west] (node9) at ([yshift = 0.3em]node8.south west) {可以被合并为low est};
\node[node,font=\scriptsize,anchor = north,fill=ugreen!5,drop shadow] (dict) at ([xshift = 5em,yshift = -5em]node6.south){\begin{tabular}{llllll}
\multirow{3}{*}{符号合并表:} & ('e','s') & ('es','t') & ('est','$<$e$>$') & ('l','o') & ('lo','w') \\
......
\begin{tikzpicture}
\tikzstyle{node}=[inner sep=0mm,minimum height=3em,minimum width=6em,rounded corners=5pt]
\node[anchor=west,node,fill=ugreen!30] (n1) at (0,0) {训练集};
\node[anchor=west,node,fill=yellow!30] (n2) at ([xshift=2em,yshift=0em]n1.east) {难度评估器};
\node[anchor=west,node,fill=red!30] (n3) at ([xshift=4em,yshift=0em]n2.east) {训练调度器};
\node[anchor=west,node,fill=blue!30] (n4) at ([xshift=4em,yshift=0em]n3.east) {模型训练器};
\draw [->,very thick] ([xshift=0em,yshift=0em]n1.east) -- ([xshift=0em,yshift=0em]n2.west);
\draw [->,very thick] ([xshift=0em,yshift=0em]n2.east) -- ([xshift=0em,yshift=0em]n3.west);
\draw [->,very thick] ([xshift=0em,yshift=0em]n3.east) -- ([xshift=0em,yshift=0em]n4.west);
\node[anchor=west,inner sep=0mm,minimum height=2em,minimum width=3em,font=\small,align=left] (n5) at ([xshift=0.5em,yshift=-1.5em]n2.east) {排序过\\的数据};
\node[anchor=west,inner sep=0mm,minimum height=2em,minimum width=3em,font=\small,align=left] (n6) at ([xshift=1em,yshift=-1.5em]n3.east) {采样\\批次$t$};
\node[anchor=south west,inner sep=0mm,minimum height=2em,minimum width=4em,font=\small] (n7) at ([xshift=2.5em,yshift=1em]n3.north) {如果模型收敛};
\node[anchor=south west,inner sep=0mm] (n8) at ([xshift=0em,yshift=1.5em]n4.north) {批次$t$};
\node[anchor=north east,inner sep=0mm] (n9) at ([xshift=0em,yshift=-1em]n3.south east) {课程设计};
\draw [->,dotted,very thick] ([xshift=0em,yshift=0em]n4.north) -- ([xshift=0em,yshift=1em]n4.north) -- ([xshift=0em,yshift=1em]n3.north) -- (n3.north);
\begin{pgfonlayer}{background}
\node[rectangle,inner sep=5pt,rounded corners=5pt,fill=gray!30] [fit = (n3) (n4) (n6) (n8) ] (g2) {};
\node[rectangle,inner sep=5pt,rounded corners=5pt,fill=orange!30] [fit = (n2) (n3) (n9) ] (g1) {};
\end{pgfonlayer}
\end{tikzpicture}
\ No newline at end of file
%------------------------------------------------------------
\begin{tikzpicture}
\begin{scope}[]
\tikzstyle{rnnnode} = [draw,inner sep=2pt,minimum width=3em,minimum height=1.5em,rounded corners=1pt,fill=red!20]
\tikzstyle{snode} = [draw,inner sep=2pt,minimum width=3em,minimum height=1.5em,rounded corners=1pt,fill=blue!20]
\tikzstyle{ynode} = [inner sep=2pt,minimum width=3em,minimum height=1.5em,rounded corners=1pt]
\node [anchor=west,rnnnode] (n1) at (0,0) {$\mathbi{h}_{1}$};
\node [anchor=west] (n2) at ([xshift=2em,yshift=0em]n1.east) {$\cdots$};
\node [anchor=west,rnnnode] (n3) at ([xshift=2em,yshift=0em]n2.east) {$\mathbi{h}_{j-1}$};
\node [anchor=west,rnnnode] (n4) at ([xshift=2em,yshift=0em]n3.east) {$\mathbi{h}_{j}$};
\node [anchor=south,snode,font=\footnotesize] (n5) at ([xshift=0em,yshift=1em]n3.north) {Softmax};
\node [anchor=south,ynode] (n6) at ([xshift=0em,yshift=1em]n5.north) {$\tilde{{y}}_{j-1}$};
\node [anchor=south,snode,font=\footnotesize] (n7) at ([xshift=0em,yshift=1em]n4.north) {Softmax};
\node [anchor=south,ynode] (n8) at ([xshift=0em,yshift=1em]n7.north) {$\tilde{{y}}_{j}$};
\node [anchor=north] (n11) at ([xshift=0em,yshift=-1em]n3.south) {${{y}}_{j-2}$};
\node [anchor=north] (n12) at ([xshift=0em,yshift=-1em]n4.south) {${{y}}_{j-1}$};
\node [anchor=north] (n9) at ([xshift=0em,yshift=-3em]n4.south) {\small{(a)训练阶段}};
\node [anchor=north] (x1) at ([xshift=0em,yshift=-1em]n1.south) {$\seq{x}$};
\node [anchor=south,inner sep=2pt] (st1) at (n6.north) {\scriptsize{\textbf{[step $j-1$]}}};
\node [anchor=south,inner sep=2pt] (st2) at (n8.north) {\scriptsize{\textbf{[step $j$]}}};
\draw [->,thick] ([xshift=0em,yshift=0em]x1.north)--([xshift=0em,yshift=0em]n1.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n1.east)--([xshift=0em,yshift=0em]n2.west);
\draw [->,thick] ([xshift=0em,yshift=0em]n2.east)--([xshift=0em,yshift=0em]n3.west);
\draw [->,thick] ([xshift=0em,yshift=0em]n3.east)--([xshift=0em,yshift=0em]n4.west);
\draw [->,thick] ([xshift=0em,yshift=0em]n4.east)--([xshift=2em,yshift=0em]n4.east);
\draw [->,thick] ([xshift=0em,yshift=0em]n3.north)--([xshift=0em,yshift=0em]n5.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n5.north)--([xshift=0em,yshift=0em]n6.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n4.north)--([xshift=0em,yshift=0em]n7.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n7.north)--([xshift=0em,yshift=0em]n8.south);
\draw [->,thick,dotted] ([xshift=-0em,yshift=0em]n11.north)--([xshift=-0em,yshift=0em]n3.south);
\draw [->,thick,dotted] ([xshift=0em,yshift=0em]n12.north)--([xshift=-0em,yshift=-0em]n4.south);
\node [anchor=west] (n10) at ([xshift=4em,yshift=0em]n8.east) {真实数据$\seq{y}$服从的分布:};
\node [anchor=north west] (y1) at ([xshift=0em,yshift=-4em]n10.south west) {${y}_{1}$};
\node [anchor=west] (y2) at ([xshift=1em,yshift=0em]y1.east) {${y}_{2}$};
\node [anchor=west] (y3) at ([xshift=1em,yshift=0em]y2.east) {${y}_{3}$};
\node [anchor=west] (y4) at ([xshift=1em,yshift=0em]y3.east) {$\ldots$};
\node [anchor=west] (y5) at ([xshift=1em,yshift=0em]y4.east) {${y}_{n}$};
%\draw [-,thick] ([xshift=0em,yshift=0.5em]y1.north) cos(9,0.8) sin (10,1.5) cos(11.5,0.7) sin(12.5,0.2) ;
\node [anchor=south,minimum width=1.2em,minimum height=1.4em,fill=red!50,inner sep=0pt] (label1) at (y1.north) {};
\node [anchor=south,minimum width=1.2em,minimum height=2.8em,fill=red!50,inner sep=0pt] (label2) at (y2.north) {};
\node [anchor=south,minimum width=1.2em,minimum height=1.7em,fill=red!50,inner sep=0pt] (label3) at (y3.north) {};
\node [anchor=south,minimum width=1.2em,minimum height=1.4em,fill=red!50,inner sep=0pt] (label4) at (y5.north) {};
\begin{pgfonlayer}{background}
\node [rectangle,inner sep=0em,rounded corners=5pt,very thick,dotted,draw=red] [fit = (n11) (n12)] (b1) {};
\node [rectangle,inner sep=0.5em,rounded corners=5pt,very thick,dotted,draw=red] [fit = (n10) (y1) (y5)] (b2) {};
\draw [->,dotted,very thick,red] ([yshift=-0em]b1.east) .. controls +(east:2) and +(west:1) .. (b2.west);
\end{pgfonlayer}
\end{scope}
\begin{scope}[yshift=-2in]
\tikzstyle{rnnnode} = [draw,inner sep=2pt,minimum width=3em,minimum height=1.5em,rounded corners=1pt,fill=red!20]
\tikzstyle{snode} = [draw,inner sep=2pt,minimum width=3em,minimum height=1.5em,rounded corners=1pt,fill=blue!20]
\tikzstyle{ynode} = [inner sep=2pt,minimum width=3em,minimum height=1.5em,rounded corners=1pt]
\node [anchor=west,rnnnode] (n1) at (0,0) {$\mathbi{h}_{1}$};
\node [anchor=west] (n2) at ([xshift=2em,yshift=0em]n1.east) {$\cdots$};
\node [anchor=west,rnnnode] (n3) at ([xshift=2em,yshift=0em]n2.east) {$\mathbi{h}_{j-1}$};
\node [anchor=west,rnnnode] (n4) at ([xshift=2em,yshift=0em]n3.east) {$\mathbi{h}_{j}$};
\node [anchor=south,snode,font=\footnotesize] (n5) at ([xshift=0em,yshift=1em]n3.north) {Softmax};
\node [anchor=south,ynode] (n6) at ([xshift=0em,yshift=1em]n5.north) {$\tilde{{y}}_{j-1}$};
\node [anchor=south,snode,font=\footnotesize] (n7) at ([xshift=0em,yshift=1em]n4.north) {Softmax};
\node [anchor=south,ynode] (n8) at ([xshift=0em,yshift=1em]n7.north) {$\tilde{{y}}_{j}$};
\node [anchor=north] (n9) at ([xshift=0em,yshift=-2em]n4.south) {\small{(b)解码阶段}};
\node [anchor=north] (x1) at ([xshift=0em,yshift=-1em]n1.south) {$\seq{x}$};
\node [anchor=south,inner sep=2pt] (st1) at (n6.north) {\scriptsize{\textbf{[step $j-1$]}}};
\node [anchor=south,inner sep=2pt] (st2) at (n8.north) {\scriptsize{\textbf{[step $j$]}}};
\draw [->,thick] ([xshift=0em,yshift=0em]x1.north)--([xshift=0em,yshift=0em]n1.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n1.east)--([xshift=0em,yshift=0em]n2.west);
\draw [->,thick] ([xshift=0em,yshift=0em]n2.east)--([xshift=0em,yshift=0em]n3.west);
\draw [->,thick] ([xshift=0em,yshift=0em]n3.east)--([xshift=0em,yshift=0em]n4.west);
\draw [->,thick] ([xshift=0em,yshift=0em]n4.east)--([xshift=2em,yshift=0em]n4.east);
\draw [->,thick] ([xshift=0em,yshift=0em]n3.north)--([xshift=0em,yshift=0em]n5.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n5.north)--([xshift=0em,yshift=0em]n6.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n4.north)--([xshift=0em,yshift=0em]n7.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n7.north)--([xshift=0em,yshift=0em]n8.south);
\draw [->,thick,dotted] ([xshift=-2em,yshift=-1.3em]n3.south) .. controls +(east:1.5em) and +(south:0.2em) .. ([xshift=-0em,yshift=0em]n3.south);
\draw [->,thick,dotted] ([xshift=0em,yshift=0em]n6.east) .. controls ([xshift=2em,yshift=1em]n6.east) and ([xshift=-2em,yshift=-5em]n4.south west) .. ([xshift=-0em,yshift=-0em]n4.south);
\node [anchor=west] (n10) at ([xshift=4em,yshift=0em]n8.east) {模型输出$\tilde{{y}}$服从的分布:};
\node [anchor=north west] (y1) at ([xshift=0em,yshift=-4em]n10.south west) {$\tilde{{y}}_{1}$};
\node [anchor=west] (y2) at ([xshift=1em,yshift=0em]y1.east) {$\tilde{{y}}_{2}$};
\node [anchor=west] (y3) at ([xshift=1em,yshift=0em]y2.east) {$\tilde{{y}}_{3}$};
\node [anchor=west] (y4) at ([xshift=1em,yshift=0em]y3.east) {$\ldots$};
\node [anchor=west] (y5) at ([xshift=1em,yshift=0em]y4.east) {$\tilde{{y}}_{n}$};
%\draw [-,thick] ([xshift=0em,yshift=0.5em]y1.north) cos(9,0.8) sin (10,1.5) cos(11.5,0.7) sin(12.5,0.2) ;
\node [anchor=south,minimum width=1.2em,minimum height=0.7em,fill=ublue!80,inner sep=0pt] (label1) at (y1.north) {};
\node [anchor=south,minimum width=1.2em,minimum height=1.5em,fill=ublue!80,inner sep=0pt] (label2) at (y2.north) {};
\node [anchor=south,minimum width=1.2em,minimum height=2.4em,fill=ublue!80,inner sep=0pt] (label3) at (y3.north) {};
\node [anchor=south,minimum width=1.2em,minimum height=0.2em,fill=ublue!80,inner sep=0pt] (label4) at (y5.north) {};
\begin{pgfonlayer}{background}
\node [rectangle,inner sep=0em,rounded corners=5pt,very thick,dotted,draw=ublue] [fit = (n6) (n8)] (b1) {};
\node [rectangle,inner sep=0.5em,rounded corners=5pt,very thick,dotted,draw=ublue] [fit = (n10) (y1) (y5)] (b2) {};
\draw [->,dotted,very thick,ublue] ([xshift=-0em,yshift=-0em]b1.east) .. controls +(east:1) and +(west:1) .. (b2.west);
\end{pgfonlayer}
\end{scope}
\end{tikzpicture}
%------------------------------------------------------------
\begin{tikzpicture}
\tikzstyle{rnnnode} = [draw,inner sep=2pt,minimum width=4em,minimum height=2em,rounded corners=1pt,fill=yellow!20]
\tikzstyle{snode} = [draw,inner sep=2pt,minimum width=4em,minimum height=2em,rounded corners=1pt,fill=red!20]
\tikzstyle{wode} = [inner sep=0pt,minimum width=4em,minimum height=2em,rounded corners=0pt]
\node [anchor=west,wode] (n1) at (0,0) {${y}_1,{y}_2,\ldots,{y}_n$};
\node [anchor=north west,wode] (n2) at ([xshift=1em,yshift=0.5em]n1.south east) {${x}_1,{x}_2,\ldots,{x}_m$};
\node [anchor=south west,rnnnode] (n3) at ([xshift=8em,yshift=0.5em]n2.north east) {生成模型G};
\node [anchor=south east,wode] (n4) at ([xshift=-2em,yshift=0em]n3.north west) {$\tilde{{y}}_{1},\tilde{{y}}_{2},...,\tilde{{y}}_{J}$};
\node [anchor=south,snode] (n5) at ([xshift=0em,yshift=6em]n2.north) {判别网络D};
\node [anchor=west,align=left,font=\small] (n6) at ([xshift=15em,yshift=-3em]n5.east) {根据$(\seq{x},\seq{\tilde{y}})$\\成奖励信号};
\draw [->,thick] ([xshift=0em,yshift=0em]n1.north)--([xshift=0em,yshift=0em]n5.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n2.north)--([xshift=0em,yshift=0em]n5.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n4.west)--([xshift=0em,yshift=0em]n5.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n3.north)--([xshift=0em,yshift=1em]n3.north)--([xshift=0em,yshift=0em]n4.east);
\draw [->,thick] ([xshift=0em,yshift=0em]n5.east) -- ([xshift=14.5em,yshift=0em]n5.east) -- ([xshift=1em,yshift=0em]n3.east) -- ([xshift=0em,yshift=0em]n3.east);
\draw [->,thick] ([xshift=0em,yshift=0em]n2.east) -- ([xshift=0em,yshift=-1.5em]n3.south) -- ([xshift=0em,yshift=0em]n3.south);
\begin{pgfonlayer}{background}
%\node [rectangle,inner sep=0.5em,rounded corners=5pt,very thick,dotted,draw=yellow] [fit = (n3) (n4)] (b1) {};
%\node [rectangle,inner sep=0.5em,rounded corners=5pt,very thick,dotted,draw=red] [fit = (n5)] (b2) {};
\end{pgfonlayer}
%\draw [->,thick] ([xshift=0em,yshift=0em]n3.south) .. controls +(south:1em) and +(north:1em) .. ([xshift=0em,yshift=0em]n5.north);
\end{tikzpicture}
%------------------------------------------------------------
\begin{tikzpicture}
\tikzstyle{rnnnode} = [draw,inner sep=2pt,minimum width=4em,minimum height=2em,rounded corners=1pt,fill=red!20]
\tikzstyle{snode} = [draw,inner sep=2pt,minimum width=4em,minimum height=2em,rounded corners=1pt,fill=blue!20]
\tikzstyle{ynode} = [inner sep=2pt,minimum width=4em,minimum height=2em,rounded corners=1pt]
\node [anchor=west,rnnnode] (n1) at (0,0) {$\mathbi{h}_{1}$};
\node [anchor=west] (n2) at ([xshift=3em,yshift=0em]n1.east) {$\cdots$};
\node [anchor=west,rnnnode] (n3) at ([xshift=3em,yshift=0em]n2.east) {$\mathbi{h}_{j-1}$};
\node [anchor=west,rnnnode] (n4) at ([xshift=3em,yshift=0em]n3.east) {$\mathbi{h}_{j}$};
\node [anchor=south,snode] (n5) at ([xshift=0em,yshift=1em]n3.north) {Softmax};
\node [anchor=south,ynode] (n6) at ([xshift=0em,yshift=1em]n5.north) {$\tilde{{y}}_{j-1}$};
\node [anchor=south,snode] (n7) at ([xshift=0em,yshift=1em]n4.north) {Softmax};
\node [anchor=south,ynode] (n8) at ([xshift=0em,yshift=1em]n7.north) {$\tilde{{y}}_{j}$};
\node [anchor=north] (x1) at ([xshift=0em,yshift=-1em]n1.south) {$\seq{x}$};
\node [anchor=north,font=\small,align=left] (x2) at ([xshift=-4em,yshift=-1.7em]n3.south) {采样出\\$\tilde{{y}}_{j-2}$};
\node [anchor=north,font=\small,align=left] (x3) at ([xshift=2em,yshift=-2.5em]n3.south) {真实答\\${y}_{j-2}$};
\node [anchor=north,font=\small,align=left] (x4) at ([xshift=2em,yshift=-2.5em]n4.south) {真实答\\${y}_{j-1}$};
\node [anchor=south,inner sep=2pt] (st1) at (n6.north) {\scriptsize{\textbf{[step $j-1$]}}};
\node [anchor=south,inner sep=2pt] (st2) at (n8.north) {\scriptsize{\textbf{[step $j$]}}};
\node [anchor=north,font=\scriptsize] (e1) at ([xshift=-3em,yshift=-0em]n3.south) {$\funp{P}={(1-\epsilon_i)}^2$};
\node [anchor=north,font=\scriptsize] (e2) at ([xshift=2em,yshift=-0.1em]n3.south) {$\funp{P}=\epsilon_i$};
\node [anchor=north,font=\scriptsize] (e3) at ([xshift=-2em,yshift=-1em]n4.south) {$\funp{P}={(1-\epsilon_i)}^2$};
\node [anchor=north,font=\scriptsize] (e4) at ([xshift=2em,yshift=-0.1em]n4.south) {$\funp{P}=\epsilon_i$};
\node [anchor=south east,font=\small] (l1) at ([xshift=-1em,yshift=0.5em]n5.north west) {Loss};
\node [anchor=south west,font=\small] (l2) at ([xshift=1em,yshift=0.5em]n7.north east) {Loss};
\draw [->,thick] ([xshift=0em,yshift=0em]x1.north)--([xshift=0em,yshift=0em]n1.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n1.east)--([xshift=0em,yshift=0em]n2.west);
\draw [->,thick] ([xshift=0em,yshift=0em]n2.east)--([xshift=0em,yshift=0em]n3.west);
\draw [->,thick] ([xshift=0em,yshift=0em]n3.east)--([xshift=0em,yshift=0em]n4.west);
\draw [->,thick] ([xshift=0em,yshift=0em]n4.east)--([xshift=3em,yshift=0em]n4.east);
\draw [->,thick] ([xshift=0em,yshift=0em]n3.north)--([xshift=0em,yshift=0em]n5.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n5.north)--([xshift=0em,yshift=0em]n6.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n4.north)--([xshift=0em,yshift=0em]n7.south);
\draw [->,thick] ([xshift=0em,yshift=0em]n7.north)--([xshift=0em,yshift=0em]n8.south);
\draw [->,thick] ([xshift=0em,yshift=0em]l1.south) .. controls +(south:1em) and +(west:0.1em) .. ([xshift=0em,yshift=0em]n5.west);
\draw [->,thick] ([xshift=0em,yshift=0em]l2.south) .. controls +(south:1em) and +(east:0.1em) .. ([xshift=0em,yshift=0em]n7.east);
\draw [->,thick,dotted] ([xshift=0em,yshift=-0.5em]x2.north east) .. controls +(east:1.5em) and +(south:0.2em) .. ([xshift=-0.5em,yshift=0em]n3.south);
\draw [->,thick] ([xshift=0em,yshift=0em]x3.north) .. controls +(north:1em) and +(south:2em) .. ([xshift=0em,yshift=0em]n3.south);
\draw [->,thick,dotted] ([xshift=0em,yshift=0em]n6.east) .. controls ([xshift=2em,yshift=1em]n6.east) and ([xshift=-2em,yshift=-5em]n4.south west) .. ([xshift=-0.5em,yshift=-0em]n4.south);
\draw [->,thick] ([xshift=0em,yshift=0em]x4.north) .. controls +(north:1em) and +(south:2em) .. ([xshift=0em,yshift=0em]n4.south);
\end{tikzpicture}
\begin{tikzpicture}
\node[anchor=west,inner sep=0mm,minimum height=4em,minimum width=5.5em,rounded corners=15pt,align=left,draw] (n1) at (0,0) {Decoder\\Encoder};
\node[anchor=west,inner sep=0mm,minimum height=4em,minimum width=5.5em,rounded corners=15pt,align=left,draw] (n2) at ([xshift=10em,yshift=0em]n1.east) {Decoder\\Encoder};
\node[anchor=south,inner sep=0mm,font=\small] (a1) at ([xshift=0em,yshift=1em]n1.north) {演员$p_{\theta}$};
\node[anchor=north,inner sep=0mm] (a2) at ([xshift=0em,yshift=-1em]n1.south) {${x}_1,{x}_2,\ldots,{x}_m$};
\node[anchor=south,inner sep=0mm,font=\small] (c1) at ([xshift=0em,yshift=1em]n2.north) {评论家$Q$};
\node[anchor=north,inner sep=0mm] (c2) at ([xshift=0em,yshift=-1em]n2.south) {${y}_1,{y}_2,\ldots,{y}_J$};
% \node[anchor=west,inner sep=0mm] (n3) at ([xshift=2.1em,yshift=2em]n1.east) {$Q_1,Q_2,\ldots,Q_J$};
% \node[anchor=west,inner sep=0mm] (n4) at ([xshift=2.9em,yshift=-0.4em]n1.east) {$\hat{\mathbi{y}}_1,\hat{\mathbi{y}}_2,\ldots,\hat{\mathbi{y}}_J$};
% \node[anchor=west,inner sep=0mm,font=\small] (n5) at ([xshift=3em,yshift=-3em]n1.east) {演员状态};
\draw [-,thick] ([xshift=0em,yshift=0em]n1.west) -- ([xshift=0em,yshift=0em]n1.east);
\draw [-,thick] ([xshift=0em,yshift=0em]n2.west) -- ([xshift=0em,yshift=0em]n2.east);
%\draw [->,thick] ([xshift=0em,yshift=1em]n2.west) -- ([xshift=0em,yshift=1em]n1.east);
%\draw [->,thick] ([xshift=0em,yshift=0.5em]n1.east) -- ([xshift=0em,yshift=0.5em]n2.west);
%\draw [->,dotted,very thick] ([xshift=0em,yshift=0em]n1.east) .. controls ([xshift=3em,yshift=-1em]n1.-90) and ([xshift=-3em,yshift=-1em]n2.-90) .. (n2.west);
\node[anchor=west,inner sep=0mm] (n3) at ([xshift=2.1em,yshift=1em]n1.east) {$Q_1,Q_2,\ldots,Q_J$};
\node[anchor=west,inner sep=0mm] (n4) at ([xshift=2.9em,yshift=-1em]n1.east) {$\tilde{{y}}_1,\tilde{{y}}_2,\ldots,\tilde{{y}}_J$};
\draw [->,thick] ([xshift=0em,yshift=0.2em]n2.west) -- ([xshift=0em,yshift=0.2em]n1.east);
\draw [->,thick] ([xshift=0em,yshift=-0.2em]n1.east) -- ([xshift=0em,yshift=-0.2em]n2.west);
\end{tikzpicture}
\ No newline at end of file
......@@ -11,8 +11,8 @@
\node[anchor = north] (new_root) at ([yshift = -1.5em]newer.south) {new};
\draw [->] ([yshift=0.2em]do_root.north) .. controls +(north:0.4) and +(south:0.6) ..(do.south);
\draw [->] (do_root.north) -- (does.south);
\draw [->] ([yshift=0.2em]do_root.north) .. controls +(north:0.4) and +(south:0.6) ..([yshift=0.1em]doing.south);
\draw [->] ([yshift=0.2em]do_root.north) .. controls +(north:0.4) and +(south:0.6) ..(doing.south);
\draw [->] ([yshift=0.2em]new_root.north) .. controls +(north:0.4) and +(south:0.6) ..(new.south);
\draw [->] (new_root.north) -- (newer.south);
\draw [->] ([yshift=0.2em]new_root.north) .. controls +(north:0.4) and +(south:0.6) ..([yshift=0.08em]newest.south);
\draw [->] ([yshift=0.2em]new_root.north) .. controls +(north:0.4) and +(south:0.6) ..(newest.south);
\end{tikzpicture}
\ No newline at end of file
......@@ -352,7 +352,7 @@ R(\mathbf{w}) & = & (\big| |\mathbf{w}| {\big|}_2)^2 \\
\parinterval 在图像识别领域,研究人员就发现,对于输入图像的细小扰动,如像素变化等,会使模型以高置信度给出错误的预测\upcite{DBLP:conf/cvpr/NguyenYC15,DBLP:journals/corr/SzegedyZSBEGF13,DBLP:journals/corr/GoodfellowSS14},但是这种扰动并不会造成人类的错误判断。也就是说,样本中的微小变化“欺骗”了图像识别系统,但是“欺骗”不了人类。这种现象背后的原因有很多,一种可能的原因是:系统并没有理解图像,而是在拟合数据,因此拟合能力越强,反而对数据中的微小变化更加敏感。从统计学习的角度看,既然新的数据中可能会有扰动,那更好的学习方式就是在训练中显性地把这种扰动建模出来,让模型对输入的细微变化表现得更加健壮。
\parinterval 这种对原样本上增加一些难以察觉的扰动从而使模型的到错误判断的样本,被称为对抗样本。对于输入$\mathbi{x}$和输出$\mathbi{y}$,对抗样本形式上可以被描述为:
\parinterval 这种对原样本上增加一些难以察觉的扰动从而使模型的到错误判断的样本,被称为对抗样本。对于模型的输入$\mathbi{x}$和输出$\mathbi{y}$,对抗样本形式上可以被描述为:
\begin{eqnarray}
\funp{C}(\mathbi{x}) &=& \mathbi{y}
\label{eq:13-6}\\
......@@ -362,7 +362,7 @@ R(\mathbf{w}) & = & (\big| |\mathbf{w}| {\big|}_2)^2 \\
\label{eq:13-8}
\end{eqnarray}
\noindent 其中,$(\mathbi{x},\mathbi{y})$为原样本{\red(样本和上面的输入输出是不是不太统一?)}$(\mathbi{x}',\mathbi{y})$为输入中含有扰动的对抗样本,函数$\funp{C}(\cdot)$为模型。公式\eqref{eq:13-8}$\funp{R}(\mathbi{x},\mathbi{x}')$表示扰动后的输入$\mathbi{x}'$和原输入$\mathbi{x}$之间的距离,$\varepsilon$表示扰动的受限范围。当模型对包含噪声的数据容易给出较差的结果时,往往意味着该模型的抗干扰能力差,因此可以利用对抗样本检测现有模型的健壮性\upcite{DBLP:conf/emnlp/JiaL17}。同时,采用类似数据增强的方式将对抗样本混合至训练数据中,能够帮助模型学习到更普适的特征使模型得到稳定的输出,这种方式也被称为对抗训练\upcite{DBLP:journals/corr/GoodfellowSS14,DBLP:conf/emnlp/BekoulisDDD18,DBLP:conf/naacl/YasunagaKR18}
\noindent 其中,$(\mathbi{x}',\mathbi{y})$为输入中含有扰动的对抗样本,函数$\funp{C}(\cdot)$为模型。公式\eqref{eq:13-8}$\funp{R}(\mathbi{x},\mathbi{x}')$表示扰动后的输入$\mathbi{x}'$和原输入$\mathbi{x}$之间的距离,$\varepsilon$表示扰动的受限范围。当模型对包含噪声的数据容易给出较差的结果时,往往意味着该模型的抗干扰能力差,因此可以利用对抗样本检测现有模型的健壮性\upcite{DBLP:conf/emnlp/JiaL17}。同时,采用类似数据增强的方式将对抗样本混合至训练数据中,能够帮助模型学习到更普适的特征使模型得到稳定的输出,这种方式也被称为对抗训练\upcite{DBLP:journals/corr/GoodfellowSS14,DBLP:conf/emnlp/BekoulisDDD18,DBLP:conf/naacl/YasunagaKR18}
\parinterval 通过对抗样本训练来提升模型健壮性的首要问题是:如何生成对抗样本。通过当前模型$\funp{C}$和样本$(\mathbi{x},\mathbi{y})$,生成对抗样本的过程,被称为{\small\bfnew{对抗攻击}}\index{对抗攻击}(Adversarial Attack)\index{Adversarial Attack}。对抗攻击可以被分为两种,分别是黑盒攻击和白盒攻击。在白盒攻击中,攻击算法可以访问模型的完整信息,包括模型结构、网络参数、损失函数、激活函数、输入和输出数据等。而黑盒攻击不需要知道神经网络的详细信息,仅仅通过访问模型的输入和输出就可以达到攻击目的,{\red 因此通常依赖启发式方法来生成对抗样本(Adversarial Examples for Evaluating Reading Comprehension Systems)}。由于神经网络对模型内部的参数干预度有限,其本身便是一个黑盒模型,并且黑盒攻击只需要在输入部分引入攻击信号,因此在神经网络的相关应用中黑盒攻击方法更加实用。
......@@ -391,7 +391,6 @@ R(\mathbf{w}) & = & (\big| |\mathbf{w}| {\big|}_2)^2 \\
\begin{table}[htp]{
\begin{center}
\caption{对抗样本实例{\red 换成这个行吗?}}
\label{tab:comparison-of-different-MT}
\begin{tabular}{l | l }
\rule{0pt}{15pt} 原始输入 & We are looking forward to the school holiday as soon as possible \\
\hline
......@@ -426,13 +425,13 @@ R(\mathbf{w}) & = & (\big| |\mathbf{w}| {\big|}_2)^2 \\
\vspace{0.5em}
\item 此外还可以使用基于梯度的方法来生成对抗样本。例如,可以利用替换词与原始单词词向量之间的差值,以及候选词的梯度之间的相似度来生成对抗样本\upcite{DBLP:conf/acl/ChengJM19},具体的计算方式如下:
\begin{eqnarray}
{\mathbi{x}'}_i &=& \arg\max_{\mathbi{x}\in V}\textrm{sim}(\funp{e}(\mathbi{x})-\funp{e}(\mathbi{x}_i),\mathbi{g}_{\mathbi{x}_i})
{{x}'}_i &=& \arg\max_{{x}\in V}\textrm{sim}(\funp{e}({x})-\funp{e}({x}_i),\mathbi{g}_{{x}_i})
\label{eq:13-9} \\
\mathbi{g}_{\mathbi{x}_i} &=& \bigtriangledown_{\funp{e}(\mathbi{x}_i)} - \log \funp{P}(\mathbi{y}|\mathbi{x};\theta)
\mathbi{g}_{{x}_i} &=& \bigtriangledown_{\funp{e}({x}_i)} - \log \funp{P}(\mathbi{y}|\mathbi{x};\theta)
\label{eq:13-10}
\end{eqnarray}
\noindent 其中,$\mathbi{x}_i$为输入中第$i$个词,$\mathbi{g}_{\mathbi{x}_i}$为对应的梯度向量,$\funp{e}(\cdot)$用于获取词向量,$\textrm{sim}(\cdot,\cdot)$是用于评估两个向量之间相似度(距离)的函数,$V$为源语的词表,$\bigtriangledown$表示求梯度操作,因此公式\eqref{eq:13-10}表示求$- \log \funp{P}(\mathbi{y}|\mathbi{x};\theta)$$\funp{e}(\mathbi{x}_i)$的梯度。由于对词表中所有单词进行枚举时,计算成本较大。因此利用语言模型选择最可能的$n$ 个词作为候选,进而缩减匹配范围,并从中采样出源语词进行替换是一种更有效地方式。同时,为了保护模型不受解码器预测误差的影响,此时需要对模型目标端的输入做出同样的调整。与在源语端操作不同的地方时,此时会将公式\eqref{eq:13-10}中的损失替换为$- \log \funp{P}(\mathbi{y}|\mathbi{x}')$。同时,在如何利用语言模型选择候选和采样方面,也做出了相应的调整。在进行对抗性训练时,在原有的训练损失上增加了三个额外的损失,最终的训练目标为:
\noindent 其中,${x}_i$为输入中第$i$个词,$\mathbi{g}_{{x}_i}$为对应的梯度向量,$\funp{e}(\cdot)$用于获取词向量,$\textrm{sim}(\cdot,\cdot)$是用于评估两个向量之间相似度(距离)的函数,$V$为源语的词表,$\bigtriangledown$表示求梯度操作,因此公式\eqref{eq:13-10}表示求$- \log \funp{P}(\mathbi{y}|\mathbi{x};\theta)$$\funp{e}({x}_i)$的梯度。由于对词表中所有单词进行枚举时,计算成本较大。因此利用语言模型选择最可能的$n$ 个词作为候选,进而缩减匹配范围,并从中采样出源语词进行替换是一种更有效地方式。同时,为了保护模型不受解码器预测误差的影响,此时需要对模型目标端的输入做出同样的调整。与在源语端操作不同的地方时,此时会将公式\eqref{eq:13-10}中的损失替换为$- \log \funp{P}(\mathbi{y}|\mathbi{x}')$。同时,在如何利用语言模型选择候选和采样方面,也做出了相应的调整。在进行对抗性训练时,在原有的训练损失上增加了三个额外的损失,最终的训练目标为:
\begin{eqnarray}
Loss(\theta_{\textrm{mt}},\theta_{\textrm{lm}}^{\mathbi{x}},\theta_{\textrm{lm}}^{\mathbi{y}}) &=& Loss_{\textrm{clean}}(\theta_{\textrm{mt}}) + Loss_{\textrm{lm}}(\theta_{\textrm{lm}}^{\mathbi{x}}) + \nonumber \\
& & Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) + Loss_{\textrm{lm}}(\theta_{\textrm{lm}}^{\mathbi{y}})
......@@ -464,11 +463,11 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\subsection{极大似然估计的问题}\label{subsec-15.3.1}
\parinterval 极大似然估计已成为机器翻译乃至整个自然语言处理领域中使用最广泛的训练用目标函数。但是,使用极大似然估存在{\small\bfnew{曝光偏置}}\index{曝光偏置}(Exposure Bias\index{Exposure Bias})问题和训练解码评价指标不一致问题({\color{red} 参考文献!}),具体来说:
\parinterval 极大似然估计已成为机器翻译乃至整个自然语言处理领域中使用最广泛的训练用目标函数。但是,使用极大似然估存在{\small\bfnew{曝光偏置}}\index{曝光偏置}(Exposure Bias\index{Exposure Bias})问题和训练解码评价指标不一致问题({\color{red} Minimum Risk Training for Neural Machine Translation}),具体来说:
\begin{itemize}
\vspace{0.5em}
\item 曝光偏置问题:在训练过程中,模型使用标注数据进行训练,因此模型在预测下一个单词时,解码器的输入是正确的译文片段,也就是预测单词$y_j$时,系统使用了标准答案$\{\mathbi{y}_1,...,\mathbi{y}_{j-1}\}$作为历史信息。但是对新的句子进行翻译时,预测第$j$个单词使用的是模型自己生成的前$j-1$个单词,即$\{\tilde{\mathbi{y}}_1,...,\tilde{\mathbi{y}}_{j-1}\}$。这意味着,训练时使用的输入数据(目标语言端)与真实翻译时的情况不符,而且二者所对应的概率分布可能会存在较大差异,如图\ref{fig:13-21} 所示。由于在训练过程中暴露于标注数据,因此模型可能适应了标注数据,在推断阶段无法很好地适应模型自动生成的数据,这就是曝光偏置问题\upcite{Bengio2015ScheduledSF,Ranzato2016SequenceLT}{\red(转录时,w改为y,并在图中补充:$y_1,y_2,y_3,…, y_V$ 表示目标语言词表里的V 个词){\color{blue} 我上面用的是$\mathbi{y}_j$下面图里用的是$w$,这个没有问题,因为$w$是词典里的词,但是怎么表达这个事情}}
\item 曝光偏置问题:在训练过程中,模型使用标注数据进行训练,因此模型在预测下一个单词时,解码器的输入是正确的译文片段,也就是预测单词$y_j$时,系统使用了标准答案$\{{y}_1,...,{y}_{j-1}\}$作为历史信息。但是对新的句子进行翻译时,预测第$j$个单词使用的是模型自己生成的前$j-1$个单词,即$\{\tilde{{y}}_1,...,\tilde{{y}}_{j-1}\}$。这意味着,训练时使用的输入数据(目标语言端)与真实翻译时的情况不符,而且二者所对应的概率分布可能会存在较大差异,如图\ref{fig:13-21} 所示。由于在训练过程中暴露于标注数据,因此模型可能适应了标注数据,在推断阶段无法很好地适应模型自动生成的数据,这就是曝光偏置问题\upcite{Bengio2015ScheduledSF,Ranzato2016SequenceLT}{\red(转录时,w改为y,并在图中补充:$y_1,y_2,y_3,…, y_V$ 表示目标语言词表里的V 个词){\color{blue} 我上面用的是$\mathbi{y}_j$下面图里用的是$w$,这个没有问题,因为$w$是词典里的词,但是怎么表达这个事情}}{\red (如果整体是解码端,那么h1的输入改成y)}
\vspace{0.5em}
%----------------------------------------------
......@@ -479,6 +478,14 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\label{fig:13-21}
\end{figure}
%----------------------------------------------
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter13/Figures/figure-exposure-bias}
\caption{曝光偏置问题}
\label{fig:13-21}
\end{figure}
%----------------------------------------------
\item 训练目标函数与任务评价指标不一致问题:在训练过程中,在训练数据上进行极大似然估计,而在新数据上进行推断的时候,通常使用BLEU等外部评价指标来评价模型的性能。更加理想的情况是,模型应该直接最大化性能评价指标,而不是训练集数据上的似然函数。但是很多情况下,模型性能评价指标不可微分,这使得我们无法直接利用基于梯度的方法来优化模型。在机器翻译任务中,这个问题的一种体现是,训练数据上更低的困惑度不一定能带来BLEU的提升。
\vspace{0.5em}
......@@ -490,7 +497,7 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\subsection{非Teacher-forcing方法}
\parinterval 所谓Teacher-forcing,即要求模型预测的结果和标准答案完全对应。Teacher-forcing是一种深度学习训练策略,在序列处理任务上被广泛使用({\color{red} 参考文献!})。以序列生成任务为例,Teacher-forcing要求模型在训练时不是使用上一个时刻的输出作为下一个时刻的输入,而是使用训练数据中的标准答案作为下一个时刻的输入。显然这会导致曝光偏置问题。为了解决这个问题,可以使用非Teacher-forcing方法,主要包括调度采样和生成对抗网络。
\parinterval 所谓Teacher-forcing,即要求模型预测的结果和标准答案完全对应。Teacher-forcing是一种深度学习训练策略,在序列处理任务上被广泛使用({\color{red} deep learning})。以序列生成任务为例,Teacher-forcing要求模型在训练时不是使用上一个时刻的输出作为下一个时刻的输入,而是使用训练数据中的标准答案作为下一个时刻的输入。显然这会导致曝光偏置问题。为了解决这个问题,可以使用非Teacher-forcing方法,主要包括调度采样和生成对抗网络。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -500,18 +507,19 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\parinterval 对于曝光偏置问题,一般可以使用束搜索等启发式搜索方法来进行缓解。也就是,训练过程可以模拟推断时的行为。但是即使使用束搜索,最终得到的有效序列数量很小,仍然无法完全解决训练和推断行为不一致的问题。
\parinterval 对于一个目标序列$\seq{y}=\{\mathbi{y}_1,\mathbi{y}_2,\ldots,\mathbi{y}_n\}$,在预测第$j$个单词$\mathbi{y}_j$时,训练过程与推断过程之间的主要区别在于:训练过程中使用标准答案$\{\mathbi{y}_{1},...,\mathbi{y}_{j-1}\}$,而推断过程使用的是来自模型本身的预测结果$\{\tilde{\mathbi{y}}_{1},...,\tilde{\mathbi{y}}_{j-1}\}$。此时可以采取一种{\small\bfnew{调度采样}}\index{调度采样}(Scheduled Sampling\index{Scheduled Sampling})机制({\color{red} 参考文献!}),在训练中随机决定使用$\mathbi{y}_{j-1}$还是$\tilde{\mathbi{y}}_{j-1}$。 假设训练时使用的是基于小批量的随机梯度下降方法,在第$i$ 个批次中,对序列每一个位置进行预测时以概率$\epsilon_i$使用标准答案,或以概率${(1-\epsilon_i)}^2$使用来自模型本身的预测。具体到序列中的每一个位置$j$,可以根据模型预测$\tilde{\mathbi{y}}_{t-1}$ 单词的概率进行采样。{\red 在得到若干个单词之后,同$\mathbi{y}_{j-1}$一起以$\epsilon_i$控制的调度策略随机送入位置$j$作为输入,此过程如图\ref{fig:13-22}所示。这个过程与束搜索可以很好的融合。 (再顺一下}
\parinterval 对于一个目标序列$\seq{y}=\{{y}_1,{y}_2,\ldots,{y}_n\}$,在预测第$j$个单词${y}_j$时,训练过程与推断过程之间的主要区别在于:训练过程中使用标准答案$\{{y}_{1},...,{y}_{j-1}\}$,而推断过程使用的是来自模型本身的预测结果$\{\tilde{{y}}_{1},...,\tilde{{y}}_{j-1}\}$。此时可以采取一种{\small\bfnew{调度采样}}\index{调度采样}(Scheduled Sampling\index{Scheduled Sampling})机制({\color{red} Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks}),在训练中随机决定使用${y}_{j-1}$还是$\tilde{{y}}_{j-1}$。 假设训练时使用的是基于小批量的随机梯度下降方法,在第$i$ 个批次中,对序列每一个位置进行预测时以概率$\epsilon_i$使用标准答案,或以概率${(1-\epsilon_i)}^2$使用来自模型本身的预测。具体到序列中的一个位置$j$,可以根据模型预测$\tilde{{y}}_{j-1}$ 单词的概率进行采样,在$\epsilon_i$控制的调度策略下,同${y}_{j-1}$一起作为输入。此过程如图\ref{fig:13-22}所示,并且这个过程可以很好地与束搜索融合。{\red (这样画行不行,另外h1上面为啥没有生成第一个单词?此外,这是什么模型,哪里是解码器,h1是编码器?}
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=1]{./Chapter13/Figures/figure-of-scheduling-sampling-method.png}
\input{./Chapter13/Figures/figure-of-scheduling-sampling-method}
\caption{调度采样方法的示意图}
\label{fig:13-22}
\end{figure}
%----------------------------------------------
\parinterval$\epsilon_i=1$时,模型的训练与原始的训练策略完全相同,而当$\epsilon_i=0$时,模型的训练则与推断时使用的策略完全一样。在这里使用到了一种{\small\bfnew{课程学习}}\index{课程学习}(Curriculum Learning)\index{curriculum learning}策略({\color{red} 参考文献!}),该策略认为应从一种学习策略过渡到另一种学习策略:在训练开始时,由于模型训练不充分,因此如果从模型中随机采样,会导致收敛速度非常慢。因此,在模型训练的前期,通常会选择使用标准答案$\{\mathbi{y}_{1},...,\mathbi{y}_{j-1}\}$。在模型训练的后期,应该更倾向于使用自模型本身的预测$\{\tilde{\mathbi{y}}_{1},...,\tilde{\mathbi{y}}_{j-1}\}$。关于课程学习的内容在\ref{sec:curriculum-learning}节还会有详细介绍。
\parinterval$\epsilon_i=1$时,模型的训练与原始的训练策略完全相同,而当$\epsilon_i=0$时,模型的训练则与推断时使用的策略完全一样。在这里使用到了一种{\small\bfnew{课程学习}}\index{课程学习}(Curriculum Learning)\index{curriculum learning}策略({\color{red} Curriculum Learning Dynamic Curriculum Learning for Low-Resource Neural Machine
Translation}),该策略认为应从一种学习策略过渡到另一种学习策略:在训练开始时,由于模型训练不充分,因此如果从模型中随机采样,会导致收敛速度非常慢。因此,在模型训练的前期,通常会选择使用标准答案$\{{y}_{1},...,{y}_{j-1}\}$。在模型训练的后期,应该更倾向于使用自模型本身的预测$\{\tilde{{y}}_{1},...,\tilde{{y}}_{j-1}\}$。关于课程学习的内容在\ref{sec:curriculum-learning}节还会有详细介绍。
\parinterval 在使用调度策略时,需要调整关于$i$的函数来降低$\epsilon_i$,与梯度下降方法中降低学习率的方式相似。调度策略可以采用如下几种方式:
......@@ -533,20 +541,20 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\parinterval 调度采样解决曝光偏置的方法是:把模型历史预测的结果作为输入,并用于预测下一时刻的输出。但是,如果模型预测的结果中有错误,再使用错误的结果预测未来的序列也会产生问题。这里面的核心问题是,如何知道模型预测的好与坏,进而在训练中有效的使用它们。如果生成好的结果,那么可以使用它进行模型训练,否则就不使用。生成对抗网络就是这样一种技术,它引入了一个额外的模型(判别器)来对原有模型(生成器)的生成结果进行评价,并根据评价结果同时训练两个模型。
\parinterval\ref{sec:adversarial-examples}已经提到了生成对抗网络,这里进行一些展开。 在机器翻译中,基于对抗神经网络的架构被命名为{\small\bfnew{对抗神经机器翻译}}\index{对抗神经机器翻译}(Adversarial-NMT)\index{Adversarial-NMT}{\color{red} 参考文献!})。其总体框架如图\ref{fig:13-23} 所示,{\red 其中“Ref”是“Reference”的缩写,表示标准答案,而“ Hyp”是“Hypothesis”的缩写,表示模型翻译句子结果(准备直接吧图中英文改为中文,然后把这句话删掉)}。黄色部分表示神经机器翻译模型$G$,该模型将源语言句子$\seq{x}$映射为目标语言句子。红色部分是对抗网络$D$,该网络预测目标语言句子是否是源语言句子$\seq{x}$的真实翻译。$G$$D$相互对抗,同时生成翻译结果$\tilde{\seq{y}}$来训练$D$,并生成奖励信号来通过策略梯度训练$G$
\parinterval\ref{sec:adversarial-examples}小节已经提到了生成对抗网络,这里进行一些展开。 在机器翻译中,基于对抗神经网络的架构被命名为{\small\bfnew{对抗神经机器翻译}}\index{对抗神经机器翻译}(Adversarial-NMT)\index{Adversarial-NMT}{\color{red} Adversarial Neural Machine Translation})。对于训练用双语句对$(\seq{x},\seq{y})=(\{{x}_1,{x}_2,\ldots,{x}_m\},\{{y}_1,{y}_2,\ldots,{y}_n\})$,其中${x}_i$ 是源句子中的第$i$个单词的表示向量,${y}_j$是目标句子中的第$j$个单词的表示向量。令$\tilde{\seq{y}} = \{\tilde{{y}}_{1},\tilde{{y}}_{2},...,\tilde{{y}}_{J}\}$表示神经机器翻译系统对源语言句子$\seq{x}$的翻译结果。此时,对抗神经机器翻译的总体框架可以表示为图\ref{fig:13-23},其中。黄色部分表示神经机器翻译模型$G$,该模型将源语言句子$\seq{x}$映射为目标语言句子。红色部分是对抗网络$D$,该网络预测目标语言句子是否是源语言句子$\seq{x}$的真实翻译。$G$$D$相互对抗,同时生成翻译结果$\tilde{\seq{y}}$来训练$D$,并生成奖励信号来通过策略梯度训练$G${\red (图再改一下)}
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=1]{./Chapter13/Figures/figure-framework-of-Adversarial-Neural-machine-translation.png}
\input{./Chapter13/Figures/figure-framework-of-Adversarial-Neural-machine-translation}
\caption{对抗神经机器翻译框架图({\color{red} 最好别抄,用自己的理解画}}
\label{fig:13-23}
\end{figure}
%----------------------------------------------
\parinterval 对于训练用双语句对$(\seq{x},\seq{y})=(\{\mathbi{x}_1,\mathbi{x}_2,\ldots,\mathbi{x}_m\},\{\mathbi{y}_1,\mathbi{y}_2,\ldots,\mathbi{y}_n\})$,其中$\mathbi{x}_i$ 是源句子中的第$i$个单词的表示向量,$\mathbi{y}_j$是目标句子中的第$j$个单词的表示向量。令$\tilde{\seq{y}}$表示神经机器翻译系统对源语言句子$\seq{x}$的翻译结果。实际上,对抗神经机器翻译的训练目标就是强制$\tilde{\seq{y}}$$\seq{y}$ 相似。在理想情况下,$\tilde{\seq{y}}$与人类标注的答案$\seq{y}$非常相似,以至于人类也无法分辨$\tilde{\seq{y}}$是由机器还是人类产生的。
\parinterval 实际上,对抗神经机器翻译的训练目标就是强制$\tilde{\seq{y}}$$\seq{y}$ 相似。在理想情况下,$\tilde{\seq{y}}$与人类标注的答案$\seq{y}$非常相似,以至于人类也无法分辨$\tilde{\seq{y}}$是由机器还是人类产生的。
\parinterval 为了实现这一目标,需要引入一个额外的对抗网络\upcite{DBLP:conf/nips/GoodfellowPMXWOCB14}。在这个框架中,原始的神经机器翻译模型为生成网络,其训练由对抗网络协助。对抗网络的目标是将神经机器翻译模型生成的翻译结果与人的翻译结果区分开,而生成网络的目标是产生高质量的翻译,以欺骗对抗网络。生成网络和对抗网络作为对手,由策略梯度方法来共同训练。为了使得生成网络和对抗网络能够提高彼此性能,可以通过学习人为产生的正例和从神经机器翻译取得的负例来提高对手的辨别力。通过这种方式,神经机器翻译的结果可以尽可能接近真实答案。
\parinterval 为了实现这一目标,需要引入一个额外的对抗网络\upcite{DBLP:conf/nips/GoodfellowPMXWOCB14}。在这个框架中,原始的神经机器翻译模型为生成网络,其训练由对抗网络协助。对抗网络的目标是将神经机器翻译模型生成的翻译结果与人的翻译结果区分开,而生成网络的目标是产生高质量的翻译,以欺骗对抗网络。生成网络和对抗网络作为对手,由策略梯度方法来共同训练。为了使得生成网络和对抗网络能够提高彼此性能,可以通过学习人为产生的正例和从神经机器翻译取得的负例来提高对手的辨别力。通过这种方式,神经机器翻译的结果可以尽可能接近真实答案。{\red (打分不是应该还会指导生成器?)}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -554,7 +562,7 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\subsection{强化学习方法}
\parinterval {\small\bfnew{强化学习}}\index{强化学习}(Reinforcement Learning,RL\index{Reinforcement Learning,RL})方法是机器学习中的经典方法,它可以同时解决\ref{subsec-15.3.1}节提到的曝光偏置问题和训练- 推断评价指标不一致问题。本节主要介绍基于策略的方法和基于演员-评论家的方法({\color{red} 参考文献!})。
\parinterval {\small\bfnew{强化学习}}\index{强化学习}(Reinforcement Learning,RL\index{Reinforcement Learning,RL})方法是机器学习中的经典方法,它可以同时解决\ref{subsec-15.3.1}节提到的曝光偏置问题和训练- 推断评价指标不一致问题。本节主要介绍基于策略的方法和基于演员-评论家的方法({\color{red} An Actor-Critic Algorithm for Sequence Prediction})。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -580,7 +588,8 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\label{eq:13-14}
\end{eqnarray}
\noindent 公式\eqref{eq:13-14}使用了{\small\bfnew{策略梯度}}\index{策略梯度}(Policy Gradient\index{Policy Gradient})的手段将$\vartriangle(\tilde{\seq{y}},\seq{y}_k)$提到微分操作之外({\color{red} 引用策略梯度的论文!})。这样,就无需对$\vartriangle(\tilde{\seq{y}},\seq{y}_k)$进行微分,因此最小风险训练允许任意不可微的损失函数,包括BLEU等常用的评价函数。
\noindent 公式\eqref{eq:13-14}使用了{\small\bfnew{策略梯度}}\index{策略梯度}(Policy Gradient\index{Policy Gradient})的手段将$\vartriangle(\tilde{\seq{y}},\seq{y}_k)$提到微分操作之外({\color{red} A natural policy gradient
Where did my optimum go?: An empiricalanalysis of gradient descent optimization in policy gradient methods})。这样,就无需对$\vartriangle(\tilde{\seq{y}},\seq{y}_k)$进行微分,因此最小风险训练允许任意不可微的损失函数,包括BLEU等常用的评价函数。
\parinterval 相比于最大似然估计,最小风险训练有着以下优点:
......@@ -594,16 +603,27 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\vspace{0.5em}
\end{itemize}
\parinterval\ref{fig:13-24}展示了四个模型及所对应的损失函数$\vartriangle(\tilde{\seq{y}},\seq{y}_k)$的值,四个模型顺序为从差到好。假设在源语言$\seq{x}_k$的候选翻译集合$\chi(\seq{x}_k)$中有三个译文:$\tilde{\seq{y}}_1=$“今天 天气 很 好”,$\tilde{\seq{y}}_2=$“今天 天气 不错”,$\tilde{\seq{y}}_3=$“今天 天 很 晴朗”。显然$\tilde{\seq{y}}_1$是最好的候选,$\tilde{\seq{y}}_3$是次优的候选,$\tilde{\seq{y}}_2$是最差的候选,于是按翻译质量好坏的排序为$\tilde{\seq{y}}_1>\tilde{\seq{y}}_3>\tilde{\seq{y}}_2$。模型1以和标准答案相反的顺序排序所有候选结果,$\tilde{\seq{y}}_2>\tilde{\seq{y}}_3>\tilde{\seq{y}}_1$,因此他得到了最高的风险分数-0.50,模型2相对于第一列的模型得到了一个更好的分数-0.61,模型3得到的分数最高,为-0.71(模型4最高吧?)。{\red 通过将概率质量集中在$\tilde{\seq{y}}_1$上,可以进一步降低风险。通过最大程度地减少风险,可以期望获得一个模型,它的预测与标准答案最一致。(怎样集中?图中和公式中都没体现呀}
\parinterval\ref{fig:13-24}展示了四个模型及所对应的损失函数$\vartriangle(\tilde{\seq{y}},\seq{y}_k)$的值,四个模型顺序为从差到好。假设在源语言$\seq{x}_k$的候选翻译集合$\chi(\seq{x}_k)$中有三个译文:$\tilde{\seq{y}}_1=$“今天 天气 很 好”,$\tilde{\seq{y}}_2=$“今天 天气 不错”,$\tilde{\seq{y}}_3=$“今天 天 很 晴朗”。显然$\tilde{\seq{y}}_1$是最好的候选,$\tilde{\seq{y}}_3$是次优的候选,$\tilde{\seq{y}}_2$是最差的候选,于是按翻译质量好坏的排序为$\tilde{\seq{y}}_1>\tilde{\seq{y}}_3>\tilde{\seq{y}}_2$。模型1以和标准答案相反的顺序排序所有候选结果,$\tilde{\seq{y}}_2>\tilde{\seq{y}}_3>\tilde{\seq{y}}_1$,因此他得到了最高的风险分数-0.50,模型2相对于第一列的模型得到了一个更好的分数-0.61,模型3得到的分数最高,为-0.71{\red (模型4最高吧?)。通过将概率质量集中在$\tilde{\seq{y}}_1$上,可以进一步降低风险。通过最大程度地减少风险,可以期望获得一个模型,它的预测与标准答案最一致。(怎样集中?图中和公式中都没体现呀,这里主要是不明白为什么要比较谁高,高了会怎样?}
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=1]{./Chapter13/Figures/figure-minimum-risk-training-calculation-process.png}
\begin{table}[htp]{
\begin{center}
\caption{不同模型预测结果所对应的风险}
\label{fig:13-24}
\end{figure}
%----------------------------------------------
\begin{tabular}{l | l | l | l | l | l }
\rule{0pt}{15pt} & $\vartriangle(\tilde{\seq{y}},\seq{y}_k)$ & \multicolumn{4}{c}{$\funp{P}(\tilde{\seq{y}}|\seq{x}_k;\theta)$} \\
\cline{3-6}
\rule{0pt}{15pt} & & 模型1 & 模型2 & 模型3 & 模型4 \\
\hline
\rule{0pt}{15pt} 今天\ 天气\ \ & -1.0 & 0.2 & 0.3 & 0.5 & 0.7 \\
\rule{0pt}{15pt} 今天\ 天气\ 不错 & -0.3 & 0.5 & 0.2 & 0.2 & 0.1 \\
\rule{0pt}{15pt} 今天\ 天气\ \ 晴朗 & -0.5 & 0.3 & 0.5 & 0.3 & 0.2 \\ \hline
\multicolumn{2}{c|}{$\mathbb{E}_{\tilde{\seq{y}}|\seq{x}_k;\theta}[\vartriangle(\tilde{\seq{y}},\seq{y}_k)]$} & -0.5 & 0.61 & 0.71 & 0.83 \\
\end{tabular}
\end{center}
\label{tab:13-3}
}\end{table}
%-------------------------------------------
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -611,53 +631,51 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\subsubsection{2. 基于演员-评论家的强化学习方法}
\parinterval 基于策略的强化学习是要寻找一个策略$\funp{p}(a|\hat{\mathbi{y}}_{1 \ldots j},\seq{x})$,使得该策略选择的行动$a$未来可以获得的奖励期望(也被称为动作价值函数)最大化({\color{red} 句子里的专有名词要加黑,加英文})。这个过程通常用函数$Q$来描述:
\parinterval 基于策略的强化学习是要寻找一个策略$\funp{p}(a|\tilde{{y}}_{1 \ldots j},\seq{x})$,使得该策略选择的行动$a$未来可以获得的奖励期望(也被称为动作价值函数)最大化({\color{red} 句子里的专有名词要加黑,加英文})。这个过程通常用函数$Q$来描述:
\begin{eqnarray}
\funp{Q}(a;\hat{\mathbi{y}}_{1 \ldots j},\seq{y}) & = & \mathbb{E}_{\hat{\mathbi{y}}_{j+1 \ldots J} \sim \funp{p}(a|\hat{\mathbi{y}}_{1 \ldots j} a,\seq{x})}[\funp{r}_j(a;\hat{\mathbi{y}}_{1 \ldots j-1},\seq{y}) + \nonumber \\
& & \sum_{i=j+1}^J\funp{r}_i(\hat{\mathbi{y}}_i;\hat{\mathbi{y}}_{1 \ldots i-1}a\hat{\mathbi{y}}_{j+1 \ldots i},\seq{y})]
\funp{Q}(a;\tilde{\mathbi{y}}_{1 \ldots j},\seq{y}) & = & \mathbb{E}_{\tilde{\mathbi{y}}_{j+1 \ldots J} \sim \funp{p}(a|\tilde{\mathbi{y}}_{1 \ldots j} a,\seq{x})}[\funp{r}_j(a;\tilde{\mathbi{y}}_{1 \ldots j-1},\seq{y}) + \nonumber \\
& & \sum_{i=j+1}^J\funp{r}_i(\tilde{{y}}_i;\tilde{{y}}_{1 \ldots i-1}a\tilde{{y}}_{j+1 \ldots i},\seq{y})]
\label{eq:13-35}
\end{eqnarray}
\noindent 其中,$\funp{r}_j(a;\hat{\mathbi{y}}_{1 \ldots j-1},\seq{y})$$j$时刻做出行动$a$获得的奖励,$\seq{x}$是源语言句子,$\seq{y}$是正确译文,$\hat{\mathbi{y}}_{1 \ldots j}$是策略$\funp{p}$产生的译文的前$j$个词,{\red $J$是???}。其(在一个源语句子$x$上的)定义的目标为:{\red 这里的$\hat{y}$仍然是模型生成的译文吧,能否用$\tilde{y}$代替$\hat{y}$。在书里面$\hat{y}$都是表示最优解,不换的话,下面公式中的$\hat{p}$$\hat{\mathbi{y}}$可能有冲突?}
\noindent 其中,$\funp{r}_j(a;\tilde{{y}}_{1 \ldots j-1},\seq{y})$$j$时刻做出行动$a$获得的奖励,$\seq{x}$是源语言句子,$\seq{y}$是正确译文,$\tilde{{y}}_{1 \ldots j}$是策略$\funp{p}$产生的译文的前$j$个词,$J$是生成译文的长度。其(在一个源语句子$x$上的)定义的目标为:
\begin{eqnarray}
\hat{p} & = & \max_{\funp{p}}\mathbb{E}_{\hat{\seq{y}} \sim \funp{p}(\hat{\seq{y}} | \seq{x})}\sum_{j=1}^J\sum_{a \in A}\funp{p}(a|\hat{\mathbi{y}}_{1 \ldots j},\seq{x})\funp{Q}(a;\hat{\mathbi{y}}_{1 \ldots j},\seq{y})
\hat{p} & = & \max_{\funp{p}}\mathbb{E}_{\tilde{\seq{y}} \sim \funp{p}(\tilde{\seq{y}} | \seq{x})}\sum_{j=1}^J\sum_{a \in A}\funp{p}(a|\tilde{{y}}_{1 \ldots j},\seq{x})\funp{Q}(a;\tilde{{y}}_{1 \ldots j},\seq{y})
\label{eq:13-15}
\end{eqnarray}
\noindent 其中,$A$表示所有可能的行动组成的空间,也就是词表$V$。公式\eqref{eq:13-15}的含义是,计算动作价值函数$\funp{Q}$需要枚举$j$时刻以后所有可能的序列,而可能的序列数目是随着其长度呈指数级增长,因此只能估计的方法计算$\funp{Q}$的值。基于策略的强化学习方法,如最小风险训练(风险$\vartriangle=-\funp{Q}$)等都使用了采样的方法来估计$\funp{Q}$。尽管采样估计的结果是$\funp{Q}$的无偏估计,但是它的缺点在于估计的方差比较大。而$\funp{Q}$直接关系到梯度更新的大小,不稳定的数值会导致模型更新不稳定,难以优化。
\parinterval 为了避免采样的开销和随机性带来的不稳定,基于{\small\bfnew{演员-评论家}}\index{演员-评论家}(Actor-critic\index{Actor-critic})的强化学习方法\upcite{DBLP:conf/iclr/BahdanauBXGLPCB17}引入一个可学习的函数$\hat{\funp{Q}}$,通过函数$\hat{\funp{Q}}$来逼近动作价值函数$\funp{Q}$。但是由于$\hat{\funp{Q}}$是人工设计的一个函数,该函数有着自身的偏置,因此$\hat{\funp{Q}}$不是$\funp{Q}$的一个无偏估计,所以使用$\hat{\funp{Q}}$来指导$\funp{p}$的优化无法到达理论上的最优解。尽管如此,得益于神经网络强大的拟合能力,基于演员-评论家的强化学习方法仍更具优势。
\parinterval 为了避免采样的开销和随机性带来的不稳定,基于{\small\bfnew{演员-评论家}}\index{演员-评论家}(Actor-critic\index{Actor-critic})的强化学习方法\upcite{DBLP:conf/iclr/BahdanauBXGLPCB17}引入一个可学习的函数$\tilde{\funp{Q}}$,通过函数$\tilde{\funp{Q}}$来逼近动作价值函数$\funp{Q}$。但是由于$\tilde{\funp{Q}}$是人工设计的一个函数,该函数有着自身的偏置,因此$\tilde{\funp{Q}}$不是$\funp{Q}$的一个无偏估计,所以使用$\tilde{\funp{Q}}$来指导$\funp{p}$的优化无法到达理论上的最优解。尽管如此,得益于神经网络强大的拟合能力,基于演员-评论家的强化学习方法仍更具优势。
\parinterval 对于基于演员-评论家的强化学习方法,演员就是策略$\funp{p}$,而评论家就是动作价值函数$\funp{Q}$的估计$\hat{\funp{Q}}$。对于演员,它的目标函数如下:
\parinterval 对于基于演员-评论家的强化学习方法,演员就是策略$\funp{p}$,而评论家就是动作价值函数$\funp{Q}$的估计$\tilde{\funp{Q}}$。对于演员,它的目标函数如下:
\begin{eqnarray}
\hat{p} & = & \max_{\funp{p}}\mathbb{E}_{\hat{\seq{y}} \sim \funp{p}(\hat{\seq{y}} | \seq{x})}\sum_{j=1}^J\sum_{a \in A}\funp{p}(a|\hat{\mathbi{y}}_{1 \ldots j},\seq{x})\hat{\funp{Q}}(a;\hat{\mathbi{y}}_{1 \ldots j},\seq{y})
\hat{p} & = & \max_{\funp{p}}\mathbb{E}_{\tilde{\seq{y}} \sim \funp{p}(\tilde{\seq{y}} | \seq{x})}\sum_{j=1}^J\sum_{a \in A}\funp{p}(a|\tilde{{y}}_{1 \ldots j},\seq{x})\tilde{\funp{Q}}(a;\tilde{{y}}_{1 \ldots j},\seq{y})
\label{eq:13-16}
\end{eqnarray}
\parinterval 与公式\eqref{eq:13-15}对比可以发现,基于演员-评论家的强化学习方法与基于策略的强化学习方法类似,公式\eqref{eq:13-16}对动作价值函数$\funp{Q}$的估计从采样换成了$\hat{\funp{Q}}${\color{red} 公式\eqref{eq:13-15}哪里体现出了采样?而公式\eqref{eq:13-16}哪里体现出不需要采样?})。对于目标函数里的期望,通常使用采样对方式来进行逼近,例如,选择一定量的$\hat{y}$来计算期望,而不是遍历所有的$\hat{y}$。借助与最小风险训练类似的方法,可以计算对$\funp{p}$的梯度来进行优化({\color{red} 优化啥?}
\parinterval 与公式\eqref{eq:13-15}对比可以发现,基于演员-评论家的强化学习方法与基于策略的强化学习方法类似,公式\eqref{eq:13-16}对动作价值函数$\funp{Q}$的估计从采样换成了$\tilde{\funp{Q}}${\color{red} 公式\eqref{eq:13-15}哪里体现出了采样?而公式\eqref{eq:13-16}哪里体现出不需要采样?})。对于目标函数里的期望,通常使用采样对方式来进行逼近,例如,选择一定量的$\tilde{y}$来计算期望,而不是遍历所有的$\tilde{y}$。借助与最小风险训练类似的方法,可以计算对$\funp{p}$的梯度来优化演员
\parinterval 而对于评论家,它的优化目标并不是那么显而易见。尽管可以通过采样得方式来估计$\funp{Q}$,然后使用该估计作为目标让$\hat{\funp{Q}}$进行拟合,但是这样会导致非常高的(采样)代价,同时可以想象,既然有了一个无偏估计,为什么还要用有偏估计$\hat{\funp{Q}}$呢?
\parinterval 而对于评论家,它的优化目标并不是那么显而易见。尽管可以通过采样得方式来估计$\funp{Q}$,然后使用该估计作为目标让$\tilde{\funp{Q}}$进行拟合,但是这样会导致非常高的(采样)代价,同时可以想象,既然有了一个无偏估计,为什么还要用有偏估计$\tilde{\funp{Q}}$呢?
\parinterval 回顾动作价值函数的定义,可以对它做适当的展开,可以得到如下等式:{\red 原版word中小写y是一个字,应该有下标的呀,这个没下标,指的是什么?}
\parinterval 回顾动作价值函数的定义,可以对它做适当的展开,可以得到如下等式:
\begin{eqnarray}
\funp{Q}({\red \hat{\mathbi{y}}};\hat{\mathbi{y}}_{1 \ldots j -1},\seq{y}) & = & \funp{r}_j(\hat{\mathbi{y}}_j;\hat{\mathbi{y}}_{1 \ldots j-1},\seq{y}) + \nonumber \\
& & \sum_{a \in A}\funp{p}(a|\hat{\mathbi{y}}_{1 \ldots j},\seq{x})\funp{Q}(a;\hat{\mathbi{y}}_{1 \ldots j},\seq{y})
\funp{Q}(\tilde{{y}}_j;\tilde{{y}}_{1 \ldots j -1},\seq{y}) & = & \funp{r}_j(\tilde{{y}}_j;\tilde{{y}}_{1 \ldots j-1},\seq{y}) + \nonumber \\
& & \sum_{a \in A}\funp{p}(a|\tilde{{y}}_{1 \ldots j},\seq{x})\funp{Q}(a;\tilde{{y}}_{1 \ldots j},\seq{y})
\label{eq:13-17}
\end{eqnarray}
\parinterval 这个等式也被称为{\small\bfnew{贝尔曼方程}}\index{贝尔曼方程}(Bellman Equation\index{Bellman Equation}\upcite{sutton2018reinforcement}。这个等式告诉我们$j-1$时刻的动作价值函数$\funp{Q}({\red \hat{\mathbi{y}}};\hat{\mathbi{y}}_{1 \ldots j-1},\seq{y})$跟下一时刻$j$的动作价值函数$\funp{Q}(a;\hat{\mathbi{y}}_{1 \ldots j},\seq{y})$之间的关系。因此可以很自然的使用等式右部作为等式左部$\funp{Q}({\red \hat{\mathbi{y}}};\hat{\mathbi{y}}_{1 \ldots j-1},\seq{y})$的目标。而由于动作价值函数的输出是数值,通常会选用均方误差来计算目标函数值({\color{red} 为啥输出是数值,就要用局方误差来计算目标函数?}
\parinterval 这个等式也被称为{\small\bfnew{贝尔曼方程}}\index{贝尔曼方程}(Bellman Equation\index{Bellman Equation}\upcite{sutton2018reinforcement}。这个等式告诉我们$j-1$时刻的动作价值函数$\funp{Q}(\tilde{{y}}_j;\tilde{{y}}_{1 \ldots j-1},\seq{y})$跟下一时刻$j$的动作价值函数$\funp{Q}(a;\tilde{{y}}_{1 \ldots j},\seq{y})$之间的关系。因此可以很自然的使用等式右部作为等式左部$\funp{Q}(\tilde{{y}}_j;\tilde{{y}}_{1 \ldots j-1},\seq{y})$的目标。而由于动作价值函数的输出是连续的数值,因此通常会选用均方误差来计算目标函数值
\parinterval 进一步,可以定义$j$时刻动作价值函数的目标如下:
\begin{eqnarray}
\funp{q}_j & = & \funp{r}_j(\hat{\mathbi{y}}_j;\hat{\mathbi{y}}_{1 \ldots j-1},\seq{y}) + \sum_{a \in A}\funp{p}(a|\hat{\mathbi{y}}_{1 \ldots j},\seq{x})\hat{\funp{Q}}(a;\hat{\mathbi{y}}_{1 \ldots j},\seq{y})
\funp{q}_j & = & \funp{r}_j(\tilde{{y}}_j;\tilde{{y}}_{1 \ldots j-1},\seq{y}) + \sum_{a \in A}\funp{p}(a|\tilde{{y}}_{1 \ldots j},\seq{x})\tilde{\funp{Q}}(a;\tilde{{y}}_{1 \ldots j},\seq{y})
\label{eq:13-18}
\end{eqnarray}
\parinterval 而评论家对应的目标函数定义如下:
\begin{eqnarray}
\hat{\hat{\funp{Q}}} & = & \min_{\hat{\funp{Q}}}\sum_{j=1}^J{(\hat{\funp{Q}}(\hat{\mathbi{y}}_j;\hat{\mathbi{y}}_{1 \ldots j-1},\seq{y}) - \funp{q}_j)}^2
\hat{\tilde{\funp{Q}}} & = & \min_{\tilde{\funp{Q}}}\sum_{j=1}^J{(\tilde{\funp{Q}}(\tilde{{y}}_j;\tilde{{y}}_{1 \ldots j-1},\seq{y}) - \funp{q}_j)}^2
\label{eq:13-19}
\end{eqnarray}
......@@ -666,7 +684,7 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=0.4]{./Chapter13/Figures/figure-reinforcement-learning-method-based-on-actor-critic.png}
\input{./Chapter13/Figures/figure-reinforcement-learning-method-based-on-actor-critic}
\caption{基于演员-评论家的强化学习方法}
\label{fig:13-25}
\end{figure}
......@@ -680,7 +698,7 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\vspace{0.5em}
\item 优化目标:评论家的优化目标是由自身输出所构造。当模型更新比较快的时候模型的输出变化也会很快,导致构造的优化目标不稳定,影响模型收敛。一个解决方案是在一定更新次数内固定构造优化目标使用的模型,然后再使用比较新的模型来构造后续一定更新次数内的优化目标,如此往复\upcite{DBLP:journals/nature/SilverHMGSDSAPL16}
\vspace{0.5em}
\item 方差惩罚:在机器翻译中使用强化学习方法一个问题是动作空间过大,这是由词表过大造成的。因为模型只根据被采样到的结果来进行更新,很多动作很难得到更新,因此对不同动作的动作价值函数估计值会有很大差异。通常会引入一个正则项$C_j = \sum_{a \in A}{(\hat{\funp{Q}}(a;\hat{\mathbi{y}}_{1 \ldots j-1},\seq{y}) - \frac{1}{|A|} \sum_{b \in A}\hat{\funp{Q}}(b;\hat{\mathbi{y}}_{1 \ldots j-1},\seq{y}))}^2$来约束不同动作的动作函数估计值,使其不会偏离他们的均值太远\upcite{DBLP:conf/icml/ZarembaMJF16}
\item 方差惩罚:在机器翻译中使用强化学习方法一个问题是动作空间过大,这是由词表过大造成的。因为模型只根据被采样到的结果来进行更新,很多动作很难得到更新,因此对不同动作的动作价值函数估计值会有很大差异。通常会引入一个正则项$C_j = \sum_{a \in A}{(\tilde{\funp{Q}}(a;\tilde{{y}}_{1 \ldots j-1},\seq{y}) - \frac{1}{|A|} \sum_{b \in A}\tilde{\funp{Q}}(b;\tilde{{y}}_{1 \ldots j-1},\seq{y}))}^2$来约束不同动作的动作函数估计值,使其不会偏离他们的均值太远\upcite{DBLP:conf/icml/ZarembaMJF16}
\vspace{0.5em}
\item 函数塑形:在机器翻译里面使用强化学习方法另一个问题就是奖励的稀疏性。评价指标如BLEU等只能对完整的句子进行打分,也就是奖励只有在句子结尾有值,而在句子中间只能为0。这种情况意味着模型在生成句子的过程中没有任何信号来指导它的行为,从而大大增加了学习难度。常见的解决方案是进行{\small\bfnew{函数塑形}}\index{函数塑形}(Reward Shaping\index{Reward Shaping}),使得奖励在生成句子的过程中变得稠密,同时也不会改变模型的最优解\upcite{DBLP:conf/icml/NgHR99}
\vspace{0.5em}
......@@ -867,18 +885,24 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\parinterval 含有噪声的数据通常都具有较为明显的特征,因此可以用诸如句子长度比、词对齐率、最长连续未对齐序列长度等一些特征来对句子进行综合评分\upcite{rarrick2011mt,taghipour2011parallel,Xu2017ZipporahAF};也可以将该问题转化为分类任务来对句子进行筛选\upcite{DBLP:conf/aclnmt/CarpuatVN17,DBLP:conf/naacl/VyasNC18};此外,从某种意义上来说,数据降噪其实也可以算是一种领域数据选择,因为它的目标是选择可信度高的样本,因此也可以人工构建一个可信度高的小数据集,然后利用该数据集和通用数据集之间的差异性进行选择\upcite{DBLP:conf/wmt/WangWHNC18}
\parinterval 早期的工作大多在关注过滤噪声样本,但对如何利用噪声样本探讨较少。事实上,噪声是有强度的,有些噪声样本对于模型可能是有价值的,而且它们的价值可能会随着模型的状态而改变\upcite{DBLP:conf/wmt/WangWHNC18}。一个例子如图\ref{fig:13-51}所示{\red (画图的时候zh-gloss那行不要了,zh翻译为汉语,引用:Denoising Neural Machine Translation Training with Trusted Data and Online Data Selection})。
\parinterval 早期的工作大多在关注过滤噪声样本,但对如何利用噪声样本探讨较少。事实上,噪声是有强度的,有些噪声样本对于模型可能是有价值的,而且它们的价值可能会随着模型的状态而改变\upcite{DBLP:conf/wmt/WangWHNC18}。一个例子如图\ref{fig:13-51}所示{\red (画图引用:Denoising Neural Machine Translation Training with Trusted Data and Online Data Selection})。
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=0.5]{./Chapter13/Figures/figure-a-pair-of-noise-data-examples.png}
\begin{table}[htp]{
\begin{center}
\caption{一个含有噪声的汉英翻译实例}
\label{fig:13-51}
\end{figure}
\begin{tabular}{l | l}
\rule{0pt}{15pt} 汉语 & 公车\ \ \ 哪里? \\
\hline
\rule{0pt}{15pt} 英语 & Where is the bus stop? For bus 81 \\
\end{tabular}
\end{center}
\label{tab:13-4}
}\end{table}
%-------------------------------------------
\parinterval 一方面来说,虽然\ref{fig:13-51}中这两个句子都很流畅,但是由于汉语句子中缺少了一部分翻译,因此简单的基于长度或双语词典的方法可以很容易将其过滤掉。从另一方面来说,这个样本对于训练机器翻译模型仍然有用,特别是在数据稀缺的情况下,因为汉语句子和英语句子的前半部分仍然是正确的互译结果。这表明了噪声数据的微妙之处,它不是对应着简单的二元分类问题:一些训练样本可能部分有用,而它们的价值也可能随着训练的进展而改变。因此简单的过滤并不一种很好的办法,一种更加理想的学习策略应该是既可以合理的利用这些数据,又不让其对模型产生负面影响。直觉上,这是一个动态的过程,当模型能力较弱时(比如在训练初期),这些数据就能对模型起到正面作用,反之亦然。受课程学习、微调等方法的启发,研究人员也提出了类似的学习策略,它的主要思想是:在训练过程中对批量数据的噪声水平进行{\small\bfnew{退火}}\index{退火}(Anneal)\index{Anneal},使得模型在越来越干净的数据上进行训练\upcite{DBLP:conf/wmt/WangWHNC18,DBLP:conf/acl/WangCC19}。从宏观上看,整个训练过程其实是一个持续微调的过程,这和微调的思想基本一致。这种学习策略一方面充分利用了训练数据,一方面又避免了噪声数据对模型的负面影响,因此取得了不错的效果。
\parinterval 一方面来说,虽然\ref{tab:13-4}中这两个句子都很流畅,但是由于汉语句子中缺少了一部分翻译,因此简单的基于长度或双语词典的方法可以很容易将其过滤掉。从另一方面来说,这个样本对于训练机器翻译模型仍然有用,特别是在数据稀缺的情况下,因为汉语句子和英语句子的前半部分仍然是正确的互译结果。这表明了噪声数据的微妙之处,它不是对应着简单的二元分类问题:一些训练样本可能部分有用,而它们的价值也可能随着训练的进展而改变。因此简单的过滤并不一种很好的办法,一种更加理想的学习策略应该是既可以合理的利用这些数据,又不让其对模型产生负面影响。直觉上,这是一个动态的过程,当模型能力较弱时(比如在训练初期),这些数据就能对模型起到正面作用,反之亦然。受课程学习、微调等方法的启发,研究人员也提出了类似的学习策略,它的主要思想是:在训练过程中对批量数据的噪声水平进行{\small\bfnew{退火}}\index{退火}(Anneal)\index{Anneal},使得模型在越来越干净的数据上进行训练\upcite{DBLP:conf/wmt/WangWHNC18,DBLP:conf/acl/WangCC19}。从宏观上看,整个训练过程其实是一个持续微调的过程,这和微调的思想基本一致。这种学习策略一方面充分利用了训练数据,一方面又避免了噪声数据对模型的负面影响,因此取得了不错的效果。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -926,7 +950,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=0.5]{./Chapter13/Figures/figure-curriculum-learning-framework.png}
\input{./Chapter13/Figures/figure-curriculum-learning-framework}
\caption{课程学习框架}
\label{fig:13-53}
\end{figure}
......@@ -939,7 +963,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=0.5]{./Chapter13/Figures/figure-a-predefined-course-planning.jpg}
\input{./Chapter13/Figures/figure-a-predefined-course-planning}
\caption{“先易后难”数据块选择({\color{red} 感觉这个图不能很好的说明问题,比如上面的颜色深浅是什么意思}}
\label{fig:13-55}
\end{figure}
......
......@@ -755,7 +755,7 @@
\section{领域适应}
\parinterval 机器翻译常常面临训练时与应用时所处领域不一致的问题,比如,一个在新闻类数据上训练的系统应用在医学文献翻译任务上。不同领域的句子通常存在着很大的区别,比如,日常用语的结构较为简单,而化学领域的学术论文的单词和句子结构较为复杂。此外,不同领域之间存在着较为严重的一词多义问题,即同一个词在不同领域中经常会有不同的含义。实例\ref{eg:16-1}展示了英语单词pitch在不同领域的不同词义。
\parinterval 机器翻译常常面临训练时与应用时所处领域不一致的问题,比如,将一个在新闻类数据上训练的翻译系统应用在医学文献翻译任务上。不同领域的句子通常存在着很大的区别,比如,日常用语的结构较为简单,而在化学领域的学术论文中,单词和句子结构较为复杂。此外,不同领域之间存在着较为严重的一词多义问题,即同一个词在不同领域中经常会有不同的含义。实例\ref{eg:16-1}展示了英语单词pitch在不同领域的不同词义。
%----------------------------------------------
\begin{example}
单词pitch在不同领域的不同词义
......@@ -770,14 +770,14 @@
声学领域:A basic sense of rhythm and {\red{pitch}} is essential in a music teacher.
\qquad\qquad \hspace{0.8em} 基本的韵律感和{\red{音高}}是音乐教师的必备素质。
\qquad\qquad \hspace{0.8em} 基本的韵律感和{\red{音高}}是音乐教师的必备素质。
\label{eg:16-1}
\end{example}
%----------------------------------------------
\parinterval 在机器翻译任务中,像新闻等领域的双语数据相对容易获取,所以机器翻译在这些领域上表现较佳。然而,即使在富资源语种上,化学、医学等专业领域的双语数据依然十分有限。如果直接使用低资源领域的数据来训练机器翻译模型,由于数据稀缺问题,会导致模型的性能较差\upcite{DBLP:conf/iccv/SunSSG17}。而混合多个领域的数据进行训练,不同领域的数据量不平衡会导致数据较少的领域训练不充分,使得在低资源领域上的翻译结果不尽人意\upcite{DBLP:conf/acl/DuhNST13}
\parinterval 在机器翻译任务中,新闻等领域的双语数据相对容易获取,所以机器翻译在这些领域上表现较佳。然而,即使在富资源语种上,化学、医学等专业领域的双语数据依然十分有限。如果直接使用这些低资源领域的数据来训练机器翻译模型,由于数据稀缺问题,会导致模型的性能较差\upcite{DBLP:conf/iccv/SunSSG17}。如果混合多个领域的数据增大训练数据规模,不同领域数据量之间的不平衡会导致数据较少的领域训练不充分,使得在低资源领域上的翻译结果不尽人意\upcite{DBLP:conf/acl/DuhNST13}
\parinterval {\small\bfnew{领域适应}}(Domain Adaptation)方法是利用其他领域(Source Domain, 又称源领域)的知识来改进特定领域(Target Domain, 又称目标领域)翻译效果的方法,该方法可以有效地减少模型对目标领域数据的依赖。领域适应的研究方向主要有以下两点:
\parinterval {\small\bfnew{领域适应}}(Domain Adaptation)方法是利用源领域的知识来改进目标领域模型效果的方法,该方法可以有效地减少模型对目标领域数据的依赖。领域适应的研究方向主要有以下两点:
\begin{itemize}
\vspace{0.5em}
......@@ -793,44 +793,37 @@
\subsection{基于数据的方法}
\label{sec:domain-adaptatoin-data-based-method}
\parinterval 在统计机器翻译时代,如何有利用数据来改善领域适应的效果已经备受关注。其中的绝大多数思想和方法和翻译模型无关,因此可以直接使用在神经机器翻译中。基于数据的领域适应可以分为基于混合模型的方法\upcite{DBLP:conf/iwslt/BisazzaRF11,niehues2012detailed,DBLP:conf/acl/SennrichSA13}、基于数据加权的方法\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10,shah2012general}、 基于数据选择的方法\upcite{DBLP:conf/lrec/EckVW04,DBLP:conf/acl/MooreL10,DBLP:conf/acl/DuhNST13,DBLP:conf/coling/HoangS14}和基于伪数据的方法\upcite{DBLP:conf/iwslt/Ueffing06,DBLP:conf/coling/WuWZ08,DBLP:conf/iwslt/Schwenk08,DBLP:conf/wmt/BertoldiF09}。({\color{red} 每个方法参考文献太多了,不要超过3个!})。图XX展示了这几种方法的示意图。
\parinterval 在统计机器翻译时代,如何有效利用外部数据来改善目标领域的翻译效果已经备受关注
。其中的绝大多数思想和方法和翻译模型无关,因此这些方法也同样适用于神经机器翻译。基于数据的领域适应可以分为基于数据加权的方法、基于数据选择的方法、基于伪数据的方法和使用多领域数据。图XX展示了这几种方法的示意图。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 基于混合模型的方法}
\subsubsection{1. 基于数据加权/数据选择的方法}
\parinterval 不同领域的数据存在着共性,但是又有各自的风格,因此使用多领域数据训练出不同的模型,分情况处理问题可能会带来更好的效果,例如对疑问句和陈述句分别使用两个模型进行推断
可以使翻译效果更好\upcite{DBLP:conf/eacl/Sennrich12}。因此,一种简单策略是对不同领域上的模型进行融合。比如,可以融合多个领域上训练的统计机器翻译的短语表,也可以直接融合多个领域的神经机器翻译模型。
\parinterval 在真实场景中,由于每个领域的数据量有限,同时领域数量较多,针对每个领域单独训练一个机器翻译模型是不现实的。所以,通常的策略是混合多领域的数据,来训练一个能够支持多领域翻译的机器翻译模型。虽然混合多个领域的数据可以有效增加训练数据规模,但正如前面所说,由于各个领域训练数据量之间的不平衡,在训练数据过少的领域上,模型表现往往差强人意。一种观点认为,数据量较少的领域数据应该在训练过程中获得更大的权重,从而使这些更有价值的数据发挥出更大的作用\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 基于数据加权/数据选择的方法}
\parinterval 在真实场景中,由于每个领域的数据量有限,同时领域数量较多,针对每个领域单独训练一个机器翻译模型是不现实的。所以,通常的策略是训练一个机器翻译模型来支持多领域的翻译。虽然混合多个领域的数据可以有效增加训练数据规模,但正如前面所说,由于各个领域样本的数据量不平衡,在训练数据稀缺的领域上,模型表现往往差强人意。一种观点认为,数据量较少的领域数据具有更大的学习价值,应该在训练过程中获得更大的权重,从而使这些更有价值的数据发挥出更大的作用\upcite{DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10}
\parinterval 实际上,基于数据加权的方法与{\chapterthirteen}中基于样本价值的学习方法是一致的,只是描述的场景略有不同。这类方法本质上在解决{\small\bfnew{类别不均衡问题}}\index{类别不均衡问题}(Class Imbalance Problem\index{Class Imbalance Problem}\upcite{DBLP:conf/emnlp/ZhuH07}。数据加权可以通过修改损失函数,将其缩放$\alpha$ 倍来实现($\alpha$ 是样本的权重)。在具体实践中,也可以直接将低资源的领域数据进行复制\footnote{相当于对数据进行重采样}达到与其相同的效果。
\parinterval 实际上,基于数据加权的方法与{\chapterthirteen}中基于样本价值的学习方法是一致的,只是描述的场景略有不同。这类方法本质上在解决{\small\bfnew{类别不均衡问题}}\index{类别不均衡问题}(Class Imbalance Problem\index{Class Imbalance Problem}\upcite{DBLP:conf/emnlp/ZhuH07}。最简单的解决办法是直接将低资源的领域数据进行复制,相当于对数据进行重采样。也可以修改损失函数,将其缩放$\alpha$ 倍,其中$\alpha$ 是样本的权重。
\parinterval 数据加权的一种特殊情况是数据选择,它可以被看做是样本权重非零即一的情况。具体来说,可以直接选择与领域相关的数据参与训练。因此这种方法并不需要使用全量数据进行训练,模型的训练成本较低。由于{\chapterthirteen}已经对数据加权和数据选择方法进行了详细介绍,这里不再赘述。
\parinterval 数据选择是数据加权的一种特殊情况,它可以被看做是样本权重非零即一的情况。具体来说,可以直接选择与领域相关的数据参与训练\upcite{DBLP:conf/acl/DuhNST13}。由于这种方法并不需要使用全量数据进行训练,因此模型的训练成本较低。由于{\chapterthirteen}已经对数据加权和数据选择方法进行了详细介绍,这里不再赘述。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 基于伪数据的方法}
\subsubsection{2. 基于伪数据的方法}
\parinterval 数据选择方法可以从源领域中选择出和目标领域相似的训练数据,但可用的数据量是较为有限的。因此,另外一种思路是对现有的双语数据进行修改或通过单语数据生成伪数据来增加数据量\upcite{DBLP:conf/acl/UtiyamaI03,DBLP:conf/acl/MarieF17,DBLP:conf/coling/WangZLUS16,chu2015integrated}。这个问题和\ref{effective-use-of-data}节所面临的场景是基本一致的,因此可以直接复用\ref{effective-use-of-data}所描述的方法。
\parinterval 数据选择方法可以从源领域中选择出和目标领域相似的训练数据用于训练,但可用的数据是较为有限的。因此,另外一种思路是对现有的双语数据进行修改\upcite{DBLP:conf/acl/UtiyamaI03}(如抽取双语短语对等)或通过单语数据生成伪数据来增加数据量\upcite{DBLP:conf/wmt/BertoldiF09}。这个问题和\ref{effective-use-of-data}节所面临的场景是基本一致的,因此可以直接复用\ref{effective-use-of-data}所描述的方法。
{\color{red} 图XX:基于数据的领域适应方法,四个子图分别描述上面四个方法,找孟霞、曾信讨论}
{\color{red} 图XX:基于数据的领域适应方法,三个子图分别描述上面三个方法,找孟霞、曾信讨论}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{4. 多领域数据的使用}
\subsubsection{3. 多领域数据的使用}
\parinterval 领域适应往往并不是针对一个领域,而是有众多目标领域。对于这种情况,一种简单的思路是为每一个目标领域进行领域适应,这样就可以直接使用前文所述的单领域适应方法。不过,与多语言翻译一样,多领域适应也往往伴随着严重的数据稀缺问题,也就是大多数领域的数据量很小,无法保证单独对这些领域进行适应的效果。
\parinterval 领域适应中的目标领域往往不止一个,想要同时提升多个目标领域的效果,一种简单的思路是使用前文所述的单领域适应方法对每一个目标领域进行领域适应。不过,与多语言翻译一样,多领域适应也往往伴随着严重的数据稀缺问题,由于大多数领域的数据量很小,因此无法保证单个领域的领域适应效果。
\parinterval 一种解决问题的思路是将所有数据进行混合使用,并训练一个模型处理所有的领域。同时,为了区分不同领域的数据,可以在样本上增加领域标签。可以看到,这种方法本质上与\ref{sec:multi-lang-single-model}节所描述的方法是一样。它也是一种典型的小样本学习策略,旨在让模型自己从不同类型的样本中寻找联系,进而更加充分地利用数据,改善模型在低资源任务上的表现。
\parinterval 解决该问题的一种思路是将所有数据混合使用,并训练一个能够同时适应所有领域的模型。同时,为了区分不同领域的数据,可以在样本上增加领域标签\upcite{DBLP:conf/acl/ChuDK17}。事实上,这种方法的本质与\ref{sec:multi-lang-single-model}节所描述的方法是一样的。它也是一种典型的小样本学习策略,旨在让模型自己从不同类型的样本中寻找联系,进而更加充分地利用数据,改善模型在低资源任务上的表现。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -838,21 +831,21 @@
\subsection{基于模型的方法}\label{domain-adaptation-modeling-methods}
\parinterval 对于神经机器翻译模型,领域适应可以直接反映在训练和推断阶段。具体来说,有如下方法:
\parinterval 对于神经机器翻译模型,可以在训练和推断阶段进行领域适应。具体来说,有如下方法:
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{1. 多目标学习}
\parinterval 在使用多领域数据时,混合多个相差较大的领域数据进行训练会使单个领域的翻译性能下降\upcite{DBLP:conf/eacl/NegriTFBF17}。 为了解决这一问题,一个比较典型的做法是在使用多领域数据训练时,如图\ref{fig:16-20}所示,在神经机器翻译模型的编码器中添加一个判别器,使用判别器预测输入句子的领域\upcite{DBLP:conf/wmt/BritzLP17}。具体的做法为:在编码器的顶部添加一个判别器网络,这个判别器使用源语言句子$x$的编码器表示作为输入,预测句子所属的领域标签$d$。为了使预测领域标签$d$的正确概率$\funp{P(d|\mathbi{H})}$最大,模型在训练过程中最小化如下损失函数$\funp{L}_{\rm{disc}}$
\parinterval 在使用多领域数据时,混合多个相差较大的领域数据进行训练会使单个领域的翻译性能下降\upcite{DBLP:conf/eacl/NegriTFBF17}。 为了解决这一问题,可以对所有训练数据的来源领域进行区分,一个比较典型的做法是在使用多领域数据训练时,在神经机器翻译模型的编码器顶部中添加一个判别器\upcite{DBLP:conf/wmt/BritzLP17},该判别器使用源语言句子$x$的编码器表示作为输入,预测句子所属的领域标签$d$,如图\ref{fig:16-20}所示。为了使预测领域标签$d$的正确概率$\funp{P(d|\mathbi{H})}$最大(其中$\mathbi{H}$为编码器的隐藏状态),模型在训练过程中最小化如下损失函数$\funp{L}_{\rm{disc}}$
\begin{eqnarray}
\funp{L}_{\rm{disc}}& = &-\log\funp{P}(d|\mathbi{H})
\label{eq:16-12}
\end{eqnarray}
\noindent 其中,$\mathbi{H}$是编码器的隐藏状态。同时,原始的翻译模型损失为$\funp{L}_{\rm{gen}}$
\noindent 在此基础上,加上原始的翻译模型损失函数$\funp{L}_{\rm{gen}}$
\begin{eqnarray}
\funp{L}_{\rm{gen}}& = & -\log\funp{P}(y|x)\label{eq:16-13}
......@@ -877,20 +870,30 @@
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 训练策略优化}
\subsubsection{2. 训练策略优化}{\red 为了前后的呼应,这里改成训练阶段领域适应,或者后面改成推断策略优化会不会更好?}
\parinterval 实际上,\ref{sec:domain-adaptatoin-data-based-method}节所描述的数据加权和数据选择方法本身也与模型训练相关的,例如,数据选择方法会降低训练数据的数据量。所以具体实现时,需要对训练策略进行调整。一种方法是在不同的训练轮次动态地改变训练数据子集。动态数据选择既可以使得每轮的训练数据均小于全部数据量,从而加快训练进程,又可以缓解训练数据覆盖度不足的问题,具体做法有两种:
\parinterval 实际上,\ref{sec:domain-adaptatoin-data-based-method}节所描述的数据加权和数据选择方法本身也是与模型训练相关的。具体实现时,很多细节还需要进行调整。例如,数据选择方法会降低训练数据的数据量。针对这个问题,一种方法是在不同的训练轮次动态地改变训练数据子集。动态数据选择使得每轮的训练数据均小于全部数据量,但是在每轮中的训练数据均不同,可能前一轮没有训练的数据在当前轮被包括进来,由此可以缓解训练数据覆盖度不足的问题。另一种做法是先将完整的数据送入模型,再根据相似度逐次减少每轮的数据量,最后得到在目标领域上效果最好的领域适应模型\upcite{DBLP:conf/emnlp/WeesBM17}。或者将与领域相关的句子先送入模型,让模型可以最先学到跟目标领域最相关的知识\upcite{DBLP:conf/naacl/ZhangSKMCD19}
%----------------------------------------------
\begin{itemize}
\vspace{0.5em}
\item 将完整的数据送入模型,再根据其与目标领域数据的相似度逐次减少每轮的数据量\upcite{DBLP:conf/emnlp/WeesBM17}
\vspace{0.5em}
\item 将与目标领域数据相似度最高的句子先送入模型,让模型可以最先学到跟目标领域最相关的知识,逐渐增加数据量\upcite{DBLP:conf/naacl/ZhangSKMCD19}
\vspace{0.5em}
\end{itemize}
%----------------------------------------------
\parinterval 另一种方法是不从随机状态开始训练网络,而是使用翻译性能较好的源领域模型作为初始状态,因为源领域模型中包含着一些通用知识可以被目标领域借鉴。比如,想获得口语的翻译模型,可以使用新闻的翻译模型作为初始状态进行训练。这也可以被看做是一种模型预训练方法。
\parinterval 另一种优化训练策略的方法是不从随机状态开始训练网络,而是使用翻译性能较好的源领域模型作为初始状态,因为源领域模型中包含着一些通用知识可以被目标领域借鉴。比如,想获得口语的翻译模型,可以使用新闻的翻译模型作为初始状态进行训练。这也可以被看作是一种预训练-微调方法。
\parinterval 同时,微调方法经常配合预训练使用。不过微调的方法会带来灾难性遗忘问题,即在目标领域上过拟合,导致在源领域上的翻译性能大幅度下降(见{\chapterthirteen})。如果想要保证模型在目标领域和源领域上都有较好的性能,一个比较常用的方法是进行混合微调\upcite{DBLP:conf/acl/ChuDK17}。具体做法是先在源领域数据上训练一个神经机器翻译模型,然后将目标领域数据复制数倍和源领域数据量相等,之后将数据混合后对神经机器翻译模型进行微调。混合微调方法既降低了目标领域数据量小导致的过拟合问题,又带来了更好的微调性能。除了混合微调外,也可以使用知识蒸馏方法缓解灾难性遗忘问题(见\ref{multilingual-translation-model}节),即对源领域和目标领域进行多次循环知识蒸馏,迭代学习对方领域的知识,可以保证在源领域和目标领域上的翻译性能共同逐步上升\upcite{DBLP:conf/emnlp/ZengLSGLYL19}。过拟合导致的灾难性遗忘问题还可以使用L2正则化和Dropout方法来缓解\upcite{barone2017regularization}
\parinterval 不过这种方法经常会带来灾难性遗忘问题,即在目标领域上过拟合,导致在源领域上的翻译性能大幅度下降(见{\chapterthirteen})。如果想要保证模型在目标领域和源领域上都有较好的性能,一个比较常用的方法是进行混合微调\upcite{DBLP:conf/acl/ChuDK17}。具体做法是先在源领域数据上训练一个神经机器翻译模型,然后将目标领域数据复制数倍和源领域数据量相等,之后将数据混合后对神经机器翻译模型进行微调。混合微调方法既降低了目标领域数据量小导致的过拟合问题,又带来了更好的微调性能。除了混合微调外,也可以使用知识蒸馏方法缓解灾难性遗忘问题(见\ref{multilingual-translation-model}节),即对源领域和目标领域进行多次循环知识蒸馏,迭代学习对方领域的知识,可以保证在源领域和目标领域上的翻译性能共同逐步上升\upcite{DBLP:conf/emnlp/ZengLSGLYL19}。过拟合导致的灾难性遗忘问题还可以使用L2正则化和Dropout方法来缓解\upcite{barone2017regularization}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 推断阶段的领域适应}
\parinterval 另一种典型思路是优化推断算法\upcite{khayrallah2017neural}。目前比较常用的方法是集成推断(见{\chapterfourteen}),即把多个领域的模型融合为一个模型用于推断\upcite{DBLP:journals/corr/FreitagA16}。集成推断方法的主要优势在于实现简单,多个领域的模型可以独立训练,使训练时间大大缩短。集成推断也可以结合加权的思想,对不同领域的句子,赋予每个模型不同的先验权重进行推断,来获得最佳的推断结果\upcite{DBLP:conf/acl/SaundersSGB19}也可以在推断过程中融入语言模型\upcite{2015OnGulcehre,DBLP:conf/emnlp/DomhanH17}或目标领域的罕见词\upcite{DBLP:conf/naacl/BapnaF19}
\parinterval 神经机器翻译中,领域适应的另一种典型思路是优化推断算法\upcite{khayrallah2017neural}。不同领域的数据存在着共性,但是又有各自的风格,因此对于使用多领域数据训练出的模型,分情况进行推断可能会带来更好的效果,例如在统计机器翻译中对疑问句和陈述句分别使用两个模型进行推断可以使翻译效果更好\upcite{DBLP:conf/eacl/Sennrich12}。在神经机器翻译模型中可以采用集成推断(见{\chapterfourteen})达到同样的效果,即把多个领域的模型融合为一个模型用于推断\upcite{DBLP:journals/corr/FreitagA16}。集成推断方法的主要优势在于实现简单,多个领域的模型可以独立训练,使训练时间大大缩短。集成推断也可以结合加权的思想,对不同领域的句子,赋予每个模型不同的先验权重进行推断,来获得最佳的推断结果\upcite{DBLP:conf/acl/SaundersSGB19}。此外,也可以在推断过程中融入语言模型\upcite{2015OnGulcehre,DBLP:conf/emnlp/DomhanH17}或目标领域的罕见词\upcite{DBLP:conf/naacl/BapnaF19}
%----------------------------------------------------------------------------------------
% NEW SECTION
......
......@@ -32,7 +32,7 @@
与所有从事机器翻译研究的人一样,笔者也梦想着有朝一日机器翻译能够完全实现。这个想法可以追溯到1980年,姚天顺教授和王宝库教授创立了东北大学自然语言处理实验室,把机器翻译作为毕生为之奋斗的目标。这也影响了包括笔者在内的许多人。虽然,那时的机器翻译技术并不先进,研究条件也异常艰苦,但是实现机器翻译的梦想从未改变。
步入二十一世纪后,统计学习方法的兴起给机器翻译带来了全新的思路,同时也带来了巨大的技术进步。笔者有幸经历了那个时代,同时也加入到机器翻译研究的浪潮中,从2007年开始研发NiuTrans开源系统,到2012年正式进行机器翻译产业化,并创立小牛翻译,笔者目睹了机器翻译的成长,并且不断地被机器翻译取得的进步所感动。那时,笔者就曾经思考过将机器翻译的模型和方法进行总结,形成资料供人阅读。虽然粗略写过一些文字,但是未成体系,只是在相关的教学环节中进行使用,供实验室同学闲暇时参考阅读。
步入二十一世纪后,统计学习方法的兴起给机器翻译带来了全新的思路,同时也带来了巨大的技术进步。笔者有幸经历了那个时代,同时也加入到机器翻译研究的浪潮中。笔者从2007年开始研发NiuTrans开源系统,在2012年对NiuTrans机器翻译系统进行产业化,并创立了小牛翻译。在此过程中,笔者目睹了机器翻译的成长,并不断地被机器翻译取得的进步所感动。那时,笔者就曾经思考过将机器翻译的模型和方法进行总结,形成资料供人阅读。虽然粗略写过一些文字,但是未成体系,只是在相关的教学环节中进行使用,供实验室同学闲暇时参考阅读。
但是机器翻译领域进展之快是无法预见的。2016年之后,随着深度学习方法在机器翻译中的进一步应用,机器翻译迎来了前所未有的大好机遇。新的技术方法层出不穷,机器翻译系统也得到了广泛应用。这时,笔者心里又涌现出将机器翻译的技术内容编撰成书的想法。这种强烈的念头使得笔者完成了本书的第一个版本(包含七章),并开源供人广泛阅读。承蒙同行们厚爱,得到了很多反馈,包括一些批评意见。这些使得笔者可以更加全面地梳理思路。
......@@ -48,7 +48,7 @@
本书全面回顾了近三十年内机器翻译的技术发展历程,并围绕{\sffamily\bfseries 机器翻译的建模和深度学习方法}这两个主题对机器翻译的技术方法进行了全面介绍。在写作中,笔者力求用朴实的语言和简洁的实例阐述机器翻译的基本模型,同时对相关的技术前沿进行讨论。其中也会涉及大量的实践经验,包括许多机器翻译系统开发的细节。从这个角度来说,本书不单单是一本理论书籍,它还结合了机器翻译的应用,给读者提供了很多机器翻译技术落地的具体思路。
本书可以供计算机相关专业高年级本科生及研究生学习之用,也可以作为自然语言处理领域,特别是机器翻译方向相关研究人员的参考资料。此外,本书各章的主题都十分明确,内容也相对集中。因此,读者也可将每章作为某一专题的学习资料。
本书可以供计算机相关专业高年级本科生及研究生学习之用,也可以作为自然语言处理领域,特别是机器翻译方向相关研究人员的参考资料。此外,本书各章主题明确,内容紧凑。因此,读者也可将每章作为某一专题的学习资料。
{\sffamily\bfseries 用最简单的方式阐述机器翻译的基本思想}是笔者所期望达到的目标。但是,书中不可避免会使用一些形式化定义和算法的抽象描述,因此,笔者尽所能通过图例进行解释(本书共XXX张插图)。不过,本书所包含的内容较为广泛,难免会有疏漏,望读者海涵,并指出不当之处。
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论