反向传播(backpropagation)
带权输入 第l层第j个神经元的错误量(误差)
BP4的结果是从低激活量神经元输出的权重会学习缓慢(目前还不知道解决办法)
激活函数
感知机 ==》 sigmoid ==》ReLU
1.感知机
感知机weight 表示各个输入对于输出的重要程度
bias 表示感知机为了得到输出为1的容易度的度量
2.sigmoid神经元
sigmoid函数
感知机和sigmoid对比:
感知机 | sigmoid | |
---|---|---|
激活函数 | 阶梯函数 | sigmoid |
输入/输出 | 0/1 | 0~1 |
sigmoid是阶梯函数的平滑版本,平滑意味着权重和偏置的微⼩变化,即 ∆wj 和 ∆b,会从神经元产⽣⼀个微⼩的输出变化 ∆output。(small change in any weight(bias) cause a small change in the output),使网络表现的更加接近我们的预期。
sigmoid不足:
如果输出神经元是饱和(低/高激活量)时,权重将学习缓慢(或停止学习)。
解决学习速度缓慢:
- sigmoid + 交叉熵(Cross entropy)
- 线性神经元(没有学习速度缓慢的问题) + 平方代价
- softmax
3.修正线性单元 ReLU(rectified linear unit)
max(0; w*x + b)优点:
- 计算容易
- network go thinner
- 解决梯度衰减
代价函数
均方代价 ==》 交叉熵代价函数
1.均方代价 MSE
Q:为什么不试着直接最⼤化这个数量,⽽是去最⼩化⼀个类似⼆次代价的间接评量呢?
A:这么做是因为在神经⽹络中,被正确分类的图像数量所关于权重和偏置的函数并不是⼀个平滑的函数。⼤多数情况下,对权重和偏置做出的微⼩变动完全不会影响被正确分类的图像的数量。这会导致我们很难去解决如何改变权重和偏置来取得改进的性能。
2.交叉熵(Cross entropy)代价函数
配合sigmiod使用能避免学习速度降低
随机梯度下降(SGD)
mini-batch==1时,又叫在线学习(online learning)或增量学习(incremental learning)
mini-batch太小可能会存在统计波动,但也没必要准确,因为我们只关心在那个方向上移动可以减小C,没必要精确计算梯度值。
基于momentum的梯度下降
引入摩擦力,用来逐步减小速度
引入速度变量v
当 µ = 1 时,没有摩擦,速度完全由梯度 ∇C 决定。
当 µ = 0 时,就存在很⼤的摩擦,速度⽆法叠加。
解决过拟合
过拟合在深度网络中尤为明显
- 正则
- 弃权(Dropout)
- 增加训练数据量(数据可以补偿不同算法间的差距)
正则
折中考虑小权值和最小化原来的代价函数。
不约束偏置。
L1正则
在未规范化的代价函数上加上⼀个权重绝对值的和
L2正则
在 L1 规范化中,权重通过⼀个常量向 0 进⾏缩⼩。
在 L2 规范化中,权重通过⼀个和 w 成⽐例的量进⾏缩⼩的。
所以,当⼀个特定的权重绝对值|w|很⼤时, L1 规范化的权重缩⼩得远⽐ L2 规范化要⼩得多。相反,当⼀个特定的权重绝对值|w| 很⼩时, L1 规范化的权重缩⼩得要⽐ L2 规范化⼤得多。
最终的结果就是: L1 规范化倾向于聚集⽹络的权重在相对少量的⾼重要度连接上,⽽其他权重就会被驱使向 0 接近。
弃权(Dropout)
- 弃权技术不依赖于修改代价函数
- 随机临时的删除网络中的一部分隐藏神经元
- 效果如同大量不同的网络的效果平均
softmax
- 输出激活值 aLj 的和确保为 1。
- 输出激活值 aLj 可以看作神经网络认为结果是j的概率。
- 可以认为softmax为 zLj 进行了重新 调节,挤压收放,使得它们形成了一个概率分布。
- 分⺟是对所有的输出神经元上进⾏的求和。
- 任何特定的输出激活值 aLj 依赖所有的带权输⼊。(非局部性)
网友评论