zoukankan      html  css  js  c++  java
  • Hard Negative Mixing for Constrastive Learning

    Hard Negative Mixing for Constrastive Learning

    标签(空格分隔): 复试


    深度学习的本质:Representation Learning和Inductive Bias Learning。 目前的情况就是在不涉及逻辑推理的问题下AI系统都可以出色的完成任务,但是涉及到更高级的语义,组合逻辑,则需要涉及一些过程来辅助AI系统去分解任务。

    归纳偏好的涉及更多的是任务相关的,复杂的过程需要非常精心的设计,所以很多工作都开始关注到表示学习上。

    此处讨论的对比学习也属于表示学习。

    1 Batch Size

    一次训练所选取的样本数量,其大小选择至关重要,为了能在内存效率和内存容量之间寻找最佳的平衡状态,Batch Size应该被精心设置,从而优化网络模型的性能和速度。

    Batch Size不是越大越好,例如我们要学习一个函数(f:x ightarrow y) 其中共有80个样本点,Batct Size设置为4, 那么每次都是四个点进行拟合,假设一次Epoch需要5个Batch,那么我们可以进行四次Epoch查看其拟合程度, 是否过拟合以及欠拟合。
    杨乐春背书:具体的Batch Size应该处于2~32之间,虽然mini-batch的出现是为了解决:

    • 提高运行效率,相比于batch-GD的每个epoch只更新一次参数,使用mini-batch可以在一个epoch中多次更新参数,加速收敛。
    • 解决了某些任务中,训练集过大,无法一次性读入内存的问题。

    但是在使用过程中人们发现使用mini-batch由于每次更新没有使用全量数据仅仅使用batch的数据,从而人为的给训练带来了噪声,这些噪声往往可以带领算法走出局部最优点

    启发: 如果以后在做相关算法的时候发现陷入局部最优解, 可以调小Batch Size看看情况。
    瞎扯:听说GPU喜欢2的幂数,可以设置一下试试。

    Epoch:随着epoch数量的增加神经网络中权重更新迭代的次数增多, 会使其从 欠拟合状态 到 拟合状态 到过拟合状态。 一般情况下 Epoch大小和数据集多样化程度正相关。

    2 文章

    2.1 动机/改进点

    大量的数据集和负样本是Representation Learning的关键,本文认为困难负样本的作用被忽视了,但是为了获得更多的困难负样本,目前的解决方案要么是增大Batch Size要么是保持一个很大的 memory banks,但是正如前面所说的 这个东西并不是越大越好,而且不断增加的内存需求也会导致性能上的收益递减。本文的主要目标就是针对一个表现最好的框架开始,去证明更难的负样本可以更快更好的促进学习,基于上述内容可以在特征层面上进行困难样本混合策略。

    2.2 简介

    根据目前现状选择自监督学习作为实验样本,根据文中引用得出一味的增加 memory/batch size会造成收益递减,效率降低,更多的负样本并不意味着更难的负样本。所以在这里我们没办法通过这种方法来获取我们想要的更难的负样本。
    由动量编码器可以得出,更困难的负样本可以促进更快更好的学习。基于此原有,本文提出负样本混合策略,用最小的开销进行计算。其名称为Mochi其含义为(M)ixing (o)f (C) oncontrast (H)ard negat(i)ves

    可以看到对于一个查询(红色方形)对应的有很多的负样本,大部分的负样本都是简单负样本,只有和红色接近的是困难样本,过于简单的负样本无法得出足够好的对比差异(文中的对比损失),本文主要做的事情就是讲这些负样本通过混合的方式得到上图中的更困难负样本(蓝色三角形)

    3 具体操作

    3.1 Mixing the hardest negatives

    以上图为例,我们选取与Query特征(q)最近的那些(N)个特征点作为难样本集合( ilde{x}^N),我们在其中随机选取两个特征(n_i),(n_j),并随机生成(alpha_kin(0,1))

    [h_k=frac{ ilde{h}_k}{ Vert ilde{h}_k Vert _2}, h_k=alpha_kn_i+(1-alpha_k)n_j ]

    给定一个查询q,他的键k和负面队列特征(nin Q)来自一个大小为k的队列,

    3.2 Mixing for even harder negatives

    其基本意思应该是让 查询和一个难样本拟合一下,从而产生一个超级难的样本,并且此处的(etain(0,0.5))保证了生成的超级难样本中负样本依然占有主导地位, 不至于出现结果上的过拟合现象

    [h^prime_k=frac{ ilde{h}^prime_k}{ Vert ilde{h}^prime_k Vert _2},h^prime_k=eta_kq+(1-eta_k)n_j ]

    对于某个固定锚点来说,其位置是由其他位置的相对位置确定的,而不是图片的绝对位置,可以发现这两个人的眼睛在空间上的位置距离,和这条狗是完全不一样的,所以我们就可以用聚类的思想在空间中,将其与正样本之间的距离尽量缩小,扩大他和负样本之间的距离。通过这种对比学习,其能够学习到更高层次的通用特征,这就是它泛化能力强的原因之一。
    $$d(f(x),f(x+))<<d(f(x),f(x-))$$

    分类

    归纳偏好学习和表示学习:在不涉及逻辑、推理的问题上,例如判断句子的感情偏向、识别图片中的内容AI都可以出色的完成,但是如果设计上述问题的情况下则需要极为复杂的辅助程序去帮助AI去分解复杂任务,该论文主要使用的便是表示学习。

    对抗生成网络和对比学习的区别:表示学习并不一定要关注到样本的每一个细节,只要学习到的特征能够使其和其他样本区分开就足够了。感觉在这里更贴切人类的思维方式


    本文研究方向

    本文研究方向是优化对比学习的效果和效率,自监督方法在Pascal VOC检测方面已经超过了监督方法( 文中提到的MoCo方法),并且在其他方面也取得了出色的结果。最近自监督方法兴起的背后是他们都遵循了 contrastive learning 。

    什么是对比学习

    在监督学习中,其依赖于人类标注信息,这种对标注信息的依赖会造成如下结果:

    • 一张图片隐藏的信息远要比标注来的更多,因此一般情况下需要大量的训练样本。
    • 标签信息一般用于解决特定任务,例如识别动物,但他不能作为通用知识去在其他方向上使用。

    针对上述内容ImageNet上的对比式预训练成功地转移到了其它任务,并且胜过了监督的预训练任务(2019年何恺明提出的MoCo方法)。

    自监督学习不需要人工标注类别标签信息,由此就没有上述两点缺点,其直接利用数据本身作为监督信息,学习样本数据的特征表达,应用于下游的任务。自监督学习有分类两大类生成学习和对比学习,对比学习通过正样本和负样本的例子来学习表征,并不需要关注到样本的每一个细节,只要学习到的特征能够将其和其他样本区分开就足够了,感觉在这里更贴切人类的思维方式。

  • 相关阅读:
    C语言经典编程例子
    C语言编程例子-判断字母是否大写
    C语言编程例子-判断偶数
    C语言编程例子-打印乘法口诀表
    C语言编程例子-特殊等式
    C语言编程例子-一元钱的兑换方案
    C语言编程例子-使用while为用户提供菜单显示
    C语言编程例子-使用while语句求n
    C语言编程例子-检查字符类型
    C语言编程例子-求最低分和最高分
  • 原文地址:https://www.cnblogs.com/A-FM/p/14615485.html
Copyright © 2011-2022 走看看