您的位置:首页 > 理论基础 > 计算机网络

神经网络与深度学习 笔记4 交叉熵代价函数 softmax函数

2017-07-21 17:34 691 查看
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)神经元层

柔性最大值的想法其实就是为神经网络定义一种新式的输出层。首先计算带权输入zLj=∑kwLjkaL−1k+bLj。在zLj上应用softmax函数,第
j 个神经元的激活值aLj就是:


其中,分母中的求和是在所有的输出神经元上进行的。

学习缓慢问题:

先定义一个对数似然(log-likelihood)代价函数,使用 x 表示网络的训练输入,y 表示对应的目标输出:

 


学习缓慢的关键就是量∂C/∂wLjk

∂C/∂bLj
的变化情况

????????????????????????????



???????????????????????????

把一个具有对数似然代价的柔性最大值输出层,看作与一个具有交叉熵代价的 S 型输出层非常相似
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