self-supervised learning in 2019

This is my blog.

Self-Supervised Learning has become an exciting direction in AI community.

  • Jitendra Malik: “Supervision is the opium of the AI researcher”
  • Alyosha Efros: “The AI revolution will not be supervised”
  • Yann LeCun: “self-supervised learning is the cake, supervised learning is the icing on the cake, reinforcement learning is the cherry on the cake”

So, this blog is about the recent improvement (including STA) in self-supervised learning (for researchers).


由于有些论文是先发表的,之后论文有运用之前的某个点或者结构等,因此会有重复。论文笔记顺序不是按照发表顺序,而是阅读时的顺序(阅读是随机顺序……)

这篇post记述在2019年中关于self-supervised learning的论文概述。首先从一篇综述开始,总揽当下。

Self-supervised Visual Feature Learning with Deep Neural Networks: A Survey1

这篇概述主要就pretext tasks进行展开,将其分为四大类方法进行描述。并提及了自主学习的其他组成部分。

概述

深度神经网络的性能很大程度上依赖于Network capability(比如其中的特征抽取部分网络:AlexNet, ResNet, etc.)和数据的数量(ImageNet, OpenImage),而大量的数据主要是为了预训练模型,然后再用特定数据去fine-tune。预训练之后的模型主要有两个优点:有好的起点,收敛更快;可以避免over-fitting现象的发生。

但是对于数据的标注是耗时并且代价昂贵的,尤其是在video上。因此提出了self-supervised自主学习方法。首先是从数据的特性中自动 得到pretext tasks的伪标记,然后(通过ConvNet)从大量无标记的数据中学习visual features,然后将学习到的visual features去完成预先定义的pretext tasks,之后将在pretext task训练得到的网络参数(即ConvNet参数)作为监督学习downstream tasks的预训练参数,接下来就是按传统监督方式fine-tune了。

常见DNN结构

主要回顾了一些常见的网络结构,可略过

  • Image
    • AlexNet:每一个卷积层之后都应用了ReLU;由于只有8层,参数少,易过拟合,因此会带有数据增强、dropout、normalization等方法
    • VGG:层数增加,减小stride和kernel size的大小,保留更多细节特征
    • GoogLeNet:提出了Inception block,增加了网络的宽度
    • ResNet:提出skip connection来解决梯度消失和梯度爆炸的问题
    • DenseNet:提出了dense connection,使得浅层关注于浅层通用特征,高层关注于特定任务特征
  • Video:包括将视频分成多个帧作为图像的2DConvNet-based,关注于空间和时序特点的3DConvNet-based,动态关注模型的LSTM-based
    • Two-Stream Network:由一个空间流模型和一个时间流模型组成
    • Spatiotemporal CNN:增加人的动作识别
    • Recurrent Neural Network:基于时序特点

Pretext tasks

常见pretext tasks方法主要概括为下述四个部分:重新生成新的数据;基于内容之间的联系;在语义上生成伪标签;基于数据内在的联系。

常见Pretext tasks方法

下述从Image和Video分别展开。

Image feature learning

Generation-based Methods:重新生成数据

这一部分的伪标签通常是images本身。

Image generation with GANs:生成假images

就是普通的GANs,生成器学习真实图片的分布,然后生成尽可能像真的伪images;判别器则区分images的真伪;two-players / min-max game;之后将判别器网络用在downstream tasks的初始化上即可。

Image super resolution:生成更高分辨率的images
  • 自动编码器:通过压缩images,用低维度来表示原图
  • GAN:仍然可以通过GAN的方法来生成高分辨率的images,生成器使用perceptual loss,包括pixel-loss和content loss两个部分,判别器使用二值损失,如MSE。
Image inpainting:将images缺失部分补全

用剩余完整images信息特征(颜色、结构等等)来补全images;可以直接用卷积网络,也可以用GAN生成更真实的图片,生成网络的全连接层又包括编码器(补全信息)和解码器(预测补全后缺失区域的位置)。

