DeepFool笔记:对原理的理解和公式推导(多分类)

对多分类的理解

在多分类器中,输出向量由输入x属于各个分类的概率组成。若输出的向量中某个类对应的概率高,则判定输入的样本属于该类。
将每个类别 C k C_k Ck对应一个决策超平面 c k c_k ck,平面两端分别表示“属于该分类”( C k C_k Ck)和“不属于该分类”( C k ‾ \overline{C_k} Ck)。假设一个三分类器(如图, C 4 C_4 C4先忽视),于是对于 C 3 C_3 C3分类区域,它是 c 1 ‾ \overline{c_1} c1 c 2 ‾ \overline{c_2} c2 c 3 c_3 c3的交集。其他分类区域类似。
在这里插入图片描述

扰动仿射多分类器(即线性多分类器)

DeepFool对多分类器的扰动目标仅是让分类器对对抗样本的预测不为原分类。它求的是达到这个目标的最小扰动,原文是让样本靠向某个类,但不确保样本加上最小扰动后对它预测得到的就是这个类。
在这里插入图片描述

推导:扰动向量的求解公式

论文中对多分类器的扰动向量的求取如下式。 l ^ \hat{l} l^可视为 x 0 x_0 x0被扰动之后,其靠向的类对应的决策超平面, k ^ \hat{k} k^则是 x 0 x_0 x0原所属类别。
在这里插入图片描述
这个式子怎么得来的,原文没有细说。下面推导。
论文原图是 x 0 x_0 x0 C 4 C_4 C4类区域内(中间围成的三角形),接着通过扰动让 x 0 x_0 x0归类为 C 3 C_3 C3 c 3 c_3 c3对应上式的 l ^ \hat{l} l^ c 1 c_1 c1对应 k ^ \hat{k} k^。为方便画图和理解,这里换个说法: x 0 x_0 x0原属 C 1 C_1 C1,需通过扰动使其归属 C 3 C_3 C3 如图, c 1 c_1 c1 c 3 c_3 c3的交点为 x 1 x_1 x1.直观上看, x 0 x_0 x0 C 1 C_1 C1 C 3 C_3 C3的最短路径即是向量 x 0 x 1 → \overrightarrow{x_0x_1} x0x1 ,因此求最小扰动向量就是求向量: x 1 ⃗ − x 0 ⃗ \vec{x_1}-\vec{x_0} x1 x0
在这里插入图片描述
给这个向量乘个 w 3 − w 1 w_3-w_1 w3w1,于是有:
( w 3 − w 1 ) ∗ ( x 1 − x 0 ) (w_3-w_1)*(x_1-x_0) (w3w1)(x1x0)
= ( w 3 ∗ x 1 − w 1 ∗ x 1 ) − ( w 3 ∗ x 0 − w 1 ∗ x 0 ) =(w_3*x_1-w_1*x_1)-(w_3*x_0-w_1*x_0) =(w3x1w1x1)(w3x0w1x0)
= ( ( f 3 ( x 1 ) − b 3 ) − ( f 1 ( x 1 ) − b 1 ) ) − ( ( f 3 ( x 0 ) − b 3 ) − ( f 1 ( x 0 ) − b 1 ) ) =((f_3(x_1)-b_3)-(f_1(x_1)-b_1))-((f_3(x_0)-b_3)-(f_1(x_0)-b_1)) =((f3(x1)b3)(f1(x1)b1))((f3(x0)b3)(f1(x0)b1))

(因为决策超平面上的点 x 1 x_1 x1对应的 f f f值为0,所以:)

= − ( f 3 ( x 0 ) − f 1 ( x 0 ) ) =-(f_3(x_0)-f_1(x_0)) =(f3(x0)f1(x0))
因为 w 3 − w 1 w_3-w_1 w3w1是个向量,不能直接放到右边除 − ( f 3 ( x 0 ) − f 1 ( x 0 ) ) -(f_3(x_0)-f_1(x_0)) (f3(x0)f1(x0)),所以先把 w 3 − w 1 w_3-w_1 w3w1搞成单位向量,之后两边乘单位向量就可了
( w 3 − w 1 ) ∥ w 3 − w 1 ∥ 2 ∗ ( x 1 − x 0 ) = − ( f 3 ( x 0 ) − f 1 ( x 0 ) ) ∥ w 3 − w 1 ∥ 2 \frac{(w_3-w_1)}{\Vert w_3-w_1 \Vert_2}*(x_1-x_0)=\frac{-(f_3(x_0)-f_1(x_0))}{\Vert w_3-w_1 \Vert_2} w3w12(w3w1)(x1x0)=w3w12(f3(x0)f1(x0))
                                ↓

