代码改变世界

机器学习中常见的损失函数(转)

2018-09-17 11:08  PJL_Allen  阅读(547)  评论(0编辑  收藏  举报

来源:https://blog.csdn.net/heyongluoyao8/article/details/52462400

在各种机器学习相关的论文中,我们都可以看到一个叫损失函数(loss function)或者成本函数(cost function)的公式。我们把损失函数作为目标函数,算法便是对这个目标函数进行优化,特别是在分类或者回归任务中。

 损失函数是用来评价模型的预测值Y^=f(X)Y^=f(X)与真实值YY的不一致程度,它是一个非负实值函数。通常使用L(Y,f(x))L(Y,f(x))来表示,损失函数越小,模型的性能就越好。 
   设总有NN个样本的样本集为(X,Y)=(xi,yi)(X,Y)=(xi,yi),yi,i[1,N]yi,i∈[1,N]为样本ii的真实值,yi^=f(xi),i[1,N]yi^=f(xi),i∈[1,N]为样本ii的预测值,ff为分类或者回归函数。 
那么总的损失函数为: 

 
L=i=1N(yi,yi^)L=∑i=1Nℓ(yi,yi^)

 

   常见的损失函数(yi,yi^)ℓ(yi,yi^)有以下几种:

Zero-one Loss

Zero-one Loss即0-1损失,它是一种较为简单的损失函数,如果预测值与目标值不相等,那么为1,否则为0,即: 

 
(yi,yi^)={1,0,yiyi^yi=yi^ℓ(yi,yi^)={1,yi≠yi^0,yi=yi^


可以看出上述的定义太过严格,如果真实值为1,预测值为0.999,那么预测应该正确,但是上述定义显然是判定为预测错误,那么可以进行改进为Perceptron Loss。

 

Perceptron Loss

Perceptron Loss即为感知损失。即: 

 
(yi,yi^)={1,0,|yiyi^|>t|yiyi^|tℓ(yi,yi^)={1,|yi−yi^|>t0,|yi−yi^|≤t


其中tt是一个超参数阈值,如在PLA(Perceptron Learning Algorithm,感知机算法)中取t=0.5t=0.5。

 

Hinge Loss

Hinge损失可以用来解决间隔最大化问题,如在SVM中解决几何间隔最大化问题,其定义如下: 

 
(yi,yi^)=max{0,1yiyi^}ℓ(yi,yi^)=max{0,1−yi⋅yi^}


 
yi{1,+1}yi∈{−1,+1}


更多请参见:Hinge-loss

 

Log Loss

在使用似然函数最大化时,其形式是进行连乘,但是为了便于处理,一般会套上log,这样便可以将连乘转化为求和,由于log函数是单调递增函数,因此不会改变优化结果。因此log类型的损失函数也是一种常见的损失函数,如在LR(Logistic Regression, 逻辑回归)中使用交叉熵(Cross Entropy)作为其损失函数。即: 

 
(yi,yi^)=yilogyi^(1yi)log(1yi^)ℓ(yi,yi^)=−yi⋅logyi^−(1−yi)⋅log(1−yi^)


 
yi{0,1}yi∈{0,1}


规定

 
0log=00⋅log⋅=0

 

Square Loss

Square Loss即平方误差,常用于回归中。即: 

 
(yi,yi^)=(yiyi^)2ℓ(yi,yi^)=(yi−yi^)2


 
yi,yi^Ryi,yi^∈ℜ

 

Absolute Loss

Absolute Loss即绝对值误差,常用于回归中。即: 

 
(yi,yi^)=|yiyi^|ℓ(yi,yi^)=|yi−yi^|


 
yi,yi^Ryi,yi^∈ℜ

 

Exponential Loss

Exponential Loss为指数误差,常用于boosting算法中,如AdaBoost。即: 

 
(yi,yi^)=exp(yiyi^)ℓ(yi,yi^)=exp(−yi⋅yi^)


 
yi{1,1}yi∈{−1,1}

 

正则

一般来说,对分类或者回归模型进行评估时,需要使得模型在训练数据上使得损失函数值最小,即使得经验风险函数最小化,但是如果只考虑经验风险(Empirical risk),容易过拟合(详细参见防止过拟合的一些方法),因此还需要考虑模型的泛化能力,一般常用的方法便是在目标函数中加上正则项,由损失项(Loss term)加上正则项(Regularization term)构成结构风险(Structural risk),那么损失函数变为: 

 
L=i=1N(yi,yi^)+λR(ω)L=∑i=1Nℓ(yi,yi^)+λ⋅R(ω)


其中λλ是正则项超参数,常用的正则方法包括:L1正则与L2正则,详细介绍参见:防止过拟合的一些方法

 

各损失函数图形如下:

loss_function