理解对比学习(contrasive learning)

1.什么是对比学习?

对比学习,顾名思义就是在训练中和某些东西进行对比从而学习,在自编码器中,输出与自己进行对比,从而得到一个中间量latent code,我认为这也是一种对比学习。

2.对比学习框架图

分三步,数据增强,编码,loss最小化(相似度)
在这里插入图片描述
第一步和第三步很好理解,第二步CNN将图像压缩成一个latent code,根然后又做了一个投影网络,去投影到一个更深的latent coder,据经验这个额外的步骤可以提升模型的利用率和性能。

余弦相似度

两个向量的相似度常用余弦相似度去计算,它是基于两个向量在空间中的角度去判断其是否相似的。角度越接近0,两个向量越相似。在这里插入图片描述

3.SimCLRv2(2020)

了解一个更进一步的操作,在第二章对比模型框架图,我们直接把它定义为latent code编码。
下图展示了一个更好性能的对比学习,即编码+微调+蒸馏。
一般情况下,我们通过CNN编码后,通过MLP投影头的输出与输入进行损失,在训练完成后,我们会丢弃MLP投影头,只使用encoder作为latent code编码器。在SimCLR中就是这样做的,把MLP整个丢掉,然后通过有标签的数据进行微调。v2呢保留了一层MLP然后再微调,相当于加入了一个全连接层。

微调

微调是非常简单的,在拥有具体任务时,例如分类任务,我们就使用训练好的encoder+一层MLP作为一个预训练模型,进行一定程度的监督,去微调这个模型,从而更好的完成他的工作。事实上微调是要有的,如果不进行微调就相当于直接拿一个预训练模型进行预测,当然是不合理的。
在这里插入图片描述

4.总结

总的来说,这个方法没感觉比自编码器高明到哪里去,只是说之前是输出和输入进行相似度可以使latent code表示此物体,对比学习呢通过增强输入,让两个增强后的输入和输出(还是原来的物体)进行相似,可以表达某一类物体?例如,旋转后的猫如果和不旋转的猫都很相似的话,我们更认为这个潜在表征是正确的,它消除了旋转带来的影响。但我个人感觉还是有一定的瑕疵,例如猫它本身不会旋转的,狸花猫和英短之间的潜在表征是否应该相似呢?我们是否可以用输入的多样性直接去计算相似度?不管如何,在无监督(自监督)的学习中,对比学习是一个很聪明的手法。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值