关于自监督部分内容参考Self-supervised Learning 再次入门和知乎微调大佬的回答什么是无监督学习。
监督学习利用大量带有标签的数据来训练网络,使得网络能够提取得到丰富的语义特征。
无监督信息不需要标签数据来进行训练,通过对数据内在特征的挖掘,找到样本间的关系,比如聚类相关的任务。
上面简单描述了监督和无监督学习的定义,但是因为我们常见的主要是监督学习,而无监督学习大部分都是仅仅简单了解到有聚类啥的方法。我认为这是不够的,这里我引用一下知乎大佬的回答:无监督学习就是学习到输入XXX的更精简的数据表达ZZZ,这个新的表示至少符合以下两点要求:
换句话说,学习到的表示ZZZ要足够小防止冗余,又要足够好能够支持下游的任务。

从这个角度看,有监督学习得到的数据ZZZ不如无监督学习到的数据ZZZ那么通用,但更适合下游特定的有监督任务。此外,这个大佬还认为广义上的无监督学习只是说你没有一个确定的下游任务,但其实重建误差也算是下游任务,因此或许也能被称为一种“监督学习”。
好了,有了上述的简单介绍,我们便可以了解为啥无监督学习中被广泛使用的方式自动编码器。
编码器将输入的样本映射到隐层向量,解码器将这个隐层向量映射回样本空间。我们期待网络的输入和输出可以保持一致(理想情况,无损重构),同时隐层向量的维度大大小于输入样本的维度,以此达到了降维的目的,利用学习到的隐层向量再进行聚类等任务时将更加的简单高效。对于如何学习隐层向量的研究,可以称之为表征学习(Representation Learning)。但这种简单的编码-解码结构仍然存在很多问题,基于像素的重构损失通常假设每个像素之间都是独立的,从而降低了它们对相关性或复杂结构进行建模的能力。尤其使用 L1 或 L2 损失来衡量输入和输出之间的差距其实是不存在语义信息的,而过分的关注像素级别的细节而忽略了更为重要的语义特征。对于自编码器,可能仅仅是做了维度的降低而已,我们希望学习的目的不仅仅是维度更低,还可以包含更多的语义特征,让模型懂的输入究竟是什么,从而帮助下游任务。而自监督学习最主要的目的就是学习到更丰富的语义表征。
关于自监督学习和无监督学习的关系,这里不做讨论。
简单的定义: 自监督学习主要是利用辅助任务(pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征。
从自监督学习的定义来看,自监督学习难点在于这个辅助任务如何设置,如何评测对于自监督学习到的特征。
主要是通过 Pretrain-Fintune 的模式。 我们首先回顾下监督学习中的 Pretrain - Finetune 流程:我们首先从大量的有标签数据上进行训练,得到预训练的模型,然后对于新的下游任务(Downstream task),我们将学习到的参数进行迁移,在新的有标签任务上进行「微调」,从而得到一个能适应新任务的网络。而自监督的 Pretrain - Finetune 流程:首先从大量的无标签数据中通过 pretext 来训练网络,得到预训练的模型,然后对于新的下游任务,和监督学习一样,迁移学习到的参数后微调即可。所以自监督学习的能力主要由下游任务的性能来体现。
作者提出了利用训练卷积网络识别对于输入图片的旋转角度来进行提取图像特征,即作为一个辅助任务(pretext)。
简单的说,作者利用卷积网络构建了一个模型,该模型可以用来对输入图像的旋转角度进行分类,旋转角度分为0°、90°、180°、270°。输入进一张经过随机旋转90°整数倍的图片,输出结果为预测出图片旋转角度即对于4个角度的概率值,概率值最高的即为图片的旋转角度。
当得到训练好的辅助任务模型后,作者通过实验比较利用辅助任务的前KKK层单独拿出来作为上游任务,权重固定保持不变(即进行冻结),下游任务根据具体任务进行搭建网络结构,然后利用监督学习来训练下游任务的模型。
作者为啥设计这样的辅助任务呢?作者在论文中解释道:
作者通过attention map来进行可视化说明。从attention map可以看出作者设计出的辅助任务和监督任务关注的位置是几乎一样的。
此外作者还对比了第一层的滤波器,作者发现自监督任务学习到的滤波器主要是各种频率上的定向边缘滤波器,而且值得注意的是,它们似乎比在监督任务中学习到的滤波器具有更多多样性。

作者要利用卷积网络搭建一个模型,该模型的输入为经过几何变化的图像(几何变化作者选择的是旋转变化),输出是对于这些几何变化的概率值,就像分类一样,最终得到每一个类别的概率值。下面我具体介绍一下用到的符号。

作者设计了两种网络结构,分别是NIN结构和AlexNet网络结构。在接下来的实验中,CIFAR上作者使用了NIN网络,ImageNet上作者使用了AlexNet网络结构。
它具有与监督学习相同的计算成本,相似的训练收敛速度(比基于图像重建的方法快得多;我们的 AlexNet 模型使用单个 Titan X GPU 训练大约 2 天),并且可以简单地采用设计的高效并行化方案用于监督学习(Goyal 等人,2017 年),使其成为互联网规模数据(即数十亿张图像)上无监督学习的理想候选者。此外,我们的方法不需要任何特殊的图像预处理程序,以避免像许多其他无监督或自监督方法那样学习琐碎的特征。尽管我们的自监督公式很简单,但正如我们将在本文的实验部分中看到的那样,我们的方法学习的特征在无监督特征学习基准上取得了显着改进。
在我们的初步实验中,我们发现在训练期间我们通过同时向网络提供图像的所有四个旋转副本而不是每次随机采样单个旋转变换来训练网络时,我们获得了显着改进。因此,在每个训练批次中,网络看到的图像是批次大小的 4 倍。

我们假设这是因为它们开始变得越来越具体地用于旋转预测的自我监督任务。此外,我们观察到,增加 RotNet 模型的总深度会导致通过较早层(以及在第一个转换块之后)生成的特征图提高对象识别性能。


这里实验结果比较多,就不一一列举了。


上一篇:Docker的数据管理