Kim M., Tack J. & Hwang S. Adversarial Self-Supervised Contrastive Learning. In Advances in Neural Information Processing Systems, 2020.

这篇文章提出了对比学习结合adversarial training的一个思路.

主要内容

对比学习的强大之处在于正负样本对的构造, 一个结合adversarial training的很自然的思路是, 将普通样本与其相对应的对抗样本作为一组正样本对. 令\(x \in \mathcal{X}\)为样本, \(t \in \mathcal{T}\)为一augmentation, 则\((x, t(x))\)便构成了一正样本对, 再假设有一组负样本\(\{x_{neg}\}\), 则

\[\mathcal{L}_{con} (x, t(x), \{x_{neg}\}) = -\log \frac{\exp (z^T z_{pos}/\tau)}{\exp (z^T z_{pos}/\tau)+\sum_{z_{neg}}\exp(z^Tz_{neg}/\tau)},
\]

其中\(z\)是经过标准化的特征, \(\tau\)是temperature. 很自然的, 我们可以通过上面的损失构造\(x\)的对抗样本\(x_{adv}\):

\[x_{adv} := \prod_{B(x;\epsilon)} (x+\alpha \cdot \mathrm{sign} (\nabla_{x_{adv}} \mathcal{L}_{con}(x, x_{adv}, \{x_{neg}\})).
\]

稍有不同的是, 作者实际采用的是利用\(\mathcal{L}_{con}(t(x), t'(x), \{x_{neg}\})\)来构建对抗样本, 最后的用于训练的损失是

\[\mathcal{L}_{RoCL} := \mathcal{L}_{con}(t(x), \{t'(x), t(x)_{adv}\}, \{t(x)_{neg}\}) \\
\mathcal{L}_{total}:= \mathcal{L}_{RoCL} + \lambda \mathcal{L}_{con}(t(x)^{adv},t'(x), \{t(x)_{neg}\}),
\]

多的项即希望对抗样本和其他样本区别开来.

注:

\[\mathcal{L}_{con} (x, \{t(x), t'(x)\}, \{x_{neg}\}) = -\log \frac{\sum_{z_{pos}}\exp (z^T z_{pos}/\tau)}{\sum_{z_{pos}}\exp (z^T z_{pos}/\tau)+\sum_{z_{neg}}\exp(z^Tz_{neg}/\tau)}.
\]

Linear Part

因为自监督只是单纯提取了特征, 一般用于下游的分类任务需要再训练一个线性分类器, 很自然的, 作者选择在训练下游分类器的时候同样使用adversarial training:

\[\arg \min_{\psi} \mathbb{E}_{(x, y) \sim \mathbb{D}} [\max_{\delta \in B(x, \epsilon)} \mathcal{L}_{ce}(\psi, x+\delta,y)] ,
\]

其中\(\psi\)为线性分类器\(l(\cdot)\)的的参数.

另外, 作者还融合的随机光滑的技巧, 即在估计的时候

\[S(x) = \arg \max_{c \in Y} \mathbb{E}_{t \in \mathcal{T}} (l_c(f(t(x)))=c),
\]

一般的随机光滑是对样本随机加噪声, 这里的随机光滑是随机选择augmentation, 这倒是很让人眼前一亮.

代码

原文代码

Adversarial Self-Supervised Contrastive Learning的更多相关文章

  1. 论文解读(ClusterSCL)《ClusterSCL: Cluster-Aware Supervised Contrastive Learning on Graphs》

    论文信息 论文标题:ClusterSCL: Cluster-Aware Supervised Contrastive Learning on Graphs论文作者:Yanling Wang, Jing ...

  2. Robust Pre-Training by Adversarial Contrastive Learning

    目录 概 主要内容 代码 Jiang Z., Chen T., Chen T. & Wang Z. Robust Pre-Training by Adversarial Contrastive ...

  3. Feature Distillation With Guided Adversarial Contrastive Learning

    目录 概 主要内容 reweight 拟合概率 实验的细节 疑问 Bai T., Chen J., Zhao J., Wen B., Jiang X., Kot A. Feature Distilla ...

  4. 谣言检测(GACL)《Rumor Detection on Social Media with Graph Adversarial Contrastive Learning》

    论文信息 论文标题:Rumor Detection on Social Media with Graph AdversarialContrastive Learning论文作者:Tiening Sun ...

  5. ICLR2021对比学习(Contrastive Learning)NLP领域论文进展梳理

    本文首发于微信公众号「对白的算法屋」,来一起学AI叭 大家好,卷王们and懂王们好,我是对白. 本次我挑选了ICLR2021中NLP领域下的六篇文章进行解读,包含了文本生成.自然语言理解.预训练语言模 ...

  6. 论文解读(SimGRACE)《SimGRACE: A Simple Framework for Graph Contrastive Learning without Data Augmentation》

    论文信息 论文标题:SimGRACE: A Simple Framework for Graph Contrastive Learning without Data Augmentation论文作者: ...

  7. 论文解读(gCooL)《Graph Communal Contrastive Learning》

    论文信息 论文标题:Graph Communal Contrastive Learning论文作者:Bolian Li, Baoyu Jing, Hanghang Tong论文来源:2022, WWW ...

  8. 论文解读(PCL)《Prototypical Contrastive Learning of Unsupervised Representations》

    论文标题:Prototypical Contrastive Learning of Unsupervised Representations 论文方向:图像领域,提出原型对比学习,效果远超MoCo和S ...

  9. 论文解读(SimCLR)《A Simple Framework for Contrastive Learning of Visual Representations》

    1 题目 <A Simple Framework for Contrastive Learning of Visual Representations> 作者: Ting Chen, Si ...

随机推荐

  1. 零基础学习java------21---------动态代理,java8新特性(lambda, stream,DateApi)

    1. 动态代理 在一个方法前后加内容,最简单直观的方法就是直接在代码上加内容(如数据库中的事务),但这样写不够灵活,并且代码可维护性差,所以就需要引入动态代理 1.1 静态代理实现 在讲动态代理之前, ...

  2. 【swift】用Xib实现自定义警告框(Alert)(安卓叫法:Dialog对话框)

    在写这篇博客前,先感谢两篇博客 [如何自定义的思路]:https://www.cnblogs.com/apprendre-10-28/p/10507794.html [如何绑定Xib并且使用]:htt ...

  3. 监测linux系统负载与CPU、内存、硬盘、用户数的shell脚本

    本节主要内容: 利用Shell脚本来监控Linux系统的负载.CPU.内存.硬盘.用户登录数. 一.linux系统告警邮件脚本 # vim /scripts/sys-warning.sh #!/bin ...

  4. 如何在linux 上配置NTP 时间同步?

    故障现象: 有些应用场景,对时间同步的要求严格,需要用到NTP同步,如何在linux上配置NTP时间同步? 解决方案: 在linux 上配置NTP 时间同步,具休操作步骤,整理如下: 1.安装软件包( ...

  5. 侵入式&非侵入式

    侵入式设计 引入了框架,对现有的类的结构有影响:即需要实现或继承某些特定类. 例如:Struts框架 非侵入式设计 引入了框架,对现有的类结构没有影响. 例如:Hibernate框架 / Spring ...

  6. 【Spring Framework】Spring入门教程(七)Spring 事件

    内置事件 Spring中的事件是一个ApplicationEvent类的子类,由实现ApplicationEventPublisherAware接口的类发送,实现ApplicationListener ...

  7. ASP.NET管道模型简析

    我相信在第一次听到这个名词时,有的小伙伴会一脸懵,而且还有很多疑问,其实我在第一次接触这个概念时跟很多小伙伴一样一脸懵. 接下来我将以我自己的理解来讲述什么是管道模型. 什么是管道模型 首先有没有小伙 ...

  8. 【JAVA今法修真】 第二章 一气化三清 线程分心念

    这是我的微信公众号,希望有兴趣的朋友能够一起交流,也希望能够多多支持新人作者,你的每一份关注都是我写文章的动力:南橘ryc 天有八纪,地分九州,万法仙门与天道剑宗一并坐落在东北方通辽州. 与李小庚想象 ...

  9. 带你了解 Angular 与 Angular JS

    Angular 是一个基于 TypeScript 的开源客户端框架,专为构建 Web 应用程序而设计. 另一方面,AngularJS 是 Angular 的第一个版本,用纯 JavaScript 编写 ...

  10. hooks中,useEffect无限调用问题产生的原因

    前言:我在我的另一篇博客中有说道useEffect监听对象或者数组时会导致useEffect无限执行,并给予了解决方案-useEffect无限调用问题 .后来我想从其产生根源去理解并解决这个问题. 原 ...