BYOL使用了一种新的对比学习方法,即没有引入任何形式的负样本,而是用图片的编码特征(梯度更新)去预测自己的编码特征(动量更新),模型就这样训练起来了。(相当于用一个视角的特征取预测另一个视角的特征,将匹配转为预测问题)
前向过程:
- 输入x经过两次不同的Aug得到𝑣, 𝑣'
- 上面的online分支𝑣经过编码器𝑓𝜃得到编码特征𝑦𝜃
- 下面的target分支𝑣,经过编码器𝑓𝜉得到编码特征𝑦𝜉'
- 𝑓𝜃是梯度更新,𝑓𝜉和𝑓𝜃模型结构一样,但用的是动量更新的方式
- 使用类似SimCLR中一样的projection head 𝑔𝜉和𝑔𝜃(也是一个MLP,BYOL中也把这个结构叫predictor),将特征降到256维,得到特征𝑧𝜃, 𝑧𝜉'
- 𝑔𝜉和𝑔𝜃分别是梯度更新和动量更新,但二者结构一样
- 上分支使用prediction head(也是predictor结构)将𝑧𝜃映射为𝑞𝜃(𝑧𝜃),然后用𝑞𝜃(𝑧𝜃), 去预测𝑠𝑔(𝑧𝜉') 来进行对比学习,其中sg表示stop-gradient
- 损失函数是MSELoss,即直接计算预测特征𝑞𝜃(𝑧𝜃)和标签𝑠𝑔(𝑧𝜉')这两个向量之间的mse
推理:
当训练完成只留下编码器𝑓𝜃,剩下所有的东西都被拿掉了。然后用这个编码器编码图片,输出维特征去做下游任务的推理。