Houdini 对抗攻击_学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35414569/article/details/82216452

前言

本篇博客出于学习交流目的,主要是用来记录自己学习中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删!


Houdini 对抗攻击算法
特点:解决组合并不可分解的问题,例如语音识别,姿态评估,语义分割。黑盒攻击
论文原文:Houdini: Fooling Deep Structured Prediction Models

组合并不可分解的问题是不能通过梯度下降的方法生成对抗样本的,那么可以参考这篇文章。

正文

以下组合且不可分解领域评估指标:
语音识别:word (or phoneme) error rate
姿态评估:percentage of correct key points (normalized by the head)
语义分割:intersection over union (IOU)

以上领域用有监督学习有两种解决方案:
1,用一个恒定可微代理损失函数,代理保证损失的收敛;
2,直接优化任务损失,例如距离损失最小化等等。

但是以上两种策略都有严重的局限性:
1,可微代理对于分类是令人满意的,因为该代理与分类准确率之间的关系已经建立了。但是这依赖于解决的问题场景,对于前面提到的结构化预测任务效果就不好。在最好的情况下,我们只能期望代理与任务损失之间存在高度的正相关关系;
2,直接最小化方法涉及的计算量更大同时对超参数的选择是非常敏感。
因此,上诉很难为结构化预测问题生成对抗性的例子,因为当代理不能很好地逼近任务损失时,它需要大量的领域专业知识,几乎不能保证成功。

作者提出了Houdini 对抗攻击算法,通过直接为组合不可微任务损失制定对抗样本,以达到欺骗任何基于梯度的学习机器。 Houdini和任务的损失有密切的关系。


对抗样本

x ,输入图像; x ~ ,对抗样本; y ,类标; δ x ,扰动; p ,范数; g θ ,网络; l ( ) ,损失函数; ϵ ,攻击强度限制;

通用公式: x ~ = x + δ x

根据梯度求解公式: x ~ = arg max x ~ : x ~ x p ε   l ( g θ ( x ~ ) , y )

假设损失函数可微,一阶泰勒展开为: x ~ = arg max x ~ : x ~ x p ε   ( x l ( g θ ( x ) , y ) ) T ( x ~ x )

注: l ( g θ ( x ) , y ) = 0 ,当 y x 正确类标;当 p = 时,等价于FGSM算法;当 p = 2 时, x l ( g θ ( x ) , y ) 通常需要归一化,用小的范数进行迭代的效果好。这可以与提出的组合使用,得到具有分析梯度的一致近似损失值。

任务损失最小化
许多工作直接最小化任务损失:
McAllester提出一个确定的类似感知机的学习规则,包括从损失增益信息中推导的特征向量直接对应特征损失,但是对超参的选择十分敏感,每次迭代都需要两轮推导;

其他学者提出了一个坡度损失,从二分类到结构化预测,并提出了一个比结构化HInge 损失更紧边界的任务损失,但是更新时通用需要两轮推导;

Keshet 对结构化预测案例提出了二进制预测损失,预测损失是代理损失函数是PAC贝叶斯生成理论的自然结果,定义为: l ¯ p r o b i t ( g θ ( x ) , y ) = E ϵ N ( 0 , 1 ) [ l ( y , g θ + ϵ ( x ) ) ]
强一致性是代理的一个关键属性,因为它保证了与任务丢失的紧密关系。例如,如果某个给定系统的攻击者恶化了任务代理的一致性,那么他可能会恶化任务丢失。

因为前面这些效果都不好,所以作者提出了Houdini损失,它共享结构化概率损失的理想属性,同时不受其限制。与结构化的概率损失与任务损失密切相关。更新只需要一个推理操作。

Houdini
x 通过网络 g 输出为 y 的最大概率评分公式如下:

y ^ = y θ ( x ) = arg max y Y g θ ( x , y )

对抗样本 x ~ 生成的公式如下:

x ~ = y θ ( x ) = arg max x ~ : x ~ x p ϵ l ( y θ ( x ~ ) , y )

由于任务损失组合数量大,难以直接求解,以此用一个可微代理损失 l ( y θ ( x ~ ) , y ) 替代;不同的问题用不同的代理,一下为Houdini代理:

l ¯ H ( θ , x , y ) = P γ N ( 0 , 1 ) [ g θ ( x , y ) g θ ( x , y ^ ) < γ ] l ( y ^ , y )

Houdini由两项组成:1,随机边缘,真实目标得分与预测目标得分的差值小于 γ N ( 0 , 1 ) ;2,任务损失。

Houdini是任务损失的下界, δ g ( y , y ^ ) = g θ ( x , y ) g θ ( x , y ^ ) 为真实和预测的评分的差值,有第一项恒小于1,当这个概率等于或接近1时,网络分配给目标 y ^ 的分数没有限制地增长时,Houdini收敛于任务损失。

Houdini微分得:

x [ l ¯ H ( θ , x , y ) ] = l ¯ H ( θ , x , y ) g θ ( x , y ) g θ ( x , y ) x

要计算表达式右边,我们只需要计算Houdini相对于它的输入(网络的输出)的导数。其余部分通过反向传播获得。损失对网络输出的导数为:
g [ P γ N ( 0 , 1 ) [ g θ ( x , y ) g θ ( x , y ^ ) < γ ] l ( y ^ , y ) ] = g [ 1 2 π δ g ( x , y ) e v 2 / 2 d v l ( y , y ^ ) ]

C = 1 2 π ,得到:

g [ l ¯ H ( y ^ , y ) ] = { C e | δ g ( y , y ^ ) | 2 / 2 l ( y , y ^ ) , g = g θ ( x , y ) C e | δ g ( y , y ^ ) | 2 / 2 l ( y , y ^ ) , g = g θ ( x , y ^ ) 0 , o t h e r w i s e

上式给出了一个计算Houdini输入梯度的简单解析公式,从而给出了一种通过反向传播获得网络 x 输入梯度的有效方法。梯度可以通过两种方法结合任何基于梯度的对抗样本生成过程。可以是非目标攻击也可以是目标攻击。
注:当比分预测的目标非常接近真实,也就是 δ g ( y , y ^ ) 比我们想要欺骗模型的期望小时,我们有 e | δ g ( y , y ^ ) | 2 / 2 1

接下来就是在具体问题中的应用Houdini算法了,文章给出了一下几个领域的:
Human Pose Estimation
Semantic segmentation
Speech Recognition

这里有一个评估图像可察觉性的指标: ( 1 n ( x i x i ) 2 ) 1 / 2 ,这个值越小越好

over

猜你喜欢

转载自blog.csdn.net/qq_35414569/article/details/82216452