Dong C., Liu L. and Shang J. Double descent in adversarial training: an implicit label noise perspective. In International Conference on Learning Representations (ICLR), 2022.
概
![](https://img2022.cnblogs.com/blog/1603215/202204/1603215-20220414222550051-865785029.png)
对抗训练非常容易过拟合, 但是作者发现, 对抗训练和标准训练一样, 当训练次数足够多的时候, 也会出现 Double Descent 的现象, 即测试误差先下降再上升然后再下降. 作者认为, 即便普通样本 \(x\) 质量够高, 其条件概率可以近似认为
\[p(Y=y|x) = \mathbb{1}(y = y^*),
\]
其中\(y^*:= \mathop{\arg \max} \limits_{j} p(Y=j|x)\)为真实的标签, 对抗样本 \(x_{\delta} = x + \delta\) 的条件概率也强硬地认为是
\[p(Y=y_{\delta}|x_{\delta}) = \mathbb{1}(y_{\delta} = y^*)
\]
是不合适的. 这或许就是导致容易出现过拟合现象的原因.
主要内容
假设
- 假设训练集标签没有噪声, 即样本\(x\)的标签\(y = y^*\) 且 \(p(y|x) = p(y^*|x)\).
- 训练集\(\mathcal{X}\)中的样本\(x\)的质量很高, 即可以认为\(P(Y=y^*|x) \approx 1\);
- 对抗样本\(x_{\delta} = x + \delta\), 其中
\[\delta = \mathop{\arg \max} \limits_{\|\delta\| \le \epsilon} \ell (f(x + \delta;\theta), y).
\]
\(x_{\delta}\)的标签\(y_{\delta}* := \mathop{\arg \max}_{j} p(Y_{\delta} = j | x_{\delta}) = y^*\), 即扰动\(\delta\)应该不改变预测的标签. 这个是合理的, 因为我们一般采用\(8 / 255\), 这虽然会导致图片语义模糊, 但不至于改变其语义.
扰动前后条件概率的距离
我们用 total variation 来定义两个分布\(p, q\)的距离:
\[\|p - q\|_{TV} = \mathrm{sup}_{A} |p(A) - q(A)|,
\]
对于离散分布而言
\[\|p - q\|_{TV} = \frac{1}{2} \sum_{j}| p_j - q _j|
\]
我们假设 \(p(Y_{\delta}=y_{\delta}^*|x_{\delta})\)是已知\(x_{\delta}\)的情况下的真实分布, 而\(p(Y=y^*|x_{\delta}) = p(Y=y^*|x)\)是我们在对抗训练过程中所给予的一个先验分布 (既然我们在训练中利用交叉熵令\(f_{\theta}(x_{\delta}\)的概率值和此概率接近)). 现在我们讨论这两个\(Y_{\delta}, Y\)的差距.
定理3.1:
\[p(Y \not= Y_{\delta} | x_{\delta}) \ge \|p(Y_{\delta}|x_{\delta}) - p(Y|x)\|_{TV},
\]
即二者不等的概率是至少大于二者分布的TV的. 所以由此导致的分布不匹配的问题是需要引起重视的.
proof:
\[\begin{array}{ll}
|p(Y_{\delta} \in J|x_{\delta}) - p(Y \in J|x_{\delta})|
&=|p(Y_{\delta} \in J, Y = Y_{\delta}|x_{\delta}) + p(Y_{\delta} \in J, Y \not= Y_{\delta}|x_{\delta}) \\
&\quad- p(Y \in J, Y = Y_{\delta}|x_{\delta}) - p(Y \in J, Y \not= Y_{\delta}|x_{\delta})| \\
&\le|p(Y_{\delta} \in J, Y = Y_{\delta}|x_{\delta}) - p(Y \in J, Y = Y_{\delta}|x_{\delta})| \\
&\quad+ |p(Y_{\delta} \in J, Y \not= Y_{\delta}|x_{\delta}) - p(Y \in J, Y \not= Y_{\delta}|x_{\delta})| \\
&\le 0 + p(Y\not= Y_{\delta} | x_{\delta}).
\end{array}
\]
对于任意的\(J\)成立, 证毕.
label smoothing 用于减轻过拟合
假设我们手头有训练好的网络:
\[g(x;T;\theta) := \frac{\exp(z_j / T)}{\sum_j \exp(z_j / T)}, \: z = g(x).
\]
我们希望利用\(g\)提供的条件概率分布和原先的条件概率分布做一个调和:
\[p_{\theta;T, \lambda}(Y_{\delta}=y_{\delta}|x_{\delta}) := \lambda \cdot g(x_{\delta}; \theta, T) + (1 - \lambda) \cdot p(Y = y^*|x).
\]
定理4.1:
如果\(\mathop{\arg \max}_j g(x_{\delta}; \theta)_j = y_{\delta}^*\), 则存在\(T\)
\[\|g(x_{\delta}; \theta, T) - p(Y_{\delta}|\delta)\|_{TV}
\le \|p(Y|x) - p(Y_{\delta}|x_{\delta})\|_{TV}.
\]
这说明, 替代分布加上 label smoothing 比单纯的标签有效 (注意, 需要\(g\)关于\(x_{\delta}\)是正确判断的).
定理4.2:
如果\(\mathop{\arg \max}_j g(x_{\delta};T; \theta)_j \not= y_{\delta}^*\), 则存在\(\lambda\)使得
\[\|p_{\theta;T, \lambda}(Y_{\delta}|x_{\delta}) - p(Y_{\delta}|x_{\delta})\|_{TV}
\le \mathrm{min} (\|g(x_{\delta}; T;\theta) - p(Y_{\delta}|x_{\delta})\|_{TV},
\|p(Y|x) - p(Y_{\delta}|x_{\delta})\|_{TV}).
\]
注: 文中只给出了前者, 我发现通过同样的构造:
\[p_{\theta;T, \lambda^*}(Y_{\delta}|x_{\delta}) = p(Y_{\delta}|x_{\delta}),
\]
同时满足
\[\lambda^* (1 - g(x_{\delta};T;\theta)_{j^*}) = 1 - p(Y_{\delta} = j^* | x_{\delta}).
\]
可以类似证明出后者.
这个定理表明, 即便是在\(g\)误判的情况下, 我们也能找到一个合适的\(\lambda\)使得结果比单纯用标签效果好.
实际的操作
根据上面的结果, 一个合理的做法是为每一个样本定制一个\(T, \lambda\), 不过文中发现, 大部分的\(T, \lambda\)都比较集中. 所以作者选择同一个. 其由下式优化的得到:
\[T, \lambda = \mathop{\arg \min}_{T, \lambda} -\mathbb{E}_{(x_{\delta}, y_{\delta}) \sim \mathcal{D}_{\delta}^{\mathrm{val}}} \log p_{\theta; T, \lambda} (Y_{\delta} = y_{\delta}|x_{\delta}).
\]
在实际中, 作者采用的是如下方式优化的:
\[T, \lambda = \mathop{\arg \min}_{T, \lambda} -\mathbb{E}_{(x_{\delta}, y_{\delta}) \sim \mathcal{D}_{\mathrm{val}}} \: \ell_{ce} (\lambda \cdot g(x_{\delta}; T; \theta) + (1 - \lambda) \cdot g(x_{\delta}; \theta^s, T), y_{\delta}).
\]
注意: \(\mathcal{D}_{\sigma}^{val}\)和\(\mathcal{D}_{val}\), 我想应该不是笔误. 作者用后者, 给出的理由是标签不知道?我的感觉是因为我们不确定的是 \(\mathcal{D}_{\sigma}^{val}\).
设想, 虽然我们从测试集\(\mathcal{D}_{val}\)中采样\(x\)然后再加上扰动就可以得到\(x_{\delta}\), 但是倘若我们简单地量\(y_{\delta} = y\), 那此时我们所默认的条件分布为
\[p(Y_{\delta} | x_{\delta}) = p(Y|x),
\]
此时最小化该损失结果得到的是
\[p_{\theta; T, \lambda} (Y_{\delta} = y_{\delta}|x_{\delta}) \rightarrow p(Y|x),
\]
那就没有意义了.
我们需要保证条件分布
\[p(Y_{\delta}|x_{\delta})
\]
为真实的分布, 但我们又不知道该分布. 所以我们可以用\(g(x_{\delta}; \theta^s, T)\)来替代 (这个也很离谱的, 因为比较存在错判的情况啊) ? 但是作者显然不是从这个角度出发的.
最后, 利用下列损失训练:
\[\mathop{\arg \min}\limits_{\theta} \mathbb{E}_{\mathcal{D}_{\delta}} \: \ell (f(x_{\delta}; \theta), p_{\theta^{Trad}; T, \lambda} (y_{\delta|x_{\delta}})).
\]