问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

交叉熵损失函数(作用及公式推导)

创作时间:
作者:
@小白创作中心

交叉熵损失函数(作用及公式推导)

引用
1
来源
1.
https://www.cnblogs.com/Renyi-Fan/p/13672362.html1

交叉熵损失函数是机器学习和深度学习中常用的损失函数之一,尤其在分类问题中表现优异。本文将从平方差损失函数的不足出发,深入探讨交叉熵损失函数的作用及其数学推导过程。

一、总结

一句话总结:

交叉熵损失函数的公式为:
$$C = - \frac { 1 } { n } \sum _ { x } [ y \ln a + ( 1 - y ) \ln ( 1 - a ) ]$$

1、平方差损失函数的不足?

使用平方差损失函数训练ANN时,存在一个显著的问题:当误差较大时,参数调整的幅度可能反而更小,导致训练过程变得缓慢。

二、交叉熵代价函数(作用及公式推导)

交叉熵代价函数(Cross-entropy cost function)是一种衡量人工神经网络(ANN)预测值与实际值差异的方法。与二次代价函数相比,它能更有效地促进ANN的训练。

1. 二次代价函数的不足

以一个神经元的二类分类训练为例,进行两次实验(ANN常用的激活函数为sigmoid函数,该实验也采用该函数):输入一个相同的样本数据x=1.0(该样本对应的实际分类y=0);两次实验各自随机初始化参数,从而在各自的第一次前向传播后得到不同的输出值,形成不同的代价(误差):


实验1:第一次输出值为0.82


实验2:第一次输出值为0.98

从两次实验的代价曲线中可以看出:实验1的代价随着训练次数增加而快速降低,但实验2的代价在一开始下降得非常缓慢;直观上看,初始的误差越大,收敛得越缓慢

2. 交叉熵代价函数

交叉熵代价函数的公式为:
$$C = - \frac { 1 } { n } \sum _ { x } [ y \ln a + ( 1 - y ) \ln ( 1 - a ) ]$$

其中,C表示代价,x表示样本,y表示实际值,a表示输出值,n表示样本的总数。

重新计算参数w的梯度:
$$\frac{\partial C}{\partial w} = \frac{1}{n} \sum_x \frac{\partial C_x}{\partial w} = \frac{1}{n} \sum_x a(1-a)(y-a) \frac{\partial z}{\partial w}$$

其中(具体证明见附录):
$$\frac{\partial C_x}{\partial a} = -\frac{y}{a} + \frac{1-y}{1-a}$$

因此,w的梯度公式中原来的
被消掉了;另外,该梯度公式中的
表示输出值与实际值之间的误差。所以,当误差越大,梯度就越大,参数w调整得越快,训练速度也就越快。同理可得,b的梯度为:

3. 交叉熵代价函数是如何产生的?

以偏置b的梯度计算为例,推导出交叉熵代价函数:

在第1小节中,由二次代价函数推导出来的b的梯度公式为:
$$\frac{\partial C}{\partial b} = \frac{1}{n} \sum_x \frac{\partial C_x}{\partial b} = \frac{1}{n} \sum_x a(1-a)(y-a) \frac{\partial z}{\partial b}$$

为了消掉该公式中的
,我们想找到一个代价函数使得:
$$\frac{\partial C_x}{\partial a} = -\frac{y}{a} + \frac{1-y}{1-a}$$

即:
$$\frac{\partial C_x}{\partial a} = -\frac{y}{a} + \frac{1-y}{1-a}$$

对两侧求积分,可得:
$$C_x = -y \ln a - (1-y) \ln (1-a)$$

而这就是前面介绍的交叉熵代价函数。

附录:

sigmoid函数为:
$$\sigma(z) = \frac{1}{1 + e^{-z}}$$

可证:
$$\frac{\partial \sigma(z)}{\partial z} = \sigma(z)(1-\sigma(z))$$

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号