Image colorization:将灰度images填色

这里的填色不需要和原彩色相同,只需要合理即可。因此首先需要辨认出目标,找到同一部分的pixel归为一类。一个直接的方法就是全连接网络,包含编码器(特征提取)和解码器(变色color hallucination to colorization),用L2 loss评估预测和真实的值。对于多种可能性,使用类别平衡来解决不确定性的问题。

Context-based pretext tasks:通过内容特征

Context similarity:patches之间特征的相似性
  • Image clustering-based methods

    根据数据的分布来group(可以使用KMeans);一种naive的方法就是手工标记特征,如HOG、SIFT、Fisher vector;group之后同一组的距离较小,不同组的距离较大;是当前表示学习的STA。

  • Graph constraint-based

Spatial context structure:patches之间空间的联系

比如任意两个patches之间的相对位置;比如一连串patches之间的顺序;当然这个联系的问题不可以过难或者过于简单。

  • Image jigsaw puzzle:常见的9宫格拼图,实际上已经有9!种可能性了,patches之间可以增加空隙,避免因为一些连接特性而易找到位置关系。
  • Context prediction
  • Geometric transformation recognition

Free semantic label-based methods:自动生成语义标签

Free semantic label包括segmentation masks,深度图,光学流和surface normal images;

主要通过硬编码和game engine,game engine可以在低cost且拥有pixel-level label下生成大量真实的合成数据,但是合成数据和真实数据不太一样,不可以直接训练,因此需要自主学习的辅助;hard-code programs是另一种生成合成数据的方法,但是其生成的label比较noisy。

方法包括:

  • Moving object segmentation
  • Relative depth prediction
  • Surface normal prediction
  • Contour detection
  • Depth estimation
  • Semantic segmentation

Video feature learning

Generation-based Methods:重新生成数据

Video generation with GANs

同样用GAN做对抗,这里的网络有两个流,分别是前景和背景,然后训练完之后将判别器的参数传递到downstream tasks上。

Video colorization

这里就是将帧分开,每一个帧同样由灰色进行上色即可。很少有工作运用这个方法。

Video future prediction

对于一个有限帧的video,用编码器寻找空间和时间上的特征,用解码器生成预测的未来帧。但是目前还没有研究探究这种方法的泛化能力。

Context-based pretext tasks:通过内容特征

Temporal context structure

根据时序的顺序主要有两个方向:

  • Frame order verification
  • Frame order recognition

都需要捕获帧之间细微的不同之处,因此在准备时需要对大量数据进行处理,比较耗时。

Cross modal-based methods:对于输入的两个不同的通道判断是否之间存在联系

这里的通道包括:RGB顺序、光学流顺序、语音数据、相机姿势等。

Flow-RGB correspondence verification
Optical flow estimation

上面两者可以认为一类,都是从图像特征上来说的。

Audio visual correspondence

关注于visual stream和audio stream之间的关系。

Ego-motion

无人驾驶汽车可以很容易收集到以自我为中心的行为数据。

通过两个帧之间的关系,得出自己的旋转与平移的行为方式。

Downstream tasks

包含

这一部分就是传统监督学习所完成的任务(可略过)

包括:

  • Semantic Segmentation:给每一像素都赋予语义标签;
    • FCN全联接网络初始化为训练pretext tasks完成后的网络参数
    • 用语义分割数据fine-tune
    • 在语义分割任务上评估
  • Object Detection:定位和分类目标
    • Fast-RCNN等检测网络初始化为训练pretext tasks完成后的网络参数
    • 用目标检测数据fine-tune
    • 在目标检测任务上评估特征的泛化能力
  • Image classification:分类目标
    • 特征提取网络初始化为训练pretext tasks完成后的网络参数
    • 用分类数据训练分类器如SVM
    • 在分类任务测试上评估特征质量
  • Action Recognition:(在预定义动作列表中)判断人的动作
    • Video特征提取网络初始化为训练pretext tasks完成后的网络参数
    • 用动作识别数据fine-tune
    • 在动作识别任务上评估特征质量

