Commit a0461eb3 by 单韦乔

合并分支 'shanweiqiao' 到 'caorunzhe'

13.4以及13.1

查看合并请求 !634
parents a5091847 66b4b545
......@@ -83,7 +83,7 @@
\subsection{子词}
\parinterval 一种解决开放词表翻译问题的方法是改造输出层结构\upcite{garcia-martinez2016factored,DBLP:conf/acl/JeanCMB15},比如,替换原始的Softmax层,用更加高效的神经网络结构进行超大规模词表上的预测。不过这类方法往往需要对系统进行修改,由于模型结构和训练方法的调整使得系统开发与调试的工作量增加。而且这类方法仍然无法解决OOV问题。因此在实用系统中并不常用。
\parinterval 一种解决开放词表翻译问题的方法是改造输出层结构\upcite{garcia-martinez2016factored,DBLP:conf/acl/JeanCMB15},比如,替换原始的Softmax层,用更加高效的神经网络结构进行超大规模词表上的预测。不过这类方法往往需要对系统进行修改,由于模型结构和训练方法的调整使得系统开发与调试的工作量增加。但是这类方法仍然无法解决OOV问题。因此在实用系统中并不常用。
\parinterval 另一种思路是不改变机器翻译系统,而是从数据处理的角度来缓解OOV问题。既然使用单词会带来数据稀疏问题,那么自然会想到使用更小的单元。比如,把字符作为最小的翻译单元 \footnote{中文中字符可以被看作是汉字。} \ \dash \ 也就是基于字符的翻译模型\upcite{DBLP:journals/tacl/LeeCH17}。以英文为例,只需要构造一个包含26个英文字母、数字和一些特殊符号的字符表,便可以表示所有的单词。
......@@ -106,13 +106,13 @@
\vspace{0.5em}
\item 对原始数据进行分词操作;
\vspace{0.5em}
\item 构建子词词表;
\item 构建符号合并表;
\vspace{0.5em}
\item 通过子词词表重新对数据中的单词进行切分
\item 通过合并表,将按字符切分的单词合并为字词组合
\vspace{0.5em}
\end{itemize}
\parinterval 这里面的核心是如何构建子词词表,下面对一些典型方法进行介绍。
\parinterval 这里面的核心是如何构建符号合并表,下面对一些典型方法进行介绍。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
......@@ -120,7 +120,7 @@
\subsection{双字节编码(BPE)}
\parinterval {\small\bfnew{字节对编码}}\index{字节对编码}{\small\bfnew{双字节编码}}\index{双字节编码}(Byte Pair Encoding,BPE)\index{Byte Pair Encoding,BPE}是一种常用的子词词表构建方法\upcite{DBLP:conf/acl/SennrichHB16a}。BPE方法最早用于数据压缩,该方法将数据中常见的连续字符串替换为一个不存在的字符,之后通过构建一个替换关系的对应表,对压缩后的数据进行还原。机器翻译借用了这种思想,把子词切分看作是学习对自然语言句子进行压缩编码表示的问题\upcite{Gage1994ANA}。其目的是,保证编码后的结果(即子词切分)占用的字节尽可能少。这样,子词单元会尽可能被不同单词复用,同时又不会因为使用过小的单元造成子词切分序列过长。使用BPE算法构建子词词表可以分为如下几个步骤:
\parinterval {\small\bfnew{字节对编码}}\index{字节对编码}{\small\bfnew{双字节编码}}\index{双字节编码}(Byte Pair Encoding,BPE)\index{Byte Pair Encoding,BPE}是一种常用的子词词表构建方法\upcite{DBLP:conf/acl/SennrichHB16a}。BPE方法最早用于数据压缩,该方法将数据中常见的连续字符串替换为一个不存在的字符,之后通过构建一个替换关系的对应表,对压缩后的数据进行还原。机器翻译借用了这种思想,把子词切分看作是学习对自然语言句子进行压缩编码表示的问题\upcite{Gage1994ANA}。其目的是,保证编码后的结果(即子词切分)占用的字节尽可能少。这样,子词单元会尽可能被不同单词复用,同时又不会因为使用过小的单元造成子词切分序列过长。使用BPE算法构建符号合并表可以分为如下几个步骤:
\begin{itemize}
\vspace{0.5em}
......@@ -143,19 +143,9 @@
%----------------------------------------------
\end{itemize}
\parinterval\ref{fig:7-9}给出了BPE算法执行的实例。在执行合并操作时,需要考虑不同的情况。假设词表中存在子词``ab''和``cd'',此时要加入子词``abcd''。可能会出现如下的情况:
\parinterval\ref{fig:7-9}给出了BPE算法执行的实例。其中预先设定的合并表的大小为10
\begin{itemize}
\vspace{0.5em}
\item 若``ab''、``cd''、``abcd''完全独立,彼此的出现互不影响,将``abcd''加入词表,词表数目$+1$
\vspace{0.5em}
\item 若``ab''和``cd''必同时出现则词表中加入``abcd'',去除``ab''和``cd'',词表数目$-1$。这个操作是为了较少词表中的冗余;
\vspace{0.5em}
\item 若出现``ab'',其后必出现``cd'',但是``cd''却可以作为独立的子词出现,则将``abcd''加入词表,去除``ab'',反之亦然,词表数目不变。
\vspace{0.5em}
\end{itemize}
\parinterval 在得到了子词词表后,便需要对单词进行切分。BPE要求从较长的子词开始替换。首先,对子词词表按照字符长度从大到小进行排序。然后,对于每个单词,遍历子词词表,判断每个子词是不是当前词的子串,若是则进行替换切分。将单词中所有的子串替换为子词后,如果仍有子串未被替换,则将其用<UNK>代替,如图\ref{fig:7-10}
\parinterval 在得到了符号合并表后,便需要对用字符表示的单词进行合并,得到以子词形式表示的文本。首先,将单词切分为以字符表示的符号序列,并在尾部加上终结符。然后按照符号合并表的顺序依次遍历,如果存在相同的2-gram符号组合,则对其进行合并,直至遍历结束。图1.4给出了一个使用字符合并表对单词进行子词切分的实例。红色单元为每次合并后得到的新符号,直至无法合并,或遍历结束,得到最终的合并结果。其中每一个单元为一个子词,如图\ref{fig:7-10}{\red{图有问题}}
%----------------------------------------------
\begin{figure}[htp]
......@@ -168,7 +158,7 @@
\parinterval 由于模型的输出也是子词序列,因此需要对最终得到的翻译结果进行子词还原,即将子词形式表达的单元重新组合为原本的单词。这一步操作也十分简单,只需要不断的将每个子词向后合并,直至遇到表示单词边界的结束符<e>,便得到了一个完整的单词。
\parinterval 使用BPE方法的策略有很多。不仅可以单独对源语言和目标语言进行子词的切分,也可以联合源语言和目标语言,共同进行子词切分,被称作Joint-BPE\upcite{DBLP:conf/acl/SennrichHB16a}。单语BPE比较简单直接,而Joint-BPE则可以增加两种语言子词切分的一致性。对于相似语系中的语言,如英语和德语,常使用Joint-BPE的方法联合构建词表。而对于中英这些差异比较大的语种,则需要独立的进行子词切分。
\parinterval 使用BPE方法的策略有很多。不仅可以单独对源语言和目标语言进行子词的切分,也可以联合源语言和目标语言,共同进行子词切分,被称作Joint-BPE\upcite{DBLP:conf/acl/SennrichHB16a}。单语BPE比较简单直接,而Joint-BPE则可以增加两种语言子词切分的一致性。对于相似语系中的语言,如英语和德语,常使用Joint-BPE的方法联合构建词表。而对于中英这些差异比较大的语种,则需要独立的进行子词切分。使用子词表示句子的方法可以有效的平衡词汇量,增大对未见单词的覆盖度。像英译德、汉译英任务,使用16k或者32k的子词词表大小便能取得很好的效果。
\parinterval BPE还有很多变种方法。在进行子词切分时,BPE从最长的子词开始进行切分。这个启发性规则可以保证切分结果的唯一性,实际上,在对一个单词用同一个子词词表切分时,可能存在多种切分方式,如hello,我们可以分割为``hell''和``o'',也可以分割为``h''和``ello''。这种切分的多样性可以来提高神经机器翻译系统的健壮性\upcite{DBLP:conf/acl/Kudo18}。而在T5等预训练模型中\upcite{DBLP:journals/jmlr/RaffelSRLNMZLL20}则使用了基于字符级别的BPE。此外,尽管BPE被命名为字节对编码,实际上一般处理的是Unicode编码,而不是字节。在预训练模型GPT2中,也探索了字节级别的BPE,在机器翻译、问答等任务中取得了很好的效果\upcite{radford2019language}
......@@ -178,11 +168,21 @@
\subsection{其他方法}
\parinterval 与基于统计的BPE算法不同,基于Word Piece和1-gram Language Model(ULM)的方法则是利用语言模型进行子词词表的构造\upcite{DBLP:conf/acl/Kudo18}。本质上,基于语言模型的方法和基于BPE的方法的思路是一样的,即通过合并字符和子词不断生成新的子词。它们的区别仅在于合并子词的方式不同。基于BPE的方法选择出现频次最高的连续字符2-gram合并为新的子词,而基于语言模型的方法则是根据语言模型输出的概率选择要合并哪些子词
\parinterval 与基于统计的BPE算法不同,基于Word Piece的子词切分方法则是利用语言模型进行子词词表的构造{\red(Word piece 论文找一下)}。本质上,基于语言模型的方法和基于BPE的方法的思路是一样的,即通过合并字符和子词不断生成新的子词。它们的区别仅在于合并子词的方式不同。基于BPE的方法选择出现频次最高的连续字符2-gram合并为新的子词,而基于语言模型的方法则是根据语言模型输出的概率选择要合并哪些子词。具体来说,基于Word Piece的方法首先将句子切割为字符表示的形式\upcite{DBLP:conf/icassp/SchusterN12},并利用该数据训练一个1-gram语言模型,记为$\textrm{log}\funp{P}(\cdot)$。假设两个相邻的子词单元$a$$b$被合并为新的子词$c$,则整个句子的语言模型得分的变化为$\triangle=\textrm{log}\funp{P}(c)-\textrm{log}\funp{P}(a)-\textrm{log}\funp{P}(b)$。这样,可以不断的选择使$\triangle$最大的两个子词单元进行合并,直到达到预设的词表大小或者句子概率的增量低于某个阈值
\parinterval 具体来说,基于Word Piece的方法首先将句子切割为字符表示的形式\upcite{DBLP:conf/icassp/SchusterN12},并利用该数据训练一个1-gram语言模型,记为$\textrm{logP}(\cdot)$。假设两个相邻的子词单元$a$$b$被合并为新的子词$c$,则整个句子的语言模型得分的变化为$\triangle=\textrm{logP}(c)-\textrm{logP}(a)-\textrm{logP}(b)$。这样,可以不断的选择使$\triangle$最大的两个子词单元进行合并,直到达到预设的词表大小或者句子概率的增量低于某个阈值。而ULM方法以最大化整个句子的概率为目标构建词表\upcite{DBLP:conf/acl/Kudo18},具体实现上也不同于基于Word Piece的方法,这里不做详细介绍
\parinterval 目前比较主流的子词切分方法都是作用于分词后的序列,对一些没有明显词边界且资源稀缺的语种并不友好。相比之下,SentencePiece可以作用于未经过分词处理的输入序列{\red (SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing)},同时囊括了双字节编码和语言模型的子词切分方法,更加灵活易用
\parinterval 使用子词表示句子的方法可以有效的平衡词汇量,增大对未见单词的覆盖度。像英译德、汉译英任务,使用16k或者32k的子词词表大小便能取得很好的效果。
\parinterval 通过上述子词切分方法,可以缓解OOV的问题,允许模型利用到一些词法上的信息。然而主流的BPE子词切分方法中,每个单词都对应唯一的子词切分方式,因此输入的数据经过子词切分后的序列表示也是唯一的。在给定词表的情况下,每句话仍然存在多种切分方式。而经过现有BPE处理后的序列,模型只能接收到单一的表示,可能会阻止模型更好地学习词的组成,不能充分利用单词中的形态学特征。此外,针对切分错误的输入数据表现不够鲁棒,常常会导致整句话的翻译效果极差。为此,研究人员提出一些正则化方法{\red (Subword regularization: Improving neural network translation models with multiple subword candidates;BPE-Dropout: Simple and Effective Subword Regularization)}
\begin{itemize}
\vspace{0.5em}
\item 子词正则化方法\upcite{DBLP:conf/acl/Kudo18}。其思想是在训练过程中扰乱确定的子词边界,根据1-gram Language Model{\red (ULM)}采样出多种子词切分候选。通过最大化整个句子的概率为目标构建词表,具体实现上与上述基于Word Piece的方法略有不同,这里不做详细介绍。
\vspace{0.5em}
\item BPE-Dropout{\red (BPE-Dropout:Simple and Effective Subword Regularization)}。在训练时,通过在合并过程中按照一定概率$p${\red(这个p能不能改成P)}(介于0与1之间)随机丢弃一些可行的合并操作,从而产生不同的子词切分结果,进而增强模型健壮性。而在推断阶段,将p设置为0,等同于标准的BPE。总的来说,上述方法相当于在子词的粒度上对输入的序列进行扰动,进而达到鲁棒性训练的目的。在之后的小节中同样会针对鲁棒性训练进行详细介绍。
\vspace{0.5em}
\item DPE{\red (Dynamic Programming Encoding for Subword Segmentation in Neural Machine Translation )}。引入了混合字符-子词的切分方式,将句子的子词分割方式看作一种潜变量,该结构能够利用{\small\bfnew{动态规划}}\index{动态规划}(Dynamic Programming)\index{Dynamic Programming}思想精确地将潜在的子字片段边缘化。解码端的输入是基于字符表示的目标语序列,推断时将每个时间步的输出映射到预先设定好的子词词表之上,得到当前最可能得子词结果。若当前子词长度为$m$,则接下来的$m$个时间步的输入为该子词,并在$m$个时间步后得到下一个切分的子词。
\vspace{0.5em}
\end{itemize}
%----------------------------------------------------------------------------------------
% NEW SECTION
......@@ -193,7 +193,7 @@
\parinterval {\small\bfnew{正则化}}\index{正则化}(Regularization)\index{Regularization}是机器学习中的经典技术,通常用于缓解{\small\bfnew{过拟合问题}}\index{过拟合问题}(The Overfitting Problem)\index{Overfitting Problem}。正则化的概念源自线性代数和代数几何。在实践中,它更多的是指对{\small\bfnew{反问题}}\index{反问题}(The Inverse Problem)\index{Inverse Problem}的一种求解方式。假设输入$x$和输出$y$之间存在一种映射$f$
\begin{eqnarray}
y = f(x)
y &=& f(x)
\label{eq:13-1}
\end{eqnarray}
......@@ -224,7 +224,7 @@ y = f(x)
\parinterval 正则化的一种实现是在训练目标中引入一个正则项。在神经机器翻译中,引入正则项的训练目标为:
\begin{eqnarray}
\widehat{\mathbf{w}}=\argmax_{\mathbf{w}}L(\mathbf{w}) + \lambda R(\mathbf{w})
\widehat{\mathbf{w}} &=& \argmax_{\mathbf{w}}L(\mathbf{w}) + \lambda R(\mathbf{w})
\label{eq:13-2}
\end{eqnarray}
......@@ -268,7 +268,7 @@ R(\mathbf{w}) & = & (\big| |\mathbf{w}| {\big|}_2)^2 \\
\parinterval {\small\bfnew{标签平滑}}\index{标签平滑}(Label Smoothing)\index{Label Smoothing}的思想很简单\upcite{Szegedy_2016_CVPR}:答案所对应的单词不应该``独享''所有的概率,其它单词应该有机会作为答案。这个观点与第二章中语言模型的平滑非常类似。在复杂模型的参数估计中,往往需要给未见或者低频事件分配一些概率,以保证模型具有更好的泛化能力。具体实现时,标签平滑使用了一个额外的分布$q$,它是在词汇表$V$ 上的一个均匀分布,即$q(k)=\frac{1}{|V|}$,其中$q(k)$表示分布的第$k$维。然后,答案分布被重新定义为$\tilde{y}_j$$q$的线性插值:
\begin{eqnarray}
y_{j}^{ls}=(1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
y_{j}^{ls} &=& (1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
\label{eq:13-5}
\end{eqnarray}
......@@ -535,24 +535,133 @@ y_{j}^{ls}=(1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
\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}展示了一个神经机器翻译系统的结果,可以看到,输入中把单词“他”换成“她”会造成完全不同的译文。这时神经机器翻译系统就存在鲁棒性问题。
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=0.5]{./Chapter13/Figures/figure-example-of-neural-machine-translation.png}
\caption{神经机器翻译实例}
\label{fig:13-19}
\end{figure}
%----------------------------------------------
\parinterval 决定神经网络模型鲁棒性的因素主要包括训练数据、网络结构、正则化方法等。仅仅从网络结构设计和训练算法优化的角度来改善鲁棒性一般是较为困难的,因为如果输入数据是“干净”的,模型就会学习在这样的数据上进行预测。无论模型的能力是强还是弱,当推断时输入数据出现扰动的时候,模型可能无法适应,因为它从未见过这种新的数据。因此,一种简单直接的方法是从训练样本出发,让模型在学习的过程中能对样本中的扰动进行处理,进而在推断时具有更强的鲁棒性。具体来说,可以在训练过程中构造有噪声的样本,即基于{\small\bfnew{对抗样本}}\index{对抗样本}(Adversarial Examples)\index{Adversarial Examples}进行{\small\bfnew{对抗训练}}\index{对抗训练}(Adversarial Training)\index{Adversarial Training}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{对抗样本及对抗攻击}
\parinterval 在图像识别领域,研究人员就发现,对于输入图像的细小扰动,如像素变化等,会使模型以高置信度给出错误的预测\upcite{DBLP:conf/cvpr/NguyenYC15,DBLP:journals/corr/SzegedyZSBEGF13,DBLP:journals/corr/GoodfellowSS14},但是这种扰动并不会影响人类的判断。也就是说,样本中的微小变化“欺骗”了图像识别系统,但是“欺骗”不了人类。这种现象背后的原因有很多,例如,一种可能的原因是:系统并没有理解图像,而是在拟合数据,因此拟合能力越强,反而对数据中的微小变化更加敏感。从统计学习的角度看,既然新的数据中可能会有扰动,那更好的学习方式就是在训练中显性地把这种扰动建模出来,让模型对输入的细微变化更加鲁棒。
\parinterval 这种对原样本上增加一些难以察觉的扰动从而使模型的到错误判断的样本,被称为对抗样本。对于输入$\mathbi{x}$和输出$\mathbi{y}$,对抗样本形式上可以被描述为:{\red s.t.的形式再确认一下}
\begin{eqnarray}
\funp{C}(\mathbi{x}) &=& \mathbi{y}
\label{eq:13-6}\\
\funp{C}(\mathbi{x}) &\neq& \mathbi{y}
\label{eq:13-7}\\
\textrm{s.t.} \quad \funp{R}(\mathbi{x},\mathbi{x}') &<& \varepsilon
\label{eq:13-8}
\end{eqnarray}
\noindent 其中,$(\mathbi{x},\mathbi{y})$为原样本,$(\mathbi{x}',\mathbi{y})$为输入中含有扰动的对抗样本,函数$\funp{C}(\cdot)$为模型。公式\eqref{eq:13-8}$\funp{R}(\mathbi{x},\mathbi{x}')$表示扰动后的输入$\mathbi{x}'$和原输入$\mathbi{x}$之间的距离,$\varepsilon$表示扰动的受限范围当模型对包含噪声的数据容易给出较差的结果时,往往意味着模型的抗干扰能力差,因此可以利用对抗样本检测现有模型的鲁棒性\upcite{DBLP:conf/emnlp/JiaL17}。同时,采用类似数据增强的方式将对抗样本混合至训练数据中,能够帮助模型学习到更普适的特征使模型的到稳定的输出,这种方式也被称为对抗训练\upcite{DBLP:journals/corr/GoodfellowSS14,DBLP:conf/emnlp/BekoulisDDD18,DBLP:conf/naacl/YasunagaKR18}
\parinterval 通过对抗样本训练提升模型鲁棒性的首要问题是如何生成对抗样本。通过当前模型$\funp{C}$,和样本$(\mathbi{x},\mathbi{y})$,生成对抗样本的过程,被称为{\small\bfnew{对抗攻击}}\index{对抗攻击}(Adversarial Attack)\index{Adversarial Attack}。对抗攻击可以被分为两种,分别是黑盒攻击和白盒攻击。在白盒攻击中,攻击算法可以访问模型的完整信息,包括模型结构、网络参数、损失函数、激活函数、输入和输出数据等。而黑盒攻击不需要知道神经网络的详细信息,仅仅通过访问模型的输入和输出达到攻击目的,因此 通常依赖启发式方法来生成对抗样本。由于神经网络本身便是一个黑盒模型,研究人员对模型内部的参数干预度有限,因此黑盒攻击在许多实际应用中更加实用。
\parinterval 在神经机器翻译中,输入中细小的扰动经常会使模型变得脆弱\upcite{DBLP:conf/iclr/BelinkovB18}。但是图像和文本之间存在着一定的差异,图像中的对抗攻击方法难以直接应用于自然语言处理领域,这是由于以像素值等表示的图像数据是连续的\upcite{DBLP:conf/naacl/MichelLNP19}{\red (如何理解连续?)},而文本中的一个个单词本身离散的。因此简单替换这些离散的单词,可能会生成语法错误或者语义错误的句子。这时的扰动过大,模型很容易判别,因此无法涵盖原始问题。即使对词嵌入等连续表示部分进行扰动,也会产生无法与词嵌入空间中的任何词匹配的问题\upcite{Gong2018AdversarialTW}。针对这些问题,下面着重介绍神经机器翻译任务中有效的生成和利用对抗样本的方法。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{基于黑盒攻击的方法}
\parinterval 一个好的对抗样本应该具有一些性质,如:对文本做最少的修改,并最大程度地保留原文的语义。这些可以通过对文本加噪声的方式来来实现,分为自然噪声和人工噪声\upcite{DBLP:conf/iclr/BelinkovB18}。自然噪声一般是指人为的在语料库中收集自然出现的错误,如输入错误,拼写错误等,构建可用的词汇替换表,在文本中加入噪声。人为噪声则可以通过多种方式来处理文本。如可以通过在干净的数据中通过固定的规则或是使用噪声生成器以一定的概率引入不同类型的噪声,如:拼写、表情符号、语法错误等\upcite{DBLP:conf/naacl/VaibhavSSN19,DBLP:conf/naacl/AnastasopoulosL19,DBLP:conf/acl/SinghGR18};此外,也可以在文本中加入精心设计,或毫无意义的单词序列,以此来分散模型的注意,通过不同的算法来确定插入的位置和内容,这种方式常用于阅读理解任务中\upcite{DBLP:conf/emnlp/JiaL17}
\parinterval 除了单纯的在文本中引入各种扰动外,还可以通过文本编辑的方式构建对抗样本,在不改变语义的情况下尽可能的修改文本\upcite{DBLP:journals/corr/SamantaM17,DBLP:conf/ijcai/0002LSBLS18},从而生成对抗样本。文本的编辑方式主要包括交换,插入,替换和删除操作。图\ref{fig:13-20}给出了一些通过上述方式生成的对抗样本。
%----------------------------------------------
\begin{figure}[htp]
\centering
\includegraphics[scale=0.5]{./Chapter13/Figures/figure-true-case-of-adversarial-examples.jpg}
\caption{对抗样本实例{\red(需要让读者真实的感受一下)}}
\label{fig:13-20}
\end{figure}
%----------------------------------------------
\parinterval 形式上可以利用FGSM\upcite{DBLP:journals/corr/GoodfellowSS14}等算法验证文本中每一个单词对语义的贡献度,同时为每一个单词构建其候选池,包括单词的近义词,拼写错误词,同音词等。对于贡献度较低的词如语气词,副词等,可以通过插入,删除操作进行扰动。对于文本序列中其他的单词可以进行在候选池中选择相应的单词进行替换。对于交换操作可以基于词级别交换序列中的单词,也可以是基于字符级的交换单词中的字符\upcite{DBLP:conf/coling/EbrahimiLD18}。重复的进行不同的编辑操作,直至误导模型做出错误的判断。
\parinterval 基于语义的方法除了通过不同的算法进行修改输入生成对抗样本外,也可以通过神经网络模型增加扰动,例如在机器翻译中常用的回译技术也是生成对抗样本的一种有效方式,通过反向模型将目标语言翻译成源语言,并再次应用于神经机器翻译系统的训练。除了翻译模型,语言模型也可以用于生成对抗样本。前面也已经介绍过语言模型可以用于检测句子流畅度,根据上文预测当前位置可能出现的单词,因此可以通过语言模型根据上文预测出当前位置最可能出现的多个单词,与序列中的原本的单词进行替换。在机器翻译任务中,可以通过与神经机器翻译系统联合训练,共享词向量矩阵的方式得到语言模型。{\red (引用)}
\parinterval 此外,生成{\small\bfnew{对抗网络}}\index{对抗网络}(Generative Adversarial Networks\index{Generative Adversarial Networks}, GANs)也可以被用来生成对抗样本\upcite{DBLP:conf/iclr/ZhaoDS18}。与回译方法类似,GAN的方法将原始的输入映射为潜在分布$\funp{P}$,并在其中搜索出服从相同分布的文本构成对抗样本。一些研究正也对这种方法进行了优化\upcite{DBLP:conf/iclr/ZhaoDS18},在稠密的向量空间$z$中进行搜索,也就是说在定义$\funp{P}$的基础稠密向量空间中找到对抗性表示$\mathbi{z}'$,然后利用生成模型将其映射回$\mathbi{x}'$,使最终生成的对抗样本在语义上接近原始输入。{\red(既然GAN不是主流,可以考虑把这部分放到拓展阅读中)}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{基于白盒攻击的方法}
\parinterval 除了在离散的词汇级别的增加扰动,还可以在模型内部增加扰动。这里简单介绍一下利用白盒攻击方法增加模型鲁棒性的方法:
\begin{itemize}
\vspace{0.5em}
\item 与利用词向量的余弦相似度选择近义词对当前词进行替换类似,可以对于每一个词都在其词嵌入表示的基础上累加了一个从正太分布,之后将其作为模型的最终输入。同时,可以在训练目标中增加额外的训练目标,比如,迫使模型在接收到被扰动的输入后,编码端生成与正常输入类似的表示,解码端输出正确的翻译结果\upcite{DBLP:conf/acl/LiuTMCZ18}
\vspace{0.5em}
\item 除了引入标准的噪声外,还可以根据模型所存在的具体问题, 构建不同的扰动。例如,针对输入中包含同音字错误导致模型输出误差较大的问题,可以将单词的发音转换为一个包含$n$个发音单元,如音素,音节等的发音序列,并训练相应的嵌入矩阵将每一个发音单元转换为对应的向量表示。对发音序列中的发音单元的嵌入表示进行平均后,得到当前单词的发音表示。最后将词嵌入与单词的发音表示,加权求和后的结果作为模型的输入\upcite{DBLP:conf/acl/LiuMHXH19}。通过这种方式可以提高模型对同音异形词的鲁棒性,得到更准确的翻译结果。此外除了在词嵌入层增加扰动,同样有研究人员证明了,在端到端模型的中的编码端输出中引入额外的噪声,能起到与在层输入中增加扰动生成对抗样本进行对抗训练类似的效果,增强了模型训练的鲁棒性\upcite{DBLP:conf/acl/LiLWJXZLL20}
\vspace{0.5em}
\item 此外还有一类基于梯度的方法来生成对抗样本进行对抗性训练。例如,可以通过最大化替换词与原始单词词向量之间的差值和候选词的梯度向量之间的相似度来生成对抗样本\upcite{DBLP:conf/acl/ChengJM19},具体的计算方式如下:{\red 下面的是sin还是sim,而且文字中是正弦把?下面三角是不是delta}
\begin{eqnarray}
{\mathbi{x}'}_i &=& \arg\max_{\mathbi{x}\in \nu_{\mathbi{x}}}\textrm{sim}(\funp{e}(\mathbi{x})-\funp{e}(\mathbi{x}_i),\mathbi{g}_{\mathbi{x}_i})
\label{eq:13-9} \\
\mathbi{g}_{\mathbi{x}_i} &=& \Delta_{\funp{e}(\mathbi{x}_i)} - \log \funp{P}(\mathbi{y}|\mathbi{x};\theta)
\label{eq:13-10}
\end{eqnarray}
\noindent 其中,$\mathbi{x}_i$为输入中第$i$个词,$\mathbi{g}_{\mathbi{x}_i}$为对应的梯度向量,$\funp{e}(\cdot)$用于获取词向量,$\textrm{sim}(\cdot,\cdot)$用于评估两个向量之间的余弦距离{\red(很多符号没有解释,$_(e(x_i))$是什么?等等)}$\nu_{\mathbi{x}}$为源语的词表,但是由于对词表中所有单词进行枚举,计算成本较大,因此利用语言模型选择最可能的$n$个词作为候选,进而缩减匹配范围,通过此方式对采样出的源语词进行替换。同时为了保护模型不受解码器预测误差的影响,对模型目标端的输入同样做了调整,方法与源语端类似,不同的地方在于将公式\eqref{eq:13-10}中的损失替换为$- \log \funp{P}(\mathbi{y}|\mathbi{x}')$,利用语言模型选择候选和采样的方式也做出了相应的调整。在进行对抗性训练时,在原有的训练损失上增加了三个额外的损失,最终的训练目标为:
\begin{eqnarray}
Loss(\theta_{\textrm{mt}},\theta_{\textrm{lm}}^{\mathbi{x}},\theta_{\textrm{lm}}^{\mathbi{y}}) &=& Loss_{\textrm{clean}}(\theta_{\textrm{mt}}) + Loss_{\textrm{lm}}(\theta_{\textrm{lm}}^{\mathbi{x}}) + \nonumber \\
& & Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) + Loss_{\textrm{lm}}(\theta_{\textrm{lm}}^{\mathbi{y}})
\label{eq:13-11}
\end{eqnarray}
\noindent 其中分别$Loss_{\textrm{clean}}(\theta_{\textrm{mt}})$为正常情况下的损失,$Loss_{\textrm{lm}}(\theta_{\textrm{lm}}^{\mathbi{x}})$$Loss_{\textrm{lm}}(\theta_{\textrm{lm}}^{\mathbi{y}})$生成对抗样本所用到的源语言与目标语言语言模型的损失,$Loss_{\textrm{robust}}(\theta_{\textrm{mt}})$是以对源语言和目标端做出修改后得到的对抗样本作为输入,原始的目标语作为答案计算得到的损失,其具体形式如下:
\begin{eqnarray}
Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{\textrm{S}}\sum_{(\mathbi{x},\mathbi{y}\in \textrm{S})}-\log \funp{P}(\mathbi{y}|\mathbi{x}',\mathbi{z}';\theta_{\textrm{mt}})
\label{eq:13-11}
\end{eqnarray}
\noindent 这里$\textrm{S}$代表整体的语料库。通过上述方式达到对抗训练的目的。
\vspace{0.5em}
\end{itemize}
\parinterval 不论是黑盒方法还是白盒方法,本质上都是通过增加噪声使得模型训练更加健壮。类似的思想在很多机器学习方法都有体现,比如,最大熵模型中使用高斯噪声就是常用的增加模型健壮性的手段之一\upcite{chen1999gaussian}{\red 这篇文章再找一下}。而在深度学习时代下,对抗训练将问题定义为:有意识地构造系统容易出错的样本,进而更加有效的增加系统抗干扰的能力。
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\sectionnewpage
\section{最小风险训练}
\section{高级模型训练技术}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{增强学习方法}
\subsection{极大似然估计的问题}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{非teacher-forcing方法}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{曝光偏置问题}
\subsection{增强学习方法}
%----------------------------------------------------------------------------------------
% NEW SECTION
......@@ -683,3 +792,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\sectionnewpage
\section{小结及深入阅读}
\parinterval 对抗样本除了用于提高模型的鲁棒性之外,还有很多其他的应用场景。其中最主要的便是用于评估模型。通过构建由对抗样本构造的数据集,可以验证模型对于不同类型噪声鲁棒性\upcite{DBLP:conf/emnlp/MichelN18}。正是由于对抗样本在检测和提高模型鲁棒性具有明显的效果,因此很多的研究人员在针对不同的任务提出了很多有效的方法。但是在生成对抗样本时常常要注意或考虑很多问题,比如扰动是否足够细微,在人类难以察觉的同时做到欺骗模型的目的,对抗样本在不同的模型结构或数据集上是否具有足够的泛化能力。生成的方法是否足够高效等等。
......@@ -5936,6 +5936,275 @@ author = {Yoshua Bengio and
year = {2012}
}
@article{JMLR:v15:srivastava14a,
author = {Nitish Srivastava and Geoffrey Hinton and Alex Krizhevsky and Ilya Sutskever and Ruslan Salakhutdinov},
title = {Dropout: A Simple Way to Prevent Neural Networks from Overfitting},
journal = {Journal of Machine Learning Research},
year = {2014},
volume = {15},
pages = {1929-1958},
}
@inproceedings{DBLP:conf/amta/MullerRS20,
author = {Mathias M{\"{u}}ller and
Annette Rios and
Rico Sennrich},
title = {Domain Robustness in Neural Machine Translation},
pages = {151--164},
publisher = {Association for Machine Translation in the Americas},
year = {2020}
}
@inproceedings{DBLP:conf/sp/Carlini017,
author = {Nicholas Carlini and
David A. Wagner},
title = {Towards Evaluating the Robustness of Neural Networks},
pages = {39--57},
publisher = {IEEE Symposium on Security and Privacy},
year = {2017}
}
@inproceedings{DBLP:conf/cvpr/Moosavi-Dezfooli16,
author = {Seyed-Mohsen Moosavi-Dezfooli and
Alhussein Fawzi and
Pascal Frossard},
title = {DeepFool: {A} Simple and Accurate Method to Fool Deep Neural Networks},
pages = {2574--2582},
publisher = {IEEE Conference on Computer Vision and Pattern Recognition},
year = {2016}
}
@inproceedings{DBLP:conf/acl/ChengJM19,
author = {Yong Cheng and
Lu Jiang and
Wolfgang Macherey},
title = {Robust Neural Machine Translation with Doubly Adversarial Inputs},
pages = {4324--4333},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/cvpr/NguyenYC15,
author = {Anh Mai Nguyen and
Jason Yosinski and
Jeff Clune},
title = {Deep neural networks are easily fooled: High confidence predictions
for unrecognizable images},
pages = {427--436},
publisher = {IEEE Conference on Computer Vision and Pattern Recognition},
year = {2015}
}
@inproceedings{DBLP:journals/corr/SzegedyZSBEGF13,
author = {Christian Szegedy and
Wojciech Zaremba and
Ilya Sutskever and
Joan Bruna and
Dumitru Erhan and
Ian J. Goodfellow and
Rob Fergus},
title = {Intriguing properties of neural networks},
publisher = {International Conference on Learning Representations},
year = {2014}
}
@inproceedings{DBLP:journals/corr/GoodfellowSS14,
author = {Ian J. Goodfellow and
Jonathon Shlens and
Christian Szegedy},
title = {Explaining and Harnessing Adversarial Examples},
publisher = {International Conference on Learning Representations},
year = {2015}
}
@inproceedings{DBLP:conf/emnlp/JiaL17,
author = {Robin Jia and
Percy Liang},
title = {Adversarial Examples for Evaluating Reading Comprehension Systems},
pages = {2021--2031},
publisher = {Conference on Empirical Methods in Natural Language Processing},
year = {2017}
}
@inproceedings{DBLP:conf/emnlp/BekoulisDDD18,
author = {Giannis Bekoulis and
Johannes Deleu and
Thomas Demeester and
Chris Develder},
title = {Adversarial training for multi-context joint entity and relation extraction},
pages = {2830--2836},
publisher = {Conference on Empirical Methods in Natural Language Processing},
year = {2018}
}
@inproceedings{DBLP:conf/naacl/YasunagaKR18,
author = {Michihiro Yasunaga and
Jungo Kasai and
Dragomir R. Radev},
title = {Robust Multilingual Part-of-Speech Tagging via Adversarial Training},
pages = {976--986},
publisher = {Annual Conference of the North American Chapter of the Association for Computational Linguistics},
year = {2018}
}
@inproceedings{DBLP:conf/iclr/BelinkovB18,
author = {Yonatan Belinkov and
Yonatan Bisk},
title = {Synthetic and Natural Noise Both Break Neural Machine Translation},
publisher = {International Conference on Learning Representations},
year = {2018}
}
@inproceedings{DBLP:conf/naacl/MichelLNP19,
author = {Paul Michel and
Xian Li and
Graham Neubig and
Juan Miguel Pino},
title = {On Evaluation of Adversarial Perturbations for Sequence-to-Sequence
Models},
pages = {3103--3114},
publisher = {Annual Conference of the North American Chapter of the Association for Computational Linguistics},
year = {2019}
}
@article{Gong2018AdversarialTW,
title={Adversarial Texts with Gradient Methods},
author={Zhitao Gong and Wenlu Wang and B. Li and D. Song and W. Ku},
journal={ArXiv},
year={2018},
volume={abs/1801.07175}
}
@inproceedings{DBLP:conf/naacl/VaibhavSSN19,
author = {Vaibhav and
Sumeet Singh and
Craig Stewart and
Graham Neubig},
title = {Improving Robustness of Machine Translation with Synthetic Noise},
pages = {1916--1920},
publisher = {Annual Conference of the North American Chapter of the Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/naacl/AnastasopoulosL19,
author = {Antonios Anastasopoulos and
Alison Lui and
Toan Q. Nguyen and
David Chiang},
title = {Neural Machine Translation of Text from Non-Native Speakers},
pages = {3070--3080},
publisher = {Annual Conference of the North American Chapter of the Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/acl/SinghGR18,
author = {Marco T{\'{u}}lio Ribeiro and
Sameer Singh and
Carlos Guestrin},
title = {Semantically Equivalent Adversarial Rules for Debugging {NLP} models},
pages = {856--865},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2018}
}
@article{DBLP:journals/corr/SamantaM17,
author = {Suranjana Samanta and
Sameep Mehta},
title = {Towards Crafting Text Adversarial Samples},
journal = {CoRR},
volume = {abs/1707.02812},
year = {2017}
}
@inproceedings{DBLP:conf/ijcai/0002LSBLS18,
author = {Bin Liang and
Hongcheng Li and
Miaoqiang Su and
Pan Bian and
Xirong Li and
Wenchang Shi},
title = {Deep Text Classification Can be Fooled},
pages = {4208--4215},
publisher = {International Joint Conference on Artificial Intelligence},
year = {2018}
}
@inproceedings{DBLP:conf/coling/EbrahimiLD18,
author = {Javid Ebrahimi and
Daniel Lowd and
Dejing Dou},
title = {On Adversarial Examples for Character-Level Neural Machine Translation},
pages = {653--663},
publisher = {International Conference on Computational Linguistics},
year = {2018}
}
@inproceedings{DBLP:conf/iclr/ZhaoDS18,
author = {Zhengli Zhao and
Dheeru Dua and
Sameer Singh},
title = {Generating Natural Adversarial Examples},
publisher = {International Conference on Learning Representations},
year = {2018}
}
@inproceedings{DBLP:conf/acl/LiuTMCZ18,
author = {Yong Cheng and
Zhaopeng Tu and
Fandong Meng and
Junjie Zhai and
Yang Liu},
title = {Towards Robust Neural Machine Translation},
pages = {1756--1766},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2018}
}
@inproceedings{DBLP:conf/acl/LiuMHXH19,
author = {Hairong Liu and
Mingbo Ma and
Liang Huang and
Hao Xiong and
Zhongjun He},
title = {Robust Neural Machine Translation with Joint Textual and Phonetic
Embedding},
pages = {3044--3049},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/acl/LiLWJXZLL20,
author = {Bei Li and
Hui Liu and
Ziyang Wang and
Yufan Jiang and
Tong Xiao and
Jingbo Zhu and
Tongran Liu and
Changliang Li},
title = {Does Multi-Encoder Help? {A} Case Study on Context-Aware Neural Machine
Translation},
pages = {3512--3518},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2020}
}
@techreport{chen1999gaussian,
title={A Gaussian prior for smoothing maximum entropy models},
author={Chen, Stanley F and Rosenfeld, Ronald},
year={1999},
institution={CARNEGIE-MELLON UNIV PITTSBURGH PA SCHOOL OF COMPUTER SCIENCE}
}
@inproceedings{DBLP:conf/emnlp/MichelN18,
author = {Paul Michel and
Graham Neubig},
title = {{MTNT:} {A} Testbed for Machine Translation of Noisy Text},
pages = {543--553},
publisher = {Conference on Empirical Methods in Natural Language Processing},
year = {2018}
}
%%%%% chapter 13------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论