神经网络与深度学习 笔记4 交叉熵代价函数 softmax函数
来源:互联网 发布:java base64编码解码 编辑:程序博客网 时间:2024/05/22 12:58
1. 学习缓慢问题
二次代价函数,定义如下
其中 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)神经元层
柔性最大值的想法其实就是为神经网络定义一种新式的输出层。首先计算带权输入
其中,分母中的求和是在所有的输出神经元上进行的。
学习缓慢问题:
先定义一个对数似然(log-likelihood)代价函数,使用 x 表示网络的训练输入,y 表示对应的目标输出:
学习缓慢的关键就是量
????????????????????????????
???????????????????????????
把一个具有对数似然代价的柔性最大值输出层,看作与一个具有交叉熵代价的 S 型输出层非常相似
- 神经网络与深度学习 笔记4 交叉熵代价函数 softmax函数
- 神经网络与深度学习笔记(四)为什么用交叉熵代替二次代价函数
- 深度学习笔记---交叉熵代价函数
- 神经网络与深度学习读书笔记第五天----交叉熵代价函数入门
- 神经网络中交叉熵代价函数 求导
- Softmax函数与交叉熵
- Softmax函数与交叉熵
- Softmax函数与交叉熵
- 深度学习用到的代价函数------交叉熵
- 深度学习---之softmax与交叉熵
- 交叉熵代价函数
- 交叉熵代价函数
- 交叉熵代价函数
- 交叉熵代价函数
- 交叉熵代价函数
- 交叉熵代价函数
- 交叉熵代价函数
- 交叉熵代价函数
- 游戏化设计可以让用户爱上你的产品
- String类、StringBuffer类、StringBuilder类详解
- kotlin实现一个Recyclerview与java的比较
- Quartz任务调度框架学习二(核心接口及cron表达式简介)
- svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法
- 神经网络与深度学习 笔记4 交叉熵代价函数 softmax函数
- TextInputLayout的使用
- 2017.7.17--2017.7.21
- 信息系统手机端
- CentOs 替换yum源为阿里云
- (poj 2588 )Genetic Code
- 解决 3ds Max 载入模型后出现 Missing Dlls 问题
- Docker的使用
- 常用正则表达式