质量评估

对于质量评估方法主要包括:

  • Kernel visualization

    将卷积第一层的kernel可视化,与监督学习的进行比较,越相似越好

  • Feature map visualization

    将特征图可视化,越大的激活代表越关注这个部分,与监督学习比较

  • Image retrieval visualization

    在特征空间中寻找K近邻

数据集

所有监督学习上的数据都可以在去除标记后作为self-supervised learning的数据集使用,文中列出了Image和Video常用的数据集及其信息,可略过。

评估方法

通过在downstream tasks上的表现来评估,但是这种方法不能洞察到在自主学习训练下的情况。因此需要更多的评估方法,比如network dissection。

当前质量表现

  • Image feature learning
    • 没有在ImageNet预训练上表现的好,但是可以比拟(相差1%~2%左右)
    • 每一层的特征都是有用的
    • 深层次的特征表现比较好,浅层次的特征表现不太好
    • 当数据集之间有gap时,可以和ImageNet预训练的相提并论
  • Video feature learning
    • 明显低于监督学习下的,亟待改进(相差30%左右)
    • 可能和参数多、特征复杂有关系

未来研究方向

  • Learning Features from Synthetic Data
  • Learning Features from Web Data
  • Learning Spatiotemporal Features from Videos
  • Learning with Data from Different Sensors
  • Learning with Multiple Pretext Tasks

Learning Correspondence from the Cycle-consistency of Time2

这篇文章主要是用周期一致性cycle-consistency的思想,适用于不同规模的语义相关程度上。在训练时,通过周期一致性,向前向后tracking,将起点和终点的不一致部分通过损失函数,来学习特征图的特征表示;在测试时,通过学习到的特征表示来寻找空间和时间上的最近邻

概念上比较简单,但是需要考虑:

  • 当序列帧中目标并没有移动/变化时,需要更换目标,否则学习不到
  • 当物体姿态或者遮挡物发生变化时,可以通过跳过一些帧skip cycles来实现周期一致性
  • 当由于较短的周期使学习简化时,可以通过更换周期或者使用多种周期Multiple cycles

方法具体来说如下:

Method

训练时,tracker 和encoder两者相伴,不断学习

  • 首先从start开始(这时时间为t),我们有一个初始patch ,将其通过卷积网络来提取特征,得到

  • 接下来backward tracking,这一步我们需要通过tacker 来获得下一时刻patch在t-1和t-2时的位置,即图b所完成的工作

    • t-1(t-2)时刻的图片)首先通过卷积网络提取特征,得到)(在tracking中不断完善,因此在初期训练中,结果并不太优秀)

    • Affinity function f,将下一个时刻t(t-1)时的patch提取的特征)与此时刻的特征)进行运算,衡量对于patch特征图的第i个格子和图像特征图的第j个格子的相似性

      定义。具体的运算公式如下:

    • Localizer g,通过相似矩阵A来寻找到与patch特征图最匹配下的局部参数包括三个部分:2个维度表示空间坐标,1个维度表示旋转角度)。

      定义。g是由两个卷积层,一个线性层组成的。

    • Bilinear Sampler h,则是用在Image特征图上变线性采样,得到与patch特征图最匹配的小patch。

      定义

    • 通过Tracking得到与)在t-1(t-2)时刻的具有最大相似性的区域

  • 接下来forward tracking,和backward tracking步骤相似,通过tacker 来获得上一时刻patch在t-1和t时的位置

  • 将end获得的patch与start的patch进行比较,得到特征相似衡量部分的损失函数(这里用两个空间的欧几里得距离来作为损失量)。

  • 继续多组循环的计算,之后加上tracking和skip cycles部分的loss,共同组成损失函数部分,通过不断训练使得损失函数最小化

测试时,用已经学习完成的encoder,找到两个帧的特征相关性的矩阵A,然后将矩阵A和各个patch的标签来计算新帧各个部分的标签。


