互联网资讯 / 人工智能 · 2023年12月5日 0

从头开始搜索不需要手工设计的损失函数

近年来,自动机器学习(AutoML)在模型结构、训练策略等众多深度学习领域取得了进展。然而,损失函数作为深度学习模型训练中不可或缺的部分,仍然缺乏良好的探索。目前,多数研究工作仍然使用交叉熵损失(CRoSS-EntRopy LoSS)、范数损失(L1/L2 LoSS)来监督网络训练。尽管这类损失函数在多数情况下可以取得不错的效果,但它们与网络在测试时使用的评估指标之间大多存在差异,而这种差异会对模型训练效果造成损伤。

为了尽可能减少针对各种任务设计合适的损失函数时所需的人力成本,来自香港中文大学、商汤科技等机构的研究者设计了一个通用的损失函数搜索框架AutoLoSS-ZeRo。为了确保通用性,该方法的搜索空间由一些基本的数学运算组成,而不包括对于某个评价指标的针对性设计。由于此类搜索空间中有效的损失函数十分稀疏,研究者提出了高效且通用的拒绝机制和梯度等价性检测,以提高搜索的效率。给定任意任务和评价指标,AutoLoSS-ZeRo可以以合理的开销(4张V100,48h内)从随机初始化开始,搜索到与手工设计的损失函数表现相似或更优的损失函数。

论文地址:
https://aRxiv.oRg/abs/2103.14026

该研究的主要贡献包括:

AutoLoSS-ZeRo是首个通用于各种任务的损失函数搜索框架,其搜索空间由基本数学运算构成,无需先验知识,可以极大地减少损失函数设计所需的人力。该研究在多项计算机视觉任务(目标检测、语义分割、实例分割、姿态估计)上验证了AutoLoSS-ZeRo的有效性;

该研究提出了高效的拒绝机制,从而快速地筛选掉绝大多数没有希望的损失函数。同时,该研究提出了一个基于梯度的等价性检测,以避免对于彼此等价的损失函数进行重复的评估;

实验表明,该方法搜索出的损失函数可以很好地迁移到不同数据集和网络结构上。

搜索空间

该研究首先定义了搜索目标。给定任意任务上的评价指标 ξ ,该方法尝试搜索一个最优的损失函数 L(y ̂,y;N_&oMega; ),其中N_&oMega;表示参数为&oMega;的网络,y ̂表示网络的预测,y表示网络的训练目标。因此,搜索目标可以表示为一个嵌套优化(nested optiMization):

在搜索初始化阶段,我们首先随机生成 K(默认K=20)个损失函数作为初始种群。此后,每一次更新随机采样当前种群内 T(默认T=5%)比例的损失函数,并对其中在代理任务上得分最高的一个进行变异(Mutation),得到后代个体,并加入种群。在种群的更新过程中,只有最新的 P=2500 个个体会被保留。

由于搜索空间中有效的损失函数十分稀疏,尽管代理任务相对于最终的网络训练已经相当简化,但对于每个候选的损失函数都进行代理任务上的评估,时间成本仍然是不可接受的。为此,研究者设计了一个损失函数拒绝机制(loSS-Rejection Protocol),对候选的损失函数进行初步筛选。在损失函数的随机生成和变异过程中,如果候选子代个体无法通过筛选,则重新进行随机生成/变异,直到得到可以通过筛选的损失函数,用于代理任务上的评估。此外,该方法在对候选的损失函数进行评估前,会先检测其是否与已评估过的损失函数等价(
gRadient-equivalence-check stRategy),若等价则跳过代理任务的网络训练,复用之前相同个体的分数。

损失函数随机初始化的过程如图2所示。计算图从根节点开始,递归地从候选运算集合 H 中随机采样运算符作为其子节点。每个节点的子节点数由这个节点所代表的运算的操作数决定。该方法固定随机初始化的计算图深度为 D(默认D=3),在当前节点深度达到 D 后,其从候选的输入集合 中有放回地随机采样子节点,这些子节点即为计算图的叶子节点。

