译者:AI研习社(听风1996)
双语原文链接:https://www.yanxishe.com/TextTranslation/2916
自监督学习是一个非常有趣的研究领域,其目标是在没有任何人工标注的情况下,从未标注的数据中学习丰富的表示。
我们可以通过创造性地提出一个问题来实现,这样你就可以使用数据本身的一部分作为标签并尝试进行预测。这样的表述被称为前置任务
例如,你可以设置一个前置任务,给定灰度图情况下来预测图像的彩色版本。同样,您可以删除图像的一部分,并训练一个模型从周围预测该部分。有很多类似这样的前置任务。
通过对前置任务的预训练,希望模型能够学习到有用的表示。之后,我们可以只用一小组标记的训练数据,可以将模型微调到下游任务,例如图像分类、对象检测和语义分割。
评估表示的挑战
所以,前置任务可以帮助我们学习表征。但是,这就提出了一个问题:
目前,衡量表征的标准方法是在一组标准任务和基准数据集上进行评估。
如何判断一个表示学习的好坏?
-
线性分类:利用固定特征进行ImageNet分类
-
小样本设定:ImageNet分类只使用1%至10%的数据。
-
迁移学习:在PASCAL VOC上进行目标分类、目标检测和语义分割。
我们可以看到,上述评价方法要求我们对前置任务和目标任务使用相同的模型架构。
这就会带来了一些有趣的挑战:
-
对于前置任务,我们的目标是在大规模的无标签数据集上学习,因此更深的模型(如ResNet)将会帮助我们学习更好的表示。但是,对于下游任务,我们则更倾向于实际应用的浅层模型(如AlexNet)。因此,我们目前在设计前置任务时就必须考虑这个限制。
-
如果有些方法使用了较简单的架构,而其他方法使用了较深的架构,那么就很难公平地比较哪种前置任务更好。
-
我们无法将从前置任务中学习到的表征与HOG等人工设计的特征进行比较。
-
我们可能希望在前置任务中利用多个数据域,如声音、文本和视频,但目标任务可能会限制我们的设计选择。
-
在前置任务上训练的模型可能会学习到对通用视觉识别无用的额外知识。如今,最后一层的任务特定层会被忽略,实际只取权重或特征到一定的卷积层。
知识迁移
Noroozi等人在他们2018年的一篇论文 “Boosting Self-Supervised Learning via Knowledge Transfer”中提供了一个非常简单的想法去解决这些问题。
直觉
作者观察到,在一个良好的表示空间中,语义相似的数据点应该是紧密相连的。
在常规的有监督分类中,图像在语义上相似的信息是通过人类注释的标签进行编码的。在这种标签上训练的模型一般都会有一个表示空间,对语义相似的图像进行分组。
因此,对于自监督学习中的前置任务,目标是隐式学习一个使相同类别图像相似而不同类别图像不相似的度量。因此,如果我们能够以某种方式将语义相关的图像编码到相同的标签上,我们就可以对学习的表示提供可靠的估计。
通用框架
作者提出了一个新颖的框架,可以将知识从一个深层的自监督模型转移到一个独立的浅层下游模型。你可以使用不同的模型架构来完成前置任务和下游任务。
核心想法:
将前置任务中的特征进行聚类,并将聚类中心分配给未标记的图像作为伪标签。然后,在伪标签上重新训练一个具有目标任务架构的小型网络来预测伪标签,并学习一种新的表示方法。
这种端到端的处理流程介绍如下:
1.前置任务
在这里,我们选择一些深度网络架构,并在一些数据集上对我们选择的一些前置任务进行训练。在模型训练完成后,我们可以从一些中间层获取特征。
图:在前置任务上训练(资源)
2.K-means聚类
对于数据集中所有未标记的图像,我们计算前置任务模型中 的特征向量。然后,我们基于K-means聚类来分组语义上相似的图像。我们的想法是,聚类中心将与ImageNet中的类别对齐。
图:聚类特征(资源)
在论文中,作者使用的K-means在单台Titan X GPU上运行了4个小时,将130万张图片聚成2000个类别。
3. 伪标签
聚类中心被当作伪标签。我们可以使用与上一步相同的数据集,也可以自己使用不同的数据集。然后,我们计算这些图像的特征向量,并为每个图像找到最接近的聚类中心。这个聚类中心被用作伪标签。
图:生成伪标签(来源)
4. 在伪标签上训练
我们采取将用于下游任务的模型架构,并利用其将未标记的图像分类为伪标签。因此,目标架构将学习一个新的表示,这样它将把原本在预先训练的特征空间中接近的图像映射到接近的点上。
在伪标签数据上重新训练(来源)
知识迁移的优势
我们看到了如何通过对特征进行聚类,然后使用伪标签,我们可以将任何前置任务表征中的知识带入一个共同的参考模型中,比如AlexNet。
因此,我们现在可以轻松地比较不同的前置任务,即使它们是使用不同的架构和在不同的数据域上进行训练的。这也让我们可以通过使用深度模型和具有挑战性的前置任务来改进自监督方法。
这个框架的效果如何?
为了定量评价这个想法,作者设置了一个实验,如下所述:
a. 增加前置任务的复杂性(Jigsaw++)
为了评估他们的方法,作者采取了一个名为 "拼图 "的老式拼图式前置任务,我们需要预测用来随机打乱3 * 3正方形图像网格的排列。
图来自这篇论文
他们通过在某些随机位置用另一个随机图像中的图块随机替换0到2个图块来扩展任务。这增加了难度,因为现在我们只需要使用剩余的补丁来解决这个问题。新的前置任务被称为 "Jigsaw++"。
图来自这篇论文
在本文中,他们使用了701个总排列,其最小汉明距离为3。他们对每个图像块分别应用均值和标准差归一化。他们还将图像的灰度化率提高到70%,以防止网络利用低浅显的统计信息而作弊。
b. 用更深层次的网络来解决借口任务
作者使用VGG-16来解决前置任务并学习表征。由于VGG-16的容量增加,它可以更好地处理 "Jigsaw++"任务带来的额外复杂性,从而提取更好的表征。
c. 将知识迁移至AlexNet
对来自VGG-16的表示进行聚类,并将聚类中心转换为伪标签。然后,AlexNet被训练来对伪标签进行分类。
d. 在评估数据集上对AlexNet进行微调
对于下游任务,使用伪标签分类的权重初始化AlexNet模型的卷积层,并随机初始化完全连接的层。然后,在各种基准数据集上对预训练的AlexNet进行微调。
e. 结果
使用像VGG-16这样的更深层网络,可以得到更好的表示和伪标签,也可以在基准任务中获得更好的结果。它在2018年的几个基准上得到了最优秀的结果,并进一步缩小了监督和自监督方法之间的差距。
-
使用VGG16训练 "Jigsaw++",并使用AlexNet预测集群可获得最佳性能。
-
切换到更具挑战性的前置任务 "Jigsaw++"比 "Jigsaw "提高了性能。
-
当在Jigsaw++和下游任务中都使用相同架构的AlexNet时,知识迁移并没有明显影响。
Task | Clustering | Pre-text architecture | Downstream arch. | Classification | Detction (SS) | Detection(MS) | Segmentation |
---|---|---|---|---|---|---|---|
Jiasaw | no | AlexNet | AlexNet | 67.7 | 53.2 | – | – |
Jiasaw++ | no | AlexNet | AlexNet | 69.8 | 55.5 | 55.7 | 38.1 |
Jiasaw++ | yes | AlexNet | AlexNet | 69.9 | 55.0 | 55.8 | 40.0 |
Jiasaw++ | yes | VGG-16 | AlexNet | 72.5 | 56.5 | 57.2 | 42.6 |
2. 在ImageNet上的线性分类
在这种设定下,在从不同卷积层的AlexNet中提取的特征上训练线性分类器训练。对于ImageNet来说,使用VGG-16并通过聚类将知识转移到AlexNet中,可以大幅提升2%。
3. ImageNet上的非线性分类
对于非线性分类器来说,使用VGG-16将知识迁移到AlexNet上并使用聚类可以在ImageNet上获得最佳性能。
来自论文的其他见解
1. 簇的数量对性能有什么影响?
网络并没有受到聚类数量的显著影响。作者在物体检测的任务上测试了在不同簇数的伪标签上训练的AlexNet。
2. 这与知识蒸馏有什么不同?
知识迁移与知识蒸馏有着本质的区别。在这里,我们的目标是只保留表征中图像的簇关联,并将其转移到目标模型中。与蒸馏不同的是,我们不对teacher的精确输出做任何回归。
3. 在聚类与预测伪标签中可以使用不同的数据集吗?
可以,这个方法很灵活,你可以在一个数据集上进行预训练,在另一个数据集上进行聚类,然后得到第三个数据集的伪标签。
作者做了一个实验,他们在ImageNet的表示上训练聚类,然后在 "Places "数据集上计算聚类中心,得到伪标签。对象分类的性能仅有小幅下降(-1.5%)。
结论
因此,知识迁移是一种简单有效的方式,可以将表征从深层模型映射到浅层模型。
AI研习社是AI学术青年和AI开发者技术交流的在线社区。我们与高校、学术机构和产业界合作,通过提供学习、实战和求职服务,为AI学术青年和开发者的交流互助和职业发展打造一站式平台,致力成为中国最大的科技创新人才聚集地。
如果,你也是位热爱分享的AI爱好者。欢迎与译站一起,学习新知,分享成长。
雷锋网版权文章,未经授权禁止转载。详情见。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/138590.html