数学公式来表示,即:

训练部分:

  1. 提取特征

  2. tracker找寻最相似patch

    Backward:

    Forward:

  3. 计算loss

    对于loss部分,细化优化之后,包括tracking、skip cycle、特征相似性三个部分:

    Tracking:

    Skip Cycle:

    其中,上两者中的的定义为:

    其中,M表示n个坐标系下的变线性采样结果。

    Feature Similarity:

    因此Loss定义为如下(k是cycles的数目):

测试部分:

  1. 计算两个帧的相似矩阵
  2. 计算新帧各个部分的标签

作者的实验参数:

  • Videos
    • 114K,344hours
  • Hardware
    • 4-GPU machine with a mini-batch size of 32 clips(8 clips per GPU), for 30 epochs.
  • Input frames
    • 240 × 240 pixels
    • randomly cropped rescaled to
  • Image patches
    • 80 × 80 pixels
  • Encoder
    • ResNet-50 without res5 (the final 3 residual blocks), optimizer Adam with a learning rate of 0.0002 and momentum term .
    • Input image的特征图大小 30 × 30
    • Image patches的特征图大小10 × 10

遗留问题:

  1. 训练到30 epochs就停滞不前
  2. 对于更大规模和有噪声数据的训练并不友好
  3. 需要提高对遮挡物和部分物体的识别能力
  4. 对于在训练中跟踪目标的选择问题
  5. 可以引入更多的上下文进行跟踪

结果:

Result

Result

Momentum Contrast for Unsupervised Visual Representation Learning3

这篇文章是利用查询字典来完成contrastive learning对比学习(通过正反例子来学习表征),即寻找一个关键字与查询点相近,但与其他不相似。为了满足规模大前后一致的特点,基本思路就是建立一个动态字典(从某种意义上来说是一种随机采样)。这个字典由队列来表示(实现规模大的特点),根据动量(保持一致性)来更新编码器。所要查询的和当前字典的选择,通过编码器得到各自的特征表示,之后使用contrastive loss对比损失来衡量两者的相似性,这样不断来训练视觉表示编码器

方法名简称为MoCo。在PASCAL VOC,COCO和其他数据集的7个检测/细分任务中,可以胜过监督预训练的方法,有时甚至可以大大超过它。

负样本数量较多时,对比方法能够更好的发挥作用。因为更多的负样本能够有效的覆盖潜在数据分布。在对比学习中,负样本受限于mini-batch的大小。而MoCo通过动态队列来解决这个问题。


方法如下:

MoCo

  1. 有一组候选样本,其可以是一张图片,也可以是一个小patch;

  2. 从中随机选出一个查询

  3. 经过encoder ,得到所需查询的特征

  4. 经过momentum encoder (这里两个编码器可以独立,也可以部分参数共享,也可以相同),得到一个动态队列,队列的大小可以大于mini-batch的大小,两者是解耦的

  5. 从队列中随机取出元素

  6. 对比的目标是学习一个,使得:

    这里指的是与x相似的数据(正样本), 指的是与x不相似的数据(负样本)。score 函数是一个度量函数,评价两个特征间的相似性

    这里使用InfoNCE损失方法(可以减少外部噪声的干扰)来衡量

    其中,为一个超参数。

    当然这里的对比损失还可以用别的表示方法,如margin-based losses,variants of NCE losses。

  7. 根据loss,计算梯度,以此来优化encoder,使得视觉表示编码器更加优秀;

  8. 同时根据动量来更新(动量更新是为了解决反向更新后,前后编码器不一致的问题),删除最老的数据,因为它的编码密钥是最过时的,因此与最新密钥的一致性最小。

    定义的参数为,则的更新如下:

    其中,是动量系数,实验表明m值大些,结果更好,也表明了慢些更新编码器效果更好,作者使用的是0.999。因此,在实验中,后向传播只更新,然后通过动量更新,这样更加改变的比较平滑,尽可能保持前后编码一致性。

  9. 将新编码器规则得到的加入队列,更新队列


