Commit 91098f1e by 单韦乔

合并分支 'shanweiqiao' 到 'caorunzhe'

13章和15章

查看合并请求 !738
parents 9eb6848d 3f720cd9
...@@ -21,7 +21,7 @@ ...@@ -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} \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') \\ \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$>$') & ('wi','d') & ('wid','est$<$e$>$') & ('low','e') & ('lowe','r') & ('lower','$<$e$>$')
\end{tabular}}; \end{tabular}};
......
...@@ -174,7 +174,7 @@ ...@@ -174,7 +174,7 @@
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item 子词规范化方法\upcite{DBLP:conf/acl/Kudo18}。其思想是在训练过程中扰乱确定的子词边界,根据{\small\bfnew{1-gram Language Model}}\index{1-gram Language Model}(ULM)\index{ULM}采样出多种子词切分候选。通过最大化整个句子的概率为目标构建词表。在实现上,与上述基于Word Piece的方法略有不同,这里不做详细介绍。 \item 子词规范化方法\upcite{DBLP:conf/acl/Kudo18}。其思想是在训练过程中扰乱确定的子词边界,根据1-gram Language Model(ULM)采样出多种子词切分候选。通过最大化整个句子的概率为目标构建词表。在实现上,与上述基于Word Piece的方法略有不同,这里不做详细介绍。
\vspace{0.5em} \vspace{0.5em}
\item BPE-Dropout\upcite{provilkov2020bpe}。在训练时,通过在合并过程中按照一定概率$p$(介于0与1之间)随机丢弃一些可行的合并操作,从而产生不同的子词切分结果,进而增强模型健壮性。而在推断阶段,将$p$设置为0,等同于标准的BPE。总的来说,上述方法相当于在子词的粒度上对输入的序列进行扰动,进而达到增加训练健壮性的目的。 \item BPE-Dropout\upcite{provilkov2020bpe}。在训练时,通过在合并过程中按照一定概率$p$(介于0与1之间)随机丢弃一些可行的合并操作,从而产生不同的子词切分结果,进而增强模型健壮性。而在推断阶段,将$p$设置为0,等同于标准的BPE。总的来说,上述方法相当于在子词的粒度上对输入的序列进行扰动,进而达到增加训练健壮性的目的。
\vspace{0.5em} \vspace{0.5em}
...@@ -789,7 +789,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x}) ...@@ -789,7 +789,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\sectionnewpage \sectionnewpage
\section{基于样本价值的学习} \section{基于样本价值的学习}
\parinterval 当人在学习知识时,通常会遵循序渐进、由易到难的原则,这是一种很自然的学习策略。但是,当训练机器翻译模型时,通常是将全部的样本以随机的方式输入模型中进行学习,换句话说,就是让模型来平等地对待所有的训练样本。这种方式忽略了样本对于模型训练的“价值”,显然,更加理想的方式是使用高价值的样本对模型进行训练。围绕训练样本的价值差异引发了诸如数据选择、主动学习、课程学习等一系列的学习策略,这些学习策略本质上是在不同任务、不同背景、不同假设下对如何高效的利用样本来进行学习这一问题的解决方法,本节即对这些相关技术进行介绍。 \parinterval 当人在学习知识时,通常会遵循序渐进、由易到难的原则,这是一种很自然的学习策略。但是,当训练机器翻译模型时,通常是将全部的样本以随机的方式输入模型中进行学习,换句话说,就是让模型来平等地对待所有的训练样本。这种方式忽略了样本对于模型训练的“价值”,显然,更加理想的方式是使用高价值的样本对模型进行训练。围绕训练样本的价值差异引发了诸如数据选择、主动学习、课程学习等一系列的学习策略,这些学习策略本质上是在不同任务、不同背景、不同假设下对如何高效的利用样本来进行学习这一问题的解决方法,本节即对这些相关技术进行介绍。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
...@@ -821,7 +821,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x}) ...@@ -821,7 +821,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\vspace{0.5em} \vspace{0.5em}
\item 基于文本分类的方法\upcite{DBLP:conf/conll/ChenH16,chen2016bilingual,DBLP:conf/aclnmt/ChenCFL17,DBLP:conf/wmt/DumaM17}。将该问题转化为文本分类问题,先构造一个领域分类器,之后利用该分类器对给定的句子进行领域分类,最后用输出的概率来打分,选择目标领域预测得分高的样本。 \item 基于文本分类的方法\upcite{DBLP:conf/conll/ChenH16,chen2016bilingual,DBLP:conf/aclnmt/ChenCFL17,DBLP:conf/wmt/DumaM17}。将该问题转化为文本分类问题,先构造一个领域分类器,之后利用该分类器对给定的句子进行领域分类,最后用输出的概率来打分,选择目标领域预测得分高的样本。
\vspace{0.5em} \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} \vspace{0.5em}
\end{itemize} \end{itemize}
...@@ -847,7 +847,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x}) ...@@ -847,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{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] \begin{figure}[htp]
...@@ -858,7 +858,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x}) ...@@ -858,7 +858,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\end{figure} \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 % NEW SUBSUB-SECTION
...@@ -866,7 +866,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x}) ...@@ -866,7 +866,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\subsubsection{3. 主动学习} \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} \parinterval 主动学习的一个核心问题是:如何选择出那些最有价值的未标注样本?通常会假设模型认为最“难”的样本是最有价值的。具体实现有很多思路,例如,基于置信度的方法、基于分类错误的方法等等\upcite{DBLP:journals/tslp/ZhuM12,DBLP:conf/coling/ZhuWYT08}
...@@ -896,7 +896,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x}) ...@@ -896,7 +896,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\vspace{0.5em} \vspace{0.5em}
\item 如何评估每个样本的难度?即设计评估样本学习难易度的准则,简称{\small\bfnew{难度评估准则}}\index{难度评估准则}(Difficulty Criteria\index{Difficulty Criteria} \item 如何评估每个样本的难度?即设计评估样本学习难易度的准则,简称{\small\bfnew{难度评估准则}}\index{难度评估准则}(Difficulty Criteria\index{Difficulty Criteria}
\vspace{0.5em} \vspace{0.5em}
\item 以何种策略来规划训练数据?即何时为训练提供更复杂的数据,以及提供多少数据等,{\small\bfnew{课程规划}}\index{课程规划}(Curriculum Schedule\index{Curriculum Schedule} \item 以何种策略来规划训练数据?即何时为训练提供更复杂的数据,以及提供多少数据等,{\small\bfnew{课程规划}}\index{课程规划}(Curriculum Schedule\index{Curriculum Schedule}
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
...@@ -932,13 +932,13 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x}) ...@@ -932,13 +932,13 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\subsection{持续学习} \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})问题。可塑性指整合新知识的能力,稳定性指在编码时会保留先前的知识不至于遗忘。要解决这些问题,就需要模型在保留先前任务的知识与学习当前任务的新知识之间取得平衡。目前的解决方法可以分为以下几类: \parinterval 为克服灾难性遗忘问题,学习系统一方面必须能连续获取新知识和完善现有知识,另一方面,还应防止新数据输入明显干扰现有的知识,这个问题称作{\small\bfnew{稳定性-可塑性}}\index{稳定性- 可塑性}(Stability-Plasticity\index{Stability-Plasticity})问题。可塑性指整合新知识的能力,稳定性指在编码时会保留先前的知识不至于遗忘。要解决这些问题,就需要模型在保留先前任务的知识与学习当前任务的新知识之间取得平衡。目前的解决方法可以分为以下几类:
\begin{itemize} \begin{itemize}
\vspace{0.5em} \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} \vspace{0.5em}
\item 基于实例的方法。以原始格式存储样本,或使用生成模型生成伪样本,在学习新任务的同时重放先前的任务样本以减轻遗忘\upcite{DBLP:conf/cvpr/RebuffiKSL17,DBLP:conf/eccv/CastroMGSA18} \item 基于实例的方法。以原始格式存储样本,或使用生成模型生成伪样本,在学习新任务的同时重放先前的任务样本以减轻遗忘\upcite{DBLP:conf/cvpr/RebuffiKSL17,DBLP:conf/eccv/CastroMGSA18}
\vspace{0.5em} \vspace{0.5em}
...@@ -965,7 +965,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x}) ...@@ -965,7 +965,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\item 强化学习在MT的应用? \item 强化学习在MT的应用?
\vspace{0.5em} \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} \vspace{0.5em}
\end{itemize} \end{itemize}
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
\subsubsection{1. 位置编码}\label{subsubsec-15.1.1} \subsubsection{1. 位置编码}\label{subsubsec-15.1.1}
\parinterval {\red 对于一个序列,位置编码是在描述对不同位置的偏置信息(感觉不太通顺?)}。常见的技术手段为:在初始的输入中加入统计的偏置信息,如正余弦函数\upcite{vaswani2017attention}, 或在计算每层的注意力权重时加入偏置信息。在介绍相对位置编码之前,首先简要回顾一下自注意力机制的计算流程(见{\chaptertwelve})。首先,可以定义: \parinterval 对于一个序列,位置编码描述了不同位置的偏置信息。常见的技术手段为:在初始的输入中加入统计的偏置信息,如正余弦函数\upcite{vaswani2017attention}, 或在计算每层的注意力权重时加入偏置信息。在介绍相对位置编码之前,首先简要回顾一下自注意力机制的计算流程(见{\chaptertwelve})。首先,可以定义:
\begin{eqnarray} \begin{eqnarray}
\mathbi{Q} & = & \mathbi{x} \mathbi{W}_Q \\ \mathbi{Q} & = & \mathbi{x} \mathbi{W}_Q \\
\mathbi{K} & = & \mathbi{x} \mathbi{W}_K \\ \mathbi{K} & = & \mathbi{x} \mathbi{W}_K \\
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
\textrm{clip}(x,k) &=& \max(-k,\min(k,x)) \label{eq:15-9} \textrm{clip}(x,k) &=& \max(-k,\min(k,x)) \label{eq:15-9}
\end{eqnarray} \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} \begin{eqnarray}
\mathbi{z}_{i} &=& \sum_{j=1}^m \alpha_{ij}(\mathbi{x}_j \mathbi{W}_V + \mathbi{a}_{ij}^V) \mathbi{z}_{i} &=& \sum_{j=1}^m \alpha_{ij}(\mathbi{x}_j \mathbi{W}_V + \mathbi{a}_{ij}^V)
\label{eq:15-4} \label{eq:15-4}
...@@ -124,7 +124,7 @@ A_{ij}^{rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\math ...@@ -124,7 +124,7 @@ A_{ij}^{rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\math
\label{eq:15-12} \label{eq:15-12}
\end{eqnarray} \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} \vspace{0.5em}
\item {\small\bfnew{结构化位置编码}}\index{基于结构化位置编码}(Structural Position Representations)\index{Structural Position Representations}\upcite{DBLP:conf/emnlp/WangTWS19a}。 对比序列化的位置编码手段,引入结构化位置表示。通过对输入句子进行依存句法分析得到句法树,根据叶子结点在句法树中的深度来表示其绝对位置,并在此基础上利用相对位置编码的思想计算节点之间的相对位置信息。 \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 ...@@ -150,7 +150,7 @@ A_{ij}^{rel} &=& \underbrace{\mathbi{E}_{x_i}\mathbi{W}_Q\mathbi{W}_{K}^{T}\math
\label{eq:15-13} \label{eq:15-13}
\end{eqnarray} \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} ...@@ -259,16 +259,6 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\begin{itemize} \begin{itemize}
\vspace{0.5em} \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模型。 \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} \vspace{0.5em}
\item 多分支注意力模型\upcite{DBLP:journals/corr/abs-2006-10270}。相比于Weighted Transformer模型,多分支注意力模型直接利用每个分支独立地进行自注意力网络的计算(图\ref{fig:15-6})。同时为了避免结构相同的多个多头注意力机制之间的协同适应,使用基于分支的dropout方法在训练过程中以一定的概率随机地丢弃一些分支。 \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} ...@@ -286,15 +276,6 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \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}。此外,由于每个分支的维度只有原始的一半,采用并行计算方式可以显著缩短模型的运行时间。 \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} ...@@ -332,9 +313,9 @@ C(\mathbi{x}_j \mathbi{W}_K,\omega) &=& (\mathbi{x}_{j-\omega},\ldots,\mathbi{x}
\vspace{0.5em} \vspace{0.5em}
\item 分块注意力:顾名思义,就是将序列划分为固定大小的片段,在进行注意力机制的计算时,执行注意力计算每个词的表示时只在对应的片段内执行。这样,每一个片段内的注意力计算成本是固定的,可以大大降低处理长序列时的总体计算时间。\upcite{DBLP:conf/emnlp/QiuMLYW020,DBLP:conf/iclr/LiuSPGSKS18} \item 分块注意力:顾名思义,就是将序列划分为固定大小的片段,在进行注意力机制的计算时,执行注意力计算每个词的表示时只在对应的片段内执行。这样,每一个片段内的注意力计算成本是固定的,可以大大降低处理长序列时的总体计算时间。\upcite{DBLP:conf/emnlp/QiuMLYW020,DBLP:conf/iclr/LiuSPGSKS18}
\vspace{0.5em} \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} \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} \vspace{0.5em}
\end{itemize} \end{itemize}
...@@ -929,12 +910,12 @@ lr &=& d_{model}^{-0.5}\cdot step\_num^{-0.5} ...@@ -929,12 +910,12 @@ lr &=& d_{model}^{-0.5}\cdot step\_num^{-0.5}
\noindent 可以翻译成: \noindent 可以翻译成:
\begin{equation} \begin{equation}
\textrm{“私は緑茶を飲んでいます”} \nonumber \textrm{“私は緑茶を飲んでいます} \nonumber
\end{equation} \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] \begin{figure}[htp]
...@@ -953,13 +934,13 @@ lr &=& d_{model}^{-0.5}\cdot step\_num^{-0.5} ...@@ -953,13 +934,13 @@ lr &=& d_{model}^{-0.5}\cdot step\_num^{-0.5}
\parinterval 不同于直接对树结构进行编码,另一种方法是将单词、句法信息等信息直接转换为特征向量拼接到一起,作为机器翻译系统的输入\upcite{DBLP:conf/wmt/SennrichH16}。这种方法的优点在于,句法信息可以无缝融入到现有神经机器翻译框架,对系统结构的修改很小。以基于循环神经网络的翻译模型为例,对于输入序列的$i$个单词,可以用如下方式计算$i$时刻的表示结果: \parinterval 不同于直接对树结构进行编码,另一种方法是将单词、句法信息等信息直接转换为特征向量拼接到一起,作为机器翻译系统的输入\upcite{DBLP:conf/wmt/SennrichH16}。这种方法的优点在于,句法信息可以无缝融入到现有神经机器翻译框架,对系统结构的修改很小。以基于循环神经网络的翻译模型为例,对于输入序列的$i$个单词,可以用如下方式计算$i$时刻的表示结果:
\begin{eqnarray} \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} \label{eq:15-52}
\end{eqnarray} \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} \begin{eqnarray}
\mathbi{C}_j &=& \sum_{i=1}^m \alpha_{i,j} {\mathbi{h}'}_i \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} ...@@ -981,7 +962,7 @@ lr &=& d_{model}^{-0.5}\cdot step\_num^{-0.5}
\vspace{0.5em} \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$ \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} \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} \vspace{0.5em}
\item 混合结构。首先对图\ref{fig:15-22}(a)中句法树进行先序遍历,将句法标记和源语言单词融合到同一个序列中,得到如图\ref{fig:15-23}(c)所示序列。之后使用传统的序列编码器对这个序列进行编码,然后使用序列中源语言单词所对应的状态参与注意力模型的计算。有趣的是,相比于前两种方法,这种方法参数量少而且也十分有效\upcite{DBLP:conf/acl/LiXTZZZ17} \item 混合结构。首先对图\ref{fig:15-22}(a)中句法树进行先序遍历,将句法标记和源语言单词融合到同一个序列中,得到如图\ref{fig:15-23}(c)所示序列。之后使用传统的序列编码器对这个序列进行编码,然后使用序列中源语言单词所对应的状态参与注意力模型的计算。有趣的是,相比于前两种方法,这种方法参数量少而且也十分有效\upcite{DBLP:conf/acl/LiXTZZZ17}
\vspace{0.5em} \vspace{0.5em}
......
...@@ -6929,6 +6929,25 @@ year={2012} ...@@ -6929,6 +6929,25 @@ year={2012}
publisher={Conference on Empirical Methods in Natural Language Processing}, publisher={Conference on Empirical Methods in Natural Language Processing},
year={2020} 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------------------------------------------------------ %%%%% chapter 13------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论