Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

损失函数

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

来源:Wikipedia
简介

损失函数/代价函数是机器学习、统计学、概率学等涉及到数理知识的研究中的基础概念,具体来说,损失函数计算单个训练样本的误差,代价函数是整个训练集的损失函数的平均。但一般来说对两者不做过多区分,以下我们统称为损失函数。

从数学角度讲,损失函数将一个或多个变量的事件映射到与某个成本相关的实数上。损失函数用于测量模型性能以及实际值 y_i 和预测值 y-hat 之间的不一致性。模型性能随着损失函数值的降低而增加。

如果所有可能输出的输出向量是 y_i = {0, 1} 和带有一组输入变量 x = (xi , x2 . . . xt) 的事件 x,那么 x 到 y_i 的映射如下:

其中 L(y_i hat , y_i) 是损失函数。很多类型的损失函数应用各不相同,下面给出了其中一些。

均方误差(MSE):或称平方损失函数多在线性回归模型中用于评估性能。如果 y_i hat 是 t 个训练样本的输出值,y_i 是对应的标签值,那么均方误差为:

具体到深度学习领域,MSE 的缺陷在于,当它和 Sigmoid 激活函数一起出现时,可能会出现学习速度缓慢(收敛变慢)的情况。

与之类似的其它损失函数还有均方对数误差(Mean Squared Logarithmic Error)、L_2 损失函数、L_1 损失函数、平均绝对误差(Mean Absolute Error)、平均绝对百分比误差(Mean Absolute Percentage Error)等。

交叉熵(cross-entropy):最常用的损失函数之一是交叉熵损失函数,如下所示。

为了最小化代价函数,

在 t 个训练样本的情况下,代价函数为:

[图片及描述来源:徒手实现CNN:综述论文详解卷积网络的数学本质|机器之心]

然而,并不是任何函数都能够被用来做损失函数的。还是以神经网络为例,反向传播算法的目标是计算损失函数C对神经网络中出现的所有权重w和偏置b的偏导数∂C/∂w和∂C/∂b。为了使反向传播工作,我们需要对损失函数的结构做两个主要假设。假设这里我们使用的是上文提到的平方损失函数,即MSE,对每一层来说,MSE具有以下形式:

其中n是训练样本总数;求和符号表示对每个独立训练样本x求和;y=y(x)是对应的希望输出;L是神经网络层数;aL=aL(x)是输入为x时激活函数的输出向量。

那么,为了能够使用反向传播算法,我们需要对代价函数C进行怎样的假设呢?第一条假设是代价函数能够被写成C=1/n\sum_x C_x的形式,即如下图:

其中Cx是每个独立训练样本x的代价函数。我们需要上述假设的原因是,反向传播实际上是对单个训练数据计算偏导数∂Cx/∂w和∂Cx/∂b。然后通过对所有训练样本求平均值获得∂C/∂w和∂C/∂b。事实上,有了这个假设,我们可以认为训练样本x是固定的,然后把代价Cx去掉下标表示为C。最终我们会重新把x加回公式,但目前为了简便我们将它隐去。 我们对代价函数做的第二条假设是它可以写成关于神经网络输出结果的函数:

平方代价函数满足该要求,因为单一训练样本x的二次代价可以表示为:

这是一个关于输出激活值的函数。显然,该代价函数也依赖于期望的输出y,所以你可能疑惑为什么我们不把代价视为关于y的函数。记住,输入的训练样本x是固定的,因此期望的输出y也是固定的。需要注意,我们不能通过改变权值或偏置来修改它,换句话说,它不是神经网络所学习的东西。所以把C视为只关于输出aL的函数是有道理的。在该函数中y只是帮助定义函数的参数。

[图片及描述来源:《神经网络和深度学习》系列文章十一:关于损失函数的两个假设|机器之心]

发展历史

传统的损失函数如MSE、交叉熵已经被使用了很多年,具体起源难以查证,MSE应当是高斯引入的概念,而交叉熵则是1999年由Reuven Y.Rubinstein提出的。当时Reuven Y.Rubinstein 在他的研究中意识到,一个简单的交叉熵修正不仅可以用来估计稀有事件的概率,还可以用来解决困难的组合优化问题(COP),并给出了几个实例。

2005年, Yann LeCun等人在发表的论文中提出了对比损失(contrastive loss),这种损失函数可以有效的处理孪生神经网络中的成对样本(paired data)的关系。最初应用于降维中,保证样本在特征提取后仍可以很好的表达成对样本的匹配程度。

2014年,Jiang Wang等人使用Triplet loss学习细粒度的图像相似性,他们提出了一种深度排序模型,采用深度学习技术直接从图像学习相似性度量。 2015年,来自Google的Florian Schroff 等人发表《FaceNet: A Unified Embedding for Face Recognition》,使用了Triplet loss进行人脸识别,引起了业内对Trirplet loss的关注。Triplet loss加入了对差异性的度量,因此适合在个体级别的细粒度识别上使用。