伪代码如下:

Algorithm of MoCo


超参数如下:

  • Encoder
    • ResNet with Batch Normalization
    • Fixed-dimensional output (128-D)
    • Output normalized by L2-norm
    • SGD weight decay is 0.0001 and the SGD momentum is 0.9
    • Initial learning rate of 0.03
  • Contrastive loss
    • The temperature τ is 0.07
  • Input data
    • 224×224-pixel
    • random color jittering, random horizontal flip, and random grayscale conversion
  • Mini-batch size 256

结果:

Result

Data-Efficient Image Recognition With Contrastive Predictive Coding4

这一篇文章同样也是用contrastive learning对比学习的思想,其在未标记的ImageNet数据上并使用数据增强的方法进行对比训练,然后使用分类器进行无监督对比学习,效果超过了监督的AlexNet。

Oord et al., 2018的CPC是其基础版本,通过对多个时间点共享的信息进行编码来学习特征表达,同时丢弃局部信息(“慢特征”:随时间不会快速变化的特征)。而此篇是在其基础上加上label-propagation操作,来提高data-efficient recognition数据有效识别

(对比学习结构都是由三个主要构件组成的)

因此后续的解析会围绕这前后两篇著作展开。

CPC V2的提升部分,具体包括:

  • MC: model capacity. 模型容量
    • Original: ResNet-101, 23 blocks, 1024-dimensional feature maps, and 256-dimensional bottleneck layers.
    • Now: ResNet-161, use 46 blocks with 4096-dimensional feature maps and 512-dimensional bottleneck layers.
    • Top-1提升了22.8%, Top-5提升了16.5%
  • BU: bottom-up spatial predictions. 之前只根据patch预测,现在不仅根据patch还有patch周围元素一起来预测
  • LN: layer normalization. 由于网络结构大了,训练更加难了;因此从batch normalization变更为layer normalization
  • HP: horizontal spatial predictions. 实验说明,空间维度越多,效果越好
  • RC: random color-dropping. 下述和这个都是用来增强数据
  • LP: larger patches.
  • PA: further patch-based augmentation.

方法如下:

(左边为空间示意图;右边为流程图)

CPC

在图像上的示意图(来自基础版本),实际上就是上文中的

CPC

预训练

  1. 将图片x divide分成若干小patches(块之间部分重叠,见Figure 4);

  2. 通过特征提取(最后是平均池化的卷积网络,这里是ResNet-161)来进行表征学习Representation learning,得到特征向量

  3. 将所有特征向量通过masked CNN aggregated连接起来,产生一行context向量

  4. 将context向量用InfoNCE衡量

测试

  1. 根据预训练的结果设定特征提取器;

  2. 通过label-propagation增强数据的有效性,将训练分类表征小部分标记数据训练;

  3. 将图片x divide分成若干小patches;

  4. 将其通过特征提取,得到特征向量

  5. 将特征向量通过分类表征,得到标签向量;

  6. 将标签向量与真实标签用交叉熵损失来衡量


在Video上,时间序上的回归示意图:

CPC in video


伪代码:

Algorithm of CPC V2


参数

  • Input
    • extracted 80×80 patches with a stride of 32×32 from a 240×240 shaped input image
  • :
    • a grid of 6×6 features
  • :
    • an 11-block ResNet architecture with 4096-dimensional feature maps and 1024-dimensional bottleneck layers
  • labeled images
    • subset of the ImageNet dataset
    • only 1% of dataset
  • supervised loss
    • cross-entropy
  • Optimizer
    • Adam Optimizer with a learning rate of 5e-4.
  • a batch size of 512 images

结果:

Result


下面两篇则是利用对比方法学习不变特征(Invariances)

