You Only Learn One Representation: Unified Network for Multiple Tasks论文阅读
paper:https://arxiv.org/pdf/2105.04206.pdf
code: https://github.com/WongKinYiu/yolor
摘要
论文中,提出了一个统一的网络将隐性知识(implicit knowledge)和显性知识(explicit knowledge)编码在一起,就像人类的大脑可以从正常的学习知识和潜意识学习,该网络可以生成一个统一的表征(representation)同时用于多个任务(刚开始还以为是可以同时作用于检测,分割,姿态估计等任务,结果实验部分只有目标检测,这个多任务好像说的是目标检测中的分类与定位。。)。可以在卷积神经网络中执行kernel space alignment,prediction refinement,multi-task learning。结果表明,将implicit knowledge引入到神经网络中,有利于所有任务的执行。作者进一步分析了从所提出的统一网络中学习到的implicit knowledge,它显示出很强的捕捉不同任务物理意义的能力。
介绍
如图1所示,人可以从多个角度分析一张图片,然而CNN通常只能实现一个目标。也就是说,从CNN提取的特征不能适用与其他类型的问题。这是因为我们只使用了网络提取的特征,而网络中丰富的隐性知识(implicit knowledge)并没有使用。然而没有系统的定义implicit learning怎样操作以及怎样获得implicit knowledge。通常,在神经网络的定义中,来自浅层网络的特征为显性知识(explicit knowledge),从深层网络得到的特征为隐性知识(implicit knowledge)。该论文中,把与观察直接对应的知识称为显性知识,对于模型中隐含的与观察无关的知识,称之为隐性知识。
作者提出一个统一的网络来融合隐性知识(implicit knowledge)和显性知识(explicit knowledge),确保模型包含一个统一的表征(representation),这个统一的表征允许子表征(sub-representation)也适用于其他任务。如图2c所示。
论文贡献如下:
- 作者提出一个统一的网络可以完成多种任务,它通过融合显性知识与隐性知识学习一个可以完成多个任务的统一表征,提出的网络可以有效的提升模型的表现,仅增加千分之一不到的计算成本;
- 作者在隐性知识学习中引入了kernel space alignment, prediction refinement, multi-task learning,并验证了其有效性;
- 作者分别讨论了建模隐性知识的方式,包括向量,神经网络,矩阵分解,并验证了这些的有效性;
- 作者证实了所提出的内隐表征学习方法能够准确地对应于特定的物理特征,并且还以视觉的方式呈现了它。还证实,如果算子符合目标的物理意义,它可以用来整合隐形知识和显性知识,并会产生乘数效应。
- 与SOTA比较,YOLOR能够实现目标检测中Scaled-YOLOv4-P7一样的精度,但是推理速度快了88%;
implicit knowledge 如何工作?
隐形表征zi是与观察不相关的,他可以是一个常量tensor Z = {z1,z2,…zk}。下面将介绍implicit knowledge是如何作为一个常量tensor在多个任务中作用的。
Manifold space reduction
作者认为,一个好的表征应该能够在它所属的流形空间中找到一个合适的投影,并有助于后续目标任务的顺利完成。如图3所示,如果在投影空间中利用超平面能成功地对目标类别进行分类,那将是最好的结果。在上面的例子中,可以利用投影向量的内积和隐式表示来达到降低流形空间维数的目的,有效地完成各种任务。
Kernel space alignment
在多任务和多头神经网络中,核空间不对齐是经常发生的问题,图4a展示了一个在多任务多头神经网络的核空间不对齐的例子。为了解决这个问题,可以对输出特征和隐形表征进行加法和乘法运算,这样就可以对核空间进行变换、旋转和缩放,以对齐神经网络的每个输出核空间,如图4.(b)所示。
该方法可以用于多个方面,比如说FPN中大目标与小目标的特征对齐,知识蒸馏中大模型与小模型的整合,处理zero-shot领域迁移和等问题;
More functions
除了可以应用于不同任务的功能外,隐性知识还可以扩展为更多的功能。如图5所示,通过引入加法,可以使神经网络预测中心坐标的偏移量。还可以引入乘法来自动搜索锚点的超参数集,这是基于锚点的对象检测器经常需要的。此外,可以分别使用点乘和concat来执行多任务特征选择和为后续计算设置前提条件。
统一网络中的implicit knowledge
implicit knowledge的形成
传统神经网络由以下公式表示,其中y为目标,fθ 表示神经网络, θ是神经网络的参数,ε是误差项;
在训练过程中,最小化ε,这表示我们期望同一目标的不同观测值是fθ 所得到的子空间中的一个点, 如图6(a)所示。换言之,我们期望得到的解空间只对当前任务ti有区别,对各种潜在任务中除ti以外的任务是不变的,T \ ti , T = {t1 , t2 , …, tn }。
为了通用目标的神经网络,我们希望获得的表征可以作用于其他所有属于T的任务。因此需要放松ε,以便能够在流形空间上同时找到每个任务的解,如图6(b)所示。然而,上述要求使得我们不可能用简单的数学方法,如一个独热向量的最大值或欧氏距离的阈值来求解ti。为了解决这个问题,我们必须对错误项进行建模,以便为不同的任务找到解决方案,如图6(c)所示。
统一网络:
为了训练所提出的统一网络,作者将显式知识和隐式知识结合起来对误差项进行建模,然后用它来指导多用途网络的训练过程。相应的训练公式如下:
其中εex和εim是建模来自观察x的显式误差和来自隐藏编码z的隐式误差。gφ这是一个特定于任务的操作,用于从显性知识和隐性知识中组合或选择信息。
有一些现有的方法来融合显性知识到fθ,所以将公式(2)表示为公式(3):
*表示一些可以融合fθ和gφ的操作,相加,相乘,concat;
如果把误差项的推导过程推广到处理多个任务,可以得到如下等式:
其中 Z = {z1 , z2 , …, zT } 是一个用于不同任务T的隐式编码集合,Φ 是用与从Z生成隐式表征的参数,Ψ 是用来从显示表征和隐式表征生成最终的输出的参数;
对于不同的任务,可以使用以下公式获得所有z∈ Z的预测:
一个共同统一的表征fθ (x),基于任务而不同的隐式表征gφ(z),最后用任务特定的判别器dΨ完成不同的任务。
建模implicit knowledge
- 向量/矩阵/tensor
向量z直接作为隐式知识的先验,直接作为隐式表示。此时,必须假设每个维度彼此独立。 - 神经网络
利用向量z作为隐式知识的先验,然后利用权矩阵W进行线性组合或非线性化,成为隐式表示。此时,必须假设每个维度相互依赖。也可以使用更复杂的神经网络来生成隐式表示。或者用马尔可夫链来模拟不同任务之间隐式表示的相关性。 - 矩阵分解
利用多个向量作为隐式知识的先验,这些隐式先验基Z和系数c构成隐式表示。还可以进一步对c进行稀疏约束,并将其转化为稀疏表示形式。此外,还可以对Z和c施加非负约束,将它们转化为非负矩阵分解(NMF)形式。
训练
当融合操作为相加,concat时,初始化implicit先验z ~ N (0, σ),如果融合方式为相乘,则初始化为z ~ N (1, σ),σ是一个近似0的很小的值,z和φ都在反向传播中更新;
推理
由于内隐知识与观察x无关,无论内隐模型g有多复杂φ 也就是说,在执行推理阶段之前,它可以被简化为一组常数张量。也就是说隐式信息不会造成额外的计算量。如果是进行相乘操作则是按照公式9,如果是相加操作则按照公式10;
实验
实验设置
通过FPN中的feature alignment, 目标检测中的prediction refinement, 和一个模型中的multi-task learning来添加implicit knowledge,使用YOLOV4-CSP作为baseline,implicit knowledge添加位置如图8所示,所有训练超参数与scaled-yolov4中一致。