引入鲁棒性作为连续参数,这种新损失函数实现了自适应、随时变换


编辑:陈萍
损失函数是机器学习里最基础也是最为关键的一个要素 , 其用来评价模型的预测值和真实值不一样的程度 。 最为常见的损失函数包括平方损失、指数损失、log 对数损失等损失函数 。 这里回顾了一种新的损失函数 , 通过引入鲁棒性作为连续参数 , 该损失函数可以使围绕最小化损失的算法得以推广 , 其中损失的鲁棒性在训练过程中自动自我适应 , 从而提高了基于学习任务的性能 。
引入鲁棒性作为连续参数,这种新损失函数实现了自适应、随时变换
本文插图
这篇文章对 CVPR 2019 的一篇论文《A General and Adaptive Robust Loss Function》进行了回顾性综述 , 主要讲述了为机器学习问题开发鲁棒以及自适应的损失函数 。 论文作者为谷歌研究院的研究科学家 Jon Barron 。
引入鲁棒性作为连续参数,这种新损失函数实现了自适应、随时变换
本文插图
论文地址:https://arxiv.org/pdf/1701.03077.pdf
异常值(Outlier)与鲁棒损失
考虑到机器学习问题中最常用的误差之一——均方误差(Mean Squared Error, MSE) , 其形式为:(y-x)2 。 该损失函数的主要特征之一是:与小误差相比 , 对大误差的敏感性较高 。 并且 , 使用 MSE 训练出的模型将偏向于减少最大误差 。 例如 , 3 个单位的单一误差与 1 个单位的 9 个误差同等重要 。
下图为使用 Scikit-Learn 创建的示例 , 演示了在有 / 无异常值影响的情况下 , 拟合是如何在一个简单数据集中变化的 。
引入鲁棒性作为连续参数,这种新损失函数实现了自适应、随时变换
本文插图
MSE 以及异常值的影响 。
如上图所示 , 包含异常值的拟合线(fit line)受到异常值的较大影响 , 但是优化问题应要求模型受内点(inlier)的影响更大 。 在这一点上 , 你可能认为平均绝对误差(Mean Absolute Error, MAE)会优于 MSE , 因为 MAE 对大误差的敏感性较低 。 也不尽然 。 目前有各种类型的鲁棒损失(如 MAE) , 对于特定问题 , 可能需要测试各种损失 。
所以 , 这篇论文引入一个泛化的损失函数 , 其鲁棒性可以改变 , 并且可以在训练网络的同时训练这个超参数 , 以提升网络性能 。 与网格搜索(grid-search)交叉验证寻找最优损失函数相比 , 这种损失函数花费的时间更少 。 让我们从下面的几个定义开始讲解:
鲁棒性与自适应损失函数的一般形式:
引入鲁棒性作为连续参数,这种新损失函数实现了自适应、随时变换
本文插图
公式 1:鲁棒性损失 , 其中α为超参数 , 用来控制鲁棒性 。
α控制损失函数的鲁棒性 。 c 可以看作是一个尺度参数 , 在 x=0 邻域控制弯曲的尺度 。 由于α作为超参数 , 我们可以看到 , 对于不同的α值 , 损失函数有着相似的形式 。
引入鲁棒性作为连续参数,这种新损失函数实现了自适应、随时变换
本文插图
公式 2:不同α值对应不同的自适应性损失 。
在α=0 和α=2 时 , 损失函数是未定义的 , 但利用极限可以实现近似 。 从α=2 到α=1 , 损失函数平稳地从 L2 损失过渡到 L1 损失 。 对于不同的α值 , 我们可以绘制不同的损失函数 , 如下图 2 所示 。
导数对于优化损失函数非常重要 。 下面研究一下这个损失函数的一阶导数 , 我们知道 , 梯度优化涉及到导数 。 对于不同的α值 , x 的导数如下所示 。 下图 2 还绘制了不同α的导数和损失函数 。
引入鲁棒性作为连续参数,这种新损失函数实现了自适应、随时变换
本文插图
公式 3:鲁棒损失(表达式 1)对于不同的α的值相对于 x 的导数