2019年Bachman提出的 Augmented Multiscale DIM ,通过数据增强方法学习不变特征。Augmented Multiscale Deep InfoMax (AMDIM) 和CPC很相似,都是通过空间来预测的,但是这篇在预测表征上还通过层之间的关系。

2019年 Tian提出的 Contrastive multiview coding,通过图像不同的通道学习不变特征(深度、光照、语义标签等)【貌似还没中,代码部分开源,有些东西】。

Revisiting Self-Supervised Visual Representation Learning5

这篇文章主要是研究了多种网络结构以及多种self-supervised的任务,得到了一些启发性的经验结论:

  1. 监督学习的结果不可以直接用在自主学习上,两者是不同的
  2. 自主学习在不同task上的结果依赖于网络结构的选择,比如对于rotation,RevNet50性能最好,但是对于Exemplar、相对Patch位置、Jigsaw等其他方法,ResNet50 v1性能最好(而监督学习中,AlexNet的结果会明显更优)。
  3. 对于skip-connection(resnet)结构的网络,高层的特征性能并不会下降
  4. 增加filter数目和特征大小,对于性能提升帮助很大。
  5. 无监督性能最后训练的线性分类器非常依赖学习率,需要多次迭代才可收敛(作者尝试了多层感知机,但效果不好,所以并没有给出解决方法)。

实验链接,是Tensorflow版本,代码很清晰。

: Self-Supervised Semi-Supervised Learning6

这篇文章主要是提出了 learning的方法(是指self-supervised semi-supervised learning):通过在标记数据上面计算分类损失无标记数据上计算self-supervised的损失,即

其中,是标准交叉熵损失函数,是非负权重值(实验中得出取值为1,效果最好),中的参数。


具体流程(和平常一样):

  1. 由标准的标记数据先训练pretext任务的模型
  2. 无标记数据测试得到预测标记(可以将标记数据去除标记,一同加入训练)
  3. 再用预测标记作为伪标签再次训练模型
  4. 之后用标记数据fine-tune模型

自主学习部分损失:

​ 作者在两个pretext tasks上实验,两个损失函数都和各自的任务相关,并没有改变,可忽略。

​ 一个是 -Rotation,即无监督损失旋转 预测任务(比Self-sup. Rotation + Fine-tune在10% labels上提高5.29%,在1% labels上提高8.21%);

​ 其中,表示图片经过r翻转后的新图像,表示交叉熵损失函数。

​ 另一个是-Exemplar,即无监督损失基于图像变换(裁切、镜像、颜色变换等)的triplet损失,即衡量相同图像有相似特征表示,不同图像有不同特征表示。(比Self-sup. Exemplar + Fine-tune在10% labels上提高2.71%,在1% labels上提高2.12%)。


半监督学习部分损失:

  • Virtual Adversarial Training (VAT)

    • 主要是增强对于预测的鲁棒性

    • 因此损失函数的形式,即在范围内的预测应该相同

  • Conditional Entropy Minimization (EntMin)

    • 增强对于预测的信心

    • 主要通过标签对于图像的条件概率来衡量


实验中,有对小的验证集是否有效这个问题进行实验,发现在小型验证集上调整的最佳模型也是在大型验证集上调整的最佳模型,因此得出结论,用小的验证集fine-tune即可


结果:

Result

Self-Supervised Representation Learning by Rotation Feature Decoupling7

这篇文章主要是提出将旋转不变性纳入特征学习之中,并且将图像旋转pretext task和实例区分任务接耦,来提高预测的准确性。

旋转面临的问题

  • 不是所有特征在旋转之后,都是不变的;即旋转不变性是有特例的
  • 旋转之后不是所有实例都可以预测的
    • 圆形物体
    • 对称物体
    • 从顶部观察的物体

因此,所学习的实例特征可以分成旋转判别旋转不相关两个元素。这也是和RotNet(只进行旋转学习)方法的不同之处。

在分类任务上,比RotNet高1.3%,比监督学习低6.6%;在检测任务上,比RotNet高3.1%,比监督学习低5.6%;在语义分割任务上,比RotNet高6.2%,比监督学习低2.7%。


