目录概主要内容IBPCROWNCROWN-IBP训练的技巧写在最后代码
概
一种可验证的提高网络鲁棒性的方法.
主要内容
IBP
假设第k层表示为:
[z_k = h_k(z_{k-1}) = sigma_k (W_k z_{k-1} + b_k), : k=1,2,cdots, K.
]
一般的分类网络, 要求:
[e_y^Tz_K ge e_j z_K, : forall j
ot= y,
]
其中(e_j)只有第(j)个元素为1, 其余均为0.
相应的, 如果考虑鲁棒性, 则需要
[forall z_0 in mathcal{X}(x_0):= {x| |x-x_0|_{infty} < epsilon },
]
[[z_K]_y = e_y^Tz_K ge e_j^T z_K = [z_K]_j, : forall j
ot= y,
]
成立.
现在, 假设已知
[underline{z}_{k-1} le z_{k-1} le overline{z}_{k-1},
]
并令
[mu_{k-1} = frac{overline{z}_{k-1} + underline{z}_{k-1}}{2} \
r_{k-1} = frac{overline{z}_{k-1} – underline{z}_{k-1}}{2} \
mu_k = W_k mu_{k-1} + b \
r_k = |W_k|r_{k-1} \
]
则
[mu_k – r_k le W_k z_{k-1} + b le mu_k + r_k,
]
其中(|cdot|)是element-wise的绝对值.
注:
[max_{x in [underline{x}, overline{x}]} quad a cdot x
Rightarrow x =
left {
egin{array}{ll}
overline{x}, & a ge 0 \
underline{x}, & a < 0
end{array}
ight .
Rightarrow
a cdot x = frac{a(overline{x}+underline{x})}{2} + frac{|a|(overline{x}-underline{x})}{2}.
]
倘若激活函数(sigma)是单调的, 进而有
[underline{z}_k = sigma_k(mu_k – r_k), : overline{z}_k = sigma_k (mu_k + r_k) \
underline{z}_k le z_k le overline{z}_k.
]
以此类推, 我们可以获得:
[underline{z}_K le z_K le overline{z}_K.
]
可知:
[[z_K]_j – [z_K]_y le [overline{z}_K]_j – [underline{z}_K]_y,
]
显然, 如果下式
[[overline{z}_K]_j – [underline{z}_K]_y le 0, : forall j
ot= y
]
成立, 则该模型对于(x_0)在(epsilon)下就是鲁棒的.
故定义
[[z_{*}]_j =
left {
egin{array}{ll}
[overline{z}_K]_j, & j
ot = y \
[underline{z}_K]_j, & j
ot = y \
end{array}
ight.
]
并通过下列损失:
[mathcal{L} = kappa cdot ell (z_K, y) + (1 – kappa) cdot ell(z_*, y),
]
其中(ell)是softmax交叉熵损失.
注:
[max_{|x – x_0|_{infty}<epsilon} ell (z_K(x), y) le ell(z_*, y).
]
这是因为
[egin{array}{ll}
ell(z_K(x), y)
&= -log frac{exp (z_y)}{sum_j exp(z_j)} \
&= -log frac{1}{sum_j exp(z_j-z_y)} \
&le -log frac{1}{sum_{j
ot= y} exp(overline{z}_j-underline{z}_y) + 1} \
&le -log frac{exp(underline{z}_y)}{sum_{j
ot =y} exp(overline{z}_j) + exp(underline{z}_y)} \
&= ell(z_*, y).
end{array}
]
故我们优化的是一个上界.
CROWN
注: 此图来自[Lyu Z. et al. Towards Evaluating and Training Verifiably Robust Neural Networks].
CROWN的区别, 实际上就是其对激活函数的一个relaxation, 比如
[underline{x} le x le overline{x} Rightarrow \
axle mathrm{ReLU}(x) le frac{overline{x}}{overline{x} – underline{x}} cdot x
-frac{overline{x}underline{x}}{overline{x} – underline{x}}.
]
其中(a in [0, 1]).
这个界可视化就是上面的图.
注: 作者说是要back propagation, 但是感觉forward也可以…
CROWN-IBP
上面二者的结合, 假设由上面二者分别推导出两个界, 并得到
[z_*, z_*’,
]
相应的损失函数为
[mathcal{L} = kappa cdot ell (z_K, y) + (1 – kappa) cdot ell(eta cdot z_* + (1 – eta) cdot z_*’, y).
]
这么做的原因是, 作者认为IBP在最开始的时候估计的界是非常loose的, 所以一开始的训练是很不稳定的, 故采取了这么一个折中的方案.
训练的技巧
(kappa) 从(kappa_{start})线性下降到(kappa_{end}), 即训练开始先着重于clean的部分;
(eta) 同样从(0)增大至(1)(ramp-up).
(epsilon)则是从0慢慢增大(ramp-up), 且如果我们测试关系的是(8/255), 训练的时候实际增大到(8.8/255), 即(1.1epsilon), 原因是发现IBP的方法对于(epsilon)比较小的情况的效果不是特别好和稳定;
写在最后
首先, 这些理论的保证并没有太好的效果, 和经验的方法依旧差距甚远, 个人觉得有趣的地方在于, 网络在不接触对抗训练的基础上依然能够获得鲁棒性.
另外, IBP的估计的界虽然远不及一些别的方法包括CROWN, 但是其表现出来的效果却好上很多, 这是非常有意思的一点.
虽然这一点在深度学习里头似乎也是比较常见的现象.