Commit d173e3c7 by 曹润柘

合并分支 'caorunzhe' 到 'master'

Caorunzhe

查看合并请求 !739
parents 65e710f8 91098f1e
......@@ -21,7 +21,7 @@
\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') \\
& ('n','e') & ('ne','w') & ('new','est$<$e$>$') & ('low','$<$e$>$') & 'w','i') \\
& ('low','$<$e$>$') & ('n','e') & ('ne','w') & ('new','est$<$e$>$') & ('w','i') \\
& ('wi','d') & ('wid','est$<$e$>$') & ('low','e') & ('lowe','r') & ('lower','$<$e$>$')
\end{tabular}};
......
......@@ -60,12 +60,12 @@
%equ
\node [anchor=west,inner sep = 2pt] (line1) at (9*\nodespace,0) {未应用Dropout:};
\node [anchor=north west,inner sep = 2pt] (line2) at (line1.south west) {$z_{i}^{l+1}=\mathbf{w}_{i}^{l} \mathbf{x}+b_{i}^{l}$};
\node [anchor=north west,inner sep = 2pt] (line3) at (line2.south west) {$x_{i}^{l+1}=f\left(x_{i}^{l}\right)$};
\node [anchor=north west,inner sep = 2pt] (line2) at (line1.south west) {$z_{i}^{l+1}=\mathbf{w}^{l} \mathbf{x}^{l} + b_{i}^{l}$};
\node [anchor=north west,inner sep = 2pt] (line3) at (line2.south west) {$x_{i}^{l+1}=f\left(z_{i}^{l+1}\right)$};
\node [anchor=north west,inner sep = 2pt] (line4) at (line3.south west) {应用Dropout:};
\node [anchor=north west,inner sep = 2pt] (line5) at (line4.south west) {$r_{j}^{l} \sim$ Bernoulli $(1-p)$};
\node [anchor=north west,inner sep = 2pt] (line6) at (line5.south west) {$\tilde{\mathbf{x}}=\mathbf{r} * \mathbf{x}$};
\node [anchor=north west,inner sep = 2pt] (line7) at (line6.south west) {$z_{i}^{l+1}=\mathbf{w}_{i}^{l} \widetilde{\mathbf{x}}+b_{i}^{l}$};
\node [anchor=north west,inner sep = 2pt] (line8) at (line7.south west) {$x_{i}^{l+1}=f\left(z_{i}^{l}\right)$};
\node [anchor=north west,inner sep = 2pt] (line7) at (line6.south west) {$z_{i}^{l+1}=\mathbf{w}^{l} \widetilde{\mathbf{x}}^{l} + b_{i}^{l}$};
\node [anchor=north west,inner sep = 2pt] (line8) at (line7.south west) {$x_{i}^{l+1}=f\left(z_{i}^{l+1}\right)$};
\end{tikzpicture}
\ No newline at end of file
......@@ -2,12 +2,12 @@
\begin{tikzpicture}
\node[] (do) at (0,0) {{\red do}};
\node[anchor = west] (does) at ([xshift = 1em]do.east) {{\red do}es};
\node[anchor = west] (doing) at ([xshift = 0.7em]does.east) {{\red do}ing};
\node[anchor = west] (doing) at ([xshift = 0.7em,yshift = -0.1em]does.east) {{\red do}ing};
\node[anchor = north] (do_root) at ([yshift = -1.5em]does.south) {do};
\node[anchor = west] (new) at ([xshift = 2em]doing.east) {{\red new}};
\node[anchor = west] (newer) at ([xshift = 1em]new.east) {{\red new}er};
\node[anchor = west] (newest) at ([xshift = 0.7em]newer.east) {{\red new}est};
\node[anchor = west] (newest) at ([xshift = 0.7em,yshift = 0.08em]newer.east) {{\red new}est};
\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);
......
......@@ -46,7 +46,7 @@
\sectionnewpage
\section{开放词表}
\parinterval 从模型训练的角度看,我们通常希望尽可能使用更多的单词。因为更大的词表可以覆盖更多的语言现象,同时使得系统对不同语言现象有更强的区分能力。但是,人类表达语言的方式是十分多样的,这也体现在单词的构成上,甚至我们都无法想象数据中存在的不同单词的数量。即便使用分词策略,在WMT、CCMT等评测数据上,英语词表大小都会在100万以上。当然,这里面也包括很多的数字和字母的混合,还有一些组合词。不过,如果不加限制,机器翻译所面对的词表将会很“大”。这也会导致模型变大,模型训练变得极为困难。更严重的问题是,测试数据中的一些单词根本就没有在训练数据中出现过,这时会出现集外词(Out-of-Vocabulary,OOV)翻译问题,即系统无法对未见单词进行翻译。在神经机器翻译中,通常会考虑使用更小的翻译单元来缓解以上问题,因为小颗粒度的单元不容易出现数据稀疏问题。
\parinterval 从模型训练的角度看,我们通常希望尽可能使用更多的单词。因为更大的词表可以覆盖更多的语言现象,同时使得系统对不同语言现象有更强的区分能力。但是,人类表达语言的方式是十分多样的,这也体现在单词的构成上,甚至我们都无法想象数据中存在的不同单词的数量。即便使用分词策略,在WMT、CCMT等评测数据上,英语词表大小都会在100万以上。当然,这里面也包括很多的数字和字母的混合,还有一些组合词。不过,如果不加限制,机器翻译所面对的词表将会很“大”。这也会导致模型参数量变大,模型训练变得极为困难。更严重的问题是,测试数据中的一些单词根本就没有在训练数据中出现过,这时会出现集外词(Out-of-Vocabulary,OOV)翻译问题,即系统无法对未见单词进行翻译。在神经机器翻译中,通常会考虑使用更小的翻译单元来缓解以上问题,因为小颗粒度的单元可以有效缓解数据稀疏问题。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -120,7 +120,7 @@
\subsection{双字节编码(BPE)}
\parinterval {\small\bfnew{字节对编码}}\index{字节对编码}{\small\bfnew{双字节编码}}\index{双字节编码}(Byte Pair Encoding\index{Byte Pair Encoding},BPE)是一种常用的子词词表构建方法\upcite{DBLP:conf/acl/SennrichHB16a}。BPE方法最早用于数据压缩,该方法将数据中常见的连续字符串替换为一个不存在的字符,之后通过构建一个替换关系的对应表,对压缩后的数据进行还原。机器翻译借用了这种思想,把子词切分看作是学习对自然语言句子进行压缩编码表示的问题\upcite{Gage1994ANA}。其目的是,保证编码后的结果(即子词切分)占用的字节尽可能少。这样,子词单元会尽可能被不同单词复用,同时又不会因为使用过小的单元造成子词切分序列过长。使用BPE算法构建符号合并表可以分为如下几个步骤:
\parinterval {\small\bfnew{字节对编码}}\index{字节对编码}{\small\bfnew{双字节编码}}\index{双字节编码}(Byte Pair Encoding\index{Byte Pair Encoding},BPE)是一种常用的子词词表构建方法。BPE方法最早用于数据压缩,该方法将数据中常见的连续字符串替换为一个不存在的字符,之后通过构建一个替换关系的对应表,对压缩后的数据进行还原\upcite{Gage1994ANA}。机器翻译借用了这种思想,把子词切分看作是学习对自然语言句子进行压缩编码表示的问题\upcite{DBLP:conf/acl/SennrichHB16a}。其目的是,保证编码后的结果(即子词切分)占用的字节尽可能少。这样,子词单元会尽可能被不同单词复用,同时又不会因为使用过小的单元造成子词切分序列过长。使用BPE算法构建符号合并表可以分为如下几个步骤:
\begin{itemize}
\vspace{0.5em}
......@@ -174,7 +174,7 @@
\begin{itemize}
\vspace{0.5em}
\item 子词规范化方法\upcite{DBLP:conf/acl/Kudo18}。其思想是在训练过程中扰乱确定的子词边界,根据1-gram Language Model{\red (ULM)(参考文献还是缩写?)}采样出多种子词切分候选。通过最大化整个句子的概率为目标构建词表。在实现上,与上述基于Word Piece的方法略有不同,这里不做详细介绍。
\item 子词规范化方法\upcite{DBLP:conf/acl/Kudo18}。其思想是在训练过程中扰乱确定的子词边界,根据1-gram Language Model(ULM)采样出多种子词切分候选。通过最大化整个句子的概率为目标构建词表。在实现上,与上述基于Word Piece的方法略有不同,这里不做详细介绍。
\vspace{0.5em}
\item BPE-Dropout\upcite{provilkov2020bpe}。在训练时,通过在合并过程中按照一定概率$p$(介于0与1之间)随机丢弃一些可行的合并操作,从而产生不同的子词切分结果,进而增强模型健壮性。而在推断阶段,将$p$设置为0,等同于标准的BPE。总的来说,上述方法相当于在子词的粒度上对输入的序列进行扰动,进而达到增加训练健壮性的目的。
\vspace{0.5em}
......@@ -330,7 +330,7 @@ R(\mathbf{w}) & = & (\big| |\mathbf{w}| {\big|}_2)^2 \\
\sectionnewpage
\section{对抗样本训练}
\parinterval 同其它基于神经网络的方法一样,提高{\small\bfnew{健壮性}}\index{健壮性}(Robustness)\index{Robustness}也是神经机器翻译研发中需要关注的。比如,大容量模型可以很好的拟合训练数据,但是当测试样本与训练样本差异较大时,会导致很糟糕的翻译结果\upcite{JMLR:v15:srivastava14a,DBLP:conf/amta/MullerRS20}。另一方面,实践中也发现,有些情况下即使输入中有微小的扰动,神经网络模型的输出也会产生巨大变化。或者说,神经网络模型在输入样本上容易受到{\small\bfnew{攻击}}\index{攻击}(Attack)\index{Attack}\upcite{DBLP:conf/sp/Carlini017,DBLP:conf/cvpr/Moosavi-Dezfooli16,DBLP:conf/acl/ChengJM19}。图\ref{fig:13-19}展示了一个神经机器翻译系统的翻译结果,可以看到,把输入句子中的单词“他”换成“她”会得到完全不同的译文。这时神经机器翻译系统就存在健壮性问题。a
\parinterval 同其它基于神经网络的方法一样,提高{\small\bfnew{健壮性}}\index{健壮性}(Robustness)\index{Robustness}也是神经机器翻译研发中需要关注的。比如,大容量模型可以很好的拟合训练数据,但是当测试样本与训练样本差异较大时,会导致很糟糕的翻译结果\upcite{JMLR:v15:srivastava14a,DBLP:conf/amta/MullerRS20}。另一方面,实践中也发现,有些情况下即使输入中有微小的扰动,神经网络模型的输出也会产生巨大变化。或者说,神经网络模型在输入样本上容易受到{\small\bfnew{攻击}}\index{攻击}(Attack)\index{Attack}\upcite{DBLP:conf/sp/Carlini017,DBLP:conf/cvpr/Moosavi-Dezfooli16,DBLP:conf/acl/ChengJM19}。图\ref{fig:13-19}展示了一个神经机器翻译系统的翻译结果,可以看到,把输入句子中的单词“他”换成“她”会得到完全不同的译文。这时神经机器翻译系统就存在健壮性问题。
%----------------------------------------------
\begin{figure}[htp]
......@@ -373,7 +373,7 @@ R(\mathbf{w}) & = & (\big| |\mathbf{w}| {\big|}_2)^2 \\
\subsection{基于黑盒攻击的方法}
\parinterval 一个好的对抗样本应该具有这种性质:对文本做最少的修改,并最大程度地保留原文的语义。一种简单的实现方式是对文本加噪声。这里,噪声可以分为自然噪声和人工噪声\upcite{DBLP:conf/iclr/BelinkovB18}。自然噪声一般是指人为的在语料库中收集自然出现的错误,如输入错误、拼写错误等。人为噪声是通过多种方式来处理文本,例如,可以通过固定的规则或是使用噪声生成器,在干净的数据中以一定的概率引入不同类型的噪声,如:拼写、表情符号、语法错误等\upcite{DBLP:conf/naacl/VaibhavSSN19,DBLP:conf/naacl/AnastasopoulosL19,DBLP:conf/acl/SinghGR18};此外,也可以在文本中加入人为设计过的毫无意义的单词序列,以此来分散模型的注意({\color{red} 啥是分散模型的注意?}
\parinterval 一个好的对抗样本应该具有这种性质:对文本做最少的修改,并最大程度地保留原文的语义。一种简单的实现方式是对文本加噪声。这里,噪声可以分为自然噪声和人工噪声\upcite{DBLP:conf/iclr/BelinkovB18}。自然噪声一般是指人为的在语料库中收集自然出现的错误,如输入错误、拼写错误等。人为噪声是通过多种方式来处理文本,例如,可以通过固定的规则或是使用噪声生成器,在干净的数据中以一定的概率引入不同类型的噪声,如:拼写、表情符号、语法错误等\upcite{DBLP:conf/naacl/VaibhavSSN19,DBLP:conf/naacl/AnastasopoulosL19,DBLP:conf/acl/SinghGR18};此外,也可以在文本中加入人为设计过的毫无意义的单词序列。
\parinterval 除了单纯的在文本中引入各种扰动外,还可以通过文本编辑的方式,在不改变语义的情况下尽可能修改文本,从而构建对抗样本\upcite{DBLP:journals/corr/SamantaM17,DBLP:conf/ijcai/0002LSBLS18}。文本的编辑方式主要包括交换,插入,替换和删除操作。表\ref{fig:13-20}给出了一些通过文本编辑的方式来生成对抗样本的例子。
......@@ -386,7 +386,7 @@ R(\mathbf{w}) & = & (\big| |\mathbf{w}| {\big|}_2)^2 \\
\end{figure}
%----------------------------------------------
\parinterval 形式上,可以利用如FGSM\upcite{DBLP:journals/corr/GoodfellowSS14}等算法,验证文本中每一个单词对语义的贡献度,同时为每一个单词构建一个候选池,包括该单词的近义词,拼写错误词,同音词等。对于贡献度较低的词,如语气词,副词等,可以使用插入、删除操作进行扰动。{\red 对于文本序列中其他的单词,可以在候选池中选择相应的单词并进行替换。(前面时贡献度低的,这里是其他词,感觉没有必要区分说明呀)}其中,交换操作可以是基于词级别的,比如交换序列中的单词,也可以是基于字符级别的,比如交换单词中的字符\upcite{DBLP:conf/coling/EbrahimiLD18}。重复的进行上述的编辑操作,直至编辑出的文本可以误导模型做出错误的判断。
\parinterval 形式上,可以利用如FGSM\upcite{DBLP:journals/corr/GoodfellowSS14}等算法,验证文本中每一个单词对语义的贡献度,同时为每一个单词构建一个候选池,包括该单词的近义词,拼写错误词,同音词等。对于贡献度较低的词,如语气词,副词等,可以使用插入、删除操作进行扰动。对于文本序列中其他的单词,可以在候选池中选择相应的单词并进行替换。其中,交换操作可以是基于词级别的,比如交换序列中的单词,也可以是基于字符级别的,比如交换单词中的字符\upcite{DBLP:conf/coling/EbrahimiLD18}。重复的进行上述的编辑操作,直至编辑出的文本可以误导模型做出错误的判断。
\parinterval 在基于语义的方法中,除了通过不同的算法修改输入以外,也可以通过神经网络模型增加扰动。例如,在机器翻译中常用的回译技术,也是生成对抗样本的一种有效方式。回译就是,通过反向模型将目标语言翻译成源语言,并将翻译得到的双语数据用于模型训练。除了翻译模型,语言模型也可以用于生成对抗样本。{\red 前面}已经介绍过,语言模型可以用于检测句子的流畅度,它根据上文预测当前位置可能出现的单词。因此,此时可以使用语言模型预测出当前位置最可能出现的多个单词,并用这些词替换序列中原本的单词。在机器翻译任务中,可以通过与神经机器翻译系统联合训练,共享词向量矩阵的方式得到语言模型。{\red (引用)}
......@@ -450,7 +450,7 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\begin{itemize}
\vspace{0.5em}
\item 曝光偏置问题:{\red 在训练过程中,模型使用真实数据进行训练,因此模型在预测一个句子中的下一个单词时,解码器端的输入服从于真实数据的分布(改的对不对)}。但是在解码过程中,模型则会根据先前的预测结果来生成下一个词,此时模型输入所服从的分布在训练和解码中不一致,如图\ref{fig:13-21}所示。由于在训练过程中暴露于真实数据,模型可能会偏向于仅在具有真实数据的情况下才能表现良好,这就是曝光偏置问题\upcite{Bengio2015ScheduledSF,Ranzato2016SequenceLT}{\red(转录时,w改为y,并在图中补充:$y_1,y_2,y_3,…, y_V$表示词表里的V个词)}
\item 曝光偏置问题:在训练过程中,模型使用真实数据进行训练,因此模型在预测一个句子中的下一个单词时,解码器端的输入服从于真实数据的分布。但是在解码过程中,模型则会根据先前的预测结果来生成下一个词,此时模型输入所服从的分布在训练和解码中不一致,如图\ref{fig:13-21}所示。由于在训练过程中暴露于真实数据,模型可能会偏向于仅在具有真实数据的情况下才能表现良好,这就是曝光偏置问题\upcite{Bengio2015ScheduledSF,Ranzato2016SequenceLT}{\red(转录时,w改为y,并在图中补充:$y_1,y_2,y_3,…, y_V$表示目标语言词表里的V个词)}
\vspace{0.5em}
%----------------------------------------------
......@@ -462,7 +462,7 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\end{figure}
%----------------------------------------------
\item 训练解码评价指标不一致问题:{\red 在训练过程中,使用极大似然估计最大化训练集数据的概率(感觉说的有点奇怪)},而在解码的时候,通常使用如BLEU等外部评价指标来评价模型的性能。理想的情况下,模型应该直接最大化模型性能评价指标而不是{\red 概率(什么概率)},但是因为这些指标通常不可导,这使得我们无法直接利用反向传播来优化神经网络,因此在训练时我们只能使用概率作为实际评价指标的替代,这样就会导致训练解码评价指标不一致问题。在机器翻译任务中,这个问题的一个后果就是,更低的困惑度不一定能提高BLEU。
\item 训练解码评价指标不一致问题:在训练过程中,使用极大似然估计最大化训练集数据出现的概率,而在解码的时候,通常使用如BLEU等外部评价指标来评价模型的性能。理想的情况下,模型应该直接最大化模型性能评价指标,而不是训练集数据出现的概率。但是通常情况下,模型性能评价指标不可导,这使得我们无法直接利用反向传播来优化神经网络,因此在训练时我们只能使用概率作为实际评价指标的替代,这样就会导致训练解码评价指标不一致问题。在机器翻译任务中,这个问题的一个后果就是,更低的困惑度不一定能提高BLEU。
\vspace{0.5em}
\end{itemize}
......@@ -482,7 +482,7 @@ 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\}$,在预测第$t$个单词$\mathbi{y}_t$时,训练过程与解码过程之间的主要区别在于:训练过程中使用真实的先前单词$\mathbi{y}_{t-1}$,而解码过程使用的是来自模型本身的估计$\hat{\mathbi{y}}_{t-1}$。此时可以采取一种调度采样机制,在训练期间随机决定使用$\mathbi{y}_{t-1}$还是$\hat{\mathbi{y}}_{t-1}$。假设训练时使用的是基于小批量{\red (批次?)}的随机梯度下降方法,对于每个预测训练算法的第$i$个小批量的$\mathbi{y}_t \in \textrm{Y}${\red (Y格式对不对,Y没解释)},随机以概率$\epsilon_i$使用先前真实答案或以概率${(1-\epsilon_i)}^2$使用来自模型本身的估计。该模型的估计可以根据由$\funp{P}(\mathbi{y}_{t-1}|\mathbi{h}_{t-1})$建模的概率分布对单词进行采样来获得,也可以作为$\arg\max_s \funp{P}(\mathbi{y}_{t-1} = s|\mathbi{h}_{t-1})$,此过程如图\ref{fig:13-22}所示。{\red(上句难理解,s没解释,s是向量?)}
\parinterval 对于一个目标序列$\seq{y}=\{\mathbi{y}_1,\mathbi{y}_2,\ldots,\mathbi{y}_n\}$,在预测第$t$个单词$\mathbi{y}_t$时,训练过程与解码过程之间的主要区别在于:训练过程中使用真实的先前单词$\mathbi{y}_{t-1}$,而解码过程使用的是来自模型本身的估计$\hat{\mathbi{y}}_{t-1}$。此时可以采取一种调度采样机制,在训练期间随机决定使用$\mathbi{y}_{t-1}$还是$\hat{\mathbi{y}}_{t-1}$。假设训练时使用的是基于小批量的随机梯度下降方法,对于每个预测训练算法的第$i$个小批量的$\mathbi{y}_t$,随机以概率$\epsilon_i$使用先前真实答案或以概率${(1-\epsilon_i)}^2$使用来自模型本身的估计。该模型的估计可以根据由$\funp{P}(\mathbi{y}_{t-1}|\mathbi{h}_{t-1})$建模的概率分布对单词进行采样来获得,也可以选择模型认为出现概率最大的词$s$,即$\arg\max_s \funp{P}(\mathbi{y}_{t-1} = s|\mathbi{h}_{t-1})$,此过程如图\ref{fig:13-22}所示。
%----------------------------------------------
\begin{figure}[htp]
......@@ -493,17 +493,17 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\end{figure}
%----------------------------------------------
\parinterval$\epsilon_i=1$时,模型的训练与以前完全相同,而当$\epsilon_i=0$时,{\red 模型的训练与解码时使用的设置相同(改的对吗)}。在这里使用到了一种{\small\bfnew{课程学习}}\index{课程学习}(curriculum learning)\index{curriculum learning}策略,该策略认为应从一种学习策略过渡到另一种学习策略:{\red 在训练开始时,由于模型训练不足,因此从模型中会采样产生随机单词,这可能会导致收敛速度非常慢,因此,经常选择真正的先前单词$yt−1$通常会有所帮助;另一方面,在训练结束时,$\epsilon_i$应该更倾向于使用来自模型本身的估计$\hat{\mathbi{y}}_{t-1}$,因为这与真实的推理情况相对应。(看不懂)}
\parinterval$\epsilon_i=1$时,模型的训练与以前完全相同,而当$\epsilon_i=0$时,模型的训练与解码时使用的设置相同。在这里使用到了一种{\small\bfnew{课程学习}}\index{课程学习}(curriculum learning)\index{curriculum learning}策略,该策略认为应从一种学习策略过渡到另一种学习策略:在训练开始时,由于模型训练不充分,因此如果从模型中随机采样,会导致收敛速度非常慢。因此,在模型训练的前期,通常会选择使用真实的先前单词$\mathbi{y}_{t-1}$。在模型训练的后期,$\epsilon_i$应该更倾向于使用来自模型本身的估计$\hat{\mathbi{y}}_{t-1}$,这种训练方式也是与真实的推理情况相对应的。
\parinterval 在使用调度策略时,需要调整关于$i$的函数来降低$\epsilon_i$,与梯度下降方法中降低学习率的方式相似,调度策略可以采取如下几种方式:
\parinterval 在使用调度策略时,需要调整关于$i$的函数来降低$\epsilon_i$,与梯度下降方法中降低学习率的方式相似,调度策略可以采取如下几种方式{\red (调度策略、i、epslon什么关系?)}
{\red (下面最后一句重复,而且没明白想表达什么)}
\begin{itemize}
\vspace{0.5em}
\item 线性衰减:$\epsilon_i = \max(\epsilon,k-ci)${\red (ci中i是什么意思,c不是个常数?)},其中$0 \leqslant \epsilon < 1$,是要提供给模型的最小数值,而k和c提供衰减的偏移量和斜率,取决于预期的收敛速度。
\item 线性衰减:$\epsilon_i = \max(\epsilon,k-ci)$,其中$0 \leqslant \epsilon < 1$,是要提供给模型的最小数值,而k和c提供衰减的偏移量和斜率,取决于预期的收敛速度。
\vspace{0.5em}
\item 指数衰减:$\epsilon_i = k^i$,其中$k$是一个常数,一般为$k < 1$,取决于预期的收敛速度。
\vspace{0.5em}
\item 反向sigmoid 衰减:$ϵ_i=k/(k+exp⁡(i/k))$,其中$k≥1$,取决于预期的收敛速度。
\item 反向Sigmoid 衰减:$\epsilon_i = k/(k + \exp(i/k))$,其中$k \geqslant 1$,取决于预期的收敛速度。
\vspace{0.5em}
\end{itemize}
......@@ -513,9 +513,9 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\subsubsection{2. 生成对抗网络}
\parinterval {\red(前面讲了一点GAN)}与人工翻译相比,{\red 极大似然估计的优化目标是假设能够最大化标准答案的可能性(这种描述有点绕)},但由于曝光偏置问题会导致训练和解码的不一致,因此这个{\red 假设}不一定成立。而{\small\bfnew{生成对抗网络}}\index{生成对抗网络}(Generative Adversarial Networks\index{Generative Adversarial Networks},GAN)的优化目标{\red 不是最大化标准答案的可能性,而是最大化标准答案和模型预测结果的相似性,因此可以解决曝光偏置问题。}
\parinterval 调度采样解决曝光偏置的方法是:把模型自己生成的结果当成正确答案用来训练。但是这样导致的问题就是模型会把错误的结果当成正确的来学习,影响了模型最终的效果。解决这个问题的关键就是如何对模型自己生成的结果进行评价。如果生成好的结果,那么我们使用它进行模型训练,否则就不使用。{\small\bfnew{生成对抗网络}}\index{生成对抗网络}(Generative Adversarial Networks\index{Generative Adversarial Networks},GAN)就是这样一种技术,它引入了一个额外的模型(判别器)来对原有模型(生成器)的生成结果进行评价,并根据评价结果同时训练两个模型。
\parinterval 生成对抗网络采用了对抗的训练架构并将其命名为{\small\bfnew{对抗神经机器翻译}}\index{对抗神经机器翻译}(Adversarial-NMT)\index{Adversarial-NMT},其总体框架如图\ref{fig:13-23}所示,{\red 其中“Ref”是“Reference”的缩写,表示标准答案,而“ Hyp”是“Hypothesis”的缩写,表示模型翻译句子结果(准备直接吧图中英文改为中文}。所有黄色部分表示神经机器翻译模型G{\red (看下15章的模型)},该模型将源语言句子$\seq{x}$映射为目标语言句子。红色部分是对抗网络D,该网络预测目标语言句子是否是源语言句子$\seq{x}$的真实翻译。G和D相互对抗,同时生成{\red 采样翻译}$\seq{y}'$来训练D,以及生成奖励信号来通过策略梯度训练G。
\parinterval 生成对抗网络采用了对抗的训练架构并将其命名为{\small\bfnew{对抗神经机器翻译}}\index{对抗神经机器翻译}(Adversarial-NMT)\index{Adversarial-NMT},其总体框架如图\ref{fig:13-23}所示,{\red 其中“Ref”是“Reference”的缩写,表示标准答案,而“ Hyp”是“Hypothesis”的缩写,表示模型翻译句子结果(准备直接吧图中英文改为中文,然后把这句话删掉)}。所有黄色部分表示神经机器翻译模型G,该模型将源语言句子$\seq{x}$映射为目标语言句子。红色部分是对抗网络D,该网络预测目标语言句子是否是源语言句子$\seq{x}$的真实翻译。G和D相互对抗,同时生成翻译结果$\seq{y}'$来训练D,以及生成奖励信号来通过策略梯度训练G。
%----------------------------------------------
\begin{figure}[htp]
......@@ -528,7 +528,7 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\parinterval 对于用于训练的双语句对$(\seq{x}=\{\mathbi{x}_1,\mathbi{x}_2,\ldots,\mathbi{x}_m\},\seq{y}=\{\mathbi{y}_1,\mathbi{y}_2,\ldots,\mathbi{y}_n\})$,其中$\mathbi{x}_i$是源句子中的第$i$个单词,$\mathbi{y}_j$是目标句子中的第$j$个单词。令$\seq{y}'$表示神经机器翻译系统对源语言句子$\mathbi{x}$的解码结果。实际上,对抗神经机器翻译的训练目标就是强制$\seq{y}'$$\seq{y}$相似。在理想情况下,$\seq{y}'$与人类的翻译结果$\seq{y}$非常相似,以至于人类也无法分辨$\seq{y}'$是由机器还是人类产生的。为了实现这一目标,需要引入一个额外的对抗网络\upcite{DBLP:conf/nips/GoodfellowPMXWOCB14}。该对抗网络的目标是将人类翻译与机器翻译区分开来,神经机器翻译模型G试图产生类似于人类翻译的目标句子,以欺骗对抗网络。
\parinterval 在对抗神经机器翻译中,原始的神经机器翻译模型为生成网络,其训练由一个对抗网络协助。对抗网络的目的是将神经机器翻译模型生成的翻译结果与人的翻译结果区分开,而生成网络的目标是产生高质量的翻译,以欺骗对抗网络。生成网络和对抗网络作为对手,由策略梯度方法来共同训练。{\red 为了使得生成网络和对抗网络能够提高彼此性能,可以通过学习人为产生的正例和从神经机器翻译取得的负例来提高对手的辨别力,通过将对手的输出作为反馈来提高神经机器翻译模型欺骗对手的能力。通过这种方式,神经机器翻译的结果可以尽可能接近真实答案。(句子太长)}
\parinterval 在对抗神经机器翻译中,原始的神经机器翻译模型为生成网络,其训练由一个对抗网络协助。对抗网络的目的是将神经机器翻译模型生成的翻译结果与人的翻译结果区分开,而生成网络的目标是产生高质量的翻译,以欺骗对抗网络。生成网络和对抗网络作为对手,由策略梯度方法来共同训练。为了使得生成网络和对抗网络能够提高彼此性能,可以通过学习人为产生的正例和从神经机器翻译取得的负例来提高对手的辨别力。通过这种方式,神经机器翻译的结果可以尽可能接近真实答案。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -544,7 +544,7 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\subsubsection{1. 基于策略的增强学习方法}
\parinterval 与传统的极大似然估计不同,{\small\bfnew{最小风险训练}}\index{最小风险训练}(Minimum Risk Training\index{Minimum Risk Training},MRT)方法引入了评价指标作为损失函数,{\red 目标是将训练数据在测试数据上的预期损失降至最低}\upcite{DBLP:conf/acl/ShenCHHWSL16}
\parinterval 与传统的极大似然估计不同,{\small\bfnew{最小风险训练}}\index{最小风险训练}(Minimum Risk Training\index{Minimum Risk Training},MRT)方法引入了评价指标作为损失函数,目标是将训练数据在测试数据上的预期风险降至最低\upcite{DBLP:conf/acl/ShenCHHWSL16}
\parinterval MRT的训练目标是最小化训练数据上的风险,风险定义为相对于后验分布的预期损失,其计算方式如公式\eqref{eq:13-13}所示:
\begin{eqnarray}
......@@ -576,9 +576,7 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\parinterval MRT显著改善了机器翻译任务的性能\upcite{bahdanau2014neural},且已广泛用于常规SMT\upcite{koehn2003statistical,smith2006minimum,he2012maximum}和基于深度学习的MT\upcite{DBLP:conf/acl/GaoHYD14}
\parinterval {\red 图X}是最小风险训练计算的一个示例,$\mathbi{x}_i$是观测到的源语句子,$\widetilde{\mathbi{y}}_i$是对应的标准答案,$\mathbi{y}_1$$\mathbi{y}_2$$\mathbi{y}_3$是模型的预测结果。损失函数$\vartriangle(\mathbi{y}_i,\widetilde{\mathbi{y}})$用来衡量模型预测结果和标准答案间的差异,MRT的目标是找到一个分布(最右一列)来最小化期望的损失函数。假设$\chi(\mathbi{x}_i)$是包含$\mathbi{y}_1$$\mathbi{y}_2$$\mathbi{y}_3$三个候选的一个集合,整个搜索空间只有这三个候选。
\parinterval\ref{fig:13-24}的右半边展示了优化过程中的四个模型,顺序为从差到好。根据和标准答案$\widetilde{\mathbi{y}}_i$计算出的损失函数,从上到下的三个模型预测输出我们用$\mathbi{y}_1$$\mathbi{y}_2$$\mathbi{y}_3$表示($\mathbi{y}_1$:“今天 天气 很 好”,$\mathbi{y}_2$:“今天 天气 不错”,$\mathbi{y}_3$:“今天 天 很 晴朗”),显然$\mathbi{y}_1$是最好的候选,$\mathbi{y}_3$是次优的候选,$\mathbi{y}_2$是最差的候选,$\mathbi{y}_1>\mathbi{y}_3>\mathbi{y}_2$。第一列的模型以和标准答案相反的顺序排序所有候选结果,$\mathbi{y}_2>\mathbi{y}_3>\mathbi{y}_1$,因此他得到了最高的风险分数-0.50,第二列的模型相对于第一列的模型得到了一个更好的分数-0.61,第三列得到的分数最高,为-0.71。通过将概率质量集中在$\mathbi{y}_1$上,可以进一步降低风险。通过最大程度地减少训练数据的风险分数,我们期望获得一个与标准答案非常相关的模型。
\parinterval\ref{fig:13-24}的右半边展示了优化过程中的四个模型,顺序为从差到好。{\red 根据和标准答案$\widetilde{\mathbi{y}}_i$计算出的损失函数,}从上到下的三个模型预测输出我们用$\mathbi{y}_1$$\mathbi{y}_2$$\mathbi{y}_3$表示($\mathbi{y}_1$:“今天 天气 很 好”,$\mathbi{y}_2$:“今天 天气 不错”,$\mathbi{y}_3$:“今天 天 很 晴朗”),显然$\mathbi{y}_1$是最好的候选,$\mathbi{y}_3$是次优的候选,$\mathbi{y}_2$是最差的候选,$\mathbi{y}_1>\mathbi{y}_3>\mathbi{y}_2$。第一列的模型以和标准答案相反的顺序排序所有候选结果,$\mathbi{y}_2>\mathbi{y}_3>\mathbi{y}_1$,因此他得到了最高的风险分数-0.50,第二列的模型相对于第一列的模型得到了一个更好的分数-0.61,第三列得到的分数最高,为-0.71。通过将概率质量集中在$\mathbi{y}_1$上,可以进一步降低风险。通过最大程度地减少训练数据的风险分数,我们期望获得一个与标准答案非常相关的模型。
%----------------------------------------------
\begin{figure}[htp]
......@@ -595,13 +593,20 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\subsubsection{2. 基于演员-评论家的增强学习方法}
\parinterval 对于基于策略的增强学习方法来说,它的目标是寻找一个策略$\funp{p}(\textrm{a}|\hat{\mathbi{y}}_{1 \ldots t},\mathbi{x})$,使得该策略选择的行动a未来可以获得的奖励期望{\red (后面期望下标中的a是不是加多了?另外原始word里面大小y混用,没有解释小y是什么。另外感觉这个公式太复杂了,没有解释的很清楚,要是解释不清楚的话建议删掉)}$\funp{Q}(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t},\widetilde{\mathbi{y}}) = \mathbb{E}_{\hat{\mathbi{y}}_{1 \ldots T} \sim \funp{p}(\textrm{a}|\hat{\mathbi{y}}_{1 \ldots t} \textrm{a},\mathbi{x})}[\funp{r}_t(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t-1},\widetilde{\mathbi{y}}) + \sum_{i=t+1}^T\funp{r}_i(\hat{\mathbi{y}}_i;\hat{\mathbi{y}}_{1 \ldots i-1}\textrm{a}\hat{\mathbi{y}}_{t+1 \ldots i},\widetilde{\mathbi{y}})]$(也被称为动作价值函数)最大化,其中$\funp{r}_t(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t-1},\widetilde{\mathbi{y}})$$t$时刻做出行动a获得的奖励,$\mathbi{x}$是源语句子,$\widetilde{\mathbi{y}}$是正确答案,$\hat{\mathbi{y}}_{1 \ldots t}$是策略$\funp{p}$产生的译文的前$t$个词。其{\red (在一个源语句子X上的)}目标函数可以表示为公式\eqref{eq:13-15}{\red (下面A没解释)}
\parinterval 对于基于策略的增强学习方法来说,它的目标是寻找一个策略$\funp{p}(\textrm{a}|\hat{\mathbi{y}}_{1 \ldots t},\mathbi{x})$,使得该策略选择的行动a未来可以获得的奖励期望(也被称为动作价值函数)最大化:
\begin{eqnarray}
\funp{Q}(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t},\widetilde{\mathbi{y}}) & = & \mathbb{E}_{\hat{\mathbi{y}}_{t+1 \ldots T} \sim \funp{p}(\textrm{a}|\hat{\mathbi{y}}_{1 \ldots t} \textrm{a},\mathbi{x})}[\funp{r}_t(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t-1},\widetilde{\mathbi{y}}) \nonumber \\
& + & \sum_{i=t+1}^T\funp{r}_i(\hat{\mathbi{y}}_i;\hat{\mathbi{y}}_{1 \ldots i-1}\textrm{a}\hat{\mathbi{y}}_{t+1 \ldots i},\widetilde{\mathbi{y}})]
\label{eq:13-35}
\end{eqnarray}
\noindent 其中$\funp{r}_t(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t-1},\widetilde{\mathbi{y}})$$t$时刻做出行动a获得的奖励,$\mathbi{x}$是源语句子,$\widetilde{\mathbi{y}}$是正确答案,$\hat{\mathbi{y}}_{1 \ldots t}$是策略$\funp{p}$产生的译文的前$t$个词,{\red $T$}。其(在一个源语句子X上的)定义的目标函数可以表示为:
\begin{eqnarray}
\max_{\funp{p}}\mathbb{E}_{\hat{\mathbi{y}} \sim \funp{p}(\hat{\mathbi{y}} | \mathbi{x})}\sum_{t=1}^T\sum_{\textrm{a} \in \textrm{A}}\funp{p}(\textrm{a}|\hat{\mathbi{y}}_{1 \ldots t},\mathbi{x})\funp{Q}(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t},\widetilde{\mathbi{y}})
\label{eq:13-15}
\end{eqnarray}
\parinterval {\red (这段上面不好理解,这段开始是ok的)}计算动作价值函数$\funp{Q}$需要{\red 迭代}$t$时刻以后所有可能句子,而可能的句子数目是随着其长度指数级增长,因此我们只能估计$\funp{Q}$。基于策略的增强学习方法,如最小风险训练(风险$\vartriangle=-\funp{Q}$)等都使用了采样的方法来估计$\funp{Q}$。尽管采样估计的结果是$\funp{Q}$的无偏估计,但是它的缺点在于估计的方差比较大。而$\funp{Q}$直接关系到梯度更新的大小,不稳定的数值会导致网络更新不稳定,难以优化。
\parinterval 其中,\textrm{A}所有可能的行动组成的空间,也就是词表$V$。上式表示,计算动作价值函数$\funp{Q}$需要枚举$t$时刻以后所有可能句子,而可能的句子数目是随着其长度指数级增长,因此我们只能估计$\funp{Q}$。基于策略的增强学习方法,如最小风险训练(风险$\vartriangle=-\funp{Q}$)等都使用了采样的方法来估计$\funp{Q}$。尽管采样估计的结果是$\funp{Q}$的无偏估计,但是它的缺点在于估计的方差比较大。而$\funp{Q}$直接关系到梯度更新的大小,不稳定的数值会导致网络更新不稳定,难以优化。
\parinterval 为了避免采样的开销和随机性带来的不稳定,基于演员-评论家的增强学习方法\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}$的优化无法到达理论上的最优解。尽管如此,得益于神经网络强大的拟合能力,基于演员-评论家的增强学习方法仍更具优势。
......@@ -611,27 +616,28 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\label{eq:13-16}
\end{eqnarray}
\parinterval 与公式\eqref{eq:13-15}相比可以发现,基于演员-评论家的增强学习方法与基于策略的增强学习方法类似,公式\eqref{eq:13-16}对动作价值函数$\funp{Q}$的估计从采样换成了$\hat{\funp{Q}}${\red 对于目标函数里的期望,我们通常使用采样来进行逼近。借助与最小风险训练类似的方法,我们可以计算对$\funp{p}$的梯度来进行优化。(感觉这段讲不讲都行,没有帮助理解上面公式)}
\parinterval 与公式\eqref{eq:13-15}相比可以发现,基于演员-评论家的增强学习方法与基于策略的增强学习方法类似,公式\eqref{eq:13-16}对动作价值函数$\funp{Q}$的估计从采样换成了$\hat{\funp{Q}}$对于目标函数里的期望,我们通常使用采样来进行逼近。借助与最小风险训练类似的方法,我们可以计算对$\funp{p}$的梯度来进行优化。
\parinterval 而对于评论家,它的优化目标则不是那么显而易见。尽管根据定义我们可以通过采样来估计$\funp{Q}$,然后使用该估计作为目标让$\hat{\funp{Q}}$进行拟合,但是这样会导致非常高的(采样)代价,同时可以想象,既然有了一个无偏估计,为什么还要用有偏估计$\hat{\funp{Q}}$呢?
\parinterval 回顾动作价值函数的定义,我们对它做适当的展开,可以得到如下等式:
\begin{eqnarray}
\funp{Q}(\hat{\mathbi{y}};\hat{\mathbi{y}}_{1 \ldots t-1},\mathbi{y}) & = & \funp{r}_t(\hat{\mathbi{y}}_t;\hat{\mathbi{y}}_{1 \ldots t-1},\mathbi{y}) + \sum_{\textrm{a} \in \textrm{A}}\funp{p}(\textrm{a}|\hat{\mathbi{y}}_{1 \ldots t},\mathbi{x})\funp{Q}(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t},\widetilde{\mathbi{y}})
\funp{Q}(\hat{\mathbi{y}};\hat{\mathbi{y}}_{1 \ldots t-1},\widetilde{\mathbi{y}}) & = & \funp{r}_t(\hat{\mathbi{y}}_t;\hat{\mathbi{y}}_{1 \ldots t-1},\widetilde{\mathbi{y}}) \nonumber \\
& + & \sum_{\textrm{a} \in \textrm{A}}\funp{p}(\textrm{a}|\hat{\mathbi{y}}_{1 \ldots t},\mathbi{x})\funp{Q}(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t},\widetilde{\mathbi{y}})
\label{eq:13-17}
\end{eqnarray}
\parinterval 这个等式也被称为贝尔曼方程\upcite{sutton2018reinforcement}。这个等式告诉我们$t-1$时刻的动作价值函数$\funp{Q}(\hat{\mathbi{y}};\hat{\mathbi{y}}_{1 \ldots t-1},\mathbi{y})$跟下一时刻$t$的动作价值函数$\funp{Q}(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t},\widetilde{\mathbi{y}})$之间的关系。因此我们可以很自然的使用等式右部作为等式左部$\funp{Q}(\hat{\mathbi{y}};\hat{\mathbi{y}}_{1 \ldots t-1},\mathbi{y})$的目标。而由于动作价值函数的输出是数值,通常会选用均方误差来计算目标函数值。
\parinterval 这个等式也被称为贝尔曼方程\upcite{sutton2018reinforcement}。这个等式告诉我们$t-1$时刻的动作价值函数$\funp{Q}(\hat{\mathbi{y}};\hat{\mathbi{y}}_{1 \ldots t-1},\widetilde{\mathbi{y}})$跟下一时刻$t$的动作价值函数$\funp{Q}(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t},\widetilde{\mathbi{y}})$之间的关系。因此我们可以很自然的使用等式右部作为等式左部$\funp{Q}(\hat{\mathbi{y}};\hat{\mathbi{y}}_{1 \ldots t-1},\widetilde{\mathbi{y}})$的目标。而由于动作价值函数的输出是数值,通常会选用均方误差来计算目标函数值。
\parinterval t时刻动作价值函数的目标如下:{\red (下面开始用q?)}
\begin{eqnarray}
\funp{q}_t & = & \funp{r}_t(\hat{\mathbi{y}}_t;\hat{\mathbi{y}}_{1 \ldots t-1},\mathbi{y}) + \sum_{\textrm{a} \in \textrm{A}}\funp{p}(\textrm{a}|\hat{\mathbi{y}}_{1 \ldots t},\mathbi{x})\hat{\funp{Q}}(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t},\widetilde{\mathbi{y}})
\funp{q}_t & = & \funp{r}_t(\hat{\mathbi{y}}_t;\hat{\mathbi{y}}_{1 \ldots t-1},\widetilde{\mathbi{y}}) + \sum_{\textrm{a} \in \textrm{A}}\funp{p}(\textrm{a}|\hat{\mathbi{y}}_{1 \ldots t},\mathbi{x})\hat{\funp{Q}}(\textrm{a};\hat{\mathbi{y}}_{1 \ldots t},\widetilde{\mathbi{y}})
\label{eq:13-18}
\end{eqnarray}
\parinterval 而评论家对应的目标函数则如下:
\begin{eqnarray}
\min_{\hat{\funp{Q}}}\sum_{t=1}^T{(\hat{\funp{Q}}(\hat{\mathbi{y}};\hat{\mathbi{y}}_{1 \ldots t-1},\mathbi{y}) - \funp{q}_t)}^2
\min_{\hat{\funp{Q}}}\sum_{t=1}^T{(\hat{\funp{Q}}(\hat{\mathbi{y}};\hat{\mathbi{y}}_{1 \ldots t-1},\widetilde{\mathbi{y}}) - \funp{q}_t)}^2
\label{eq:13-19}
\end{eqnarray}
......@@ -650,7 +656,7 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\begin{itemize}
\vspace{0.5em}
\item 多目标学习:演员的优化通常会引入额外的{\red MLE(好像之前没解释?)}目标函数,同时会使用MLE进行预训练。这样会简化训练,因为随机初始化的演员性能很差,很难获得有效的奖励。同时MLE作为一个额外的正则项也防止模型跑偏,加速收敛。
\item 多目标学习:演员的优化通常会引入额外的MLE目标函数,同时会使用MLE进行预训练。这样会简化训练,因为随机初始化的演员性能很差,很难获得有效的奖励。同时MLE作为一个额外的正则项也防止模型跑偏,加速收敛。
\vspace{0.5em}
\item 目标网络:评论家的优化目标是由自身输出所构造。当模型更新比较快的时候模型的输出变化也会很快,导致构造的优化目标不稳定,影响模型收敛。一个解决方案是在一定更新次数内固定构造优化目标使用的模型,然后再使用比较新的模型来构造后续一定更新次数内的优化目标,如此往复\upcite{DBLP:journals/nature/SilverHMGSDSAPL16}
\vspace{0.5em}
......@@ -783,7 +789,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\sectionnewpage
\section{基于样本价值的学习}
\parinterval 当人在学习知识时,通常会遵循序渐进、由易到难的原则,这是一种很自然的学习策略。但是,当训练机器翻译模型时,通常是将全部的样本以随机的方式输入模型中进行学习,换句话说,就是让模型来平等地对待所有的训练样本。这种方式忽略了样本对于模型训练的“价值”,显然,更加理想的方式是使用高价值的样本对模型进行训练。围绕训练样本的价值差异引发了诸如数据选择、主动学习、课程学习等一系列的学习策略,这些学习策略本质上是在不同任务、不同背景、不同假设下对如何高效的利用样本来进行学习这一问题的解决方法,本节即对这些相关技术进行介绍。
\parinterval 当人在学习知识时,通常会遵循序渐进、由易到难的原则,这是一种很自然的学习策略。但是,当训练机器翻译模型时,通常是将全部的样本以随机的方式输入模型中进行学习,换句话说,就是让模型来平等地对待所有的训练样本。这种方式忽略了样本对于模型训练的“价值”,显然,更加理想的方式是使用高价值的样本对模型进行训练。围绕训练样本的价值差异引发了诸如数据选择、主动学习、课程学习等一系列的学习策略,这些学习策略本质上是在不同任务、不同背景、不同假设下对如何高效的利用样本来进行学习这一问题的解决方法,本节即对这些相关技术进行介绍。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -815,7 +821,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\vspace{0.5em}
\item 基于文本分类的方法\upcite{DBLP:conf/conll/ChenH16,chen2016bilingual,DBLP:conf/aclnmt/ChenCFL17,DBLP:conf/wmt/DumaM17}。将该问题转化为文本分类问题,先构造一个领域分类器,之后利用该分类器对给定的句子进行领域分类,最后用输出的概率来打分,选择目标领域预测得分高的样本。
\vspace{0.5em}
\item 基于{\small\bfnew{特征衰减算法}}\index{特征衰减算法}(Feature Decay Algorithms\index{Feature Decay Algorithms},FDA)的方法\upcite{DBLP:conf/wmt/BiciciY11,poncelas2018feature,DBLP:conf/acl/SotoSPW20,DBLP:journals/corr/abs-1811-03039}。该算法基于特征匹配,试图从源领域中提取出一个句子集合,这些句子能够使目标领域语言特征的覆盖范围最大化
\item 基于{\small\bfnew{特征衰减算法}}\index{特征衰减算法}(Feature Decay Algorithms\index{Feature Decay Algorithms},FDA)的方法\upcite{DBLP:conf/wmt/BiciciY11,poncelas2018feature,DBLP:conf/acl/SotoSPW20,DBLP:journals/corr/abs-1811-03039}。该算法基于特征匹配,试图从源领域中提取出一个句子集合,这些句子能够最大化覆盖目标领域的语言特征
\vspace{0.5em}
\end{itemize}
......@@ -841,7 +847,7 @@ 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}所示(画图的时候zh-gloss那行不要了,zh翻译为汉语{\color{red} 例子是别人的,还是自己造的?})。
\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})。
%----------------------------------------------
\begin{figure}[htp]
......@@ -852,7 +858,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\end{figure}
%-------------------------------------------
\parinterval 图中的汉语句子中缺少了一部分翻译,但这两个句子都很流畅,简单的基于长度或双语词典的方法可以很容易地对其进行过滤({\color{red} 过滤啥?})。但是,这个训练样本对于训练机器翻译模型仍然有用,特别是在数据稀缺的情况下,因为汉语句子和英语句子的前半部分仍然是正确的互译结果。这表明了噪声数据的微妙之处,它不是一个简单的二元分类问题:一些训练样本可能部分有用,而它们的有用性也可能随着训练的进展而改变。因此简单的过滤并不一种很好的办法,一种合理的学习策略应该是既可以合理的利用这些数据,又不让其对模型产生负面影响。直觉上,这是一个动态的过程,当模型能力较弱时(比如在训练初期),这些数据就能对模型起到正面作用,反之亦然。受课程学习、微调等方法的启发,研究人员也提出了类似的学习策略,它的主要思想是:在训练过程中对批量数据的噪声水平进{\small\bfnew{退火}}\index{退火}(Anneal)\index{Anneal},使得模型在越来越干净的数据上进行训练\upcite{DBLP:conf/wmt/WangWHNC18,DBLP:conf/acl/WangCC19}。从宏观上看,整个训练过程其实是一个持续微调的过程,这和微调的思想基本一致。这种学习策略一方面充分利用了训练数据,一方面又避免了噪声数据对模型的负面影响,因此取得了不错的效果。
\parinterval 一方面来说,虽然图中这两个句子都很流畅,但是由于汉语句子中缺少了一部分翻译,因此简单的基于长度或双语词典的方法可以很容易将其过滤掉。从另一方面来说,这个训练样本对于训练机器翻译模型仍然有用,特别是在数据稀缺的情况下,因为汉语句子和英语句子的前半部分仍然是正确的互译结果。这表明了噪声数据的微妙之处,它不是一个简单的二元分类问题:一些训练样本可能部分有用,而它们的有用性也可能随着训练的进展而改变。因此简单的过滤并不一种很好的办法,一种合理的学习策略应该是既可以合理的利用这些数据,又不让其对模型产生负面影响。直觉上,这是一个动态的过程,当模型能力较弱时(比如在训练初期),这些数据就能对模型起到正面作用,反之亦然。受课程学习、微调等方法的启发,研究人员也提出了类似的学习策略,它的主要思想是:在训练过程中对批量数据的噪声水平进{\small\bfnew{退火}}\index{退火}(Anneal)\index{Anneal},使得模型在越来越干净的数据上进行训练\upcite{DBLP:conf/wmt/WangWHNC18,DBLP:conf/acl/WangCC19}。从宏观上看,整个训练过程其实是一个持续微调的过程,这和微调的思想基本一致。这种学习策略一方面充分利用了训练数据,一方面又避免了噪声数据对模型的负面影响,因此取得了不错的效果。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -860,7 +866,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\subsubsection{3. 主动学习}
\parinterval {\small\bfnew{主动学习}}\index{主动学习}(Active Learning\index{Active Learning})也是一种数据选择策略。它最初的应用场景式是:标注大量的数据成本过高,因此希望优先标注对模型最有价值的数据,这样可以最大化模型学习的效率,同时整体降低标注的代价。主动学习主要由五个部分组成({\color{red} 再确定一下Active learning with sampling by uncertainty and density for word sense disambiguation and text classification还是Active learning with sampling by uncertainty and density for data annotations还是Active learning for word sense disambiguation with methods for addressing the class imbalance problem等等},包括:未标注样本池、筛选策略、标注者、标注样本集、目标模型。在主动学习过程中,会根据当前的模型状态找到未标注样本池中最优价值的样本,之后送给标注者。标注结束后,会把标注的样本加入到标注样本集中,之后用这些标注的样本更新模型。之后,重复这个过程,直到到达某种收敛状态。
\parinterval {\small\bfnew{主动学习}}\index{主动学习}(Active Learning\index{Active Learning})也是一种数据选择策略。它最初的应用场景式是:标注大量的数据成本过高,因此希望优先标注对模型最有价值的数据,这样可以最大化模型学习的效率,同时整体降低标注的代价\upcite{DBLP:conf/coling/ZhuWH08}。主动学习主要由五个部分组成,包括:未标注样本池、筛选策略、标注者、标注样本集、目标模型。在主动学习过程中,会根据当前的模型状态找到未标注样本池中最优价值的样本,之后送给标注者。标注结束后,会把标注的样本加入到标注样本集中,之后用这些标注的样本更新模型。之后,重复这个过程,直到到达某种收敛状态。
\parinterval 主动学习的一个核心问题是:如何选择出那些最有价值的未标注样本?通常会假设模型认为最“难”的样本是最有价值的。具体实现有很多思路,例如,基于置信度的方法、基于分类错误的方法等等\upcite{DBLP:journals/tslp/ZhuM12,DBLP:conf/coling/ZhuWYT08}
......@@ -890,7 +896,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\vspace{0.5em}
\item 如何评估每个样本的难度?即设计评估样本学习难易度的准则,简称{\small\bfnew{难度评估准则}}\index{难度评估准则}(Difficulty Criteria\index{Difficulty Criteria}
\vspace{0.5em}
\item 以何种策略来规划训练数据?即何时为训练提供更复杂的数据,以及提供多少数据等,{\small\bfnew{课程规划}}\index{课程规划}(Curriculum Schedule\index{Curriculum Schedule}
\item 以何种策略来规划训练数据?即何时为训练提供更复杂的数据,以及提供多少数据等,{\small\bfnew{课程规划}}\index{课程规划}(Curriculum Schedule\index{Curriculum Schedule}
\vspace{0.5em}
\end{itemize}
......@@ -926,13 +932,13 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\subsection{持续学习}
\parinterval 人类具有不断学习、调整和转移知识的能力,这种能力称之为{\small\bfnew{持续学习}}\index{持续学习}(Continual Learning\index{Continual Learning}),也叫{\small\bfnew{终生学习}}(Lifelong Learning\index{Lifelong Learning})、{\small\bfnew{增量式学习}}\index{增量式学习}(Incremental Learning\index{Incremental Learning})。人类学习的新任务时,会很自然的利用以前的知识并将新学习的知识整合到以前的知识中。然而对于机器学习系统来说,尤其在连接主义的范式下(如深度神经网络模型),这是一个很大的挑战,这是由神经网络的特性所决定的。当前的神经网络模型依赖于标注的训练样本,通过反向传播算法对模型参数进行训练更新,最终达到拟合数据分布的目的。当把模型切换到新的任务时,本质上是数据的分布发生了变化,从这种非平稳数据({\color{red} 如何理解非平衡?})分布中不断增量获取可用信息很容易导致{\small\bfnew{灾难性遗忘}}\index{灾难性遗忘}(Catastrophic Forgetting\index{Catastrophic Forgetting})问题,即用新数据训练模型的时候会干扰先前学习的知识。这是因为模型在学习新任务时,为了最大程度地减少新任务的损失,会用新训练数据对整个网络权重进行更新,这很容易造成模型过分拟合新的数据,忘记旧数据中的知识。甚至,这在最坏的情况下会导致旧知识被新知识完全重写。在机器翻译,类似的问题经常发生不断增加数据的场景中,因为当用户使用少量数据对模型进行更新之后,发现在旧的数据上的性能下降了(见{\chaptereighteen})。
\parinterval 人类具有不断学习、调整和转移知识的能力,这种能力称之为{\small\bfnew{持续学习}}\index{持续学习}(Continual Learning\index{Continual Learning}),也叫{\small\bfnew{终生学习}}(Lifelong Learning\index{Lifelong Learning})、{\small\bfnew{增量式学习}}\index{增量式学习}(Incremental Learning\index{Incremental Learning})。人类学习的新任务时,会很自然的利用以前的知识并将新学习的知识整合到以前的知识中。然而对于机器学习系统来说,尤其在连接主义的范式下(如深度神经网络模型),这是一个很大的挑战,这是由神经网络的特性所决定的。当前的神经网络模型依赖于标注的训练样本,通过反向传播算法对模型参数进行训练更新,最终达到拟合数据分布的目的。当把模型切换到新的任务时,本质上是数据的分布发生了变化,从这种分布差异过大的数据中不断增量获取可用信息很容易导致{\small\bfnew{灾难性遗忘}}\index{灾难性遗忘}(Catastrophic Forgetting\index{Catastrophic Forgetting})问题,即用新数据训练模型的时候会干扰先前学习的知识。这是因为模型在学习新任务时,为了最大程度地减少新任务的损失,会用新训练数据对整个网络权重进行更新,这很容易造成模型过分拟合新的数据,忘记旧数据中的知识。甚至,这在最坏的情况下会导致旧知识被新知识完全重写。在机器翻译,类似的问题经常发生不断增加数据的场景中,因为当用户使用少量数据对模型进行更新之后,发现在旧的数据上的性能下降了(见{\chaptereighteen})。
\parinterval 为克服灾难性遗忘问题,学习系统一方面必须能连续获取新知识和完善现有知识,另一方面,还应防止新数据输入明显干扰现有的知识,这个问题称作{\small\bfnew{稳定性-可塑性}}\index{稳定性- 可塑性}(Stability-Plasticity\index{Stability-Plasticity})问题。可塑性指整合新知识的能力,稳定性指在编码时会保留先前的知识不至于遗忘。要解决这些问题,就需要模型在保留先前任务的知识与学习当前任务的新知识之间取得平衡。目前的解决方法可以分为以下几类:
\begin{itemize}
\vspace{0.5em}
\item 基于正则化的方法。通过对神经权重的更新施加约束来减轻灾难性的遗忘,通常是在损失函数中引入了一个额外的正则化项,使得模型在学习新数据时巩固先前的知识\upcite{DBLP:journals/pami/LiH18a}{\red Elastic Weight Consolidation}
\item 基于正则化的方法。通过对神经权重的更新施加约束来减轻灾难性的遗忘,通常是在损失函数中引入了一个额外的正则化项,使得模型在学习新数据时巩固先前的知识\upcite{DBLP:journals/pami/LiH18a,DBLP:conf/iccv/TrikiABT17}
\vspace{0.5em}
\item 基于实例的方法。以原始格式存储样本,或使用生成模型生成伪样本,在学习新任务的同时重放先前的任务样本以减轻遗忘\upcite{DBLP:conf/cvpr/RebuffiKSL17,DBLP:conf/eccv/CastroMGSA18}
\vspace{0.5em}
......@@ -959,7 +965,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\item 强化学习在MT的应用?
\vspace{0.5em}
\item 从广义上说,大多数课程学习方法都是遵循由易到难的原则,然而在实践过程中人们逐渐赋予了课程学习更多的内涵,课程学习的含义早已超越了最原始的定义。一方面,课程学习可以与许多任务相结合,此时,评估准则并不一定总是样本的困难度,这取决于具体的任务,比如在{\small\bfnew{多任务学习}}\index{多任务学习}(multi-task learning)\index{multi-task learning}\upcite{DBLP:conf/cvpr/PentinaSL15,DBLP:conf/iccvw/SarafianosGNK17},指的任务的难易程度或相关性;在领域适应任务中\upcite{DBLP:conf/naacl/ZhangSKMCD19},指的是数据与领域的相似性;在噪声数据场景中,指的是样本的可信度\upcite{DBLP:conf/acl/WangCC19}。另一方面,在一些任务或数据中,由易到难并不总是有效,有时困难优先反而会取得更好的效果\upcite{DBLP:conf/medprai/SurendranathJ18,zhang2018empirical},实际上这和我们的直觉不太符合,一种合理的解释是课程学习更适合标签噪声、离群值较多或者是目标任务困难的场景,能提高模型的健壮性和收敛速度,而困难优先则更适合数据集干净的场景,能使随机梯度下降更快更稳定\upcite{DBLP:conf/nips/ChangLM17}{\color{red} 这段写得不错!}
\item 从广义上说,大多数课程学习方法都是遵循由易到难的原则,然而在实践过程中人们逐渐赋予了课程学习更多的内涵,课程学习的含义早已超越了最原始的定义。一方面,课程学习可以与许多任务相结合,此时,评估准则并不一定总是样本的困难度,这取决于具体的任务,比如在{\small\bfnew{多任务学习}}\index{多任务学习}(multi-task learning)\index{multi-task learning}\upcite{DBLP:conf/cvpr/PentinaSL15,DBLP:conf/iccvw/SarafianosGNK17},指的任务的难易程度或相关性;在领域适应任务中\upcite{DBLP:conf/naacl/ZhangSKMCD19},指的是数据与领域的相似性;在噪声数据场景中,指的是样本的可信度\upcite{DBLP:conf/acl/WangCC19}。另一方面,在一些任务或数据中,由易到难并不总是有效,有时困难优先反而会取得更好的效果\upcite{DBLP:conf/medprai/SurendranathJ18,zhang2018empirical},实际上这和我们的直觉不太符合,一种合理的解释是课程学习更适合标签噪声、离群值较多或者是目标任务困难的场景,能提高模型的健壮性和收敛速度,而困难优先则更适合数据集干净的场景,能使随机梯度下降更快更稳定\upcite{DBLP:conf/nips/ChangLM17}
\vspace{0.5em}
\end{itemize}
......@@ -52,7 +52,7 @@
\subsubsection{1. 位置编码}\label{subsubsec-15.1.1}
\parinterval {\red 对于一个序列,位置编码是在描述对不同位置的偏置信息(感觉不太通顺?)}。常见的技术手段为:在初始的输入中加入统计的偏置信息,如正余弦函数\upcite{vaswani2017attention}, 或在计算每层的注意力权重时加入偏置信息。在介绍相对位置编码之前,首先简要回顾一下自注意力机制的计算流程(见{\chaptertwelve})。首先,可以定义:
\parinterval 对于一个序列,位置编码描述了不同位置的偏置信息。常见的技术手段为:在初始的输入中加入统计的偏置信息,如正余弦函数\upcite{vaswani2017attention}, 或在计算每层的注意力权重时加入偏置信息。在介绍相对位置编码之前,首先简要回顾一下自注意力机制的计算流程(见{\chaptertwelve})。首先,可以定义:
\begin{eqnarray}
\mathbi{Q} & = & \mathbi{x} \mathbi{W}_Q \\
\mathbi{K} & = & \mathbi{x} \mathbi{W}_K \\
......@@ -90,7 +90,7 @@
\textrm{clip}(x,k) &=& \max(-k,\min(k,x)) \label{eq:15-9}
\end{eqnarray}
\noindent {\red 其中$\mathbi{w}^K$$\mathbi{w}^V$是模型中可学习的参数矩阵,$\mathbi{w}^{K}_{i},\mathbi{w}^{V}_{i}\in \mathbb{R}^{d_k}$$\textrm{clip}$表示截断操作。这里通过预先设定的最大相对位置$k$,强化模型对当前词为中心的左右各$k$个词的注意力计算。因此,最终的窗口大小为$2k + 1$。对于边缘位置窗口大小不足$2k$的单词,采用了裁剪的机制,即只对有效的临近词进行建模。}此时,注意力模型的计算可以调整为公式\ref{eq:15-4}
\noindent 其中$\mathbi{w}^K$$\mathbi{w}^V$是模型中可学习的参数矩阵,$\mathbi{w}^{K}_{i},\mathbi{w}^{V}_{i}\in \mathbb{R}^{d_k}$$\textrm{clip}$表示截断操作。可以发现$\mathbi{a}^K$$\mathbi{a}^V$是根据输入数据对\mathbi{w}进行查找得到的相对位置表示,这里通过预先设定的最大相对位置$k$,强化模型对当前词为中心的左右各$k$个词的注意力计算。因此,最终的窗口大小为$2k + 1$。对于边缘位置窗口大小不足$2k$的单词,采用了裁剪的机制,即只对有效的临近词进行建模。此时,注意力模型的计算可以调整为公式\ref{eq:15-4}
\begin{eqnarray}
\mathbi{z}_{i} &=& \sum_{j=1}^m \alpha_{ij}(\mathbi{x}_j \mathbi{W}_V + \mathbi{a}_{ij}^V)
\label{eq:15-4}
......@@ -124,7 +124,7 @@ A_{ij}^{rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\math
\label{eq:15-12}
\end{eqnarray}
\noindent 其中,$A_{ij}^{rel}$为使用相对位置编码后的表示。公式中各项的含义为:(a)表示基于内容的表征,(b)表示基于内容的位置偏置,(c)表示全局内容的偏置,(d) 表示全局位置的偏置。公式\eqref{eq:15-11}中的(a)、(b)两项与前面介绍的相对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置编码引入了额外的线性变换矩阵。同时兼顾了全局内容偏置{\color{red} 啥是全局内容偏置?}和全局位置偏置,可以更好地利用正余弦函数的归纳偏置特性。
\noindent 其中,$A_{ij}^{rel}$为使用相对位置编码后的表示。公式中各项的含义为:(a)表示基于内容的表征,(b)表示基于内容的位置偏置,(c)表示全局内容的偏置,(d) 表示全局位置的偏置。公式\eqref{eq:15-11}中的(a)、(b)两项与前面介绍的相对位置编码一致\upcite{Shaw2018SelfAttentionWR},并针对相对位置编码引入了额外的线性变换矩阵。同时兼顾了全局内容偏置和全局位置偏置,可以更好地利用正余弦函数的归纳偏置特性。
\vspace{0.5em}
\item {\small\bfnew{结构化位置编码}}\index{基于结构化位置编码}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}。 对比序列化的位置编码手段,引入结构化位置表示。通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置,并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。
......@@ -150,7 +150,7 @@ A_{ij}^{rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\math
\label{eq:15-13}
\end{eqnarray}
形式上,可以用自注意力机制中计算得到的中间表示来预测高斯分布的中心和偏差,得到高斯分布$\mathbi{G}$后,累加在模型计算得到的相关性系数之上再进行归一化计算({\color{red} 这句话没读懂,感觉太绕}{\red{下面图片中的曲线再调整一下}}
这里,高斯分布G的中心与偏差的值依赖于自注意力机制中的中间表示,得到高斯分布$\mathbi{G}$后,累加在模型计算得到的相关性系数之上再进行归一化计算{\red{下面图片中的曲线再调整一下}}
%----------------------------------------------
......@@ -259,16 +259,6 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\begin{itemize}
\vspace{0.5em}
\item Weighted Transformer\upcite{DBLP:journals/corr/abs-1711-02132}。其主要思想是在多头自注意力机制的基础上保留不同表示空间的特征。传统方法使用级联操作并通过线性映射矩阵来融合不同头之间的信息,而Weighted Transformer直接利用线性映射矩阵$\mathbi{W} \in \mathbb{R}^{d_k \times d_{model}}$将维度为$d_k$ 的向量表示映射到$d_{model}$,并赋予适当的权重。之后分别送入每个分支中的前馈神经网络,对得到的不同分支输出进行线性加权。但是,这个模型的计算复杂度要大于标准的Transformer模型。
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=0.4]{./Chapter15/Figures/figure-weighted-transformer-network-structure.png}
\caption{Weighted Transformer网络结构({\color{red} 这个图是不是有些太复杂了,读者能看懂?}}
\label{fig:15-5}
\end{figure}
%-------------------------------------------
\vspace{0.5em}
\item 多分支注意力模型\upcite{DBLP:journals/corr/abs-2006-10270}。相比于Weighted Transformer模型,多分支注意力模型直接利用每个分支独立地进行自注意力网络的计算(图\ref{fig:15-6})。同时为了避免结构相同的多个多头注意力机制之间的协同适应,使用基于分支的dropout方法在训练过程中以一定的概率随机地丢弃一些分支。
......@@ -286,15 +276,6 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\vspace{0.5em}
\end{itemize}
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=0.4]{./Chapter15/Figures/figure-multi-cell-transformer.png}
\caption{多单元Transformer({\color{red} 我建议这个图就不用了,因为也没有解释}}
\label{fig:15-7}
\end{figure}
%-------------------------------------------
\parinterval 此外,在\ref{subsec-15.1.1}节中曾提到过,利用卷积神经网络可以与自注意力机制形成互补。类似的想法在多分支结构中也有体现,如图\ref{fig:15-8}所示,可以使用自注意力机制和卷积神经网络分别提取全局和局部两种依赖关系\upcite{DBLP:conf/iclr/WuLLLH20}。具体的做法是将输入的特征向量切分成等同维度的两部分,之后分别送入两个分支进行计算。其中,全局信息使用自注意力机制进行提取,局部信息使用轻量卷积提取\upcite{Wu2019PayLA}。此外,由于每个分支的维度只有原始的一半,采用并行计算方式可以显著缩短模型的运行时间。
%----------------------------------------------
......@@ -332,9 +313,9 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\vspace{0.5em}
\item 分块注意力:顾名思义,就是将序列划分为固定大小的片段,在进行注意力机制的计算时,执行注意力计算每个词的表示时只在对应的片段内执行。这样,每一个片段内的注意力计算成本是固定的,可以大大降低处理长序列时的总体计算时间。\upcite{DBLP:conf/emnlp/QiuMLYW020,DBLP:conf/iclr/LiuSPGSKS18}
\vspace{0.5em}
\item 跨步注意力:该模式是一种稀疏的注意力机制,通常会设置一个固定的间隔,也就是说在计算注意力表示时,每隔固定数量的词后将下一个词纳入所需考虑的范围内,参与注意力的计算\upcite{DBLP:journals/corr/abs-2004-05150}。和分片段进行注意力类似,假设最终参与注意力计算的单词个数为$B$,共需要执行$\frac{N}{B}$次注意力计算,可以将计算复杂度缩减为$O(NB)$
\item 跨步注意力:该模式是一种稀疏的注意力机制,通常会设置一个固定的间隔,也就是说在计算注意力表示时,每隔固定数量的词后将下一个词纳入所需考虑的范围内,参与注意力的计算\upcite{DBLP:journals/corr/abs-2004-05150}。和分片段进行注意力类似,假设最终参与注意力计算的单词个数为$B$,共需要执行$N/B$次注意力计算,可以将计算复杂度缩减为$O(NB)$
\vspace{0.5em}
\item 内存压缩注意力:这种方式的主要的思想是使用一些合并操作,如卷积、池化等对序列进行下采样,来缩短序列长度。例如,使用{\small\bfnew{跨步卷积}}\index{跨步卷积}(Stride Convolution)\index{Stride Convolution}来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力矩阵计算时的复杂度\upcite{DBLP:conf/iclr/LiuSPGSKS18}。其具体的计算复杂度取决于跨步卷积时步幅的大小$K$,形式上可以理解为每$K$个词做一次特征融合后,将关注的目标缩减为$\frac{N}{K}$,整体的计算复杂度为$O(\frac{N^2}{K})$,相比于前两种方式的对局部进行注意力计算,该方式仍是对全局的建模。
\item 内存压缩注意力:这种方式的主要的思想是使用一些合并操作,如卷积、池化等对序列进行下采样,来缩短序列长度。例如,使用{\small\bfnew{跨步卷积}}\index{跨步卷积}(Stride Convolution)\index{Stride Convolution}来减少Key和Value的数量,即减少表示序列长度的维度的大小,Query的数量保持不变,从而减少了注意力矩阵计算时的复杂度\upcite{DBLP:conf/iclr/LiuSPGSKS18}。其具体的计算复杂度取决于跨步卷积时步幅的大小$K$,形式上可以理解为每$K$个词做一次特征融合后,将关注的目标缩减为$N/K$,整体的计算复杂度为$N^2/K$,相比于前两种方式的对局部进行注意力计算,该方式仍是对全局的建模。
\vspace{0.5em}
\end{itemize}
......@@ -929,12 +910,12 @@ lr &=& d_{model}^{-0.5}\cdot step\_num^{-0.5}
\noindent 可以翻译成:
\begin{equation}
\textrm{“私は緑茶を飲んでいます”} \nonumber
\textrm{“私は緑茶を飲んでいます} \nonumber
\end{equation}
\noindent 其中,“a cup of green tea”实际上只对应“緑茶”一个词({\color{red} 怎么看出来只对应一个词???})。使用句法树后,“a cup of green tea”会作为树中一个节点,这样可以容易把它作为一个整体进行翻译。
\parinterval 在标准的英文与日文互译过程中,英文短语“a cup of green tea”只会被翻译为“緑茶”一个词。在加入句法树后,“a cup of green tea”会作为树中一个节点,这样可以更容易把英文短语作为一个整体进行翻译。
\parinterval 是,这种自底向上的树结构表示方法也存在问题:每个树节点的状态并不能包含树中其它位置的信息。也就是说,从每个节点上看,其表示结果没有很好的利用上下文。因此,可以同时使用自下而上和自上而下的信息传递方式进行句法树的表示\upcite{Yang2017TowardsBH,DBLP:conf/acl/ChenHCC17},这样增加了树中每个节点对其覆盖的子树以及周围上下文的建模能力。如图\ref{fig:15-21}所示,$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$分别代表向上传输节点和向下传输节点的状态,虚线框代表了$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$会拼接到一起,并作为这个节点的整体表示参与注意力模型的计算。
\parinterval 是,这种自底向上的树结构表示方法也存在问题:每个树节点的状态并不能包含树中其它位置的信息。也就是说,从每个节点上看,其表示结果没有很好的利用上下文。因此,可以同时使用自下而上和自上而下的信息传递方式进行句法树的表示\upcite{Yang2017TowardsBH,DBLP:conf/acl/ChenHCC17},这样增加了树中每个节点对其覆盖的子树以及周围上下文的建模能力。如图\ref{fig:15-21}所示,$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$分别代表向上传输节点和向下传输节点的状态,虚线框代表了$\mathbi{h}^\textrm{up}$$\mathbi{h}^\textrm{down}$会拼接到一起,并作为这个节点的整体表示参与注意力模型的计算。
%----------------------------------------------
\begin{figure}[htp]
......@@ -953,13 +934,13 @@ lr &=& d_{model}^{-0.5}\cdot step\_num^{-0.5}
\parinterval 不同于直接对树结构进行编码,另一种方法是将单词、句法信息等信息直接转换为特征向量拼接到一起,作为机器翻译系统的输入\upcite{DBLP:conf/wmt/SennrichH16}。这种方法的优点在于,句法信息可以无缝融入到现有神经机器翻译框架,对系统结构的修改很小。以基于循环神经网络的翻译模型为例,对于输入序列的$i$个单词,可以用如下方式计算$i$时刻的表示结果:
\begin{eqnarray}
\mathbi{h}_i &=& \textrm{tanh}(\mathbi{W}(\|_{k=1}^{|F|}\mathbi{E}_h x_{ik}) + \mathbi{U}\mathbi{h}_{i-1})
\mathbi{h}_i &=& \textrm{tanh}(\mathbi{W}(\|_{k=1}^{F}\mathbi{E}_h x_{ik}) + \mathbi{U}\mathbi{h}_{i-1})
\label{eq:15-52}
\end{eqnarray}
\noindent 其中,$\mathbi{W}$是转换矩阵,$\mathbi{U}$是权重矩阵,$F$代表了特征的数量{\color{red} 特征的数量为啥还要加绝对值};而$\mathbi{E}$是一个特征矩阵,它包含了不同种类特征的数量,$x_{ik}$ 代表了第$i$ 个词在第$k$ 种特征中所表达的值,$\|$操作为拼接操作。公式\eqref{eq:15-52}将从共$F$个特征向量连接成固定大小的向量,作为编码端的输入。这种方法可以很容易地融合如词根、子词、形态、词性以及依存标签等特征。
\noindent 其中,$\mathbi{W}$是转换矩阵,$\mathbi{U}$是权重矩阵,$F$代表了特征的数量;而$\mathbi{E}$是一个特征矩阵,它包含了不同种类特征的数量,$x_{ik}$ 代表了第$i$ 个词在第$k$ 种特征中所表达的值,$\|$操作为拼接操作。公式\eqref{eq:15-52}将从共$F$个特征向量连接成固定大小的向量,作为编码端的输入。这种方法可以很容易地融合如词根、子词、形态、词性以及依存标签等特征。
\parinterval 另一种方式是将句法信息的表示转化为基于序列的编码,之后与原始的词串融合。这样做的好处在于,并不需要使用基于树结构的编码器,句法信息仍然可以使用基于序列的编码器。而句法信息可以在对句法树的序列化表示中学习得到。如图\ref{fig:15-22}(a) 所示,对于英语句子“I love dogs”,可以得到如图\ref{fig:15-22}(a) 所示的句法树。这里,使用$w_i$ 表示第$i$ 个单词,如图\ref{fig:15-22}(b) 所示。通过对句法树进行遍历,可以得到句法树节点的序列$\{l_1,l_2,...,l_T\}$,其中$T$表示句法树中节点的个数,$l_j$ 表示第$j$ 个节点({\color{red}$l$ 是不是在前面也用到过?而且怎么定义$j$?怎么遍历的树?}),如图\ref{fig:15-22}(c) 所示。通过观察句法树的结构可以看出({\color{red} 怎么看出来的?}),对一个单词来说,句法树中该单词的父节点({\color{red} 祖先节点及路径?})代表了描述该单词最准确的句法信息。因此可以单词祖先节点及路径信息与原始的词信息构造出新的融合表示${\mathbi{h}'}_i$,并使用这种新的表示计算上下文向量$\mathbi{C}$,即:
\parinterval 另一种方式是将句法信息的表示转化为基于序列的编码,之后与原始的词串融合。这样做的好处在于,并不需要使用基于树结构的编码器,句法信息仍然可以使用基于序列的编码器。而句法信息可以在对句法树的序列化表示中学习得到。如图\ref{fig:15-22}(a) 所示,对于英语句子“I love dogs”,可以得到如图\ref{fig:15-22}(a) 所示的句法树。这里,使用$w_i$ 表示第$i$ 个单词,如图\ref{fig:15-22}(b) 所示。通过对句法树进行先序遍历,可以得到句法树节点的序列$\{l_1,l_2,...,l_T\}$,其中$T$表示句法树中节点的个数,$l_j$表示树中的第$j$个节点的标签,如图\ref{fig:15-22}(c)所示,其为对\ref{fig:15-22}(a)句法树中的节点进行前序遍历之后的到的序列。因此将单词祖先节点及路径信息与原始的词信息构造出新的融合表示${\mathbi{h}'}_i$,并使用这种新的表示计算上下文向量$\mathbi{C}$,即:
\begin{eqnarray}
\mathbi{C}_j &=& \sum_{i=1}^m \alpha_{i,j} {\mathbi{h}'}_i
......@@ -981,7 +962,7 @@ lr &=& d_{model}^{-0.5}\cdot step\_num^{-0.5}
\vspace{0.5em}
\item 平行结构。利用两个编码端构成平行结构,分别对源语言单词和线性化的句法树进行建模,之后在句法树节点序列中寻找每个单词的父节点(或者祖先),将这个单词和它的父节点的状态相融合,得到新的表示。如图\ref{fig:15-23}(a)所示,图中$\mathbi{h}_{w_i}$为词$w_i$在单词序列中的状态,$\mathbi{h}_{l_j}$为树节点$l_j$在句法表示(序列)中的隐藏状态。如果单词$w_i$是节点$l_j$ 在句法树中的子节点,则将$\mathbi{h}_{w_i}$$\mathbi{h}_{l_j}$向量拼接到一起作为这个词的新表示${\mathbi{h}'}_i$
\vspace{0.5em}
\item 分层结构。将句法表示结果与源语言单词的词嵌入向量进行融合,如图\ref{fig:15-23}(b)所示,其中$\mathbi{e}_{w_i}$为第$i$个词的词嵌入。类似地,如果$w_i$词语是节点$l_j$在句法树中的子节点,则将$\mathbi{e}_{w_i}$$\mathbi{h}_{l_j}$向量拼接到一起作为原始模型的输入,这样${\mathbi{h}'}_i$直接参与注意力计算{\color{red} 这段话看不懂,不是和“平行结构”一样了吗?}。注意,分层结构和平行结构的区别在于,分层结构最终还是使用了一个编码器,句法信息只是与词嵌入进行融合,因此最终的结构和原始的模型是一致的;平行结构相当于使用了两个编码器,因此单词和句法信息的融合是在两个编码的输出上进行的;
\item 分层结构。将句法表示结果与源语言单词的词嵌入向量进行融合,如图\ref{fig:15-23}(b)所示,其中$\mathbi{e}_{w_i}$为第$i$个词的词嵌入。类似地,如果$w_i$词语是节点$l_j$在句法树中的子节点,则将$\mathbi{e}_{w_i}$$\mathbi{h}_{l_j}$向量拼接到一起作为原始模型的输入,这样${\mathbi{h}'}_i$直接参与注意力计算。与平行结构不同,分层结构可以把句法信息加到词级别,而平行结构是对词语信息进行抽取之后再加入句法信息。注意,分层结构和平行结构的区别在于,分层结构最终还是使用了一个编码器,句法信息只是与词嵌入进行融合,因此最终的结构和原始的模型是一致的;平行结构相当于使用了两个编码器,因此单词和句法信息的融合是在两个编码的输出上进行的;
\vspace{0.5em}
\item 混合结构。首先对图\ref{fig:15-22}(a)中句法树进行先序遍历,将句法标记和源语言单词融合到同一个序列中,得到如图\ref{fig:15-23}(c)所示序列。之后使用传统的序列编码器对这个序列进行编码,然后使用序列中源语言单词所对应的状态参与注意力模型的计算。有趣的是,相比于前两种方法,这种方法参数量少而且也十分有效\upcite{DBLP:conf/acl/LiXTZZZ17}
\vspace{0.5em}
......
......@@ -26,7 +26,7 @@
{\color{white}}
\vspace{1em}
\begin{center}
{\Huge \bfnew{后记}}
{\Huge \bfnew{\ \ \ }}
\end{center}
\vspace{2em}
......
......@@ -159,18 +159,6 @@
& & & 据规模较小 & \\
\rule{0pt}{15pt}NIST & Zh-En等 & 新闻翻译 & 评测集包括4句参 & {https://www.ldc.upenn.edu/coll} \\
& Cs Zh等 & & 考译文,质量较高 & aborations/evaluations/nist \\
\end{tabular}
\end{center}
}\end{table}
%----------------------------------------------
%----------------------------------------------
\begin{table}[htp]{
\footnotesize
\begin{center}
\begin{tabular}{p{1.6cm} | p{1.2cm} p{1.6cm} p{2.6cm} p{3.9cm}}
\rule{0pt}{15pt}{任务} & {语种} &{领域} &{描述} &{数据集地址} \\
\hline
\rule{0pt}{15pt}TVsub & Zh-En & 字幕翻译 & 数据抽取自电视剧 & {https://github.com/longyuewan} \\
& & & 字幕,用于对话中 & gdcu/tvsub \\
& & & 长距离上下文研究 & \\
......@@ -189,6 +177,7 @@
}\end{table}
%----------------------------------------------
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
......
......@@ -6929,6 +6929,25 @@ year={2012}
publisher={Conference on Empirical Methods in Natural Language Processing},
year={2020}
}
@inproceedings{DBLP:conf/coling/ZhuWH08,
author = {Jingbo Zhu and
Huizhen Wang and
Eduard H. Hovy},
title = {Multi-Criteria-Based Strategy to Stop Active Learning for Data Annotation},
publisher = {International Conference on Computational Linguistics},
pages = {1129--1136},
year = {2008}
}
@inproceedings{DBLP:conf/iccv/TrikiABT17,
author = {Amal Rannen Triki and
Rahaf Aljundi and
Matthew B. Blaschko and
Tinne Tuytelaars},
title = {Encoder Based Lifelong Learning},
pages = {1329--1337},
publisher = {{IEEE} International Conference on Computer Vision},
year = {2017}
}
%%%%% chapter 13------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论