聊聊机器学习中的损失函数

机器学习算法一般都是对损失函数(Loss Function)求最优,大部分损失函数都是包含两项:损失误差项(loss term)以及正则项(regularization term):
J(w)=iL(mi(w))+λR(w)

损失误差项

常用的损失误差项有5种:

  1. Gold Standard
  2. Hinge:Svm
  3. log:logistic regression(cross entropy error)
  4. squared:linear regression
  5. Exponential:Boosting

Gold Standard Loss

Gold Standard又称0-1误差,其结果又称为犯错不犯错,用途比较广(比如PLA模型),其损失函数也是相当的简单:
y={0ifm01ifm0

Hinge Loss

Hinge的叫法来源于其损失函数的图形,为一个折线,通用函数方式为:
L(mi)=max(0,1mi(w))

Hinge可以解 间距最大化 问题,带有代表性的就是svm,最初的svm优化函数如下:
argminw,ζ12||w||2+Ciζist.yiwTxi1ζiζi0

将约束项进行变形则为:
ζi1yiwTxi


则可以将损失函数进一步写为:
J(w)=12||w||2+Cimax(0,1yiwTxi)=12||w||2+Cimax(0,1mi(w))=12||w||2+CiLLinge(mi)

因此svm的损失函数可以看成L2-NormHinge损失误差之和.

Log Loss

log类型损失函数的优势可以将连乘转为求和,由于是单调函数,不会改变原结果,并且还很方面求最优,因此log类型的损失函数函数也非常常用,比较著名的一种就是交叉熵(cross entropy),也就是logistic regression用的损失函数:
J(w)=λ||w||2+iyiloggw(xi)+(1yi)(log1gw(xi),yi{0,1}


其中:
gw(xi)=11+efw(xi)fw(xi)=wTxi

Squared Loss

平方误差,线性回归中最常用:
L2(m)=(fw(x)y)2=(m1)2

Exponential Loss

指数误差,在boosting算法中比较常见:
J(w)=λR(w)+iexp(yifw(xi))Lexp(mi)=exp(mi(w))

误差项对比

上面5种误差项的函数为:

聊聊机器学习中的损失函数_第1张图片

黑色为Squared Loss,红色Hinge Loss,黄色为:Log Loss,绿色为:Exponential Loss,蓝色为:Gold Standard

观察图中:

  1. Hinge Loss中当mi(w)>1 时,其损失项始终未0,当mi(w)<1时,其损失项的值呈线性增长(正好符合svm的需求).
  2. Squared、Log、Exponential三种损失函数已经Hinge的左侧都是凸函数,并且Gold Stantard损失为他们的下界:
    ζ01ˆζ01(h)+fudge
  3. 当需要求最大似然时(也就是概率最大化),使用Log Loss最合适,但是一般会加上一个负号将其转换为求最小
  4. 损失函数和的凸特征以及有是非常重要的,可以防止在一些可以求得无穷的工作上白白浪费时间。有时候为了让函数有界和凸特征,一般会使用一些代理函数来进行替换。

正则项

加入正在项是为了降低模型复杂度,在一定程度上可以有效防止模型过拟合

常用的正则项有:
R2=12||w||2R1=i|wi|R0=|{i:wi0}|


这些正则项可以通用的写成:
Rp=(i|wi|p)1p

其中:

  1. R2最常用,因为它是凸函数,非常方便可以用梯度下降法最优化
  2. R1含有特征选择功能,因此经过R1计算之后会有大量的0权重出现,这样的话我们在实际计算中只需要计算有值特征即可,可以加快速算法的运行速度
  3. R0,额~这个暂时不知道哪里用-_-

p1时其正则项就为非凸函数了

聊聊机器学习中的损失函数_第2张图片

参考

  1. http://www.ics.uci.edu/~dramanan/teaching/ics273a_winter08/lectures/lecture14.pdf
  2. https://www.wikiwand.com/en/Hinge_loss
  3. http://www.cnblogs.com/rocketfan/p/4081585.html

你可能感兴趣的:(机器学习,算法相关)