【机器学习基础】2、代价函数\损失函数汇总

文章目录

      • 代价函数
        • 1、二次代价函数(quadratic cost)
        • 2、交叉熵代价函数(cross-entropy)
        • 3、对数似然代价函数(log-likelihood cost)
      • 损失函数
        • 1、0-1损失函数
        • 2、绝对值损失函数
        • 3、平方损失函数
        • 4、对数损失函数
        • 5、指数损失函数
        • 6、Hinge损失函数

代价函数

损失函数就是为了衡量当前参数下model的预测值predict距离真实值label的大小

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 表 示 代 价 函 数 , 表示代价函数, x 表 示 样 本 , 表示样本, y 表 示 实 际 值 , 表示实际值, a 表 示 输 出 值 , 表示输出值, n 表 示 样 本 的 总 数 。 表示样本的总数。 1 2 \frac{1}{2} 21 是为了求导时消去2;

使用一个样本为例简单说明,此时二次代价函数为:
J = ( y − a ) 2 2 J = \frac{(y-a)^2}{2} J=2(ya)2
假如使用梯度下降法(Gradient descent)来调整权值参数的大小,权值 w w w和偏置 b b b的梯度推导如下:
∂ J ∂ w = ( y − a ) σ ′ ( z ) x    , ∂ J ∂ b = ( y − a ) σ ′ ( z ) \frac{\partial J}{\partial w}=(y-a)\sigma'(z)x\;, \frac{\partial J}{\partial b}=(y-a)\sigma'(z) wJ=(ya)σ(z)x,bJ=(ya)σ(z)
其中, z z z表示神经元的输入, σ \sigma σ表示激活函数。权值 w w w和偏置 b b b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,权值 w w w和偏置 b b b的大小调整得越快,训练收敛得就越快。

比如神经网络常用的激活函数为sigmoid函数,该函数的曲线如下图2-6所示

【机器学习基础】2、代价函数\损失函数汇总_第1张图片
如上图所示,对0.88和0.98两个点进行比较:
​ 假设目标是收敛到1.0。0.88离目标1.0比较远,梯度比较大,权值调整比较大。0.98离目标1.0比较近,梯度比较小,权值调整比较小。调整方案合理。
​ 假如目标是收敛到0。0.88离目标0比较近,梯度比较大,权值调整比较大。0.98离目标0比较远,梯度比较小,权值调整比较小。调整方案不合理。
​ 原因:在使用sigmoid函数的情况下, 初始的代价(误差)越大,导致训练越慢。

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表示样本的总数。
∂ 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调整就越快,训练的速度也就越快。
,权重学习的速度受到 σ ( z ) − y \sigma{(z)}-y σ(z)y影响,更大的误差,就有更快的学习速度,避免了二次代价函数方程中因 σ ′ ( z ) \sigma'{(z)} σ(z)导致的学习缓慢的情况。
二次代价函数适合输出神经元是线性的情况,交叉熵代价函数适合输出神经元是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()
据似然函数的定义,单个样本的似然函数即:

L = f m u l i t ( l a b e l ; p r e d i c t ) L = f_{mulit}(label;predict) L=fmulit(label;predict)
所以,整个样本集(或者一个batch)的似然函数即:
L = ∏ X f m u l t i ( l a b e l ; p r e d i c t ) = ∏ X ∏ i = 1 C p r e d i c t ( i ) l a b e l ( i ) L=\prod_{X}f_{multi}(label;predict)= \prod_{X}\prod_{i=1}^{C}predict(i)^{label(i)} L=Xfmulti(label;predict)=Xi=1Cpredict(i)label(i)
所以在累乘号前面加上log函数后,就成了所谓的对数似然函数:
L = ∑ X ∑ i = 1 C l a b e l ( i ) l o g ( p r e d i c t ( i ) ) L=\sum_{X}\sum_{i=1}^{C}label(i)log(predict(i)) L=Xi=1Clabel(i)log(predict(i))
而最大化对数似然函数就等效于最小化负对数似然函数,所以前面加个负号就和交叉熵的形式相同的了。

交叉熵定义:对于某种分布的随机变量X~p(x), 有一个模型q(x)用于近似p(x)的概率分布,则分布X与模型q之间的交叉熵即:

H ( X , q ) = − ∑ x p ( x ) l o g q ( x ) H(X,q)=-\sum_{x}p(x)logq(x) H(X,q)=xp(x)logq(x)
这里X的分布模型即样本集label的真实分布模型,这里模型q(x)即想要模拟真实分布模型的机器学习模型。可以说交叉熵是直接衡量两个分布,或者说两个model之间的差异。而似然函数则是解释以model的输出为参数的某分布模型对样本集的解释程度。