具体做法如下:

Rotatoin nnetwork

  1. 将原始图像作为正样例

  2. 将原始图像经过旋转变换(4个角度,)得到新的生成图像,所有新生成的图像都没有(分类)标记,但有旋转标记

  3. 用卷积网络提取特征,按照生成的图像和原始图像是否相同,分成两个特征元素,更加关注于主要目标(实例)在图像中的位置以及它初始的方向,而更加关注于这个图像和其他图像的不同;两者的维度是相同的;

  4. 如果原始图像和新生成的图像不同,则作为正样例;

    1. 将这部分数据训练pretext task,预测旋转的角度

    2. 对于其中样本的旋转标记存在噪声(旋转后图像有歧义),通过PU (positive unlabeled) learning,来学习标记样本的权重

      其中,是对旋转后的图像的正负性的概率估计(正的表示,样本可用;负的表示,样本不具有训练的条件)。

    3. 对于旋转角度分类的损失,定义为(注意这里是对部分特征)

  5. 如果原始图像和新生成的图像相同,则作为负样例;

    1. 用所有旋转前后图像的特征差异来作为惩罚

    2. 完成实例区分任务,进行无参数分类

      对于图像预测为实例的可能性定义为:

      其中,的L2-normalized 版本,是一个温度参数。

      这里目标为:

      由于上式计算会耗费大量空间和时间(因为包含了e的次方计算),因此在归一化之前将均值特征(超过128维,一个降维处理)线性映射到一个128维矢量,再归一化为,并采用噪声对比估计NCE(将真实的样本和一批“噪声样本”进行对比,从中发现真实样本的规律;具体来说就是将它转化为二分类问题,将真实样本判为1,从另一个分布采样的样本判为0)和近端(梯度)正则化(把一个优化问题转化为其中的一部分,然后用梯度下降法优化这一部分,从而实现总优化问题;大概就是公式中的部分)。 目的是最小化以下损失函数:

      其中,表示真实的数据分布,表示NCE中噪声的均匀分布,表示其他图像归一化后的特征值。

  6. 因此最终目标定义为:


实验参数:

  • 特征提取器
    • AlexNet: five convolutional layers and two FC layers
    • leave out the Local Response Normalization (LRN) layers
    • add BN after each linear layers
  • 旋转分类器
    • one-layer linear network
  • 损失函数
  • 训练
    • 200 epochs;
    • The learning rate is set to 0.01 initially and then decayed by a factor of 10 every 40 epochs after the first 90 epochs.;
    • momentum is 0.9;
    • batch size is 192;
    • penalization of the weights with .

结果:

Result

Large Scale Adversarial Representation Learning8

这篇文章,出发点是GAN在监督学习、迁移学习等上效果都很好,但还没有在表示学习上运用过。于是说,将GAN的生成图像的质量高的特点转换为提高表示学习的性能上。因此在GAN的当前最优秀之一的BigGAN模型作为基础,添加编码器和修改鉴别器,将其扩展到表示学习——BigBiGAN(=BigGAN+Bidirectional=BigGAN+ALI [Adversarial Learned Inference])。

相对于CPC(上文提到的一些对比学习来说),它不需要更改输入数据,是全分辨率进入算法的;因此在downstream tasks时,可以直接使用,而不需要域迁移

但是正是由于它的big,因此复现上对于硬件要求高

在说明BigBiGAN之前,先来说明它的两个基础模型:BiGAN和GigGAN。

BiGAN

BiGAN是一个双向GAN,这里的双向指的就是输入数据(一般是图像)和随机潜变量(简单来说就是一下载从数据中看不出的内容,我是把它当作特征来看的)两者之间的编码和解码过程。网络结构也很简单清晰(如下图),就是之间的双向生成,加上生成的通过判别器判断。

