## 机器学习中常见的损失函数 一般来说,我们在进行机器学习任务时,使用的每一个算法都有一个目标函数,算法便是对这个目标函数进行优化,特别是在分类或者回归任务中,便是使用损失函数(Loss Function)作为其目标函数,又称为代价函数(Cost Function)。 损失函数是用来评价模型的预测值
@H_301_9@Ŷ=f(X)
与真实值
Y
的不一致程度,它是一个非负实值函数。通常使用
L(Y,f(x))
来表示,损失函数越小,模型的性能就越好。 设总有
N
个样本的样本集为
(X,Y)=(xi,yi)
,
yi,i∈[1,N]
为样本
i
的真实值,
yi^=f(xi),i∈[1,N]
为样本
i
的预测值,
f
为分类或者回归函数。 那么总的损失函数为:
L=∑@H_502_483@i=1Nℓ(yi,yi^)
常见的损失函数
ℓ(yi,yi^)
有以下几种: ### Zero-one Loss Zero-one Loss即0-1损失,它是一种较为简单的损失函数,如果预测值与目标值不相等,那么为1,否则为0,即:
ℓ(yi,yi^)={1,0,yi≠yi^yi=yi^
可以看出上述的定义太过严格,如果真实值为1,预测值为0.999,那么预测应该正确,但是上述定义显然是判定为预测错误,那么可以进行改进为Perceptron Loss。 ### Perceptron Loss Perceptron Loss即为感知损失。即:
ℓ(yi,yi^)={1,0,|yi−yi^|>t@H_403_1119@|yi−yi^|≤t
其中
t
是一个超参数阈值,如在PLA([Perceptron Learning Algorithm,感知机算法](http://kubicode.me/2015/08/06/Machine%20Learning/Perceptron-Learning-Algorithm/))中取
t=0.5
。 ### Hinge Loss Hinge损失可以用来解决间隔最大化问题,如在SVM中解决几何间隔最大化问题,其定义如下:
ℓ(y@H_729_1301@i,yi^)=max{0,1−yi⋅yi^}
yi∈{−1,+1}
更多请参见:[Hinge-loss](https://en.wikipedia.org/wiki/Hinge_loss)。 ### Log Loss 在使用似然函数最大化时,其形式是进行连乘,但是为了便于处理,一般会套上log,这样便可以将连乘转化为求和,由于log函数是单调递增函数,因此不会改变优化结果。因此log类型的损失函数也是一种常见的损失函数,如在LR([Logistic Regression,逻辑回归](chrome-extension://ikhdkkncnoglghljlkmcimlnlhkeamad/pdf-viewer/web/viewer.html?file=https%3A%2F%2Fpeople.eecs.berkeley.edu%2F~russell%2Fclasses%2Fcs194%2Ff11%2Flectures%2FCS194%2520Fall%25202011%2520Lecture%252006.pdf))中使用交叉熵(Cross Entropy)作为其损失函数。即:
ℓ(yi,yi^)=yi⋅logyi^+(1−yi)⋅log(1−yi^)
yi∈{0,1}
规定
0⋅log⋅=0
### Square Loss Square Loss即平方误差,常用于回归中。即:
ℓ(yi,yi^)=(yi−yi^)2
yi,yi^∈ℜ
### Absolute Loss Absolute Loss即绝对值误差,常用于回归中。即:
yi,yi^∈ℜ
### Exponential Loss Exponential Loss为指数误差,常用于boosting算法中,如[AdaBoost](https://en.wikipedia.org/wiki/AdaBoost)。即:
ℓ(yi,yi^)=exp(−y@H_403_2341@i⋅yi^)
L=∑i=1Nℓ(yi,yi^)+λ⋅R@H_301_2573@(ω)
其中
λ
是正则项超参数,常用的正则方法包括:L1正则与L2正则,详细介绍参见:
防止过拟合的一些方法。
正则
一般来说,对分类或者回归模型进行评估时,需要使得模型在训练数据上使得损失函数值最小,即使得经验风险函数最小化,但是如果只考虑经验风险(Empirical risk),容易过拟合(详细参见防止过拟合的一些方法),因此还需要考虑模型的泛化能力,一般常用的方法便是在目标函数中加上正则项,由损失项(Loss term)加上正则项(Regularization term)构成结构风险(Structural risk),那么损失函数变为:
其中