Noise

motivation

提高网络的一个有用的技巧就是增加训练数据: 真实数据, 或者用GAN拟合的数据.

这里想要研究的是, 噪声是否能够算作这类数据. 以CIFAR-10为例, 令
f : x ∈ X → p ∈ R 11 , f: x \in \mathcal{X} \rightarrow p \in \mathbb{R}^{11}, f:xXpR11,
即除了原先的10类外, 额外增加一类为噪声类. 类似的思想好像在检测领域有用过(背景信息)?

本文的损失函数可以说是:
min ⁡ f α ⋅ E x ∼ D [ L ( f ( x + δ x ) , y ) ] + ( 1 − α ) ⋅ E z ∼ P [ L ( f ( z + δ z ) , 10 ) ] . \min_f \quad \alpha \cdot \mathbb{E}_{x\sim \mathcal{D}} [\mathcal{L}(f(x+\delta_x), y)] + (1 - \alpha) \cdot \mathbb{E}_{z\sim P} [\mathcal{L} (f(z + \delta_z), 10)]. fminαExD[L(f(x+δx),y)]+(1α)EzP[L(f(z+δz),10)].
其中 x + δ x , z + δ z x+\delta_x, z+\delta_z x+δx,z+δz分别是真实数据 x x x和噪声 z z z的对抗样本, y ∈ { 0 , 1 , 2 , ⋯   , 9 } y \in \{0, 1, 2, \cdots, 9\} y{0,1,2,,9}.

个人觉得, 如果二者用同一个batch normalization, 那么滑动平均会非常振荡, 故额外考虑group normalization 和 让给干净样本分配一个BN, 噪声样本一个BN.

settings

  • batch_size: 64
  • beta1: 0.9
  • beta2: 0.999
  • dataset: cifar10
  • description: AT=bn=64-0.5=default-sgd-0.1=pgd-linf-0.0314-0.25-10=64=default
  • epochs: 200
  • epsilon: 0.03137254901960784
  • learning_policy: [100, 150]
  • leverage: 0.5
  • loss: cross_entropy
  • lr: 0.1
  • model: resnet18
  • momentum: 0.9
  • noise_batch_size: 64
  • norm_layer: bn
  • optimizer: sgd
  • progress: False
  • resume: False
  • seed: 1
  • steps: 10
  • stepsize: 0.25
  • transform: default
  • weight_decay: 0.0005

results

LossAccuracyRobustness
BNimage-20210524085559612image-20210524085507003image-20210524085530112
GNimage-20210529082506214image-20210529082416991image-20210529082440433
TNimage-20210602072522487image-20210602072414981image-20210602072441541

用了两个BN后的确稳定下来了, 精度和鲁棒性的确和标准的AT一致了. 但是也仅仅是一致而已, 个人感觉noise太容易被分辨出来了, 或许增大攻击noise的epsilon会有改进, 后续再看.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值