( x 1 − x 0 ) = − ( f 3 ( x 0 ) − f 1 ( x 0 ) ) ∥ w 3 − w 1 ∥ 2 ∗ ( w 3 − w 1 ) ∥ w 3 − w 1 ∥ 2 (x_1-x_0)=\frac{-(f_3(x_0)-f_1(x_0))}{\Vert w_3-w_1 \Vert_2} * \frac{(w_3-w_1)}{\Vert w_3-w_1 \Vert_2} (x1x0)=w3w12(f3(x0)f1(x0))w3w12(w3w1)
右式的负号是前面向量相减时引入的方向,其实在前面的 ( w 3 − w 1 ) ∗ ( x 1 − x 0 ) (w_3-w_1)*(x_1-x_0) (w3w1)(x1x0)后这个负号就没意义了,所以取 − ( f 3 ( x 0 ) − f 1 ( x 0 ) ) -(f_3(x_0)-f_1(x_0)) (f3(x0)f1(x0))的绝对值即可。于是得到论文中的公式(9)。

求对非线性多分类器的最小扰动

同上一篇讲DeepFool针对二分类情况的文章,这里还是只考虑样本的某一个特征的维度。如下图。横轴对应输入的特征x,纵轴对应分类概率,三条曲线 c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3对应三个分类的概率函数。 C 1 C_1 C1 C 2 C_2 C2 C 3 C_3 C3三个类别各对应一个区间。现有属于 C 2 C_2 C2类的样本 x 0 x_0 x0要将它移到 C 3 C_3 C3分类,最短距离即是向量 x 0 x 1 → \overrightarrow{x_0x_1} x0x1 x 1 x_1 x1 c 2 c_2 c2 c 3 c_3 c3在x轴上的交点)。现在只能得到 x 0 x_0 x0处各概率函数的梯度,那么怎么求 x 1 x_1 x1
结论是, x 0 x_0 x0处作 c 2 c_2 c2 c 3 c_3 c3的切线,它们相交于点 x ′ x' x,DeepFool即用该点作为 x 1 x_1 x1的近似。下面证明。
求向量 x 0 x ′ → \overrightarrow{x_0x'} x0x 也即是求 x 1 ⃗ − x 0 ⃗ \vec{x_1}-\vec{x_0} x1 x0 ,因此同上一节提到的做法,给这个向量乘个 w 3 − w 2 w_3-w_2 w3w2 w 3 w_3 w3 w 2 w_2 w2分别是两条切线的法向量,也就是梯度),便得到 ( ( f 3 ( x ′ ) − b 3 ) − ( f 2 ( x ′ ) − b 2 ) ) − ( ( f 3 ( x 0 ) − b 3 ) − ( f 2 ( x 0 ) − b 2 ) ) ((f_3(x')-b_3)-(f_2(x')-b_2))-((f_3(x_0)-b_3)-(f_2(x_0)-b_2)) ((f3(x)b3)(f2(x)b2))((f3(x0)b3)(f2(x0)b2))
消掉 b 2 b_2 b2 b 3 b_3 b3,又因为 x ′ x' x是两条切线的交点,所以 f 3 ( x ′ ) f_3(x') f3(x) f 2 ( x ′ ) f_2(x') f2(x)相等,再消,最后得

( w 3 − w 1 ) ∗ ( x 1 − x 0 ) = − ( f 3 ( x 0 ) − f 2 ( x 0 ) ) (w_3-w_1)*(x_1-x_0)=-(f_3(x_0)-f_2(x_0)) (w3w1)(x1x0)=(f3(x0)f2(x0))
最后也得到公式(9)。

在这里插入图片描述

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值