Commit a6bb45b5 by 曹润柘

合并分支 'caorunzhe' 到 'master'

Caorunzhe

查看合并请求 !405
parents 40ae5384 ab7f4d4d
......@@ -12,11 +12,11 @@
\node [anchor=south east,inner sep=1pt,fill=black] (pa14) at (a14.south east) {\tiny{\color{white} \textbf{3}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pa15) at (a15.south east) {\tiny{\color{white} \textbf{4}}};
\node [anchor=west,inner sep=2pt,fill=green!20,minimum height=1.5em,minimum width=2.0em] (a21) at ([xshift=1.0em]a11.east) {\footnotesize{P=0.1}};
\node [anchor=north,inner sep=2pt,fill=red!20,minimum height=1.5em,minimum width=2.0em] (a22) at ([yshift=-0.2em]a21.south) {\footnotesize{P=0.1}};
\node [anchor=north,inner sep=2pt,fill=green!20,minimum height=1.5em,minimum width=2.0em] (a23) at ([yshift=-0.2em]a22.south) {\footnotesize{P=0.1}};
\node [anchor=north,inner sep=2pt,fill=green!20,minimum height=1.5em,minimum width=2.0em] (a24) at ([yshift=-0.2em]a23.south) {\footnotesize{P=0.1}};
\node [anchor=north,inner sep=2pt,fill=green!20,minimum height=1.5em,minimum width=2.0em] (a25) at ([yshift=-0.2em]a24.south) {\footnotesize{P=0.1}};
\node [anchor=west,inner sep=2pt,fill=green!20,minimum height=1.5em,minimum width=2.0em] (a21) at ([xshift=1.0em]a11.east) {\footnotesize{$P=0.1$}};
\node [anchor=north,inner sep=2pt,fill=red!20,minimum height=1.5em,minimum width=2.0em] (a22) at ([yshift=-0.2em]a21.south) {\footnotesize{$P=0.1$}};
\node [anchor=north,inner sep=2pt,fill=green!20,minimum height=1.5em,minimum width=2.0em] (a23) at ([yshift=-0.2em]a22.south) {\footnotesize{$P=0.1$}};
\node [anchor=north,inner sep=2pt,fill=green!20,minimum height=1.5em,minimum width=2.0em] (a24) at ([yshift=-0.2em]a23.south) {\footnotesize{$P=0.1$}};
\node [anchor=north,inner sep=2pt,fill=green!20,minimum height=1.5em,minimum width=2.0em] (a25) at ([yshift=-0.2em]a24.south) {\footnotesize{$P=0.1$}};
\node [anchor=west,inner sep=2pt] (a31) at ([xshift=0.3em]a23.east) {$\Rightarrow$};
......@@ -31,7 +31,7 @@
\node [anchor=south east,inner sep=1pt,fill=black] (pa44) at (a44.south east) {\tiny{\color{white} \textbf{4}}};
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (a10) at (a11.north) {\scriptsize{源语言}};
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (a20) at (a21.north) {\small{P}};
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (a20) at (a21.north) {\small{$P$}};
\node [anchor=south,inner sep=2pt] (a30) at (a41.north) {\scriptsize{丢弃的结果}};
\node [anchor=south,inner sep=2pt] (a30-2) at (a30.north) {\scriptsize{部分词随机}};
\node [anchor=north,inner sep=2pt] (pos1) at ([xshift=0.5em,yshift=-0.5em]a25.south) {\scriptsize{(a)部分词随机丢弃的加噪方法}};
......@@ -42,17 +42,17 @@
\node [anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=3.0em] (b14) at ([yshift=-0.2em]b13.south) {感到};
\node [anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=3.0em] (b15) at ([yshift=-0.2em]b14.south) {满意};
\node [anchor=south east,inner sep=1pt,fill=black] (pb11) at (b11.south east) {\tiny{\color{white} \textbf{0}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb12) at (b12.south east) {\tiny{\color{white} \textbf{1}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb13) at (b13.south east) {\tiny{\color{white} \textbf{2}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb14) at (b14.south east) {\tiny{\color{white} \textbf{3}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb15) at (b15.south east) {\tiny{\color{white} \textbf{4}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb11) at (b11.south east) {\tiny{\color{white} \textbf{1}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb12) at (b12.south east) {\tiny{\color{white} \textbf{2}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb13) at (b13.south east) {\tiny{\color{white} \textbf{3}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb14) at (b14.south east) {\tiny{\color{white} \textbf{4}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb15) at (b15.south east) {\tiny{\color{white} \textbf{5}}};
\node [anchor=west,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=2.0em] (b21) at ([xshift=1.0em]b11.east) {\footnotesize{P=0.1}};
\node [anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=2.0em] (b22) at ([yshift=-0.2em]b21.south) {\footnotesize{P=0.1}};
\node [anchor=north,inner sep=2pt,fill=red!20,minimum height=1.5em,minimum width=2.0em] (b23) at ([yshift=-0.2em]b22.south) {\footnotesize{P=0.1}};
\node [anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=2.0em] (b24) at ([yshift=-0.2em]b23.south) {\footnotesize{P=0.1}};
\node [anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=2.0em] (b25) at ([yshift=-0.2em]b24.south) {\footnotesize{P=0.1}};
\node [anchor=west,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=2.0em] (b21) at ([xshift=1.0em]b11.east) {\footnotesize{$P=0.1$}};
\node [anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=2.0em] (b22) at ([yshift=-0.2em]b21.south) {\footnotesize{$P=0.1$}};
\node [anchor=north,inner sep=2pt,fill=red!20,minimum height=1.5em,minimum width=2.0em] (b23) at ([yshift=-0.2em]b22.south) {\footnotesize{$P=0.1$}};
\node [anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=2.0em] (b24) at ([yshift=-0.2em]b23.south) {\footnotesize{$P=0.1$}};
\node [anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=2.0em] (b25) at ([yshift=-0.2em]b24.south) {\footnotesize{$P=0.1$}};
\node [anchor=west,inner sep=2pt] (b31) at ([xshift=0.3em]b23.east) {$\Rightarrow$};
......@@ -62,14 +62,14 @@
\node [anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=3.0em] (b44) at ([yshift=-0.2em]b43.south) {感到};
\node [anchor=north,inner sep=2pt,fill=blue!20,minimum height=1.5em,minimum width=3.0em] (b45) at ([yshift=-0.2em]b44.south) {满意};
\node [anchor=south east,inner sep=1pt,fill=black] (pb41) at (b41.south east) {\tiny{\color{white} \textbf{0}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb42) at (b42.south east) {\tiny{\color{white} \textbf{1}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb43) at (b43.south east) {\tiny{\color{white} \textbf{2}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb44) at (b44.south east) {\tiny{\color{white} \textbf{3}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb45) at (b45.south east) {\tiny{\color{white} \textbf{4}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb41) at (b41.south east) {\tiny{\color{white} \textbf{1}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb42) at (b42.south east) {\tiny{\color{white} \textbf{2}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb43) at (b43.south east) {\tiny{\color{white} \textbf{3}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb44) at (b44.south east) {\tiny{\color{white} \textbf{4}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pb45) at (b45.south east) {\tiny{\color{white} \textbf{5}}};
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (b10) at (b11.north) {\scriptsize{源语言}};
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (b20) at (b21.north) {\small{P}};
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (b20) at (b21.north) {\small{$P$}};
\node [anchor=south,inner sep=2pt] (b30) at (b41.north) {\scriptsize{屏蔽的结果}};
\node [anchor=south,inner sep=2pt] (b30-2) at (b30.north) {\scriptsize{部分词随机}};
\node [anchor=north,inner sep=2pt] (pos2) at ([xshift=0.5em,yshift=-0.5em]b25.south) {\scriptsize{(b)部分词随机屏蔽的加噪方法}};
......@@ -80,11 +80,11 @@
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c14) at ([yshift=-0.2em]c13.south) {感到};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c15) at ([yshift=-0.2em]c14.south) {满意};
\node [anchor=south east,inner sep=1pt,fill=black] (pc11) at (c11.south east) {\tiny{\color{white} \textbf{0}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pc12) at (c12.south east) {\tiny{\color{white} \textbf{1}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pc13) at (c13.south east) {\tiny{\color{white} \textbf{2}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pc14) at (c14.south east) {\tiny{\color{white} \textbf{3}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pc15) at (c15.south east) {\tiny{\color{white} \textbf{4}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pc11) at (c11.south east) {\tiny{\color{white} \textbf{1}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pc12) at (c12.south east) {\tiny{\color{white} \textbf{2}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pc13) at (c13.south east) {\tiny{\color{white} \textbf{3}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pc14) at (c14.south east) {\tiny{\color{white} \textbf{4}}};
\node [anchor=south east,inner sep=1pt,fill=black] (pc15) at (c15.south east) {\tiny{\color{white} \textbf{5}}};
\node [anchor=west,inner sep=2pt] (c21) at ([xshift=0.3em]c11.east) {\footnotesize{+}};
\node [anchor=west,inner sep=2pt] (c22) at ([xshift=0.3em]c12.east) {\footnotesize{+}};
......@@ -104,17 +104,17 @@
\node [anchor=west,inner sep=2pt] (c44) at ([xshift=0.55em]c34.east) {\footnotesize{=}};
\node [anchor=west,inner sep=2pt] (c45) at ([xshift=0.55em]c35.east) {\footnotesize{=}};
\node [anchor=west,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c51) at ([xshift=0.55em]c41.east) {\footnotesize{$S_{0}=2.54$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c52) at ([yshift=-0.2em]c51.south) {\footnotesize{$S_{1}=1.63$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c53) at ([yshift=-0.2em]c52.south) {\footnotesize{$S_{2}=3.77$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c54) at ([yshift= -0.2em]c53.south) {\footnotesize{$S_{3}=4.33$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c55) at ([yshift=-0.2em]c54.south) {\footnotesize{$S_{4}=6.15$}};
\node [anchor=west,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c51) at ([xshift=0.55em]c41.east) {\footnotesize{$S_{0}=3.54$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c52) at ([yshift=-0.2em]c51.south) {\footnotesize{$S_{1}=2.63$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c53) at ([yshift=-0.2em]c52.south) {\footnotesize{$S_{2}=4.77$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c54) at ([yshift= -0.2em]c53.south) {\footnotesize{$S_{3}=5.33$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c55) at ([yshift=-0.2em]c54.south) {\footnotesize{$S_{4}=7.15$}};
\node [anchor=west,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c61) at ([xshift=3.72em]c51.east) {\footnotesize{$S_{0}^{'}=1.63$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c62) at ([yshift=-0.2em]c61.south) {\footnotesize{$S_{1}^{'}=2.54$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c63) at ([yshift=-0.2em]c62.south) {\footnotesize{$S_{2}^{'}=3.77$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c64) at ([yshift=-0.2em]c63.south) {\footnotesize{$S_{3}^{'}=4.33$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c65) at ([yshift=-0.2em]c64.south) {\footnotesize{$S_{4}^{'}=6.15$}};
\node [anchor=west,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c61) at ([xshift=3.72em]c51.east) {\footnotesize{$S_{0}^{'}=2.63$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c62) at ([yshift=-0.2em]c61.south) {\footnotesize{$S_{1}^{'}=3.54$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c63) at ([yshift=-0.2em]c62.south) {\footnotesize{$S_{2}^{'}=4.77$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c64) at ([yshift=-0.2em]c63.south) {\footnotesize{$S_{3}^{'}=5.33$}};
\node [anchor=north,inner sep=2pt,fill=yellow!20,minimum height=1.5em,minimum width=3.0em] (c65) at ([yshift=-0.2em]c64.south) {\footnotesize{$S_{4}^{'}=7.15$}};
\node [anchor=north,inner sep=2pt] (c71) at ([yshift=-12.3em]b31.south) {$\Rightarrow$};
......@@ -137,8 +137,8 @@
\draw [->,dashed](c55.east)--(c65.west);
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (c10) at (c11.north) {\scriptsize{源语言}};
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (c30) at (c31.north) {\small{n=3}};
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (c50) at (c51.north) {\small{S}};
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (c30) at (c31.north) {\small{$n$=3}};
\node [anchor=south,inner sep=2pt,minimum height=1.5em,minimum width=3.0em] (c50) at (c51.north) {\small{$S$}};
\node [anchor=south,inner sep=2pt] (c60) at (c61.north) {\scriptsize{进行排序}};
\node [anchor=south,inner sep=2pt] (c60-2) at (c60.north) {\scriptsize{由小到大}};
......
......@@ -22,9 +22,9 @@
%----------------------------------------------------------------------------------------
\chapter{低资源神经机器机器翻译}
\parinterval 神经机器翻译带来的性能提升是显著的,随之而来的问题是对海量双语训练数据的依赖。不同语言可使用的数据规模是不同的。如汉语、英语这种使用范围广泛的语言,存在着大量的双语平行句对,这些语言被称为{\small\bfnew{富资源语言}}\index{富资源语言}(High-resource Language\index{High-resource Language})。而对于其它一些使用范围稍小的语言,如斐济语等,相关的数据非常稀少,这些语言被称为{\small\bfnew{低资源语言}}\index{低资源语言}(Low-resource Language\index{Low-resource Language})。世界上现存语言超过5000种,仅有很少一部分为富资源语言,绝大多数均为低资源语言。即使在富资源语言中,对于一些特定的领域,双语平行语料也是十分稀缺的。有时,一些特殊的语种或者领域会面临“零资源”的问题。因此,{\small\bfnew{低资源机器翻译}}\index{低资源机器翻译}(Low-resource Machine Translation)是急需解决且颇具挑战的问题。
\parinterval 神经机器翻译带来的性能提升是显著的,随之而来的问题是对海量双语训练数据的依赖。不过,不同语言可使用的数据规模是不同的。如汉语、英语这种使用范围广泛的语言,存在着大量的双语平行句对,这些语言被称为{\small\bfnew{富资源语言}}\index{富资源语言}(High-resource Language\index{High-resource Language})。而对于其它一些使用范围稍小的语言,如斐济语等,相关的数据非常稀少,这些语言被称为{\small\bfnew{低资源语言}}\index{低资源语言}(Low-resource Language\index{Low-resource Language})。世界上现存语言超过5000种,仅有很少一部分为富资源语言,绝大多数均为低资源语言。即使在富资源语言中,对于一些特定的领域,双语平行语料也是十分稀缺的。有时,一些特殊的语种或者领域会面临“零资源”的问题。因此,{\small\bfnew{低资源机器翻译}}\index{低资源机器翻译}(Low-resource Machine Translation)是当下急需解决且颇具挑战的问题。
\parinterval 本章对低资源神经机器机器翻译的相关问题、模型和方法展开介绍,内容涉及数据的有效使用、多语言翻译建模、无监督机器翻译、领域适应四个方面。这些均为机器翻译真实应用中所面临的问题,对其进行求解可以大大促进低资源机器翻译的发展
\parinterval 本章对低资源神经机器机器翻译的相关问题、模型和方法展开介绍,内容涉及数据的有效使用、双向翻译模型、多语言翻译建模、无监督机器翻译、领域适应五个方面。下面一一展开讨论
%----------------------------------------------------------------------------------------
......@@ -33,21 +33,21 @@
\section{数据的有效使用}
\parinterval 数据稀缺是低资源机器翻译所面临的主要问题。因此,充分使用既有数据是一种解决问题的思路。比如,在双语训练不充分的时候,可以考虑用转述等方式生成更多的双语训练数据({\color{red} 参考文献!})。也可以简单地对双语数据的部分单词用近义词进行替换,达到丰富双语数据的目的({\color{red} 参考文献!})。
\parinterval 数据稀缺是低资源机器翻译所面临的主要问题。因此,充分使用既有数据是一种解决问题的思路。比如,在双语训练不充分的时候,可以考虑用转述等方式生成更多的双语训练数据({\color{red} 参考文献!})。也可以简单地对双语数据的部分单词用近义词进行替换,达到丰富双语数据的目的({\color{red} 参考文献!})。
\parinterval 另一种思路是充分利用单语数据。实际上,在统计机器翻译时代,使用单语数据训练语言模型是构建机器翻译系统的关键步骤。好的语言模型往往会带来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经机器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连语言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端本身就起着语言模型的作用,另一方面是由于数据的增多使得翻译模型可以更好的捕捉目标语言的规律。但是,双语数据总是有限的。很多场景下,单语数据的规模会远大于双语数据。如果能够让这些单语数据发挥作用,显然是一种非常好的选择。针对以上问题,下面将从数据增强、基于语言模型的单语数据使用等方面展开讨论。
\parinterval 另一种思路是使用单语数据,因此单语数据相比双语数据更容易获取。实际上,在统计机器翻译时代,使用单语数据训练语言模型是构建机器翻译系统的关键步骤。好的语言模型往往会带来性能的增益。而这个现象在神经机器翻译中似乎并不明显,因为在大多数神经机器翻译的范式中,并不要求使用大规模单语数据来帮助机器翻译系统。甚至,连语言模型都不会作为一个独立的模块。这一方面是由于神经机器翻译系统的解码端本身就起着语言模型的作用,另一方面是由于数据的增多使得翻译模型可以更好的捕捉目标语言的规律。但是,双语数据总是有限的。很多场景下,单语数据的规模会远大于双语数据。如果能够让这些单语数据发挥作用,显然是一种非常好的选择。针对以上问题,下面将从数据增强、基于语言模型的单语数据使用等方面展开讨论。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{数据增强}
\parinterval {\small\bfnew{数据增强}}(Data Augmentation)是一种增加训练数据的方法,通常通过对既有数据进行修改或者生成新的伪数据等方式实现。有时候,数据增强也可以被看做是一种防止模型过拟合的手段\cite{DBLP:journals/jbd/ShortenK19}。在机器翻译中,典型的数据增强方法包括回译、加噪和双语数据挖掘等。
\parinterval {\small\bfnew{数据增强}}(Data Augmentation)是一种增加训练数据的方法,通常通过对既有数据进行修改或者生成新的伪数据等方式实现。有时候,数据增强也可以被看做是一种防止模型过拟合的手段\cite{DBLP:journals/jbd/ShortenK19}。在机器翻译中,典型的数据增强方法包括回译、加噪等。
\subsubsection{1. 回译}
\parinterval {\small\bfnew{回译}}(Back Translation, BT)是目前机器翻译任务上最常用的一种数据增强的方法({\color{red} 参考文献!有很多})。回译的主要思想是:利用目标语言-源语言模型(反向翻译模型)来生成伪双语句对,用于训练源语言-目标语言翻译模型(前向翻译模型)。假设我们的目标是训练一个英汉翻译模型。首先,使用双语数据训练汉英翻译模型,即反向翻译模型。然后通过该模型将汉语单语句子翻译为英语句子,从而得到大量的生成英语- 真实汉语伪双语句对。然后,将回译得到的伪双语句对和真实双语句对混合,训练得到最终的英汉神经机器翻译模型。
回译方法是模型无关的,只需要训练一个反向翻译模型,就可以简单有效地利用单语数据来提高训练数据的数量,因此在工业界也得到了广泛采用({\color{red} 参考文献!可以引用google和fb的论文,是不是多语言或者无监督的方法里有})。图\ref{fig:16-1-xc} 给出了回译方法的一个简要流程。
\parinterval {\small\bfnew{回译}}(Back Translation, BT)是目前机器翻译任务上最常用的一种数据增强方法({\color{red} 参考文献!有很多})。回译的主要思想是:利用目标语言-源语言模型(反向翻译模型)来生成伪双语句对,用于训练源语言-目标语言翻译模型(前向翻译模型)。假设我们的目标是训练一个英汉翻译模型。首先,使用双语数据训练汉英翻译模型,即反向翻译模型。然后通过该模型将额外的汉语单语句子翻译为英语句子,从而得到大量的生成英语- 真实汉语伪双语句对。然后,将回译得到的伪双语句对和真实双语句对混合,训练得到最终的英汉神经机器翻译模型。
回译方法是模型无关的,只需要训练一个反向翻译模型,就可以简单有效地利用单语数据来增加训练数据的数量,因此在工业界也得到了广泛采用({\color{red} 参考文献!可以引用google和fb的论文,是不是多语言或者无监督的方法里有})。图\ref{fig:16-1-xc} 给出了回译方法的一个简要流程。
%----------------------------------------------
\begin{figure}[htp]
......@@ -58,9 +58,9 @@
\end{figure}
%-------------------------------------------
\parinterval 通常认为,反向模型的性能越好,生成的源语言译文质量越高,从而伪数据的分布和真实数据的分布越接近。不过,在实践中发现,即使一些简单的策略也能带来性能的增长。比如,对于一些低资源翻译任务,通过将目标语句子复制到源语言端构造的伪数据都能为模型带来增益\upcite{DBLP:conf/wmt/CurreyBH17}。原因在于,即使构造的双语伪数据是不准确的,其目标语言端仍然是真实数据,因此保证了神经机器翻译模型生成结果的流畅度。相比这些简单的伪数据生成策略,利用目标语言单语数据进行回译可以获得更高质量的数据。这是因为,双语伪数据的源语言是模型生成的翻译结果,保留了两种语言之间的互译信息,相比真实数据又存在一定的噪声。神经机器翻译模型在伪双语句对上进行训练,可以学习到如何处理带有噪声的输入,提高了模型的鲁棒性。
\parinterval 通常认为,反向模型的性能越好,生成的源语言译文质量越高,从而伪数据的分布和真实数据的分布越接近。不过,在实践中发现,即使一些简单的策略也能带来性能的增长。比如,对于一些低资源翻译任务,通过将目标语句子复制到源语言端构造的伪数据都能为模型带来增益\upcite{DBLP:conf/wmt/CurreyBH17}。原因在于,即使构造的双语伪数据是不准确的,其目标语言端仍然是真实数据,因此保证了神经机器翻译模型生成结果的流畅度。相比这些简单的伪数据生成策略,利用目标语言单语数据进行回译可以获得更高质量的数据。一种可能的解释是,双语伪数据的源语言是模型生成的翻译结果,保留了两种语言之间的互译信息,相比真实数据又存在一定的噪声。神经机器翻译模型在伪双语句对上进行训练,可以学习到如何处理带有噪声的输入,提高了模型的鲁棒性。
\parinterval 围绕如何利用回译方法生成对模型更有帮助的伪双语数据,研究人员们进行了详细的分析探讨。一般观点认为,反向模型的性能越好,生成的伪数据质量也就更高,对前向模型的性能提升也就越大({\color{red} 参考文献!})。回译方法面临的一个问题是:反向翻译模型的训练只依赖于有限的双语数据,生成的源语言端伪数据的质量难以保证。为此,可以采用{\small\sffamily\bfnew{迭代式回译}}\index{迭代式回译}(Iterative Back Translation)\index{Iterative Back Translation}的方法\upcite{DBLP:conf/aclnmt/HoangKHC18},同时利用源语言端和目标语言端的单语数据,不断通过回译的方式来提升前向和反向翻译模型的性能。图\ref{fig:16-2-xc}展示了迭代式回译的框架。首先,使用双语数据训练一个前向翻译模型,然后利用源语言单语数据通过回译的方式生成伪双语数据,来提升反向翻译模型的性能,最后由反向翻译模型和目标语言单语数据生成的伪双语数据来提升前向翻译模型的性能。可以看出,这个往复的过程是闭环的,因此可以一直重复进行,直到两个翻译模型的性能均不再提升。
\parinterval 围绕如何利用回译方法生成伪双语数据,研究人员们进行了详细的分析探讨。一般观点认为,反向模型的性能越好,生成的伪数据质量也就更高,对前向模型的性能提升也就越大({\color{red} 参考文献!})。回译方法面临的一个问题是:反向翻译模型的训练只依赖于有限的双语数据,生成的源语言端伪数据的质量难以保证。为此,可以采用{\small\sffamily\bfnew{迭代式回译}}\index{迭代式回译}(Iterative Back Translation)\index{Iterative Back Translation}的方法\upcite{DBLP:conf/aclnmt/HoangKHC18},同时利用源语言端和目标语言端的单语数据,不断通过回译的方式来提升前向和反向翻译模型的性能。图\ref{fig:16-2-xc}展示了迭代式回译的框架。首先,使用双语数据训练一个前向翻译模型,然后利用源语言单语数据通过回译的方式生成伪双语数据,来提升反向翻译模型的性能,最后由反向翻译模型和目标语言单语数据生成的伪双语数据来提升前向翻译模型的性能。可以看出,这个往复的过程是闭环的,因此可以一直重复进行,直到两个翻译模型的性能均不再提升。
%----------------------------------------------
\begin{figure}[htp]
......@@ -75,31 +75,29 @@
\parinterval 回译常用的解码方式为束搜索,在生成每个词的时候只考虑预测概率最高的词,因此生成的翻译结果质量更高,但导致的问题是翻译结果主要都是一些高频词,缺乏多样性,生成的伪数据也就很难去准确地覆盖真实的数据分布\upcite{DBLP:conf/icml/OttAGR18}。采样解码是指在解码过程中,对词表中所有的词按照预测概率进行随机采样,因此整个词表中的词都有可能被选中,从而使生成结果更具多样性,但翻译质量和流畅度也会明显下降。$n$-best解码是对束搜索和采样解码的一个折中方法。在解码过程中,$n$-best解码对词表中预测概率最高的前$n$个词进行随机采样,这样在保证翻译结果准确性的前提下,也提高了结果的多样性。由于采样和$n$-best解码只在生成的源语言句子中引入了多样性,因此也可以提高对包含低频词或噪声句子的训练次数。
\parinterval 与回译方法类似,源语言的单语数据也可以通过一个双语数据训练的前向翻译模型获得对应的目标语译文,从而构造前向翻译的伪数据。与回译方法相反,前向翻译伪数据中源语言句子是真实的,而目标语言句子是生成的,构造的伪数据对译文的流畅性并没有太大帮助,甚至有害,其主要作用是丰富了训练数据中源语言的表示,提升翻译模型中编码器的性能。很多时候,利用前向翻译模型生成伪数据的方法带来的性能提升效果要弱于回译({\color{red} 参考文献!})。
\parinterval 与回译方法类似,源语言的单语数据也可以通过一个双语数据训练的前向翻译模型获得对应的目标语译文,从而构造前向翻译的伪数据。与回译方法相反,这时的伪数据中源语言句子是真实的,而目标语言句子是生成的,构造的伪数据对译文的流畅性并没有太大帮助,其主要作用是丰富了训练数据中源语言的表示,提升翻译模型中编码器的性能。很多时候,利用前向翻译模型生成伪数据的方法带来的性能提升效果要弱于回译({\color{red} 参考文献!})。
\subsubsection{2. 修改双语数据}
{\red{(这种方法并没有使用单语数据,放在这一节是否合适?或者要修改一下章节题目。)}}
\parinterval 除利用回译方法生成伪数据外,另外一种数据增强技术是在原始的双语数据上进行操作得到伪数据,常用的方法包括加噪、词替换等。
\parinterval 除利用回译方法生成伪数据外,另外一种数据增强技术是对原始双语数据上进行修改得到伪数据,常用的方法包括加噪、词替换等。
\begin{itemize}
\vspace{0.5em}
\item {\small\sffamily\bfnew{加噪}}
\item {\small\sffamily\bfnew{加噪}}{\color{red} 用四级标题?}{\color{red} 这节缺少参考文献!}
\parinterval 加噪是指在保证句子整体语义的情况下,对原始的双语数据适当加入一些噪声,从而生成伪双语数据来增加训练数据量。常用的加噪方法主要有以下三种:
\begin{itemize}
\vspace{0.5em}
\item 丢词:句子中的每个词均有$\funp{P}_{\rm{drop}}$的概率被丢弃。
\item掉单词:句子中的每个词均有$\funp{P}_{\rm{drop}}$的概率被丢弃。
\vspace{0.5em}
\item 屏蔽词:句子中的每个词均有$\funp{P}_{\rm{mask}}$的概率被替换为一个额外的[mask]词。
\item 屏蔽单词:句子中的每个词均有$\funp{P}_{\rm{mask}}$的概率被替换为一个额外的[mask]词。[mask]表示{\color{red} XXXXXX}
\vspace{0.5em}
\item 乱序:将句子中距离较近的某些词的位置进行交换,打乱句子中的单词顺序。
\item 打乱顺序:将句子中距离较近的某些词的位置进行({\color{red} 随机?}交换,打乱句子中的单词顺序。
\vspace{0.5em}
\end{itemize}
\ref{fig:16-4-xc}展示了三种加噪方法的示例。这里,$\funp{P}_{\rm{drop}}$$\funp{P}_{\rm{mask}}$均设置为0.1,表示每个词有$10\%$的概率被丢弃或屏蔽,乱序的操作略微复杂,一种实现方法是,通过一个数字来表示每个词在句子中的位置,如“我”是第零个词,“你”是第二个词,然后,在每个位置生成一个$0$$n$的随机数,n一般设置为3,然后将每个词的位置数和对应的随机数相加,即图中的$S$。对$S$按照从小到大排序,根据排序后每个位置的索引从原始句子中选择对应的词,从而得到最终打乱顺序后的结果。比如,在排序后,$S_1$的值小于$S_0$,其余词则保持递增顺序,则将原始句子中的第零个词和第一个词的顺序进行交换,其他词保持不变。
\ref{fig:16-4-xc}展示了三种加噪方法的示例。这里,$\funp{P}_{\rm{drop}}$$\funp{P}_{\rm{mask}}$均设置为0.1,表示每个词有$10\%$的概率被丢弃或屏蔽。打乱顺序的操作略微复杂,一种实现方法是,通过一个数字来表示每个词在句子中的位置,如“我”是第一个词,“你”是第三个词,然后,在每个位置生成一个$1$$n$的随机数,$n$一般设置为3,然后将每个词的位置数和对应的随机数相加,即图中的$S${\color{red} 在图中把数重新算一下,前面我改了})。 对$S$ 按照从小到大排序,根据排序后每个位置的索引从原始句子中选择对应的词,从而得到最终打乱顺序后的结果。比如,在排序后,$S_1$的值小于$S_0$,其余词则保持递增顺序,则将原始句子中的第零个词和第一个词的顺序进行交换,其他词保持不变。
%----------------------------------------------
\begin{figure}[htp]
......@@ -110,26 +108,26 @@
\end{figure}
%-------------------------------------------
\parinterval 和回译方法相似,加噪方法一般仅在源语言句子上进行操作,既保证了目标语言句子的流畅度,又可以提高训练数据量,增加数据的多样性。加噪方法也被用于训练降噪自编码器,在无监督机器翻译中也得到了广泛应用,详细方法可以参考xxx小节。
\parinterval 和回译方法相似,加噪方法一般仅在源语言句子上进行操作,既保证了目标语言句子的流畅度,又可以提高训练数据量,增加数据的多样性{\color{red} 参考文献!})。加噪方法也被用于训练降噪自编码器,在无监督机器翻译中也得到了广泛应用,详细方法可以参考xxx节。
\vspace{0.5em}
\item {\small\sffamily\bfnew{词替换}}
\item {\small\sffamily\bfnew{词替换}}
\parinterval 将一个句子中的某个词替换为其他词,可能并不会影响句子的合理性和流畅度。比如,对于“我出去玩。”这句话,将“我”替换为“你”、“他”、“我们”或是将“玩”替换为“骑车”、“学习”、“吃饭”等,虽然改变了语义,但句子仍然是合理的。词替换方法即是将双语数据中的部分词替换为词表中的其他词,在保证句子的语义或语法的前提下,增加了训练数据的多样性。
\parinterval 将一个句子中的某个词替换为其他词,可能并不会影响句子的合理性和流畅度。比如,对于“我出去玩。”这句话,将“我”替换为“你”、“他”、“我们”或是将“玩”替换为“骑车”、“学习”、“吃饭”等,虽然改变了语义,但句子仍然是合理的。词替换方法即是将双语数据中的部分词替换为词表中的其他词,在保证句子的语义或语法正确性的前提下,增加了训练数据的多样性。
\parinterval 一种替换策略是对目标语中的稀有词进行替换\upcite{DBLP:conf/acl/FadaeeBM17a}。词表中的稀有词由于出现次数较少,很容易导致训练不充分问题,从而无法准确预测稀有词。对于一个双语句对$(\mathbi{x}, \mathbi{y})$$\mathbi{x} = (x_1, \dots, x_i, \dots, x_m)$$\mathbi{y} = (y_1, \dots, y_j, \dots, y_n)$,假定选择源语言句子$\mathbi{x}$进行替换,那么在源语言句子的位置$i$,可以根据前面的文本和前向语言模型得到前向候选稀有词,如公式所示:
\parinterval 一种策略是对目标语中的稀有词进行替换\upcite{DBLP:conf/acl/FadaeeBM17a}{\color{red} 就一篇文章?})。词表中的稀有词由于出现次数较少,很容易导致训练不充分问题,从而无法准确预测稀有词。对于一个双语句对$(\mathbi{x}, \mathbi{y})$,其中$\mathbi{x} = (x_1, \dots, x_m)$$\mathbi{y} = (y_1, \dots, y_n)$。假定对源语言句子$\mathbi{x}$中的单词进行替换,那么在源语言句子的位置$i$,可以根据前面的文本和自左向右语言模型得到前向候选稀有词集合$\overrightarrow{C}$,如公式所示:
\begin{eqnarray}
\overrightarrow{C} = \{x_i^{'} \in V_R: {\rm{TopK}} \funp{P}_{\rm{ForwardLM}}(x_i^{'} | x_i^{i-1})\}
\overrightarrow{C} = \{x_i^{'} \in V_R: {\rm{Top}}_K (\funp{P}_{\rm{l2r}}(x_i^{'} | x_{<i}))\}
\end{eqnarray}
\parinterval 这里,$V_R$表示稀有词词表,可以设定为训练数据中出现次数最少的部分词或出现次数小于一定阈值的部分词,$\funp{{\rm{TopK}}}$表示选择预测概率最高的前K个词。如果这K个词在稀有词词表$V_R$中,则将其加入到前向候选稀有词中。同样,利用后面的文本和反向语言模型得到后向候选稀有词:
这里,$V_R$表示稀有词词表,可以设定为训练数据中出现次数最少的部分词或出现次数小于一定阈值的部分词。$\funp{P}_{\rm{l2r}}(x_i^{'} | x_{<i})$表示自左向右语言模型预测$x_i^{'}$出现的概率。$\funp{{\rm{Top}}}_K(\cdot)$ 表示选择概率最高的前$K$个词({\color{red} 这个公式感觉有些问题,因为直接看,它是返回最大的$K$个概率,不是$K$个词})。如果这$K$个词在稀有词词表$V_R$ 中,则将其加入到前向候选稀有词集合中。同样,利用后面的文本和自右向左语言模型得到反向候选稀有词:
\begin{eqnarray}
\overleftarrow{C} = \{x_i^{'} \in V_R: {\rm{TopK}} \funp{P}_{\rm{BackwardLM}}(x_i^{'} | x_i^{i-1})\}
\overleftarrow{C} = \{x_i^{'} \in V_R: {\rm{TopK}} (\funp{P}_{\rm{r2l}}(x_i^{'} | x_i^{i-1}))\}
\end{eqnarray}
\parinterval 然后,就可以选择同时出现在前向候选稀有词和反向候选稀有词的单词:
\parinterval 然后,就可以选择同时出现在$\overrightarrow{C}$$\overleftarrow{C}$的单词:
\begin{eqnarray}
{C} = \{x_i | x_i^{'} \in \overrightarrow{C} \wedge x_i^{'} \in \overleftarrow{C}\}
......@@ -137,6 +135,8 @@
\parinterval 前向和反向语言模型均可以使用海量的单语数据训练得到。通过这种方法,选取到的稀有词保证了替换后句子的句法合理性以及流畅度。最后,根据词对齐找到替换词在目标语言句子中对应的位置$j$,根据翻译词典等方法,就可以将目标语言句子中的$y_j$替换为$x_i^{'}$对应的翻译结果$y_j^{'}$,从而生成得到伪双语数据。
{\color{red} 就介绍这一篇文章?我们是对一个方向进行整理,对典型工作进行描述,适当的还应该有些扩展,可以看一下14章的写法。单词替换的方式有很多,我印象里也有几篇。即使不是在数据增强方面的,包括张家俊的论文都提过类似的内容。我们写东西的全面性也是非常必要的。也可以再看一下李垠桥写的内容,他那个风格介绍还是很全面的。现在不是翻译一篇论文。}
\vspace{0.5em}
\end{itemize}
......@@ -158,7 +158,7 @@
\parinterval 另外一种比较有效的方法是根据两种语言中每个句子的句向量来抽取。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到蕴含句子语义信息的句向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对\cite{DBLP:conf/emnlp/WuZHGQLL19}。然而,不同语言单独训练得到的词嵌入可能在不同的表示空间,因此得到的句向量无法用于衡量两个句子的相似度。为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的单词,在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,因此得到的句向量也就可以用于衡量两个句子是否表示相似的语义。关于跨语言词嵌入的具体内容,可以参考xxx(双语词典归纳一节)。
(扩展阅读)
\parinterval 除此之外,还有很多工作对数据增强方法进行了深入的研究与探讨。探索源语言单语数据在神经机器翻译中的使用方法\upcite{DBLP:conf/emnlp/ZhangZ16};选择何种单语数据来生成伪数据带来的收益更大\upcite{DBLP:conf/emnlp/FadaeeM18,DBLP:conf/nlpcc/XuLXLLXZ19};通过特别标识对真实双语和回译生成的伪双语数据进行区分\upcite{DBLP:conf/wmt/CaswellCG19};在回译过程中对训练数据进行动态选择与加权\upcite{DBLP:journals/corr/abs200403672};利用目标端单语数据和相关的富资源语言进行数据增强\upcite{DBLP:conf/acl/XiaKAN19};通过在源语或目标语中随机选择某些词,将这些词替换为词表中随机的一个词,可以得到伪双语数据\upcite{DBLP:conf/emnlp/WangPDN18};随机选择句子中的某个词,将这个词的词嵌入替换为多个语义相似词的加权表示融合\upcite{DBLP:conf/acl/GaoZWXQCZL19};基于模型的不确定性来量化预测结果的置信度,从而提升回译方法的性能\upcite{DBLP:conf/emnlp/WangLWLS19};探索如何利用大规模单语数据\upcite{DBLP:conf/emnlp/WuWXQLL19};还有一些工作对数据增强进行了理论分析\upcite{DBLP:conf/emnlp/LiLHZZ19}
\parinterval 除此之外,还有很多工作对数据增强方法进行了深入的研究与探讨。探索源语言单语数据在神经机器翻译中的使用方法\upcite{DBLP:conf/emnlp/ZhangZ16};选择何种单语数据来生成伪数据带来的收益更大\upcite{DBLP:conf/emnlp/FadaeeM18,DBLP:conf/nlpcc/XuLXLLXZ19};通过特别标识对真实双语和回译生成的伪双语数据进行区分\upcite{DBLP:conf/wmt/CaswellCG19};在回译过程中对训练数据进行动态选择与加权\upcite{DBLP:journals/corr/abs200403672};利用目标端单语数据和相关的富资源语言进行数据增强\upcite{DBLP:conf/acl/XiaKAN19};通过在源语或目标语中随机选择某些词,将这些词替换为词表中随机的一个词,可以得到伪双语数据\upcite{DBLP:conf/emnlp/WangPDN18};随机选择句子中的某个词,将这个词的词嵌入替换为多个语义相似词的加权表示融合\upcite{DBLP:conf/acl/GaoZWXQCZL19};基于模型的不确定性来量化预测结果的置信度,从而提升回译方法的性能\upcite{DBLP:conf/emnlp/WangLWLS19};探索如何利用大规模单语数据\upcite{DBLP:conf/emnlp/WuWXQLL19};还有一些工作对数据增强进行了理论分析\upcite{DBLP:conf/emnlp/LiLHZZ19}{\color{red} 这部分写得不错}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论