我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第 2 篇文章,arxiv.org/abs/2105.04…
1. 简介
如图1所示,人们可以从不同的角度分析相同的数据。然而,经过训练的卷积神经网络 (CNN) 通常只能完成一个单一的目标。一般来说,从训练好的 CNN 中提取的特征对于其他类型问题的适应性通常很差。造成上述问题的主要原因是我们只从神经元中提取特征,而没有利用 CNN 中丰富的隐性知识。而反观人脑活动时,隐性知识能够有效地辅助大脑完成各种任务。
隐性知识是指在一种潜意识状态下学习到的知识。然而,隐性学习是如何运作的 以及 隐性知识是如何获得的,目前还没有一个系统的定义。在神经网络的一般定义中,从浅层获取的特征通常被称为显性知识,从深层获取的特征被称为隐性知识。在论文中,作者把与观察得到的直接对应的知识称为显性知识。对于模型隐性的、与观察无关的知识,称之为隐性知识。
作者提出了一个统一的网络来整合隐性知识和显性知识,并使学习模型包含一个通用表示,这种通用表示使子表示能够适用于各种任务。图2 (c) 中展示了提出的统一网络架构。
构建上述统一网络的方法是将压缩感知和深度学习相结合,主要的理论基础可以在作者之前的工作中找到。在《Robust face verification via bayesian sparse represen-tation》中,作者证明了利用扩展字典重构残差的有效性;在《Recognition and retrieval of sound events using sparse coding convolutional neural network》和《Sound events recognition and retrieval using multi-convolutional-channel sparse coding convolutional neural networks》中,作者利用稀疏编码重构 CNN 的 feature map,使其具有更强的鲁棒性。本文工作的贡献总结如下:
(1) 作者提出了一个可以完成各种任务的统一网络,它通过整合隐性知识和显性知识来学习一般表示,人们可以通过这种一般表示来完成各种任务。所提出的网络以非常小的额外成本 (不到1万的参数量和计算量) 有效地提高了模型的性能;
(2) 作者将 kernel 空间对齐,预测精细化和多任务学习引入隐性知识学习过程,并验证了它们的有效性;
(3) 作者分别讨论了利用向量、神经网络和矩阵分解等工具对隐性知识进行建模的方法,并验证了其有效性;
(4) 作者证实了所提出的隐性表示可以准确地对应特定的物理特征,并且也将其以视觉的方式呈现出来;
(5) 作者还证实,如果算子符合目标的物理意义,它可以用来整合隐性知识和显性知识,他将会产生乘法效应;
(6) 作者提出的统一网络结合最先进的方法,在目标检测上达到了与 Scaled-YOLOv4-P7 相当的精度,推理速度提高了 88%。
2. 相关工作
作者对与本研究主题相关的文献进行了回顾。这篇文献综述主要分为三个方面:(1) 显式深度学习:它将涵盖一些可以根据输入数据自动调整或选择特征的方法;(2) 隐式深度学习:涵盖隐性深度知识学习和隐微分导数 的相关文献;(3) 知识建模:列出了几种可以用来整合隐性知识和显性知识的方法。
2.1 Explicit deep learning
显式深度学习可以通过以下方式进行。其中,Transformer 是一种方式,它主要是用查询、键或值来获得自注意力;Non-local 网络是另一种获得注意力的方式,它主要在时间和空间上提取成对的注意力;另一种常用的显式深度学习方法是根据输入数据自动选择合适的 kernel。
2.2 Implicit deep learning
属于隐式深度学习范畴的方法主要有隐式神经表征和深度均衡模型。前者主要是获得离散输入执行不同任务的参数化连续映射表示,后者则是将隐式学习转化为残差形式的神经网络,并对其进行均衡点计算。
2.3 Knowledge modeling
属于知识建模的方法主要包含稀疏表示和记忆网络。前者使用范例、预定义过完整、学习的字典来进行建模,而后者依赖于结合各种嵌入形式来形成内存,并使内存能够动态地添加或更改。
3. 隐性知识如何起作用
本文研究的主要目的是为了构建一个统一的、能够有效训练隐性知识的网络,因此作者将首先研究如何在后续的研究中对隐性知识进行快速训练和推理的方法。由于隐式表示 zi 与 观测无关,所以我们可以认为它是一个常数张量 Z={z1,z2,…,zk} 的集合。在本节中,作者将介绍如何将隐式知识作为常数张量应用于各种任务。
3.1 Manifold space reduction
作者认为一个好的表征应该能够在它所属的流形空间中找到一个合适的投影,并促进后续目标任务的成功。例如,如图3所示,如果投影空间中的超平面能够成功地对目标类别进行分类,那将是最好的结果。在上面的例子中,我们可以取投影向量与隐式表示的内积,以达到降低流行空间维数的目的,有效地完成各种任务。
3.2 Kernel space alignment
在多任务、多头神经网络中,kernel 空间错位是一个常见的问题,图4 (a) 给出了多任务多头神经网络中 kernel 空间错位的例子。为了解决这个问题,我们可以对输出特征和隐式表示进行加法和乘法运算,通过平移、旋转和缩放 kernel 空间来对齐神经网络的每个输出 kernel 空间,如图4 (b) 所示。上述操作模式可以广泛应用于不同领域,如特征金字塔网络 (FPN) 中大目标和小目标的特征对齐,利用知识蒸馏来集成大模型和小模型 以及 处理 zero-shot 域转移等问题。
3.3 More functions
除了可以应用于不同任务外,隐性知识还可以扩展到更多的功能。如图5所示,通过引入加法,可以用神经网络来预测中心坐标的偏移量。还可以引入乘法来自动搜索 anchor 的超参数集,这是基于 anchor 的目标检测器经常需要的。此外,还可以使用点乘和拼接分别进行多任务特征选择和为后续计算设置前提条件。
4. 提出的统一网络中的隐性知识
在本节中,作者将比较传统网络和提出的统一网络的目标函数,并解释为什么引入隐性知识对训练多用途网络很重要。同时也将阐述本工作中的方法。
4.1 Formulation of implicit knowledge
knowledgeConventional Networks 对于常规网络的目标训练,我们可以用公式 (1)来进行表示:
其中 θ 为神经网络的参数集,fθ 表示神经网络的算子,ε 为误差项,y 为给定任务的目标。在传统神经网络的训练过程中,通常会将 ε 最小化,使 fθ(x) 尽可能接近目标。这意味着期望相同目标的不同观测结果是由 fθ 得到的子空间中的一个单点,如图6所示。换句话说,期望得到的解空间仅对当前任务 ti 具有判别性,对各种潜在任务 Tti 以外的任务不变,其中 T={t1,t2,…,tn}。对于一般的神经网络,我们希望得到的表示可以服务于属于 T 的所有任务。因此,我们需要放宽 ε,使在流形空间上同时找个每个任务的解成为可能,如图6 (b) 所示。但是,由于上述要求,我们不可能使用简单的数学方法,如 one-hot 向量的最大值 或 欧氏距离的阈值来求解 ti。为了解决这个问题,必须对误差项 ε 建模,已找到不同任务的解决方法,如图6 (c) 所示。
Unified Networks 为了训练所提出的统一网络,作者使用显性知识和隐性知识对误差项进行建模,然后用它来指导多用途网络的训练过程。相应的训练公式如下:
存在一些已有方法将显性知识整合到 fθ 中,我们可以将公式(2)重写为公式(3):
将误差项的推导过程扩展到多任务处理,可以得到公式(4):
对于不同的任务,可以用公式(5)来得到对所有 z∈Z 的预测:
4.2 Modeling implicit knowledge
作者提出的隐性知识可以用以下方式进行建模。
Vector / Matrix / Tensor 表示为 z,直接使用 z 作为隐式知识的先验,直接作为隐式表示。
Neural Network 表示为Wz,先用向量表示隐式知识,然后用权重矩阵进行线性组合或非线性化,最后变成隐式表示。此时,必须假定每个维度都是相互独立的。我们还可以使用更加复杂的神经网络来生成隐式表示,或者使用马尔科夫链来模拟不同任务之间隐式表示的相关性。
Matrix Factorization 表示为 Z^Tc,用多个向量作为隐式知识的先验,这些隐式先验偏置 Z 和系数 c 构成了隐式表示。我们还可以进一步对 c 进行稀疏约束,并将其转化为稀疏表示形式。此外,我们还可以对 Z 和 c 施加非负约束,将其转化为非负矩阵分解形式 (NMF)。
4.3 Training
假设我们的模型在一开始没有任何先验的隐性知识,也就是说,他不会对 fθ(x) 的显式表示产生任何影响。当组合算子属于{加法,拼接}时,初始隐性先验 zN(0, σ),当组合算子是乘法时,zN(1, σ)。这里的 σ 是一个很小的接近于 0 的值。对于 z 和 φ,他们在训练过程中都使用反向传播算法进行训练。
4.4 Inference
由于隐性知识与观测 x 无关,因此无论隐式模型 gφ 有多复杂,都可以在推理阶段执行之前将其简化为一组常数张量。也就是说,隐性信息的形式对我们算法的计算复杂度几乎没有影响。另外,当上述算子是乘法时,如果后面的层是卷积层,则使用公式(9)进行集成。当遇到加法运算符时,如果前一层是卷积层且没有激活函数,则可以使用公式(10)进行集成。
5. 实验
作者的实验采用了 MSCOCO 数据集,因为它为许多不同的任务提供了 ground truth,包括目标检测、实例分割、全景分割、关键点检测、材料分割、图像字幕生成、多标签图像分类和长尾目标识别。这些具有丰富注释内容的数据可以帮助训练出一个统一的网络,既可以支持计算机视觉相关的任务,也可以支持自然语言处理任务。
5.1 Experimental setup
在实验设计中,作者选择将隐性知识应用于三个方面,包括FPN的特征对齐、预测细化 和 单一模型下的多任务学习。多任务学习涉及的任务包括目标检测、多标签图像分类和特征嵌入。作者在实验中选择 YOLOv4-CSP 作为baseline模型,在图8中箭头所指的位置将隐性知识引入模型。所有的训练超参数都相较于与Scaled-YOLOv4的默认设置。
5.2 Feature alignment for FPN
在每个 FPN 的特征映射中加入隐式表示来进行特征对齐,对应的实验结果如表1所示。
5.3 Prediction refinement for object detection
隐式表示被添加到 YOLO 输出层,用于预测细化。如表2所示,可以看到几乎所有的指标分数都得到了提高。图9展示了隐式表示的引入如何影响检测结果。
5.4 Canonical representation for multi-task
当训练一个可以同时被多个任务共享的模型时,由于必须执行损失函数上的联合优化过程,在执行过程中,多方往往会相互拉拽。这种情况会导致最终的整体性能不如单独训练多个模型再进行集成的性能。为了解决上述问题,作者提出训练一个多任务的规范表示。通过向每个任务分支引入隐式表示来增强表示能力,结果列在表3。
5.5 Implicit modeling with different operators
表4展示了使用图10所示的不同算子结合显式表示和隐式表示的实验结果。
5.6 Modeling implicit knowledge in different ways
作者尝试用不同的方法来构建隐性知识,包括向量、神经网络和矩阵分解。在使用神经网络和矩阵分解建模时,默认隐式先验维数是显式表示维数的两倍。实验结果如表6所示。可以看到,无论是使用神经网络还是矩阵分解对隐性知识进行建模,都会提高整体效果。
5.7 Analysis of implicit models
作者分析了 with/w/o 隐性知识的模型的参数个数、FLOPs 和 学习过程,结果分别见表7和图11。从实验数据中可以发现,在具有隐式知识集的实验模型中,我们只增加了不到万分之一的参数量和计算量,就可以显著提高模型的性能,训练过程也可以更加快速和准确地收敛。
5.8 Implicit knowledge for object detection
最后作者比较了提出的方法 与 最先进的目标检测方法 的有效性。引入隐性知识的好处如表8所示。表9展示了与最先进方法的比较。
6. 总结
在本文中,作者展示了如何构建一个隐性知识和显性知识的统一网络,并证明了它在单一模型架构下对于多任务学习仍然是非常有效的。未来,作者将把训练扩展到多模态、多任务,如图12所示。
7. 参考
[1] You Only Learn One Representation: Unified Network for Multiple Tasks.
[2] Robust face verification via bayesian sparse represen-tation.
[3] Recognition and retrieval of sound events using sparse coding convolutional neural network.
[4] Sound events recognition and retrieval using multi-convolutional-channel sparse coding convolutional neural networks.
好了,以上解读了 多任务统一网络 YOLOR。希望我的分享能对你的学习有一点帮助。
【公众号传送】