考虑随机潜变量,有两个原因:

  • 由于 BiGAN的生成器是基于 DCGAN 的,所以生成的图片质量并不高。这也就导致了 G 的输出和输入x的分辨率不同,图片x分辨率会高很多,对 BiGAN 的特征提取效果产生了限制。因此在GAN基础上加入了一个将数据映射到隐特征空间的E;
  • 通过学习潜变量,来学习数据的内在/表征;表征学习的关键

同时对D做了相应的改进。D的输入变成了两个数据对。最终模型希望

BiGAN

目标为:

其中期望值由蒙特卡洛样本估计来得到。

BigGAN

BigGAN,是在BiGAN上进行改进。它改进的一个点就是Big,包括模型的参数、Batch等,都大大增加了;同时将正交正则化的思想引入 GAN,通过对输入先验分布z适时截断设置阈值的方式来截断 z 的采样)来控制样本的多样性和保真性,又增加了对模型稳定性的控制,在其中寻找到了一个平衡点阈值,大大提升了 GAN 的生成性能。现在就是要用其生成图像质量高的特点,将其作为生成器的一个部分(而且在消融实验中,也说明了好的图像生成器确实对学习表示能力有很大的帮助)。

BigBiGAN

BigBiGAN从网络结构来看(相比于BiGAN),将生成器部分用BigGAN是一个卷积网络,不同于BiGAN中使用,而是参数化为高斯分布,通过非确定基础模型来不断完善),将判别器分为三个部分:只关注(是一个卷积网络ConvNet),只关注(是一个多层感知机MLP),关注两者关系的(是一个多层感知机MLP)。

BigBiGAN

对于BiGAN的损失来说,使用Jensen-Shannon divergence来衡量,在这里就是:

(和BiGAN不同),其损失函数很明显的由两个部分组成,一个是生成器这部分(生成的数据应该可以以假乱真),一个是判别器这一部分(可以区分出赝品)。

考虑单独是因为分别可以提高分类性能,产生可区分的输出(消融实验中得到)

首先来先计算三个部分的得分

表示对于一个样例来说的损失量时,关注于时,关注于):

其中,是判别器的正则化部分(实验说明这三个部分在合并同类项,即之后,准确率有下降)。最小化,得到的最优参数(之后有做解耦实验,提高10倍后,可以加快速度,并提高表示能力);最小化,得到的最优参数

对于所有数据来说的分布为的分布为,这里的分布一般都是简单连续的,如高斯分布):

和BiGAN还是一脉相承的。


结果:

Result


1. Self-supervised Visual Feature Learning with Deep Neural Networks: A Survey https://arxiv.org/pdf/1902.06162.pdf
2. Learning Correspondence from the Cycle-consistency of Time https://arxiv.org/pdf/1903.07593.pdf project address http://ajabri.github.io/timecycle
3. Momentum Contrast for Unsupervised Visual Representation Learning https://arxiv.org/pdf/1911.05722.pdf
4. Data-Efficient Image Recognition With Contrastive Predictive Coding https://arxiv.org/pdf/1905.09272.pdf
5. Revisiting Self-Supervised Visual Representation Learning http://openaccess.thecvf.com/content_CVPR_2019/papers/Kolesnikov_Revisiting_Self-Supervised_Visual_Representation_Learning_CVPR_2019_paper.pdf
6. S4L- Self-Supervised Semi-Supervised Learning http://openaccess.thecvf.com/content_ICCV_2019/papers/Zhai_S4L_Self-Supervised_Semi-Supervised_Learning_ICCV_2019_paper.pdf
7. Self-Supervised Representation Learning by Rotation Feature Decoupling http://openaccess.thecvf.com/content_CVPR_2019/papers/Feng_Self-Supervised_Representation_Learning_by_Rotation_Feature_Decoupling_CVPR_2019_paper.pdf
8. Large Scale Adversarial Representation Learning https://arxiv.org/pdf/1907.02544.pdf

转载请注明出处,谢谢。

愿 我是你的小太阳


买糖果去喽