观后感
Source The 5th Lecture
鲁棒表示学习
AI下的DL分支目前发展迅猛,应用效果好,如:
- AlphaGo
- Rubik’s Cube(机器人解魔方)
- Self-Driving Cars(如特斯拉)
- …
而2013年对抗样本首次被提出,暴露了AI的脆弱性,也引发了人们的思考和关注:AI为什么不鲁棒??
脆弱性 Vuluerability
(1)对抗样本影响各个领域:
- 分类
- 语义分割
- 目标检测
- 强化学习
- Pose Estimation
- …
(2)对抗样本具有一定迁移性:不同任务之间的对抗样本可以相互迁移
在黑盒攻击中,一个思路是利用对抗样本的迁移性。在本地代理模型Substitute Networks上生成对抗样本,用以迁移攻击目标模型。
(3)物理世界的对抗样本存在较大威胁性
修改结构:鲁棒性提高
中间层去噪
一个现象是:在pix级别原图和对抗样本没有很大区别,但经过神经网络的放大处理,在feature map上呈现出比较大的差异。(如deepfake检测)
中间层去噪:可以将图片去噪的经典方法(如中值滤波、均值滤波…)应用在中间层,防御对抗攻击。这个操作是为了提高模型鲁棒性,相应地,去噪操作会导致信息损失,模型精确度下降。
Denoising Block Design:对应优化模型架构,采用ResNet结构减少信息损失,提高模型精确度。
平滑的Function
往往鲁棒性对应着平滑连续的表示函数。Relu存在跳跃,可以采用一些连续平滑的激活函数(如GElu,Elu,SmoothRelu…)来增强鲁棒性。
用对抗样本进行数据增强
进行数据增强有很多方法:
- 很多方法都不具有普适性(如flip这样的处理,对于NLP, 强化学习等领域是不适用的)
- 对抗样本进行数据增强是一种通用的方法。
对抗训练
一般而言,对抗训练有时候会导致模型鲁棒性上升精确度下降。有一种思路是,先用对抗样本进行对抗训练后再用干净样本进行fine-tuning来提高准确度,但是这样模型可能会以往对抗训练中学到的东西。
Adv-Prop
以前就有人提出,训练时将对抗样本和正常样本同时输入网络(2个BN分别归一化处理,其它不做修改)。测试时丢掉对抗样本对应的BN,只要干净样本对应的BN。
未来
构建人和机器之间的合作,可解释性是一个重要的问题。我们需要知道AI何时可以解决问题,什么场景下会出Bug,很多时候,对于输出的结果(如分类的结果),我们更需要它给出原因,是依据什么得出了这个输出。
Q&A
(1)可以从什么角度出发来提高模型鲁棒性?
- 数据:对抗训练学到更多特征
- 结构:更加平滑的函数表示
- 损失函数:损失函数解决了模型如何训练的问题。
这三者的优化是并行的。
(2)鲁棒性和泛化性的关系
对抗样本是一个子问题,是特殊的关系。
(3)鲁棒性和准确性是否矛盾?
在cv领域,用对抗样本进行数据增强往往会导致鲁棒性上升而准确性下降。而在NLP领域,由于数据多、模型大,它们的表征能力capacity往往更强,进行对抗训练往往是鲁棒性和准确性同时提升的。
(4)普通分类错误的样本和对抗样本有什么区别?
谢教授说他不会,可以思考下。
或许普遍意义上没有区别,感觉都是没学到足够的特征。乱说的,以后想到了来修改。