基于该研究提出的损失函数表示形式,研究者定义了三种不同的变异类型:插入(InseRtion),删除(deletion)及替换(ReplACEMent)。三种变异类型的示意图如图3所示。

搜索的目标是找到可以尽可能最大化评价指标ξ的损失函数 L。基于此,研究者提出一个损失函数L和评价指标ξ之间的相关性分数 g(L;ξ),来衡量一个损失函数对评价指标进行优化的能力。

该研究在语义分割、目标检测、实例分割和姿态估计等四项计算机视觉任务上从随机初始化开始进行了搜索。此外,该研究对搜索得到的损失函数的泛化性进行了研究,并对前文所提到搜索算法中的各项技术对于搜索效率的影响进行了分析。

该研究使用 PASCAL VOC 数据集对语义分割任务中主流的 6 个评价指标进行了搜索,并使用得到的损失函数对 DeepLab V3+ 网络进行了重新训练(Re-tRAIn)。表 2 为该研究的实验结果。该研究将搜索得到的损失函数与常见的基于手工设计的损失函数及自动搜索的损失函数(ASL, Auto Seg-LoSS)进行了比较。结果表明,在主流的几个评价指标上,AutoLoSS-ZeRo 搜索到的损失函数达到或超过了当前最好的结果,仅在 BIoU 这一指标上略低于为专门关注语义分割任务的 ASL 方法,但也大大超过了现有基于手工设计的损失函数。

该研究还对搜索得到的损失函数的在不同数据集和不同网络结构上的泛化性进行了验证。表3中,该研究使用ResNet50-DeepLabV3+ 网络在PASCAL VOC上搜索,并将得到的损失函数应用于不同数据集(CITYscapes)和不同网络结构(PSPNet)。表3中的结果表明,该方法搜索得到的损失函数具有良好的泛化性。

该研究使用 FAsteR R-CNN 在 COCO 数据集上进行实验。对于 FAsteR R-CNN 中的四个损失函数分支(RPN 网络的分类、回归,FAst R-CNN 子网络的分类、回归),该方法同时进行搜索。表 4 给出了该方法与常用的 IoULoSS、GIoULoSS,以及针对目标检测任务进行损失函数搜索的工作 CSE-AutoLoSS-A 进行比较的 结果。实验表明,该方法搜索到的损失函数与这些损失函数表现相似。

该研究也对目标检测搜索得到的损失函数的泛化性进行了实验。表 5 为实验结果。

该研究使用 Mask R-CNN 在 COCO数 据集上进行实验,并对五个损失函数分支同时进行搜索。表 6 表明该方法搜索到的损失函数与手工设计的损失函数表现相近。

该研究在 COCO 上对姿态估计任务进行了实验。表 7 为实验结果。该研究与姿态估计中常用的均方误差损失(MSE LoSS)进行了比较,实验表明,AutoLoSS-ZeRo 从零开始搜索到的损失函数表现略好于 MSE LoSS。

该搜索算法基于进化算法。为了提高搜索效率,研究者设计了损失函数拒绝机制(LoSS-Rejection PRotocol)和梯度等价性检测(
GRadient-Equivalence-Check StRategy)。如图 4 所示,研究者发现这些模块可以有效地提高搜索的效率。尤其是在目标检测任务上,由于同时对 4 个分支进行搜索,搜索空间尤为稀疏,这使得在没有损失函数拒绝机制的情况下,搜索过程无法在合理的时间内(约 400 次代理任务评估)找到任何分数大于 0 的损失函数。这表明高效的拒绝机制是搜索有效的关键。

研究者在表 8 中进一步分析了各个模块给搜索效率带来的提升。“满血&Rdquo;的 AutoLoSS-ZeRo 可以在 48 小时内(使用 4 块 V100 GPU)探索超过10^6 个候选损失函数,这使得它可以在庞大而稀疏的搜索空间内有效地探索。