机器学习代价函数,损失函数理解

机器学习常见的代价函数

代价函数也被称为平方误差函数,有时也被称为平方误差代价函数,之所以要出误差的平方和,是因为误差平方代价函数对于大多数问题,特别是回归问题,都是一个合理的选择。
(1)二次代价函数(quadratic cost)
J = 1 2 n ∑ x ∥ y ( x ) − a L ( x ) ∥ 2 J = \frac{1}{2n}\sum_x\Vert y(x)-a^L(x)\Vert^2 J=2n1xy(x)aL(x)2
​ 其中, J J J表示代价函数, x x x表示样本, y y y表示实际值, a a a表示输出值, n n n表示样本的总数。使用一个样本为例简单说明,此时二次代价函数为:
J = ( y − a ) 2 2 J = \frac{(y-a)^2}{2} J=2(ya)2
​ 假如使用梯度下降法(Gradient descent)来调整权值参数的大小,权值 w w w和偏置 b b b的梯度推导如下:
∂ J ∂ b = ( a − y ) σ ′ ( z ) \frac{\partial J}{\partial b}=(a-y)\sigma'(z) bJ=(ay)σ(z)
其中, z z z表示神经元的输入, σ \sigma σ表示激活函数。权值 w w w和偏置 b b b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,权值 w w w和偏置 b b b的大小调整得越快,训练收敛得就越快。

(2)交叉熵代价函数(cross-entropy)
J = − 1 n ∑ x [ y ln ⁡ a + ( 1 − y ) ln ⁡ ( 1 − a ) ] J = -\frac{1}{n}\sum_x[y\ln a + (1-y)\ln{(1-a)}] J=n1x[ylna+(1y)ln(1a)]
其中, J J J表示代价函数, x x x表示样本, y y y表示实际值, a a a表示输出值, n n n表示样本的总数。
权值 w w w和偏置 b b b的梯度推导如下:
∂ J ∂ w j = 1 n ∑ x x j ( σ ( z ) − y )    , ∂ J ∂ b = 1 n ∑ x ( σ ( z ) − y ) \frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\sigma{(z)}-y)\;, \frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\sigma{(z)}-y) wjJ=n1xxj(σ(z)y)bJ=n1x(σ(z)y)
当误差越大时,梯度就越大,权值 w w w和偏置 b b b调整就越快,训练的速度也就越快。
二次代价函数适合输出神经元是线性的情况,交叉熵代价函数适合输出神经元是S型函数的情况。

(3)对数似然代价函数(log-likelihood cost)
对数似然函数常用来作为softmax回归的代价函数。深度学习中普遍的做法是将softmax作为最后一层,此时常用的代价函数是对数似然代价函数。
对数似然代价函数与softmax的组合和交叉熵与sigmoid函数的组合非常相似。对数似然代价函数在二分类时可以化简为交叉熵代价函数的形式。
在tensorflow中:
与sigmoid搭配使用的交叉熵函数:tf.nn.sigmoid_cross_entropy_with_logits()
与softmax搭配使用的交叉熵函数:tf.nn.softmax_cross_entropy_with_logits()
在pytorch中:
与sigmoid搭配使用的交叉熵函数:torch.nn.BCEWithLogitsLoss()
与softmax搭配使用的交叉熵函数:torch.nn.CrossEntropyLoss()
### 用交叉熵代替二次代价函数

(1)为什么不用二次方代价函数
由上一节可知,权值 w w w和偏置 b b b的偏导数为 ∂ J ∂ w = ( a − y ) σ ′ ( z ) x \frac{\partial J}{\partial w}=(a-y)\sigma'(z)x wJ=(ay)σ(z)x ∂ J ∂ b = ( a − y ) σ ′ ( z ) \frac{\partial J}{\partial b}=(a-y)\sigma'(z) bJ=(ay)σ(z), 偏导数受激活函数的导数影响,sigmoid函数导数在输出接近0和1时非常小,会导致一些实例在刚开始训练时学习得非常慢。

(2)为什么要用交叉熵
交叉熵函数权值 w w w和偏置 b b b的梯度推导为:
∂ J ∂ w j = 1 n ∑ x x j ( σ ( z ) − y )    , ∂ J ∂ b = 1 n ∑ x ( σ ( z ) − y ) \frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\sigma{(z)}-y)\;, \frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\sigma{(z)}-y) wjJ=n1xxj(σ(z)y)bJ=n1x(σ(z)y)
由以上公式可知,权重学习的速度受到 σ ( z ) − y \sigma{(z)}-y σ(z)y影响,更大的误差,就有更快的学习速度,避免了二次代价函数方程中因 σ ′ ( z ) \sigma'{(z)} σ(z)导致的学习缓慢的情况。

