Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
mtbookv2
Commits
22f398e4
Commit
22f398e4
authored
Dec 23, 2020
by
xiaotong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wording (sec 13)
parent
a22e573a
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
19 行增加
和
21 行删除
+19
-21
Chapter13/chapter13.tex
+19
-21
没有找到文件。
Chapter13/chapter13.tex
查看文件 @
22f398e4
...
...
@@ -349,13 +349,13 @@ y_{j}^{ls} &=& (1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
\subsection
{
对抗样本及对抗攻击
}
\parinterval
在图像识别领域,研究人员就发现,对于输入图像的细小扰动,如像素变化等,会使模型以高置信度给出错误的预测
\upcite
{
DBLP:conf/cvpr/NguyenYC15,DBLP:journals/corr/SzegedyZSBEGF13,DBLP:journals/corr/GoodfellowSS14
}
,但是这种扰动并不会
影响人类的判断。也就是说,样本中的微小变化“欺骗”了图像识别系统,但是“欺骗”不了人类。这种现象背后的原因有很多,例如,一种可能的原因是:系统并没有理解图像,而是在拟合数据,因此拟合能力越强,反而对数据中的微小变化更加敏感。从统计学习的角度看,既然新的数据中可能会有扰动,那更好的学习方式就是在训练中显性地把这种扰动建模出来,让模型对输入的细微变化更加鲁棒
。
\parinterval
在图像识别领域,研究人员就发现,对于输入图像的细小扰动,如像素变化等,会使模型以高置信度给出错误的预测
\upcite
{
DBLP:conf/cvpr/NguyenYC15,DBLP:journals/corr/SzegedyZSBEGF13,DBLP:journals/corr/GoodfellowSS14
}
,但是这种扰动并不会
造成人类的错误判断。也就是说,样本中的微小变化“欺骗”了图像识别系统,但是“欺骗”不了人类。这种现象背后的原因有很多,一种可能的原因是:系统并没有理解图像,而是在拟合数据,因此拟合能力越强,反而对数据中的微小变化更加敏感。从统计学习的角度看,既然新的数据中可能会有扰动,那更好的学习方式就是在训练中显性地把这种扰动建模出来,让模型对输入的细微变化表现得更加健壮
。
\parinterval
这种对原样本上增加一些难以察觉的扰动从而使模型的到错误判断的样本,被称为对抗样本。对于输入
$
\mathbi
{
x
}$
和输出
$
\mathbi
{
y
}$
,对抗样本形式上可以被描述为:
\begin{eqnarray}
\funp
{
C
}
(
\mathbi
{
x
}
)
&
=
&
\mathbi
{
y
}
\funp
{
C
}
(
\mathbi
{
x
}
)
&
=
&
\mathbi
{
y
}
\label
{
eq:13-6
}
\\
\funp
{
C
}
(
\mathbi
{
x
}
')
&
\neq
&
\mathbi
{
y
}
\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
}
...
...
@@ -363,9 +363,9 @@ y_{j}^{ls} &=& (1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
\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
}
。对抗攻击可以被分为两种,分别是黑盒攻击和白盒攻击。在白盒攻击中,攻击算法可以访问模型的完整信息,包括模型结构、网络参数、损失函数、激活函数、输入和输出数据等。而黑盒攻击不需要知道神经网络的详细信息,仅仅通过访问模型的输入和输出就可以达到攻击目的,
{
\red
因此通常依赖启发式方法来生成对抗样本
}
。由于神经网络本身便是一个黑盒模型,研究人员对模型内部的参数干预度有限,因此黑盒攻击在许多实际应用中更加实用
。
\parinterval
通过对抗样本训练来提升模型健壮性的首要问题是:如何生成对抗样本。通过当前模型
$
\funp
{
C
}$
和样本
$
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
$
,生成对抗样本的过程,被称为
{
\small\bfnew
{
对抗攻击
}}
\index
{
对抗攻击
}
(Adversarial Attack)
\index
{
Adversarial Attack
}
。对抗攻击可以被分为两种,分别是黑盒攻击和白盒攻击。在白盒攻击中,攻击算法可以访问模型的完整信息,包括模型结构、网络参数、损失函数、激活函数、输入和输出数据等。而黑盒攻击不需要知道神经网络的详细信息,仅仅通过访问模型的输入和输出就可以达到攻击目的,
{
\red
因此通常依赖启发式方法来生成对抗样本
}
。由于神经网络本身便是一个黑盒模型,因此对模型内部的参数干预度有限,因此黑盒攻击在许多实际应用中更加实用(
{
\color
{
red
}
为啥干预度有限就更加实用?
}
)
。
\parinterval
在神经机器翻译中,输入所包含的细小的扰动会使模型变得脆弱
\upcite
{
DBLP:conf/iclr/BelinkovB18
}
。由于图像和文本数据之间存在着一定的差异,以像素值等表示的图像数据是连续的
\upcite
{
DBLP:conf/naacl/MichelLNP19
}{
\red
(如何理解连续?)
}
,而文本中的一个个单词本身离散的,因此图像中的对抗攻击方法难以直接应用于自然语言处理领域。简单替换这些离散的单词,可能会生成语法错误或者语义错误的句子。
由于简单替换产生的扰动过大,模型很容易判别,因此无法涵盖原始问题
。即使对词嵌入等连续表示的部分进行扰动,也会产生无法与词嵌入空间中的任何词匹配的向量
\upcite
{
Gong2018AdversarialTW
}
。针对这些问题,下面着重介绍神经机器翻译任务中如何有效生成和使用对抗样本。
\parinterval
在神经机器翻译中,输入所包含的细小的扰动会使模型变得脆弱
\upcite
{
DBLP:conf/iclr/BelinkovB18
}
。由于图像和文本数据之间存在着一定的差异,以像素值等表示的图像数据是连续的
\upcite
{
DBLP:conf/naacl/MichelLNP19
}{
\red
(如何理解连续?)
}
,而文本中的一个个单词本身离散的,因此图像中的对抗攻击方法难以直接应用于自然语言处理领域。简单替换这些离散的单词,可能会生成语法错误或者语义错误的句子。
简单替换产生的扰动过大,模型很容易判别
。即使对词嵌入等连续表示的部分进行扰动,也会产生无法与词嵌入空间中的任何词匹配的向量
\upcite
{
Gong2018AdversarialTW
}
。针对这些问题,下面着重介绍神经机器翻译任务中如何有效生成和使用对抗样本。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -373,24 +373,24 @@ y_{j}^{ls} &=& (1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
\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
}{
\red
(改的对不对)
}
。
\parinterval
一个好的对抗样本应该具有这种性质:对文本做最少的修改,并最大程度地保留原文的语义。一种简单的实现方式是对文本加噪声。这里,噪声可以分为自然噪声和人工噪声
\upcite
{
DBLP:conf/iclr/BelinkovB18
}
。自然噪声一般是指人为的在语料库中收集自然出现的错误,如输入错误、拼写错误等
。人为噪声是通过多种方式来处理文本,例如,可以通过固定的规则或是使用噪声生成器,在干净的数据中以一定的概率引入不同类型的噪声,如:拼写、表情符号、语法错误等
\upcite
{
DBLP:conf/naacl/VaibhavSSN19,DBLP:conf/naacl/AnastasopoulosL19,DBLP:conf/acl/SinghGR18
}
;此外,也可以在文本中加入人为设计过的毫无意义的单词序列,以此来分散模型的注意(
{
\color
{
red
}
啥是分散模型的注意?
}
)
。
\parinterval
除了单纯的在文本中引入各种扰动外,还可以通过文本编辑的方式构建对抗样本,在不改变语义的情况下尽可能
的
修改文本
\upcite
{
DBLP:journals/corr/SamantaM17,DBLP:conf/ijcai/0002LSBLS18
}
,从而生成对抗样本。文本的编辑方式主要包括交换,插入,替换和删除操作。图
\ref
{
fig:13-20
}
给出了一些通过上述方式生成的对抗样本。
\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
(需要让读者真实的感受一下)
}}
\caption
{
对抗样本实例
{
\red
(需要让读者真实的感受一下
,还是以前的问题,例子是我们自己的还是找的?
)
}}
\label
{
fig:13-20
}
\end{figure}
%----------------------------------------------
\parinterval
{
\red
形式上,可以利用FGSM
\upcite
{
DBLP:journals/corr/GoodfellowSS14
}
等算法,验证文本中每一个单词对语义的贡献度,同时为每一个单词构建候选池,包括单词的近义词,拼写错误词,同音词等。对于贡献度较低的词,如语气词,副词等,可以使用插入、删除操作进行扰动。对于文本序列中其他的单词,可以在候选池中选择相应的单词进行替换。其中,交换操作可以是基于词级别的,比如交换序列中的单词,也可以是基于字符级别的,比如交换单词中的字符
\upcite
{
DBLP:conf/coling/EbrahimiLD18
}
。重复的进行不同的编辑操作,直至误导模型做出错误的判断。
}
\parinterval
在基于语义的方法中,除了通过不同的算法修改输入以外,也可以通过神经网络模型增加扰动。例如,在机器翻译中常用的回译技术,也是生成对抗样本的一种有效方式。回译就是,通过反向模型将目标语言翻译成源语言,并将翻译得到的双语数据
再次应用于神经机器翻译系统的
训练。除了翻译模型,语言模型也可以用于生成对抗样本。
{
\red
前面
}
已经介绍过,语言模型可以用于检测句子的流畅度,它根据上文预测当前位置可能出现的单词。因此,此时可以使用语言模型预测出当前位置最可能出现的多个单词,并用这些词替换序列中原本的单词。在机器翻译任务中,可以通过与神经机器翻译系统联合训练,共享词向量矩阵的方式得到语言模型。
{
\red
(引用)
}
\parinterval
在基于语义的方法中,除了通过不同的算法修改输入以外,也可以通过神经网络模型增加扰动。例如,在机器翻译中常用的回译技术,也是生成对抗样本的一种有效方式。回译就是,通过反向模型将目标语言翻译成源语言,并将翻译得到的双语数据
用于模型
训练。除了翻译模型,语言模型也可以用于生成对抗样本。
{
\red
前面
}
已经介绍过,语言模型可以用于检测句子的流畅度,它根据上文预测当前位置可能出现的单词。因此,此时可以使用语言模型预测出当前位置最可能出现的多个单词,并用这些词替换序列中原本的单词。在机器翻译任务中,可以通过与神经机器翻译系统联合训练,共享词向量矩阵的方式得到语言模型。
{
\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不是主流,可以考虑把这部分放到拓展阅读中)
}
\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
}
,在稠密的向量空间
中进行搜索,也就是说在定义
$
\funp
{
P
}$
的基础稠密向量空间中找到对抗性表示
$
\mathbi
{
z
}
'
$
,然后利用生成模型将其映射回
$
\mathbi
{
x
}
'
$
,使最终生成的对抗样本在语义上接近原始输入。
{
\red
(既然GAN不是主流,可以考虑把这部分放到拓展阅读中)
}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -398,37 +398,35 @@ y_{j}^{ls} &=& (1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
\subsection
{
基于白盒攻击的方法
}
\parinterval
除了在
离散的词汇
级别增加扰动以外,还可以在模型内部增加扰动。这里简单介绍一下利用白盒攻击方法增加模型健壮性的方法:
\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
}
。
\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
}
)
{
\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
}
'
)
$
。同时,在如何利用语言模型选择候选和采样方面,也做出了相应的调整。在进行对抗性训练时,在原有的训练损失上增加了三个额外的损失,最终的训练目标为:
\noindent
其中,
$
\mathbi
{
x
}_
i
$
为输入中第
$
i
$
个词,
$
\mathbi
{
g
}_{
\mathbi
{
x
}_
i
}$
为对应的梯度向量,
$
\funp
{
e
}
(
\cdot
)
$
用于获取词向量,
$
\textrm
{
sim
}
(
\cdot
,
\cdot
)
$
用于评估两个向量之间
距离的函数
{
\red
(很多符号没有解释,
$
∇
_
(
e
(
x
_
i
))
$
是什么?等等)
}
,
$
\nu
_{
\mathbi
{
x
}}$
为源语的词表(
{
\color
{
red
}
词表一般用大V
}
)。但是,由于对词表中所有单词进行枚举时,计算成本较大。因此利用语言模型选择最可能的
$
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
}}
)
$
是使用修改后得到的对抗样本作为输入,并以原始的目标语作为答案时计算得到的损失,其
具体形式如下:
\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
}}
)
$
是使用修改后得到的对抗样本作为输入,并以原始的目标语作为答案时计算得到的损失。令有
$
N
$
个样本,则损失函数的
具体形式如下:
\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
}}
)
Loss
_{
\textrm
{
robust
}}
(
\theta
_{
\textrm
{
mt
}}
)
&
=
&
\frac
{
1
}{
N
}
\sum
_{
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
}
-
\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
这篇文章再找一下
}
。而在深度学习时代下,对抗训练将问题定义为:有意识地构造出系统容易出错的样本,并使用这种样本训练系统,以此增加系统的抗干扰能力。
...
...
@@ -701,7 +699,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\vspace
{
0.5em
}
\item
可以加速机器学习模型的训练。在达到相同的模型性能条件下,课程学习可以加速训练,减少训练迭代步数;
\vspace
{
0.5em
}
\item
使模型获得更好的泛化性能,即能让模型训练到更好的局部最优值状态;
\item
使模型获得更好的泛化性能,即能让模型训练到更好的局部最优值状态;
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -713,7 +711,7 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\vspace
{
0.5em
}
\item
如何评估每个样本的难度?即评估准则(Difficulty Criteria)
\vspace
{
0.5em
}
\item
以何种策略来规划训练数据?比如何时为训练提供更复杂的数据,以及提供多少数据等,即课程规划(curriculum schedule)
\item
以何种策略来规划训练数据?比如何时为训练提供更复杂的数据,以及提供多少数据等,即课程规划(curriculum schedule)
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -789,6 +787,6 @@ L_{\textrm{seq}} = - \textrm{logP}_{\textrm{s}}(\hat{\mathbf{y}} | \mathbf{x})
\sectionnewpage
\section
{
小结及深入阅读
}
\parinterval
对抗样本除了用于提高模型的健壮性之外,还有很多其他的应用场景。其中最主要的便是用于评估模型。通过构建由对抗样本构造的数据集,可以验证模型对于不同类型噪声健壮性
\upcite
{
DBLP:conf/emnlp/MichelN18
}
。正是由于对抗样本在检测和提高模型健壮性具有明显的效果,因此很多的研究人员在针对不同的任务提出了很多有效的方法。但是在生成对抗样本时常常要注意或考虑很多问题,比如扰动是否足够细微,在人类难以察觉的同时做到欺骗模型的目的,对抗样本在不同的模型结构或数据集上是否具有足够的泛化能力。生成的方法是否足够高效等等。
\parinterval
对抗样本除了用于提高模型的健壮性之外,还有很多其他的应用场景。其中最主要的便是用于评估模型。通过构建由对抗样本构造的数据集,可以验证模型对于不同类型噪声健壮性
\upcite
{
DBLP:conf/emnlp/MichelN18
}
。正是由于对抗样本在检测和提高模型健壮性具有明显的效果,因此很多的研究人员在针对不同的任务提出了很多有效的方法。但是在生成对抗样本时常常要注意或考虑很多问题,比如扰动是否足够细微,在人类难以察觉的同时做到欺骗模型的目的,对抗样本在不同的模型结构或数据集上是否具有足够的泛化能力。生成的方法是否足够高效等等。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论