# 对比学习

![last modify](https://img.shields.io/static/v1?label=last%20modify\&message=2022-10-13%2001%3A56%3A19\&color=yellowgreen\&style=flat-square)

* [相关阅读](#相关阅读)
* [对比学习的关键问题](#对比学习的关键问题)
* [如何衡量一个对比学习系统的好坏？](#如何衡量一个对比学习系统的好坏)
  * [如何防止模型坍塌？](#如何防止模型坍塌)
* [常用损失函数](#常用损失函数)
* [经典对比学习模型](#经典对比学习模型)
  * [【CV】SimCLR](#cvsimclr)
  * [【CV】MoCo系列](#cvmoco系列)
  * [【CV】SwAV](#cvswav)
  * [【CV】BYOL](#cvbyol)
  * [【CV】SimSiam](#cvsimsiam)
  * [CV](#cv)
  * [NLP](#nlp)
* [参考资料](#参考资料)

## 相关阅读

* 自监督
* 度量学习

## 对比学习的关键问题

* **正负例的构造**；
* 映射函数 $f$ 的设计；
* 损失函数 $L$ 的设计；
* ...

## 如何衡量一个对比学习系统的好坏？

* 失败的对比学习：模型坍塌
* 优秀的对比学习[$^{\[1\]}$](#ref1)：
  * Alignment：相似的实体有相似的特性；
  * Uniformity：保留尽可能多的信息；

### 如何防止模型坍塌？

* 增加负例；

## 常用损失函数

* InfoNCE

## 经典对比学习模型

### 【CV】SimCLR

* 双塔模型
* 正负例
  * 正例：同一样本的两次数据增强
  * 负例：Batch 内负例
* Projector 层
* InfoNEC

### 【CV】MoCo系列

* 双塔结构
* 正负例
  * 正例：同一样本的两次数据增强
  * 负例：Batch 外负例
* Projector 层
* Stop gradient + Momentum 更新
* InfoNEC

### 【CV】SwAV

* 对比聚类
* 隐含负例

### 【CV】BYOL

* 只使用正例
* 非对称双塔

### 【CV】SimSiam

### CV

```
- SimCLR
- MOCO
```

### NLP

```
- 
```

## 参考资料

* $\[1]$ [Understanding Contrastive Representation Learning through Alignment and Uniformity on the Hypersphere](https://arxiv.org/abs/2005.10242)