损失函数

损失函数(Loss Function)又叫做误差函数,用来衡量算法的运行情况,估量模型的预测值与真实值的不一致程度

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)
预测值与目标值相等为0,否则为1
或者公式
L ( Y , f ( x ) ) = { 1 , ∣ Y − f ( x ) ∣ ⩾ T 0 , ∣ Y − f ( x ) ∣ < T L(Y, f(x)) =\begin{cases}1,& |Y-f(x)|\geqslant T\\0,& |Y-f(x)|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 ) = − 1 N ∑ i = 1 N ∑ j = 1 M y i j l o g ( p i j ) L(Y, P(Y|X)) = -\log{P(Y|X)}=-\frac{1}{N}\sum_{i=1}^N\sum_{j=1}^M y_{ij}log(p_{ij}) L(Y,P(YX))=logP(YX)=N1i=1Nj=1Myijlog(pij)

​ 其中, Y 为输出变量, X为输入变量, L 为损失函数. N为输入样本量, M为可能的类别数, y i j y_{ij} yij 是一个二值指标, 表示类别 j 是否是输入实例 xi 的真实类别. p i j p_{ij} pij 为模型或分类器预测输入实例 xi 属于类别 j 的概率.

(逻辑回归一般使用对数损失函数)
假设逻辑回归模型
P ( y = 1 ∣ x ; θ ) = 1 1 + e − θ T x P(y=1|x;\theta)=\frac{1}{1+e^{-\theta^{T}x}} P(y=1x;θ)=1+eθTx1
假设逻辑回归模型的概率分布是伯努利分布,其概率质量函数为:
P ( X = n ) = { 1 − p , n = 0 p , n = 1 P(X=n)= \begin{cases} 1-p, n=0\\ p,n=1 \end{cases} P(X=n)={1p,n=0p,n=1
其似然函数为:
L ( θ ) = ∏ i = 1 m P ( y = 1 ∣ x i ) y i P ( y = 0 ∣ x i ) 1 − y i L(\theta)=\prod_{i=1}^{m} P(y=1|x_i)^{y_i}P(y=0|x_i)^{1-y_i} L(θ)=i=1mP(y=1xi)yiP(y=0xi)1yi
对数似然函数为:
ln ⁡ L ( θ ) = ∑ i = 1 m [ y i ln ⁡ P ( y = 1 ∣ x i ) + ( 1 − y i ) ln ⁡ P ( y = 0 ∣ x i ) ] = ∑ i = 1 m [ y i ln ⁡ P ( y = 1 ∣ x i ) + ( 1 − y i ) ln ⁡ ( 1 − P ( y = 1 ∣ x i ) ) ] \ln L(\theta)=\sum_{i=1}^{m}[y_i\ln{P(y=1|x_i)}+(1-y_i)\ln{P(y=0|x_i)}]\\ =\sum_{i=1}^m[y_i\ln{P(y=1|x_i)}+(1-y_i)\ln(1-P(y=1|x_i))] lnL(θ)=i=1m[yilnP(y=1xi)+(1yi)lnP(y=0xi)]=i=1m[yilnP(y=1xi)+(1yi)ln(1P(y=1xi))]
对数函数在单个数据点上的定义为:
c o s t ( y , p ( y ∣ x ) ) = − y ln ⁡ p ( y ∣ x ) − ( 1 − y ) ln ⁡ ( 1 − p ( y ∣ x ) ) cost(y,p(y|x))=-y\ln{p(y|x)-(1-y)\ln(1-p(y|x))} cost(y,p(yx))=ylnp(yx)(1y)ln(1p(yx))
则全局样本损失函数为:
c o s t ( y , p ( y ∣ x ) ) = − ∑ i = 1 m [ y i ln ⁡ p ( y i ∣ x i ) + ( 1 − y i ) ln ⁡ ( 1 − p ( y i ∣ x i ) ) ] cost(y,p(y|x)) = -\sum_{i=1}^m[y_i\ln p(y_i|x_i)+(1-y_i)\ln(1-p(y_i|x_i))] cost(y,p(yx))=i=1m[yilnp(yixi)+(1yi)ln(1p(yixi))]
由此可看出,对数损失函数与极大似然估计的对数似然函数本质上是相同的。所以逻辑回归直接采用对数损失函数。

5、指数损失函数

指数损失函数的标准形式为:
L ( Y , f ( x ) ) = exp ⁡ ( − Y f ( x ) ) L(Y, f(x)) = \exp(-Yf(x)) L(Y,f(x))=exp(Yf(x))

例如AdaBoost就是以指数损失函数为损失函数。

6、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可看做为正则化项。

你可能感兴趣的:(机器学习,机器学习)