前言
本篇博客出于学习交流目的,主要是用来记录自己学习中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删!
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和任务的损失有密切的关系。
对抗样本
,输入图像; ,对抗样本; ,类标; ,扰动; ,范数; ,网络; ,损失函数; ,攻击强度限制;
通用公式:
根据梯度求解公式:
假设损失函数可微,一阶泰勒展开为:
注: ,当 为 正确类标;当 时,等价于FGSM算法;当 时, 通常需要归一化,用小的范数进行迭代的效果好。这可以与提出的组合使用,得到具有分析梯度的一致近似损失值。
任务损失最小化
许多工作直接最小化任务损失:
McAllester提出一个确定的类似感知机的学习规则,包括从损失增益信息中推导的特征向量直接对应特征损失,但是对超参的选择十分敏感,每次迭代都需要两轮推导;
其他学者提出了一个坡度损失,从二分类到结构化预测,并提出了一个比结构化HInge 损失更紧边界的任务损失,但是更新时通用需要两轮推导;
Keshet 对结构化预测案例提出了二进制预测损失,预测损失是代理损失函数是PAC贝叶斯生成理论的自然结果,定义为:
强一致性是代理的一个关键属性,因为它保证了与任务丢失的紧密关系。例如,如果某个给定系统的攻击者恶化了任务代理的一致性,那么他可能会恶化任务丢失。
因为前面这些效果都不好,所以作者提出了Houdini损失,它共享结构化概率损失的理想属性,同时不受其限制。与结构化的概率损失与任务损失密切相关。更新只需要一个推理操作。
Houdini
通过网络
输出为
的最大概率评分公式如下:
对抗样本
生成的公式如下:
由于任务损失组合数量大,难以直接求解,以此用一个可微代理损失
替代;不同的问题用不同的代理,一下为Houdini代理:
Houdini由两项组成:1,随机边缘,真实目标得分与预测目标得分的差值小于 ;2,任务损失。
Houdini是任务损失的下界, 为真实和预测的评分的差值,有第一项恒小于1,当这个概率等于或接近1时,网络分配给目标 的分数没有限制地增长时,Houdini收敛于任务损失。
Houdini微分得:
要计算表达式右边,我们只需要计算Houdini相对于它的输入(网络的输出)的导数。其余部分通过反向传播获得。损失对网络输出的导数为:
令
,得到:
上式给出了一个计算Houdini输入梯度的简单解析公式,从而给出了一种通过反向传播获得网络
输入梯度的有效方法。梯度可以通过两种方法结合任何基于梯度的对抗样本生成过程。可以是非目标攻击也可以是目标攻击。
注:当比分预测的目标非常接近真实,也就是
比我们想要欺骗模型的期望小时,我们有
。
接下来就是在具体问题中的应用Houdini算法了,文章给出了一下几个领域的:
Human Pose Estimation
Semantic segmentation
Speech Recognition
这里有一个评估图像可察觉性的指标: ,这个值越小越好