2篇对抗对比学习论文导读,一个增强 ACL 的有效性的方法和一个提升ACL的效率的技术 

基础模型 (foundation models)[1]是通过在大规模未标记数据集上进行自监督预训练 (self-supervised learning)得到的,可以通过微调 (fine-tuning)迁移到广泛的下游任务。 现有的工作表明[2],存在对抗攻击 (adversarial attacks)可以“愚弄”通过微调基础模型获得的任何下游模型。 这种对抗攻击的存在驱动我们去开发鲁棒的基础模型 (robust foundation models),该模型可以在安全关键的下游任务中具有很好的泛化性 (generalization ability)和对抗鲁棒性 (adversarial robustness)。 目前,对抗对比学习[3](adversarial contrastive learning, ACL)是构建鲁棒的基础模型的最有效方法之一。 在本篇博客中,我介绍两篇NeurIPS 2023 论文,分别提出了一个增强 ACL 的有效性的方法[4]和一个提升ACL的效率的技术[5]:

  • [NeurIPS'23] Enhancing Adversarial Contrastive Learning via Adversarial Invariant Regularization, Xu et al. 2023.

https//openreview.net/forum%3Fid%3DzuXyQsXVLF

这篇论文建立了因果理论框架来解释ACL,并根据因果框架提出了对抗不变性正则化 (adversarial invariant regularization, AIR) 来提升ACL达到了SoTA performance。

AIR在Robust Self-Supervised Learning (RobustSSL) Benchmark 上排名第一。RobutSSL Benchmark的Model Zoo(https//github.com/GodXuxilie/RobustSSL_Benchmark)提供大部分ACL方法预训练后得到的权重文件,可供大家下载使用。

https//robustssl.github.io/

https//github.com/GodXuxilie/RobustSSL_Benchmark

  • [NeurIPS'23 Spotlight] Efficient Adversarial Contrastive Learning via Robustness-Aware Coreset Selection, Xu et al. 2023.

https//openreview.net/forum%3Fid%3DfpzA8uRA95

这篇论文介绍了一种鲁棒性感知核心集选择 (robustness-aware coreset selection, RCS) 方法来加速 ACL。 RCS 不需要标签信息并搜索有助于学习到鲁棒特征的训练子集。 RCS首次将ACL应用于大规模ImageNet-1K数据集。

鲁棒基础模型 (Robust Foundation Models)

基础模型比如(GPT[6], Vision transformer[7], BLIP[8], CLAP[9])最近非常流行。 构建和利用基础模型 (foundation models) 是分为2个阶段:

  1. 预训练阶段 (pre-training):将一个模型在大规模没有标签的数据集上进行自监督预训练 (self-supervised learning)后得到预训练的基础模型;
  2. 微调阶段 (fine-tuning):在下游任务上进行微调后,基础模型可以来很好地解决下游任务,比如图像分类问题和情感分析。

对抗对比学习の论文_ci

但是对抗攻击可以通过在下游任务的原始输入中添加难以察觉的对抗性扰动来欺骗基础模型学习到的特征,从而输出错误的预测。

对抗对比学习の论文_github_02

基础模型的特征很容易受到对抗性攻击,这种攻击可以让模型错误地将汽车预测为“不是汽车”。

对抗攻击的存在使得基础模型在被应用在一些安全性关键下游任务,比如医疗分析[10]和自动识别路标[11],存在潜在安全风险。因此我们需要构建鲁棒的基础模型来使得这些它们能够被可靠地应用于下游任务。

鲁棒的基础模型具有以下2个特征:

  • 依然可以很好地泛化到下游任务中;
  • 能在下游任务中,对对抗攻击具有很强的鲁棒性。

对抗对比学习の论文_人工智能_03

对抗对比学习の论文_python_04

其中对抗视角的公式如下:

对抗对比学习の论文_python_05

对抗对比学习の论文_python_06

PGD生成对抗数据过程。PGD根据损失梯度方向一步一步将自然数据(绿色的点 在low-loss区域)更新到对抗数据(红色的点在high-loss区域)。

在每个 epoch,ACL 交替执行步骤 (1) 和 (2):

  • 步骤(1): 通过PGD生成对抗数据;
  • 步骤(2): 通过最小化对抗对比损失来更新模型参数。

如何实现ACL预训练?

你可以使用以下脚本在 CIFAR-10 上使用 ResNet-18 进行ACL 预训练。

# Pre-training stage via ACL
git clone https://github.com/GodXuxilie/Enhancing_ACL_via_AIR.git
cd Enhancing_ACL_via_AIR
PRE_TRAIN_DIR=ACL_ResNet18_cifar10
python pretraining.py $PRE_TRAIN_DIR --dataset cifar10 \
                                     --model r18 \
                                     --DynAug --lambda1 0 --lambda2 0

如何进行微调,来利用预训练模型?

在微调阶段,随机初始化分类器并将其附加到预训练的特征提取器以解决分类任务。微调模式分为三种类型:

  1. 标准线性微调(standard linear fine-tuning, SLF):仅对分类器进行标准微调,同时冻结特征提取器。
  2. 对抗线性微调(adversarial linear fine-tuning, ALF):仅对分类器进行对抗性微调,同时冻结特征提取器。
  3. 对抗完全微调(adversarial full fine-tuning, AFF):对抗性微调特征提取器和分类器。

你可以使用以下脚本通过微调将在 CIFAR-10 上预训练 ResNet-18 迁移到下游任务 CIFAR-100:

# Fine-tuning stage
cd Enhancing_ACL_via_AIR
PRE_TRAIN_DIR=ACL_ResNet18_cifar10
FINETUNE_DIR=ACL_ResNet18_cifar10_cifar100
MODE=SLF/ALF/AFF/ALL
python finetuning.py --mode $MODE \
                     --experiment $FINETUNE_DIR \
                     --checkpoint ./checkpoints/$PRE_TRAIN_DIR/model.pt \
                     --dataset cifar100 \
                     --model r18 \
                     --eval-AA --eval-OOD --pretraining DynACL

[NeurIPS'23] Enhancing Adversarial Contrastive Learning via Adversarial Invariant Regularization 论文导读

从因果分析角度理解ACL

对抗对比学习の论文_人工智能_07

ACL的因果图。

在数据生成过程 (data generation procedure) 期间:

对抗对比学习の论文_python_08

AIR正则化

风格不变标准

对抗对比学习の论文_python_09

对抗对比学习の论文_ci_10

AIR的损失函数

为了实现风格不变的标准,AIR正则化是来将特征规范为风格无关,如下所示:

对抗对比学习の论文_python_11

直观上来说,AIR 旨在最大化原始数据 (original data),对抗视角 (adversarial view),以及自然视角 (natural view) 之间的一致性。

AIR 的学习目标

对抗对比学习の论文_github_12

我们的代码公开在GitHub:

https//github.com/GodXuxilie/Enhancing_ACL_via_AIR

你可以使用以下脚本在 CIFAR-10 上使用 ResNet-18 进行 AIR 预训练:

# Pre-training stage via AIR
git clone https://github.com/GodXuxilie/Enhancing_ACL_via_AIR.git
cd Enhancing_ACL_via_AIR
PRE_TRAIN_DIR=AIR_ResNet18_cifar10
python pretraining.py $PRE_TRAIN_DIR --dataset cifar10 --model r18 --DynAug

实验结果

AIR在下游任务的鲁棒性上达到了最佳。

对抗对比学习の论文_python_13

AIR在common corruption下的鲁棒准确率。

如果要复现上述从 CIFAR-10 到 CIFAR-100 的迁移结果,你可以使用以下脚本:

  • 在预训练阶段,使用ResNet-18在CIFAR-10上进行AIR。
# Pre-training stage using AIR
git clone https://github.com/GodXuxilie/Enhancing_ACL_via_AIR.git
cd Enhancing_ACL_via_AIR
PRE_TRAIN_DIR=AIR_ResNet18_cifar10
python pretraining.py $PRETRAIN_DIR --dataset cifar10 --model r18 --DynAug
  • 在微调阶段,你可以微调预训练的 ResNet-18 到下游任务 CIFAR-100. 在微调阶段,以下脚本将自动执行所有三种微调模式(即 SLF、ALF 和 AFF)。 微调阶段结束后,您可以从“$FINETUNE_DIR/results/log.txt”的日志文件中检查标准准确度 (standard accuracy, SA)、在对抗攻击下的鲁棒准确率 (robust accuracy under AutoAttack, AA)以及在common corruption的鲁棒准确率。
cd Enhancing_ACL_via_AIR
PRE_TRAIN_DIR=AIR_ResNet18_cifar10
FINETUNE_DIR=AIR_ResNet18_cifar10_cifar100
python finetuning.py --experiment $EXP_DIR \
                     --checkpoint ./checkpoints/$PRE_TRAIN_DIR/model.pt \
                     --dataset cifar100 \
                     --model r18 \
                     --mode ALL \
                     --eval-AA --eval-OOD --pretraining DynACL_AIR

AIR 在RobustSSL Benchmark上的排行榜排名第一!

对抗对比学习の论文_python_14

有关排行榜的更多信息,请查看https//robustssl.github.io/网站。

[NeurIPS'23 Spotlight] Efficient Adversarial Contrastive Learning via Robustness-Aware Coreset Selection 论文导读

这篇文章提出了鲁棒性感知核心集选择(RCS),它选择一个没有标签注释的信息丰富的核心集来加速 ACL。 从理论上讲,我们证明了贪婪搜索算法可以有效地找到核心集。实验上,我们展示RCS 可以在 CIFAR 和 ImageNet-1K 数据集上大幅加速 ACL 和有监督的鲁棒预训练,而不会显着损害鲁棒性可迁移性。 这篇论文首次证明了在大规模数据集上应用 ACL 的可能性的概念。

动机--- ACL是非常耗时的

ACL 在大规模数据集上的计算量巨大,因为生成对抗性数据需要昂贵的计算开销。

对抗对比学习の论文_ci_15

ACL 效率低下,因为 T次PGD迭代需要昂贵的计算开销。

根据实验结果,在 RTX A5000 GPU 上评估整个 ImageNet-1K 数据集(1,281,167 个训练数据点)的 ACL 需要大约 650 小时。由于ACL效率低下,ACL尚未应用于不带RCS的ImageNet-1K数据集。

鲁棒性感知核心集选择(Robustness-Aware Coreset Selection, RCS)

直观的加速想法

对抗对比学习の论文_python_16

RCS 生成信息丰富的核心集,使 ACL 高效地获得有效的鲁棒基础模型。图片来自 https://medium.com/analytics-vidhya/sampling-statistical-approach-in-machine-learning-4903c40ebf86。

对抗对比学习の论文_github_17

通过贪婪搜索进行 RCS

对抗对比学习の论文_python_18

通过 RCS 实现加速 ACL 的算法

对抗对比学习の论文_ci_19

通过 RCS 的加速训练ACL。 在预热期(warm-up)结束后,模型将在核心集上进行训练。 因此,RCS 通过减少训练数据的数量使训练过程更加高效。

我们的代码公开在GitHub。

https//github.com/GodXuxilie/Efficient_ACL_via_RCS

实验结果

RCS 显着加快了 CIFAR-10 上的 ACL。

对抗对比学习の论文_ci_20

你可以使用以下脚本来复现上述结果---从 CIFAR-10 到 CIFAR-100 的鲁棒可迁移性。

# Pre-training stage using RCS
git clone https://github.com/GodXuxilie/Efficient_ACL_via_RCS.git
cd Efficient_ACL_via_RCS/ACL_RCS/small_scale_datasets
PRE_TRAIN_DIR=ACL_RCS_ResNet18_cifar10
python DynACL_RCS.py $PRE_TRAIN_DIR --ACL_DS --dataset cifar10 --fraction 0.2

# Fine-tuning stage (SLF, ALF, AFF)
cd Efficient_ACL_via_RCS/ACL_RCS/small_scale_datasets
PRE_TRAIN_DIR=ACL_RCS_ResNet18_cifar10
FINETUNE_DIR=ACL_RCS_ResNet18_cifar10_cifar100
python finetuning.py --experiment $FINETUNE_DIR \
                     --checkpoint ./checkpoints/$PRE_TRAIN_DIR/model.pt \
                     --dataset cifar100 \
                     --model r18 \
                     --mode ALL --eval-AA --eval-OOD --pretraining DynACL_RCS

首次通过 RCS 在 ImageNet-1K 上高效地进行了ACL预训练

对抗对比学习の论文_ci_21

你可以使用以下脚本来复现上述结果---从 ImageNet-1K 到 CIFAR-10 的鲁棒可迁移性。

# Pre-training stage using RCS
git clone https://github.com/GodXuxilie/Efficient_ACL_via_RCS.git
cd Efficient_ACL_via_RCS/ACL_RCS/ImageNet_32
PRE_TRAIN_DIR=ACL_RCS_WRN_ImageNet
python ACL_RCS.py $PRE_TRAIN_DIR --gpu 0,1,2,3 --ACL_DS --fraction 0.05

# Fine-tuning stage
cd Efficient_ACL_via_RCS/ACL_RCS/ImageNet_32
PRE_TRAIN_DIR=ACL_RCS_WRN_ImageNet
FINETUNE_DIR=ACL_RCS_WRN_ImageNet_cifar10
# Fine-tuning stage (SLF)
python transfer.py --out_dir $FINETUNE_DIR/SLF \
                   --resume $PRE_TRAIN_DIR/model.pt 
                   --dataset cifar10 \
                   --lr 0.01 --linear 
# Fine-tuning stage (ALF)
python adv_tune.py --out_dir $FINETUNE_DIR/ALF \
                   --resume $PRE_TRAIN_DIR/model.pt \
                   --dataset cifar10 \
                   --lr 0.1 --linear 
# Fine-tuning stage (AFF)
python adv_tune.py --out_dir $FINETUNE_DIR/AFF \
                   --resume $PRE_TRAIN_DIR/model.pt \
                   --dataset cifar10 \
                   --lr 0.1

RCS 可以加速 ImageNet-1K 上的标准对抗训练 (standard adversarial training, SAT)。结果表明,RCS 适用于有监督的鲁棒预训练。       

对抗对比学习の论文_ci_22

你可以使用以下脚本来复现上述结果---从 ImageNet-1K 到 CIFAR-10 的鲁棒可迁移性。

git clone https://github.com/GodXuxilie/Efficient_ACL_via_RCS.git
cd Efficient_ACL_via_RCS/SAT_RCS/ImageNet_32
# Pre-training stage using RCS
PRE_TRAIN_DIR=SAT_RCS_WRN_ImageNet
nohup python SAT_RCS.py --gpu 0,1,2,3 --out_dir $PRE_TRAIN_DIR --fraction 0.2

# Fine-tuning stage
cd Efficient_ACL_via_RCS/SAT_RCS/ImageNet_32
PRE_TRAIN_DIR=SAT_RCS_WRN_ImageNet
FINETUNE_DIR=SAT_RCS_WRN_ImageNet_cifar10
# Fine-tuning stage (ALF)
python adv_tune.py --out_dir $FINETUNE_DIR/ALF \
                   --resume $PRE_TRAIN_DIR/checkpoint.pth.tar \
                   --dataset cifar10 \
                   --lr 0.1 \
                   --linear 
# Fine-tuning stage (AFF)
python adv_tune.py --out_dir $FINETUNE_DIR/AFF \
                   --resume $PRE_TRAIN_DIR/checkpoint.pth.tar 
                   --dataset cifar10 \
                   --lr 0.1

结语

这两项工作都是由以下作者合作完成:

Xilie Xu 徐曦烈- 新加坡国立大学(http//godxuxilie.github.io)

Jingfeng Zhang 张景锋- 理化学研究所 RIKEN-AIP 奥克兰大学(https//zjfheart.github.io/)

Feng Liu 刘峰- 墨尔本大学(https//fengliu90.github.io/)

Masashi Sugiyama 杉山 将- 理化学研究所 RIKEN-AIP 东京大学(http//www.ms.k.u-tokyo.ac.jp/sugi/profile-jp.html)

Mohan Kankanhalli- 新加坡国立大学(https//www.comp.nus.edu.sg/~mohan/)

参考

1.Bommasani, R., Hudson, D. A., Adeli, E., Altman, R., Arora, S., von Arx, S., ... & Liang, P. (2021). On the opportunities and risks of foundation models. arXiv preprint arXiv:2108.07258.

2.Ban, Y., & Dong, Y. (2022). Pre-trained Adversarial Perturbations. Advances in Neural Information Processing Systems, 35, 1196-1209.

3.Luo, R., Wang, Y., & Wang, Y. (2022, September). Rethinking the Effect of Data Augmentation in Adversarial Contrastive Learning. In The Eleventh International Conference on Learning Representations.

4.https://openreview.net/forum?id=zuXyQsXVLF

5.https://openreview.net/forum?id=fpzA8uRA95

6.Brown, T., Mann, B., Ryder, N., Subbiah, M., Kaplan, J. D., Dhariwal, P., ... & Amodei, D. (2020). Language models are few-shot learners. Advances in neural information processing systems, 33, 1877-1901.

7.Dosovitskiy, A., Beyer, L., Kolesnikov, A., Weissenborn, D., Zhai, X., Unterthiner, T., ... & Houlsby, N. (2020). An image is worth 16x16 words: Transformers for image recognition at scale. arXiv preprint arXiv:2010.11929.

8.Li, J., Li, D., Xiong, C., & Hoi, S. (2022, June). Blip: Bootstrapping language-image pre-training for unified vision-language understanding and generation. In International Conference on Machine Learning (pp. 12888-12900). PMLR.

9.Elizalde, B., Deshmukh, S., Al Ismail, M., & Wang, H. (2023, June). Clap learning audio concepts from natural language supervision. In ICASSP 2023-2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 1-5). IEEE.

10.He, K., Gan, C., Li, Z., Rekik, I., Yin, Z., Ji, W., ... & Shen, D. (2023). Transformers in medical image analysis. Intelligent Medicine, 3(1), 59-78.

11.Eykholt, K., Evtimov, I., Fernandes, E., Li, B., Rahmati, A., Xiao, C., ... & Song, D. (2018). Robust physical-world attacks on deep learning visual classification. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 1625-1634).

12.Chen, T., Kornblith, S., Norouzi, M., & Hinton, G. (2020, November). A simple framework for contrastive learning of visual representations. In International conference on machine learning (pp. 1597-1607). PMLR.

13.Madry, A., Makelov, A., Schmidt, L., Tsipras, D., & Vladu, A. (2017). Towards deep learning models resistant to adversarial attacks. arXiv preprint arXiv:1706.06083.

14.实际上,我们严格证明了一个代理集合函数是weakly submodular。 进一步,我们利用这个代理集合函数,来证明了所提出的贪婪搜索算法为集函数最大化问题提供了有保证的下界。 更多细节请参考我们的RCS论文。