天天看点

Houdini 对抗攻击_学习笔记前言正文over

前言

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

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

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

根据梯度求解公式: x~=argmaxx~:∥∥x~−x∥∥p≤ε l(gθ(x~),y) x ~ = arg ⁡ max x ~ : ‖ x ~ − x ‖ p ≤ ε   l ( g θ ( x ~ ) , y )

假设损失函数可微,一阶泰勒展开为: x~=argmaxx~:∥∥x~−x∥∥p≤ε (▽xl(gθ(x),y))T(x~−x) x ~ = arg ⁡ max x ~ : ‖ x ~ − x ‖ p ≤ ε   ( ▽ x l ( g θ ( x ) , y ) ) T ( x ~ − x )

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

任务损失最小化

许多工作直接最小化任务损失:

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

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

Keshet 对结构化预测案例提出了二进制预测损失,预测损失是代理损失函数是PAC贝叶斯生成理论的自然结果,定义为: l¯probit(gθ(x),y)=Eϵ∼N(0,1)[l(y,gθ+ϵ(x))] l ¯ p r o b i t ( g θ ( x ) , y ) = E ϵ ∼ N ( 0 , 1 ) [ l ( y , g θ + ϵ ( x ) ) ]

强一致性是代理的一个关键属性,因为它保证了与任务丢失的紧密关系。例如,如果某个给定系统的攻击者恶化了任务代理的一致性,那么他可能会恶化任务丢失。

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

Houdini

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

y^=yθ(x)=argmaxy∈Ygθ(x,y)y^=yθ(x)=arg⁡maxy∈Ygθ(x,y)

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

x~=yθ(x)=argmaxx~:∥∥x~−x∥∥p≤ϵl(yθ(x~),y) x ~ = y θ ( x ) = arg ⁡ max x ~ : ‖ x ~ − x ‖ p ≤ ϵ l ( y θ ( x ~ ) , y )

由于任务损失组合数量大,难以直接求解,以此用一个可微代理损失 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) l ¯ H ( θ , x , y ) = P γ ∼ N ( 0 , 1 ) [ g θ ( x , y ) − g θ ( x , y ^ ) < γ ] ⋅ l ( y ^ , y )

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

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

Houdini微分得:

▽x[l¯H(θ,x,y)]=∂l¯H(θ,x,y)∂gθ(x,y)∂gθ(x,y)∂x ▽ 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[12π−−√∫∞δg(x,y)e−v2/2dvl(y,y^)] ▽ 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=12π√ C = 1 2 π ,得到:

▽g[l¯H(y^,y)]=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪−C⋅e−∣∣δg(y,y^)∣∣2/2l(y,y^),g=gθ(x,y)C⋅e−∣∣δg(y,y^)∣∣2/2l(y,y^),g=gθ(x,y^)0,otherwise ▽ 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 x 输入梯度的有效方法。梯度可以通过两种方法结合任何基于梯度的对抗样本生成过程。可以是非目标攻击也可以是目标攻击。

注:当比分预测的目标非常接近真实,也就是δg(y,y^)δg(y,y^)比我们想要欺骗模型的期望小时,我们有 e−∣∣δg(y,y^)∣∣2/2≃1 e − | δ g ( y , y ^ ) | 2 / 2 ≃ 1 。

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

Human Pose Estimation

Semantic segmentation

Speech Recognition

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

over

继续阅读