交叉熵代价函数定义及其求导推导(读书笔记)

简介: 目的:为了解决学习缓慢的问题神经元的输出就是 a = σ(z),其中z=∑wjij+bz=\sum w_{j}i_{j}+b是输⼊的带权和。

目的:为了解决学习缓慢的问题


神经元的输出就是 a = σ(z),其中z=wjij+b是输⼊的带权和。

C=1n[ylna+(1y)ln(1a)]

其中 n 是训练数据的总数,求和是在所有的训练输⼊ x 上进⾏的, y 是对应的⽬标输出。

表达式是否解决学习缓慢的问题并不明显。实际上,甚⾄将这个定义看做是代价函数也不是显⽽易⻅的!在解决学习缓慢前,我们来看看交叉熵为何能够解释成⼀个代价函数。

将交叉熵看做是代价函数有两点原因。

第⼀,它是⾮负的, C > 0。可以看出:式子中的求和中的所有独⽴的项都是负数的,因为对数函数的定义域是 (0,1),并且求和前⾯有⼀个负号,所以结果是非负。

第⼆,如果对于所有的训练输⼊ x,神经元实际的输出接近⽬标值,那么交叉熵将接近 0。

假设在这个例⼦中, y = 0 ⽽ a ≈ 0。这是我们想到得到的结果。我们看到公式中第⼀个项就消去了,因为 y = 0,⽽第⼆项实际上就是 − ln(1 − a) ≈ 0。反之, y = 1 ⽽ a ≈ 1。所以在实际输出和⽬标输出之间的差距越⼩,最终的交叉熵的值就越低了。(这里假设输出结果不是0,就是1,实际分类也是这样的)

综上所述,交叉熵是⾮负的,在神经元达到很好的正确率的时候会接近 0。这些其实就是我们想要的代价函数的特性。其实这些特性也是⼆次代价函数具备的。所以,交叉熵就是很好的选择了。但是交叉熵代价函数有⼀个⽐⼆次代价函数更好的特性就是它避免了学习速度下降的问题。为了弄清楚这个情况,我们来算算交叉熵函数关于权重的偏导数。我们将a=ς(z)代⼊到 公式中应⽤两次链式法则,得到:

Cwj=====1nwj[ylna+(1y)ln(1a)]1na[ylna+(1y)ln(1a)]awj1n(ya1y1a)awj1n(yς(z)1y1ς(z))ς(z)wj1n(yς(z)1y1ς(z))ς(z)xj

根据ς(z)=11+ez 的定义,和⼀些运算,我们可以得到 ς(z)=ς(z)(1ς(z))。化简后可得:

Cwj=1nxj(ς(z)y)

这是⼀个优美的公式。它告诉我们权重学习的速度受到ς(z)y,也就是输出中的误差的控制。更⼤的误差,更快的学习速度。这是我们直觉上期待的结果。特别地,这个代价函数还避免了像在⼆次代价函数中类似⽅程中ς(z)导致的学习缓慢。当我们使⽤交叉熵的时候,ς(z)被约掉了,所以我们不再需要关⼼它是不是变得很⼩。这种约除就是交叉熵带来的特效。实际上,这也并不是⾮常奇迹的事情。我们在后⾯可以看到,交叉熵其实只是满⾜这种特性的⼀种选择罢了。

根据类似的⽅法,我们可以计算出关于偏置的偏导数。我这⾥不再给出详细的过程,你可以轻易验证得到:

Cb=1n(ς(z)y)

再⼀次, 这避免了⼆次代价函数中类似ς(z)项导致的学习缓慢。

相关文章
|
8月前
|
机器学习/深度学习 算法 Python
数学和微分角度理解梯度下降算法
数学和微分角度理解梯度下降算法
|
11月前
“交叉熵”反向传播推导
“交叉熵”反向传播推导
罗尔(Rolle)、拉格朗日(Lagrange)和柯西(Cauchy)三大微分中值定理的定义
罗尔(Rolle)、拉格朗日(Lagrange)和柯西(Cauchy)三大微分中值定理的定义
罗尔(Rolle)、拉格朗日(Lagrange)和柯西(Cauchy)三大微分中值定理的定义
|
11月前
|
移动开发 JavaScript 算法
数学基础之——熵与散度的灵魂摆渡(解析大全)(二)
数学基础之——熵与散度的灵魂摆渡(解析大全)(二)
212 0
|
11月前
|
机器学习/深度学习 自然语言处理 JavaScript
数学基础之——熵与散度的灵魂摆渡(解析大全)(一)
数学基础之——熵与散度的灵魂摆渡(解析大全)(一)
127 0
隐函数及参数方程求导——“高等数学”
隐函数及参数方程求导——“高等数学”
|
机器学习/深度学习 存储 人工智能
手推公式:LSTM单元梯度的详细的数学推导
手推公式:LSTM单元梯度的详细的数学推导
189 0
手推公式:LSTM单元梯度的详细的数学推导
熵、交叉熵和KL散度的基本概念和交叉熵损失函数的通俗介绍
熵、交叉熵和KL散度的基本概念和交叉熵损失函数的通俗介绍
154 0
熵、交叉熵和KL散度的基本概念和交叉熵损失函数的通俗介绍
|
人工智能 开发者
最小二乘法推导与求解 | 学习笔记
快速学习最小二乘法推导与求解
117 0
最小二乘法推导与求解 | 学习笔记