Attacking Visual Language Grounding with Adversarial Examples

元信息

https://www.aclweb.org/anthology/P18-1241/

  • acl18

目的

利用生成对抗样本的方式来检测图像描述系统的鲁棒性。之前的工作集中于针对图像分类的对抗样本攻击,这是第一篇检测视觉和语言结合的系统中的对抗样本攻击,同时之前多是研究如何攻击CNN模型,这也是第一次去研究攻击CNN+RNN模型,特别是研究攻击RNN模型。

提出了两种攻击场景:

  • Targeted caption: 给图像加一个扰动,使图像描述系统能够生成我们给定的targeted caption
  • Targeted keyword: 给图像加一个扰动(即生成对抗样本),使图像描述系统能够生成包含我们给定的若干关键词的caption

注意:生成的对抗样本在视觉上与原始样本无法区分(失真很小),但是能够误导图像描述模型给出错误的caption

方法

形式化描述

该任务的目标即给定一张图像\(I\), 分别生成符合上述两种攻击场景要求的对抗样本。具体则是解一个有约束优化问题:

\[\begin{array}{c} \min _{\delta} c \cdot \operatorname{loss}(I+\delta)+\|\delta\|_{2}^{2} \\ \mathrm{s.t.} \quad I+\delta \in[-1,1]^{n} \end{array} \]

上面公式的意思就是最小化任务loss同时还要保持对抗样本和原样本之间的像素级别的内容一致性,\(c\)是一个正则因子。下面这个约束条件则是保证像素的取值要在\([-1,1]\)之间,即加了扰动后,还是在图像的取值空间中。

为了方便解决,先要把它转换为一个无约束优化问题,也就是想办法去掉这个约束条件。这里,可以先假定\(I+\delta\)满足这个边界约束,利用\(\operatorname{arctanh}\)\(\tanh\)的取值范围和关系来做。也就是可以令:

\[I+\delta=\tanh(\operatorname{arctanh}(I+\delta))=\tanh(\operatorname{arctanh}(I)+w) \]

注意到这个\(w\)参数取值是无约束的,从而我们可以将有约束的\(I+\delta\) 表示为无约束的\(w\)的表达式:

\[y=\operatorname{arctanh}(I) \\ I+\delta=\tanh(y+w) \]

从而上面的问题就可以改写成:

\[\begin{array}{rl} \min _{w \in \mathbb{R}^{n}} & c \cdot \operatorname{loss}(\tanh (w+y)) \\ & +\|\tanh (w+y)-\tanh (y)\|_{2}^{2} \end{array} \]

下面就开始研究两种不同攻击场景的loss函数设计。

Targeted caption

给定目标caption:

\[S=\left(S_{1}, S_{2}, \ldots, S_{t}, \ldots, S_{N}\right) \]

目标就是给定含扰动的图像,能够生成这个caption,即对于所有可能的caption,最有可能,即概率最大的是生成这个目标caption。

\[\log P(S | I+\delta)=\max _{S^{\prime} \in \Omega} \log P\left(S^{\prime} | I+\delta\right) \]

后面那项就是:

\[\log P\left(S^{\prime} | I+\delta\right)=\sum_{t=2}^{N} \log P\left(S_{t}^{\prime} | I+\delta, S_{1}^{\prime}, \ldots, S_{t-1}^{\prime}\right) \]

后面那项实际又是softmax输出

\[P\left(S_{t}^{\prime} | I+\delta, S_{1}^{\prime}, \ldots, S_{t-1}^{\prime}\right)=\exp \left(z_{t}^{\left(S_{t}^{\prime}\right)}\right) / \sum_{i \in \mathcal{V}} \exp \left(z_{t}^{(i)}\right) \]

一般来说,最后就是将极大化取个负号,变成极小化,也就是最小化负对数似然损失,类似于这个

\[\begin{array}{l} \operatorname{loss}_{S, \log -\text { prob }}(I+\delta)=-\log P(S | I+\delta) \\ =-\sum_{t=2}^{N} \log P\left(S_{t} | I+\delta, S_{1}, \ldots, S_{t-1}\right) \end{array} \]

但是实际上,从图像分类的对抗攻击上学到的经验表示,在攻击loss中使用logit值而不是概率值能够更好地避免被别人防御,比如说采用defensive distillation(防御蒸馏)的方式。所以这里作者又提出了一种使用logit的方式。

把公式8带进公式7:

\[\begin{aligned} \log P\left(S^{\prime} | I+\delta\right) &=\sum_{t=2}^{N}\left[z_{t}^{\left(S_{t}^{\prime}\right)}-\log \left(\sum_{i \in \mathcal{V}} \exp \left(z_{t}^{(i)}\right)\right)\right] \\ &=\sum_{t=2}^{N} z_{t}^{\left(S_{t}^{\prime}\right)}-\text { constant } \end{aligned} \]

所以最大化概率的时候,就可以等价于最大化这前面一项了。

\[\log P(S | I+\delta) \propto \sum_{t=2}^{N} z_{t}^{\left(S_{t}\right)}=\max _{S^{\prime} \in \Omega} \sum_{t=2}^{N} z_{t}^{\left(S_{t}^{\prime}\right)} \]

一般来说,都是希望每一个\(z_{t}^{\left(S_{t}\right)}\)要尽量大,但是作者采用了一个更巧妙的转换方法:不是要尽量大,而是在所有词的logit向量上,\(S_t\)位置的值是最大的,即top-1的值是在\(S_t\)位置上。于是他就提出了下面这个:

\[\operatorname{loss}_{S, \text { logits }}(I+\delta)=\sum_{t=2}^{N-1} \max \left\{-\epsilon, \max _{k \neq S_{t}}\left\{z_{t}^{(k)}\right\}-z_{t}^{\left(S_{t}\right)}\right\} \]

