机器学习中的损失函数

作者:@houkai
本文为作者原创,转载请注明出处:https://www.cnblogs.com/houkai/p/10160673.html


着重介绍hige loss 和 softmax loss。

svm回顾

C1,C2是要区分的两个类别,通过分类函数执行时得到的值与阈值的大小关系来决定类别归属,例如:

g(x)=g(wTx+b)

我们取阈值为0,此时f(x)=sgn[g(x)]就是最终的判别函数。对于同一个问题,有多个分类函数,哪一个更好呢?于是引入了“分类间隔”的指标

函数间隔和几何间隔

给定样本(xi,yi),函数间隔为:

γi=yi(wTxi+b)

yi=1时,wTxi+b应该是一个很大的正数,反之是一个大负数。因此函数间隔反映了模型的确定度。

考虑w和b,如果同时加倍w和b,函数间隔也会加倍,但这对于求解问题是无意义的。因此我们限制w和b,引入了归一化条件,毕竟我们求解的唯一的一对w和b。

几何距离:点A到垂足的单位方向向量BA为w||w||,假设A=xi,则B=xiγ^w||w||,带入wTx+b=0得到:

γ^=wTxi+b||w||

γ^可以看出就是二维平面中,点到直线的距离,高维下便是点到平面的距离。考虑正反例:

γ^=yi{wTxi+b||w||}

||w||=1时,几何间隔也正是我们想要的归一化函数间隔。归一化也解释了函数间隔的实际意义。

最优间隔分类器

我们的目标是找到一个超平面,使得里超平面较近的点能有更大的间距,也就是我们不必考虑所有的点,值关心离它最近的点能具有最大间距。

maxγs.t. yi(wTxi+b)>γ,i=1,...,m||w||=1

然而这个目标函数仍然不是凸函数,我们把问题转化一下,我们取γ=1,此时离超平面最近点的距离即为1||w||,计算1||w||的最大值相当于计算12||w||2的最小值。(之所以采用这种形式,是为了方便后面的求解过程

最终的优化方程如下:

min12||w||2s.t. yi(wTxi+b)1,i=i,...,m

只有线性约束,且是一个典型的二次规划问题。核函数、松弛变量等问题这里先不做涉及。

损失函数

模型的优化函数的通常形式如:

θ=argminθ1Ni=1NL(yi,f(xi;θ))+λ Φ(θ)

前面是损失函数,后面是正则项。

常用的损失函数

  • 铰链损失(Hinge Loss):主要用于支持向量机 SVM中;
  • 交叉熵损失(Cross Entropy Loss/Softmax Loss):用于逻辑回归问题;
  • 平方损失(Square Loss):用于最小二乘问题;
  • 指数损失(Exponential Loss):主要用于Adaboost集成学习算法中;
  • 其他特定场景有奇效的loss

Hinge Loss

损失函数是一个折线,函数表达式为:

L(xi)=max(0,1f(mi,w))

如果类别正确,损失为0,否则为1f(mi,w)

在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+CiLHinge(mi)

SVM的损失函数实质可看作是L2-norm和Hinge loss之和。

Softmax Loss

逻辑回归问题要求:P(Y|X)尽可能的大,即最小化负的似然函数。

L=log(P(Y|X))

逻辑回归的表达式为:

P(y=1|x;θ)=h(x)P(y=0|x;θ)=1h(x)

p(y|x;θ)=h(x)y(1h(x))(1y)

得:

L(θ)=i=1nh(x)y(1h(x))(1y)

最大log似然函数为:

(θ)=log(L(θ))=i=1mylog(h(x))+(1y)log(1h(x))

上式也是最小化交叉熵。

Squares Loss

损失函数:

L(Y,f(X))=i=1n(Yf(X))2

Exponentially Loss

损失函数:

L(Y,f(X))=12i=1nexp[yif(xi)]

Adabooost 的目标式子就是指数损失,可以参考https://en.wikipedia.org/wiki/AdaBoost

假设数据集 {(x1,y1),,(xN,yN)}xi相应的标签yi{1,1}, 已有的弱分类器组 {k1,,kL},它们的输出为 kj(xi){1,1}m1次迭代后,得到boosted classifier:

C(m1)(xi)=α1k1(xi)++αm1km1(xi)

第m次迭代后,我们添加了新的弱分类器:

Cm(xi)=C(m1)(xi)+αmkm(xi)

为了确定新的弱分类器及其权重,定义损失函数

E=i=1NeyiCm(xi)

wi(1)=1 , wi(m)=eyiCm1(xi) for m>1, 则:

E=i=1Nwi(m)eyiαmkm(xi)

我们把数据分为两部分: (yikm(xi)=1)km 分类器区分正确和 yikm(xi)=1 分类错误:

E=yi=km(xi)wi(m)eαm+yikm(xi)wi(m)eαm

=i=1Nwi(m)eαm+yikm(xi)wi(m)(eαmeαm)

因为只有右侧项yikm(xi)wi(m)依赖于km,我们最小化E 等价于最小化wi(m)=eyiCm1(xi)的权重。

计算αm,求导:

dEdαm=d(yi=km(xi)wi(m)eαm+yikm(xi)wi(m)eαm)dαm

αm=12ln(yi=km(xi)wi(m)yikm(xi)wi(m))

弱分类器的加权错误率为ϵm=yikm(xi)wi(m)/i=1Nwi(m)

所以:

αm=12ln(1ϵmϵm)

posted @   侯凯  阅读(1465)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2013-12-22 4、DES和RSA简介
2013-12-22 3、数字签名
2013-12-22 2、摘要函数——MD2/MD4/MD5数字签名
2013-12-22 1、数据加密基础
2013-12-22 cookie——小甜品
点击右上角即可分享
微信分享提示