常见的待见函数和损失函数是同一个意思,目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss function)。
我们用训练集训练一个模型时,常见情况是寻找一个损失函数,然后使用优化算法如梯度下降算法让该损失值最小,然后结束迭代即模型就训练好了,之后便是拿测试集来测试该模型的鲁棒性。当然具体问题具体分析,真正训练模型时需要考虑的点蛮多的,这里仅仅是列举常见的一些损失函数以供自己以后查阅。
1. 0-1损失函数
它是一种较为简单的损失函数,如果预测值与目标值不相等,那么为1,否则为0,即:
可以看出上述的定义太过严格,如果真实值为1,预测值为0.999,那么预测应该正确,但是上述定义显然是判定为预测错误,那么可以进行改进为Perceptron Loss。
2. 感知损失函数
其中t是一个超参数阈值,如在PLA( Perceptron Learning Algorithm,感知机算法)中取t=0.5。
3. 铰链函数(hinge loss)
Hinge Loss作为SVM推导的损失函数去逼近0-1 Loss;很明显可以看出0-1是理想情况下的损失函数显式表达,SVM在感知机(Perceptron)的基础上,通过最大化分类边界(max margin)去进行分类;
更多请参见: Hinge-loss。
4. 平方损失函数
5. 绝对值误差函数
6. 交叉熵损失函数
7. 指数误差函数
常用于boosting算法中,如AdaBoost。即:
正则
一般来说,对分类或者回归模型进行评估时,需要使得模型在训练数据上使得损失函数值最小,即使得经验风险函数最小化,但是如果只考虑经验风险(Empirical risk),容易过拟合(详细参见防止过拟合的一些方法),因此还需要考虑模型的泛化能力,一般常用的方法便是在目标函数中加上正则项,由损失项(Loss term)加上正则项(Regularization term)构成结构风险(Structural risk),那么损失函数变为:
其中λ是正则项超参数,常用的正则方法包括:L1正则与L2正则,详细介绍参见: 防止过拟合的一些方法。
各损失函数图形如下:
参考:
https://zhuanlan.zhihu.com/p/32847834
https://www.zhihu.com/question/52398145
https://www.jianshu.com/p/9b4d7de5c6c9
https://blog.csdn.net/heyongluoyao8/article/details/52462400