那个复杂的max项指的是除\(S_t\)位置的值以外的最大值,具体来说,如果\(z_{t}^{\left(S_{t}\right)}>\max _{k \neq S_{t}}\left\{z_{t}^{(k)}\right\}+\epsilon\) ,也就是说他比其他位置中的最大值还要大的话,那它就是top-1了,不用优化了,此时\(\max _{k \neq S_{t}}\left\{z_{t}^{(k)}\right\}-z_{t}^{\left(S_{t}\right)}\) 小于\(-\epsilon\) 。故相应位置上的loss就取这个值,是一个常数,不会对loss的梯度有所贡献。

相反,当他没有其他位置的最大值大的时候,我们肯定就希望他成为top-1,所以max取的是\(\max _{k \neq S_{t}}\left\{z_{t}^{(k)}\right\}-z_{t}^{\left(S_{t}\right)}\) 这一项,然后最小化loss就变成了让它和最大值尽量接近。

所以最后的loss就为:

\[\begin{aligned} \min _{w \in \mathbb{R}^{n}} c \cdot & \sum_{t=2}^{N-1} \max \left\{-\epsilon, \max _{k \neq S_{t}}\left\{z_{t}^{(k)}\right\}-z_{t}^{\left(S_{t}\right)}\right\} \\ &+\|\tanh (w+y)-\tanh (y)\|_{2}^{2} \end{aligned} \]

Targeted Keyword

这个要求生成的caption里面要包含指定的M个关键词\(\left\{K_{1}, \cdots, K_{M}\right\} \subset \mathcal{V}\),但没有要求它的出现位置。看起来比上面那个简单,其实不是,因为还必须保证生成的caption是有意义的。

因为没有要求关键词的位置,所以只要存在一个合理的位置放就好(即该位置的logit值是top-1)。设计了以下loss

\[\operatorname{loss_{K,logits}}= \sum _ { j = 1 } ^ { M } \min _ { t \in [ N ] } \left\{ \max \left\{ - \epsilon , \max _ { k \neq K _ { j } } \left\{ z _ { t } ^ { ( k ) } \right\} - z _ { t } ^ { \left( K _ { j } \right) } \right\} \right\} \]

也就是说针对某一个关键词,在每个位置上应用上面的max项,然后取整个序列中值最小的位置进行优化。这是因为,值最小代表该位置的值最接近最大值,优化起来更加方便,因为只需要找了这样一个位置就好了,所以找最小的位置又方便优化,同时这样的位置还一定存在。

因为给的是关键词而不是targeted caption,所以训练RNN的时候会很尴尬,不知道该怎么输入。作者提出,使用原本的caption来作为初始化,迭代若干次后,然后infer出一个caption,用这个caption来作为RNN输入,再迭代若干次,直到收敛。

在这个攻击任务,还有一个尴尬的问题,就是有可能多个关键词都想占据同一个位置,也就是说有可能两个关键词在同一个位置都是top-2大的,且该位置的差值还是整个序列中最小的。为了避免这种位置冲突的问题(因为不可能一个位置放两个关键词),所以就加了一个门控函数来控制:

\[g _ { t , j } ( x ) = \left\{ \begin{array} { l } A , \text { if } \arg \max _ { i \in \mathcal { V } } z _ { t } ^ { ( i ) } \in \mathcal { K } \backslash \left\{ K _ { j } \right\} \\ x , \text { otherwise } \end{array} \right. \]

\[\sum _ { j = 1 } ^ { M } \min _ { t \in [ N ] } \left\{ g _ { t , j } \left( \max \left\{ - \epsilon , \max _ { k \neq K _ { j } } \left\{ z _ { t } ^ { ( k ) } \right\} - z _ { t } ^ { \left( K _ { j } \right) } \right\} \right) \right\} \]

也就是说,比如两个关键词都在同一个位置拥有top-2的大小,但是优化速度可能不尽相同,在某一个时刻,一个关键词先达到最大值,也就是位置被A占掉了,那么对于其他关键词在该位置的差值就永远等于一个非常大,大过一般logit取值范围的值A,这时再使用min函数就永远取不到该位置了。

实验

用了一个预训练的CNN+RNN模型。

选择的目标caption和图像都是从MSCOCO的validation set里面找的,找了1000条。

  • 之所以在验证集上找是为了保证目标caption在caption system的生成空间中。比如说,该系统从未被训练过去生成被动语态的句子,那该模型肯定无法生成被动语态的目标caption。其实就是为了排除一个out of domain的问题。

最后用一些指标去评价生成的caption与目标caption之间的关系。

实验结果

成功的对抗样本:

  • 指的是生成的caption与目标caption完全一致
  • 包含所有需要包含的关键词

对于3-keyword,有4%是失败的,作者也分析了失败中的情况,发现生成的caption平均也能包含1.5个关键词。

对抗样本的迁移性

可以迁移:这个对抗样本这个模型A上生成的目标句子SA与在另一个模型生成的句子SB语义上相似。

作者比较了Show and tell 和show and attend tell

ori:同一个模型上,生成的caption和原始样本配对的caption之间的相似度

tgt:不同模型上,使用对抗样本生成的target caption之间的相似度

mis:不同模型上,使用原始样本生成的caption之间的相似度 (来度量tgt之间的差异是不是受了模型不匹配的影响)

一般来说,越小的ori,越大的tgt,迁移性更好,tgt更加接近mis的效果,迁移性更好。

增加\(c\)\(\epsilon\)可以增加迁移性

猜你喜欢

转载自www.cnblogs.com/doragd/p/12970106.html