2. 损失函数

2.1 什么是损失函数

​ 损失函数(Loss Function)又叫做误差函数,用来衡量算法的运行情况,估量模型的预测值与真实值的不一致程度,是一个非负实值函数,通常使用$
L(Y, f(x))$来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。

2.2 常见的损失函数

​ 机器学习通过对算法中的目标函数进行不断求解优化,得到最终想要的结果。分类和回归问题中,通常使用损失函数或代价函数作为目标函数。
​ 损失函数用来评价预测值和真实值不一样的程度。通常损失函数越好,模型的性能也越好。
​ 损失函数可分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是在经验风险损失函数上加上正则项。
​ 下面介绍常用的损失函数:

(1)0-1损失函数
如果预测值和目标值相等,值为0,如果不相等,值为1。
L ( Y , f ( x ) ) = { 1 , Y ≠ f ( x ) 0 , Y = f ( x ) L(Y, f(x)) = \begin{cases} 1,& Y\ne f(x)\\ 0,& Y = f(x) \end{cases} L(Y,f(x))={1,0,Y̸=f(x)Y=f(x)
一般的在实际使用中,相等的条件过于严格,可适当放宽条件:
L ( Y , f ( x ) ) = { 1 , ∣ Y − f ( x ) ∣ ⩾ T 0 , ∣ Y − f ( x ) ∣ &lt; T L(Y, f(x)) = \begin{cases} 1,&amp; |Y-f(x)|\geqslant T\\ 0,&amp; |Y-f(x)|&lt; T \end{cases} L(Y,f(x))={1,0,Yf(x)TYf(x)<T
(2)绝对值损失函数
和0-1损失函数相似,绝对值损失函数表示为:
L ( Y , f ( x ) ) = ∣ Y − f ( x ) ∣ ​ L(Y, f(x)) = |Y-f(x)|​ L(Y,f(x))=Yf(x)
(3)平方损失函数
L ( Y , f ( x ) ) = ∑ N ( Y − f ( x ) ) 2 L(Y, f(x)) = \sum_N{(Y-f(x))}^2 L(Y,f(x))=N(Yf(x))2
这点可从最小二乘法和欧几里得距离角度理解。最小二乘法的原理是,最优拟合曲线应该使所有点到回归直线的距离和最小。

(4)对数损失函数
L ( Y , P ( Y ∣ X ) ) = − log ⁡ P ( Y ∣ X ) L(Y, P(Y|X)) = -\log{P(Y|X)} L(Y,P(YX))=logP(YX)
​ 常见的逻辑回归使用的就是对数损失函数,有很多人认为逻辑回归的损失函数是平方损失,其实不然。逻辑回归它假设样本服从伯努利分布(0-1分布),进而求得满足该分布的似然函数,接着取对数求极值等。逻辑回归推导出的经验风险函数是最小化负的似然函数,从损失函数的角度看,就是对数损失函数。

(6)指数损失函数
指数损失函数的标准形式为:
L ( Y , f ( x ) ) = exp ⁡ ( − Y f ( x ) ) L(Y, f(x)) = \exp(-Yf(x)) L(Y,f(x))=exp(Yf(x))
例如AdaBoost就是以指数损失函数为损失函数。

(7)Hinge损失函数
Hinge损失函数的标准形式如下:
L ( y ) = max ⁡ ( 0 , 1 − t y ) L(y) = \max{(0, 1-ty)} L(y)=max(0,1ty)
统一的形式:
L ( Y , f ( x ) ) = max ⁡ ( 0 , Y f ( x ) ) L(Y, f(x)) = \max{(0, Yf(x))} L(Y,f(x))=max(0,Yf(x))
其中y是预测值,范围为(-1,1),t为目标值,其为-1或1。

在线性支持向量机中,最优化问题可等价于
w , b min ⁡ ∑ i = 1 N ( 1 − y i ( w x i + b ) ) + λ ∥ w ∥ 2 \underset{\min}{w,b}\sum_{i=1}^N (1-y_i(wx_i+b))+\lambda\Vert w\Vert ^2 minw,bi=1N(1yi(wxi+b))+λw2
上式相似于下式
1 m ∑ i = 1 N l ( w x i + b y i ) + ∥ w ∥ 2 \frac{1}{m}\sum_{i=1}^{N}l(wx_i+by_i) + \Vert w\Vert ^2 m1i=1Nl(wxi+byi)+w2
其中 l ( w x i + b y i ) l(wx_i+by_i) l(wxi+byi)是Hinge损失函数, ∥ w ∥ 2 \Vert w\Vert ^2 w2可看做为正则化项。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值