大数跨境
0
0

LeCun团队自监督新作:基于块感知后向传播的自监督算法

LeCun团队自监督新作:基于块感知后向传播的自监督算法 极市平台
2023-02-23
2
↑ 点击蓝字 关注极市平台
作者丨GlobalTrack
编辑丨极市平台

极市导读

 

本文以分块学习规则形式探索完全反响传播的替代方案,展示了一个分块预训练程序,该程序由独立训练 ResNet-50 的 4 个主要层块组成,每个块具有 Barlow Twins 的损失函数,其性能几乎与 ImageNet 上的端到端反向传播一样好。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

论文链接:https://arxiv.org/pdf/2302.01647.pdf

源码链接:https://github.com/shoaibahmed/blockwise_ssl

简介

深度学习成功背后的主要组件之一是后向传播。相当的识别性能是否能使用局部学习规则(Local Learning Rule)得到仍然是一个问题。之前在监督学习和无监督学习的尝试只在小数据集(MNIST)或者大数据集但小网络(VGG-11)上取得成功。

使深度学习的大规模训练可以使用局部学习规则用途很多,包括通过局部训练网络不同部分,可以优化超大网络学习同时限制训练期间内存占用。这个方法之前在视频大规模预测领域使用,使用一系列VAE网络并已贪心方式训练;另外可以解锁自适应计算的可能性。网络每个部分都被训练单独解决子任务,自然可以调整不同部分解决不同部分。

自监督学习在预训练深度网络上取得了巨大成功。一个简单的在最后一层顶部的线性分类器可以产生与最优有监督学习相近的精度。自监督学习目标有两个部分反应期望学习的属性:第一个确保网络输出对图像扭曲保持不变性;第二个确保对输入的表示是有提供有用信息的。自监督方法的损失函数可能可以更好地反应中间层的目标。

本文方法

本文将ResNet-50网络和Barlow Twins自监督方法作为块感知训练(Blockwise Training)范式。

块感知训练

将ResNet-50网络划分为4个模块,并限制后向传播路径长度。ResNet-50架构包括5个有不同特征空间分辨率的模块,之后包括一个Global Average Pooling操作和一个线性层用作最后分类。本文使用自监督方式分开训练4个模块,使用梯度停止确保在一个块中的损失函数不影响其他块的科学系参数。

Barlow Twin损失

主要步骤:

输入图像传入深度网络后传入两个投影网络获得计算自监督学习损失的嵌入。从两个不同的图像视野计算这些嵌入 表示ResNet-50编码器, 是投影头。定义嵌入的交叉相关性矩阵为:

Barlow Twins损失函数试图最大化互相关矩阵的对角项,并使用以下损失函数最小化对角项

等式左边第一项为不变项,确保对角元素接近1,确保提取特征对使用的增广是不变的。第二项是冗余项(Reduancy Reduction Term),确保非对角元素接近0,形成最终图像表示的不同单元(即神经元)捕获输入图像的不同属性。

池化层选择

原始的Barlow Twin投影器收到维度为2048的输入。然而ResNet的初始块有一个较小的通道(256)。这里考虑使用不同池化层构建传入投影器的特征空间。

考虑的池化层包括:

1.全局空间池化(Global Spatial Pooling,GSP):需要改变投影器输入层的尺寸

2.局部空间池化(Local Spatial Pooling,LSP):将网格划分为空间容器。在这些容器中局部平均池化,连接输出确保投影器的输出为2048。

3.基于卷积扩张的池化(Conv-based Expansion Pooling,CbE):需要使用卷积层( 卷积)扩张特征维度为2048,后通过全局空间池化。

实验

同时使用ImageNet数据集训练ResNet-50模型四个快,并在每个块最后使用Barlow Twin损失函数。在每个模块得到的特征图也加入了标准差 的噪声。图4给出了在ImageNet数据集上相关的实验结果。本文方法与End-to-end训练相比仅有1.1%的性能下降。


与其他自监督方法的拓展:SimCLR/VicReg图5给出了其他自监督方法的实验。如图所示,与Barlow Twin实验结果一致:只和原始方法有很小的精度差异。

本文首先分析了基于自监督损失训练与有监督损失训练的块感知模型(每一个块使用监督学习训练)。主要到在监督学习情况下,初始块在分类任务上的性能显著高于SSL情况,使得初始块非常特定于任务,而后一个块看到了相反的趋势。这表明对于块感知学习,自监督学习由于监督学习的优势:SSL规则保留了初始块中的输入信息,以供后续块进一步处理;监督学习目标已经丢弃了初始块的信息,而这些信息原本可以被堆叠在其上的块使用。

另外分析了同时训练所有架构的重要性,比较的方法是序列优化,已训练方式训练每一个块,在开始训练新的层前冻结之前块的层。图4所示精度从68.84%(同时训练)降到67.12%(序列训练)。

图6突出了选择本文的池化方法的重要性。可以看出基于卷积扩张且没有全局空间池化(Conv based w/ global spatial pooling)的方法获得了最高的精度。局部空间池化和全局空间池化的方法在最后一层获得了相近的精度,且略低于基于卷积扩展且不使用全局空间池化的性能。

正确训练第一块可以被认为是特别关键的,因为所有后续的块都依赖于它。图7展示了模型精度对第一个模块是否精确训练的敏感性。端到端训练第一个模块,然后嵌入快感知训练中。通过该策略很大程度弥补了与端到端Barlow Twins方法的差距。如果我们组合前两个块(B1和B2),然后使用相同的块感知训练方法对它们进行训练,这将实现与使用端到端训练的第一块相同的性能

局限

图7实验中将两个第一块合并为一个会增加网络的最终精度,这表明随着我们逐渐将网络细分为更多块,性能差距会扩大。因此,我们目前的方法在纯局部学习范式中是不成功的。

此外,Barlow Twins的损失函数计算给定层的所有特征的互相关矩阵,这隐含地增加了该特定层的所有神经元之间的交互项。在纯局部学习环境中,互动应限于局部社区。

公众号后台回复“极市直播”获取100+期极市技术直播回放+PPT

极市干货

技术干货损失函数技术总结及Pytorch使用示例深度学习有哪些trick?目标检测正负样本区分策略和平衡策略总结
实操教程GPU多卡并行训练总结(以pytorch为例)CUDA WarpReduce 学习笔记卷积神经网络压缩方法总结

点击阅读原文进入CV社区

收获更多技术干货

【声明】内容源于网络
0
0
极市平台
为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
内容 8155
粉丝 0
极市平台 为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
总阅读5.7k
粉丝0
内容8.2k