2016年Yandong Wen等人提出了center loss,可以为每一类的深层特征(deep features)学习一个中心,并对每一类的中心和对应的深层特征添加惩罚项。他们同时证明了center loss是可训练的并且易于在CNN中优化,实证显示他们的模型在LFW、YTF数据集和MegaFace Challenge中都取得了很高的准确率。并且在小型训练集MegaFace上取得了当时的最佳结果。同年,针对softmax损失函数并不能够明确引导网络学习区分性较高的特征的问题,Weiyang Liu和Meng Yang等人提出了L-softmax。能够有效地引导网络学习使得类内距离较小、类间距离较大的特征,此外,L-Softmax不但能够调节不同的间隔(margin),而且能够防止过拟合。他们在四个基准数据集上的大量实验表明,在分类和验证任务上L-softmax均取得比softmax更好的效果。在此研究的基础上,他们于2017年提出了A-softmax,在L-softmax 的基础上添加了两个限制条件||W||=1和b=0,使得预测仅取决于W和x之间的角度。SphereFace在MegaFace数据集上识别率在2017年排名第一,可以在小数据集上取得不错的结果。

Center Loss、L-Softmax、A-Softmax这些改进算法都基于一个核心思想: 增强类间差异并且减小类内差异。2018年,腾讯 AI Lab 的一篇 CVPR论文从一个新的角度研究了这个问题,并设计了一个新的损失函数,即增强边缘余弦损失函数 (LMCL)。更具体地说,通过对特征向量和权向量的 L2 归一化,把 softmax 损失函数转化为余弦损失函数,这样做消除了半径方向的变化,并在此基础上引入了一个余弦边缘值 m 来进一步最大化所学习的特征在角度空间的决策边界。因此,采用这种归一化和增强余弦决策边界的方法,能够更有效地起到最大化类间差异和最小化类内差异的作用。作者在最权威的人脸公开测试集上进行了实验评估,这些测试集包括 MegaFace Challenge、YouTube Faces (YTF) 和 Labeled Face in the Wild (LFW),取得了极其优异的表现,表明了新方法的有效性。

主要事件

年份事件相关论文/Reference
1999Reuven Y.Rubinstein提出交叉熵Rubinstein, R. Y. (1999). The simulated entropy method for combinatorial and continuous optimization. Methodology and Computing in Applied Probability, 2, 127–190.
2005Yann LeCun等人在发表的论文中提出了对比损失(contrastive loss)Chopra, S.; Hadsell, R. and Y. LeCun. (2005). Learning a similarity metric discriminatively, with application to face verification. In Conference on Computer Vision and Pattern Recognition (CVPR).
2014Jiang Wang等人使用Triplet loss学习细粒度的图像相似性Wang, J.; Song, Y.; Leung, T.; Rosenberg, C.; Wang, J.; Philbin, J.; Chen, B. and Wu, Y. (2014). Learning fine-grained image similarity with deep ranking. In Conference on Computer Vision and Pattern Recognition (CVPR).
2015Google的Florian Schroff 等人发表《FaceNet: A Unified Embedding for Face Recognition》,使用了Triplet loss进行人脸识别Schroff, F.; Kalenichenko, D. Philbin, J. (2015).FaceNet: A Unified Embedding for Face Recognition. CVPR 2015.
2016Yandong Wen等人提出了center lossWen, Y.; Zhang, K.; Li, Z. and Qiao, Y. (2016). A discriminative feature learning approach for deep face recognition. In European Conference on Computer Vision (ECCV), pages 499– 515.
2016Weiyang Liu和Meng Yang等人提出了L-softmaxLiu, W.; Wen, Y.; Yu, Z. and Yang, M. (2016). Large-Margin Softmax Loss for Convolutional Neural Networks. In International Conference on Machine Learning (ICML).
2017Weiyang Liu等人提出了A-softmaxLiu, W.; Wen, Y.; Yu, Z.; Li, M.; Raj, B. and Song, L. (2017). SphereFace: Deep Hypersphere Embedding for Face Recognition. In Conference on Computer Vision and Pattern Recognition (CVPR).
2018腾讯 AI Lab 提出增强边缘余弦损失函数 (LMCL)Wang, H. et al. (2018).CosFace: Large Margin Cosine Loss for Deep Face Recognition. CVPR.

发展分析

瓶颈

不同的损失函数使用于不同的学习任务,因此每个损失函数都有其自己的特点。对于常用的softmax函数来说,其不足以最大化在分类任务上的判别能力。此外,没有损失函数可以通用于各类学习任务或许也是一种不足。

未来发展方向

损失函数的改进需要能够给模型带来更好的表现,因此,针对不同的需求,可以有能够处理类别不平衡的损失函数(如Focal loss)、能够处理精细分类任务的损失函数(如Triplet loss)等。

Contributor:Yuanyuan LI

简介