zoukankan      html  css  js  c++  java
  • Contrastive Learning(CL,对比学习)

    最近深度学习两巨头 Bengio 和 LeCun 在 ICLR 2020 上点名 Self-Supervised Learning(SSL,自监督学习) 是 AI 的未来,而其的代表的 Framework 便是 Contrastive Learning(CL,对比学习)。 另一巨头 Hinton 和 Kaiming 两尊大神也在这问题上隔空过招,MoCo、SimCLR、MoCo V2 打得火热,这和 BERT 之后,各大公司出 XL-Net、RoBerta 刷榜的场景何其相似。

    因为归纳偏好的设计更多的是任务相关的,复杂的过程需要非常精心的设计,所以很多工作都开始关注到表示学习上,NLP 最近大火的预训练模型,例如 BERT,就是利用大规模的语料预训练得到文本的好的表示。那么,CV 领域的 BERT 是什么呢?答案已经呼之欲出,就是对比学习。

    表示学习算法并不一定要关注到样本的每一个细节,只要学到的特征能够使其和其他样本区别开来就行,这就是对比学习和对抗生成网络(GAN)的一个主要不同所在。

    既然是表示学习,那么我们的核心就是要学习一个映射函数 [公式],把样本 [公式] 编码成其表示 [公式],对比学习的核心就是使得这个 [公式] 满足下面这个式子:


    [公式]

    这里的 [公式] 就是和 [公式] 类似的样本,[公式] 就是和 [公式] 不相似的样本,[公式] 这是一个度量样本之间相似程度的函数,一个比较典型的 score 函数就是就是向量内积。

    自监督学习

    要说到对比学习,首先要从自监督学习开始讲起。自监督学习属于无监督学习范式的一种,特点是不需要人工标注的类别标签信息,直接利用数据本身作为监督信息,来学习样本数据的特征表达,并用于下游任务。

    那么,自监督学习有什么优势呢?

    目前机器学习主流的方法大多是监督学习方法,这类方法依赖人工标注的标签,这会带来一些缺陷:

    • 数据本身提供的信息远比稀疏的标签更加丰富,因此使用有监督学习方法训练模型需要大量的标签数据,并且得到的模型有时候是“脆弱”的
    • 有监督学习通过标签训练得到的模型往往只能学到一些任务特定的知识,而不能学习到一种通用的知识,因此有监督学习学到的特征表示难以迁移到其他任务

    而自监督学习能够很好地避免上面的问题,因为自监督学习直接使用数据本身来提供监督信息来指导学习。

    自监督学习分类

    当前自监督学习可以被大致分为两类:

    1. Generative Methods
    2. Contrastive Methods

    Generative Methods and Contrastive Methods

    Generative Methods(生成式方法)这类方法以自编码器为代表,主要关注pixel label的loss。举例来说,在自编码器中对数据样本编码成特征再解码重构,这里认为重构的效果比较好则说明模型学到了比较好的特征表达,而重构的效果通过pixel label的loss来衡量。

    Contrastive Methods(对比式方法)这类方法则是通过将数据分别与正例样本和负例样本在特征空间进行对比,来学习样本的特征表示。Contrastive Methods主要的难点在于如何构造正负样本。

    比起Generative Methods需要对像素细节进行重构来学习到样本特征,Contrastive Methods只需要在特征空间上学习到区分性。因此Contrastive Methods不会过分关注像素细节,而能够关注抽象的语义信息,并且相比于像素级别的重构,优化也变得更加简单。

     

     


    原文链接:https://blog.csdn.net/xxxxxxxxxx13/article/details/110820373

    会议:

    ICLR

    NIPS

    ICML

    From:https://zhuanlan.zhihu.com/p/141141365

     https://zhuanlan.zhihu.com/p/141172794

    https://zhuanlan.zhihu.com/p/367290573

  • 相关阅读:
    SQL Server控制语句
    MATLAB中取整函数(fix, floor, ceil, round)的使用
    MATLAB程序设计
    Thinking In Java<<Java编程思想>>
    Boost::bimap
    MySQL学习随笔1
    Boost 1_42_0在windows下的编译及其设置
    MySQL执行mysql脚本及其脚本编写
    Pygame介绍
    Erlang
  • 原文地址:https://www.cnblogs.com/emanlee/p/14838591.html
Copyright © 2011-2022 走看看