https://www.toutiao.com/a6706075530187244045/
2019-06-24 20:38:02
大家好,今天我们学习【机器学习速成】之 训练神经网络。
我们 马上学三点 ,
- 反向传播算法的几个失败案例
- 标准化特征值
- Dropout正则化
大家可以点击下面的“ 了解更多 ”,或搜索“ 马上学123 ”,在线观看PPT讲义。
反向传播
反向传播算法是 最常见的一种神经网络训练算法。 借助这种算法, 梯度下降法在多层神经网络中将成为可行方法。
反向传播
TensorFlow 等框架可自动处理反向传播算法, 它会负责反向传播的内部运作, 在后台为我们完成所有一切, 因此您暂时不需要对该算法作深入研究。
反向传播: 梯度很重要
但是, 我们需要了解反向传播算法的几个重要事项, 很多常见情况都会导致反向传播算法出错。
首先,反向传播确实依赖于梯度这一概念, 事物必须是可微的, 这样我们才能够进行学习。 各种函数中存在一两个小的间断点没关系, 但一般来说,我们需要可微函数, 从而能够使用神经网络进行学习。
反向传播:梯度消失
另外需要注意,梯度可能会消失。 如果我们的网络太深, 那么较低的层,也就是更接近输入的层, 它的梯度可能会变得非常小。
在深度网络中, 计算这些梯度时, 可能涉及许多小项的乘积。
当较低层的梯度逐渐消失到 0 时, 这些层的训练速度会非常缓慢, 甚至不再训练。
在这种情况下, ReLU 激活函数可能有助于防止梯度消失。 此外,还有一些其他策略, 但在节中不做讲解。
一般我们需要考虑, 尽量将模型的深度限制为最小的有效深度。
反向传播:梯度爆炸
另外,对应的有一个叫梯度爆炸, 如果网络中的权重过大, 则较低层的梯度会涉及许多大项的乘积。 在这种情况下,梯度就会爆炸: 梯度过大导致难以收敛。
比如如果学习速率太高, 就会出现极不稳定的情况, 模型中就可能出现NaN。 在这种情况下, 就要以较低的学习速率再试一次。
批标准化可以降低学习速率, 因而有助于防止梯度爆炸。
其实梯度爆炸和梯度消失问题 都是因为网络太深, 网络权值更新不稳定造成的, 本质上是因为梯度反向传播中的连乘效应。
反向传播: ReLu 层可能会消失
还有一个失败案例,ReLU可能会消失。 这可能是因为我们硬性将上限设为0,
一旦 ReLU 单元的加权和低于0, ReLU 单元就可能会停滞。 它会输出对网络输出没有任何贡献的 0 激活, 而梯度在反向传播算法期间将无法再从中流过。
由于梯度的来源被切断, ReLU 的输入可能无法 作出足够的改变来使加权和恢复到0以上。
所以要密切关注,并使用不同的初始化 或较低的学习速率进行重试, 降低学习速率有助于防止 ReLU 单元消失。
标准化特征值
训练时, 如果特征值在输入时就已经标准化, 这通常会对我们非常有用, 有助于梯度下降法收敛, 避免离群值也会有帮助.
如果范围大致相同, 则有助于提高神经网络的转化速度。 范围实际值并不重要; 我们通常推荐的大致范围是负1到正1。 也可以是负5到正5,或者0到1, 只要所有输入的范围大致相同就可以。
丢弃正则化
最后, 在训练深度网络时还有一个很有用的技巧, 即正则化的另一种形式, 叫做丢弃(也就是Dropout)。
丢弃正则化
Dropout 是一个非常有趣的概念, 思想其实非常简单粗暴: 对于网络的每一层,按照概率P(比如50%)随机的丢弃一些节点。 丢弃的节点越多,正则化效果就越强。
您可以清楚地看到,
- 如果丢弃所有节点, 就会得到一个极为简单的模型, 这个模型基本上毫无用处。
- 如果一个都不丢弃, 则模型便具备完整的复杂性;
- 如果在训练过程中的某个位置进行丢弃, 那就相当于在这个位置应用了某种有效的正则化。
我们最近取得了多项推动深度学习走向前沿的关键进展, 丢弃便是其中之一, 使我们能够获得许多重大的成果。
总结:
- 反向传播是用来训练人工神经网络的常见方法。 TensorFlow 等框架可自动处理反向传播算法,
- 反向传播算法的失败案例:梯度消失、梯度爆炸、ReLU 单元消失
- 在训练深度网络时技巧:标准化特征值,范围大致相同;
- Dropout正则化,在梯度下降法的每一步中随机丢弃一些网络单元。
这里讲了三点,关键词有哪几个?
提问,标准化特征值有哪些方法?