参考文章:
https://www.cnblogs.com/massquantity/p/8964029.html
叙:损失函数的一般表示为 L(y,f(x)),为了便于不同损失函数的比较,常将其表示为单变量的函数,在回归问题中这个变量为y−f(x),在分类问题中则为yf(x)。
1.回归问题的损失函数
回归问题中y和f(x)皆为实数∈R,因此用残差 y−f(x)来度量二者的不一致程度。
常见的回归损失函数有:
Huber损失是对二者的综合,当|y−f(x)|小于一个事先指定的值δ时,变为平方损失,大于δ时,则变成类似于绝对值损失,因此也是比较robust的损失函数
2.分类问题的损失函数
对于二分类问题,y∈{−1,+1},损失函数常表示为关于yf(x)的单调递减形式。如下图:
yf(x)被称为margin,其作用类似于回归问题中的残差 y−f(x)。可以看到如果yf(x)>0,则样本分类正确,yf(x)<0 则分类错误,而相应的分类决策边界即为f(x)=0。所以最小化损失函数也可以看作是最大化margin的过程,任何合格的分类损失函数都应该对margin<0的样本施以较大的惩罚。
二分类问题常采用sigmoid(f(x))。
常用:
1)0-1损失:
yf(x)|>=0,<0|,0-1损失对每个错分类点都施以相同的惩罚.另外0-1损失不连续、非凸,优化困难,因而常使用其他的代理损失函数进行优化。
2) Logistic loss:
logistic Loss为Logistic Regression中使用的损失函数。
令t=(y+1)/2,则t取值|0,1|,则对数似然函数为(下图是式中用t代替y):
上式被称为交叉熵损失 (cross entropy loss),可以看到在二分类问题中logistic loss和交叉熵损失是等价的,二者区别只是标签y的定义不同。
3)Hinge loss
hinge loss为svm中使用的损失函数,hinge loss使得yf(x)>1的样本损失皆为0,由此带来了稀疏解,使得svm仅通过少量的支持向量就能确定最终超平面。svm 这个形式的损失函数是自带参数 w 的L2 正则的,而相比之下Logistic Regression的损失函数则没有显式的正则化项,需要另外添加。
4)指数损失(Exponential loss)
exponential loss为AdaBoost中使用的损失函数。然而其和squared loss一样,对异常点敏感,不够robust。
5)modified Huber loss
modified huber loss结合了hinge loss和logistic loss的优点,既能在yf(x)>1时产生稀疏解提高训练效率,又能进行概率估计。另外其对于(yf(x)<−1) 样本的惩罚以线性增加,这意味着受异常点的干扰较少,比较robust。scikit-learn中的SGDClassifier同样实现了modified huber loss。
分割线:
为什么在神经网络中很多运用交叉熵作为损失函数:
参考:https://zhuanlan.zhihu.com/p/70804197