神经网络与深度学习 笔记4 交叉熵代价函数 softmax函数
2017-07-21 17:34
691 查看
1. 学习缓慢问题
二次代价函数,定义如下
![](https://img-blog.csdn.net/20170721154341751)
其中 a 是神经元的输出,训练输入为 x = 1,y = 0 则是目标输出。显式地使用权重和偏置来表达这个,我们有 a = σ(z),其中 z = wx + b。使用链式法则来求权重和偏置的偏导数就有:
![](https://img-blog.csdn.net/20170721154523463)
σ 函数图像:
![](https://img-blog.csdn.net/20170721154715639)
我们可以从这幅图看出,当神经元的输出接近 1 的时候,曲线变得相当平,所以 σ ′ (z) 就很小了。∂C/∂w 和 ∂C/∂b 会非常小,这其实就是学习缓慢的原因所在
2. 引入交叉熵代价函数
定义交叉熵代价函数:
![](https://img-blog.csdn.net/20170721155049779)
其中 n 是训练数据的总数,求和是在所有的训练输入 x 上进行的,y 是对应的目标输出。
将交叉熵看做是代价函数有两点原因,交叉熵是非负的,在神经元达到很好的正确率的时候会接近 0。
计算交叉熵函数关于权重的偏导数。将 a = σ(z) 代入到 上式 中应用两次链式法则,得到:
![](https://img-blog.csdn.net/20170721160004237)
将结果合并一下,简化成:
![](https://img-blog.csdn.net/20170721160252309)
根据 σ(z) = 1/(1 + e −z ) 的定义,和一些运算,我们可以得到 σ ′ (z) = σ(z)(1 − σ(z)),上下两项约去:
![](https://img-blog.csdn.net/20170721163112241)
这个公式告诉我们权重学习的速度受到 σ(z) − y,也就是输出中的误差的控制。更大的误差,更快的学习速度。
另一种解决学习缓慢的问题的方法
3. 基于柔性最大值(softmax)神经元层
柔性最大值的想法其实就是为神经网络定义一种新式的输出层。首先计算带权输入zLj=∑kwLjkaL−1k+bLj。在zLj上应用softmax函数,第
j 个神经元的激活值aLj就是:
![](https://img-blog.csdn.net/20170721164604627)
其中,分母中的求和是在所有的输出神经元上进行的。
学习缓慢问题:
先定义一个对数似然(log-likelihood)代价函数,使用 x 表示网络的训练输入,y 表示对应的目标输出:
![](https://img-blog.csdn.net/20170721170404911)
学习缓慢的关键就是量∂C/∂wLjk
和
∂C/∂bLj
的变化情况
????????????????????????????
![](https://img-blog.csdn.net/20170721170138630)
???????????????????????????
把一个具有对数似然代价的柔性最大值输出层,看作与一个具有交叉熵代价的 S 型输出层非常相似
二次代价函数,定义如下
其中 a 是神经元的输出,训练输入为 x = 1,y = 0 则是目标输出。显式地使用权重和偏置来表达这个,我们有 a = σ(z),其中 z = wx + b。使用链式法则来求权重和偏置的偏导数就有:
σ 函数图像:
我们可以从这幅图看出,当神经元的输出接近 1 的时候,曲线变得相当平,所以 σ ′ (z) 就很小了。∂C/∂w 和 ∂C/∂b 会非常小,这其实就是学习缓慢的原因所在
2. 引入交叉熵代价函数
定义交叉熵代价函数:
其中 n 是训练数据的总数,求和是在所有的训练输入 x 上进行的,y 是对应的目标输出。
将交叉熵看做是代价函数有两点原因,交叉熵是非负的,在神经元达到很好的正确率的时候会接近 0。
计算交叉熵函数关于权重的偏导数。将 a = σ(z) 代入到 上式 中应用两次链式法则,得到:
将结果合并一下,简化成:
根据 σ(z) = 1/(1 + e −z ) 的定义,和一些运算,我们可以得到 σ ′ (z) = σ(z)(1 − σ(z)),上下两项约去:
这个公式告诉我们权重学习的速度受到 σ(z) − y,也就是输出中的误差的控制。更大的误差,更快的学习速度。
另一种解决学习缓慢的问题的方法
3. 基于柔性最大值(softmax)神经元层
柔性最大值的想法其实就是为神经网络定义一种新式的输出层。首先计算带权输入zLj=∑kwLjkaL−1k+bLj。在zLj上应用softmax函数,第
j 个神经元的激活值aLj就是:
其中,分母中的求和是在所有的输出神经元上进行的。
学习缓慢问题:
先定义一个对数似然(log-likelihood)代价函数,使用 x 表示网络的训练输入,y 表示对应的目标输出:
学习缓慢的关键就是量∂C/∂wLjk
和
∂C/∂bLj
的变化情况
????????????????????????????
???????????????????????????
把一个具有对数似然代价的柔性最大值输出层,看作与一个具有交叉熵代价的 S 型输出层非常相似
相关文章推荐
- 神经网络与深度学习笔记(四)为什么用交叉熵代替二次代价函数
- 神经网络与深度学习读书笔记第五天----交叉熵代价函数入门
- 深度学习笔记之神经网络、激活函数、目标函数和深度的初步认识
- 神经网络与深度学习笔记——第4章 神经网络可以计算任何函数的可视化证明
- AndrewNg神经网络和深度学习笔记-Week3-6激活函数
- [DeeplearningAI笔记]神经网络与深度学习3.2_3.11(激活函数)浅层神经网络
- 五、改进神经网络的学习方法(1):交叉熵代价函数
- 神经网络与深度学习学习笔记:正向传播与反向传播(未完)
- 机器学习基础知识-神经网络与深度学习学习笔记(二)
- TensorFlow深度学习笔记 循环神经网络实践
- [DeeplearningAI笔记]改善深层神经网络1.1_1.3深度学习实用层面_偏差/方差/欠拟合/过拟合/训练集/验证集/测试集
- 神经网络与深度学习笔记(二)python 实现随机梯度下降
- 神经网络与深度学习学习笔记:神经网络的优化(二)
- 学习Andrew Ng的神经网络和深度学习课程的笔记part one(二)
- 吴恩达(Andrew Ng)深度学习工程师笔记 - 第一门课-神经网络和深度学习-第一周深度学习概论-第二节:什么是神经网络
- TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络
- 四大深度学习框架+四类GPU+七种神经网络:交叉性能评测
- 深度学习笔记(一)---神经网络
- 深度学习笔记(二)神经网络
- 吴恩达(Andrew Ng)深度学习工程师笔记 - 第一门课-神经网络和深度学习-第一周深度学习概论-第五节:关于这门课