谷歌机器学习速成课程笔记 15(Training Neural Networks -训练神经网络)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30354455/article/details/80494338

在思考如何训练神经网络是,首先我们需要了解哪些信息是与反向传播有关的。
(我们不需要了解反向传播的实施方式/原理机制,因为tensorflow 会为我们做好)
这里写图片描述

  • 首先,反向传播确实依赖于梯度这个概念——事物必须是可微的(函数中存在一两个小的间断点没关系)这样我们才能够使用神经网络进行学习。
  • 另外,要注意,梯度可能会消失。如果我们的网络太过深入,信噪比随着您深入模型而变差,那么学习速度可能会变得非常慢。在这情况下,可以使用ReLU或其他策略,但一般来说,我们需要尽量地将 模型深度 限制为“ 最小有效深度 ”。
  • 另外,还需要知道,梯度可能会分解,如果学习速率太高,就会出现极不稳定的情况,模型中可能出现NaN,这时就要以较低的学习率再试一次
  • 最后,要知道,ReLU可能会消失。这可能是因为我们将硬性上限设为0,导致最终所有内容都低于0,这样梯度就无法反向传播了,我们就永远无法返回存在ReLU层的位置。所以要密切关注,使用不同的初始化,或者较低的学习率重试。

这里写图片描述
通常推荐的特征值范围是[-1, 1],范围值并不重要,也可以是[-5, 5],[0, 1],只要所有输入的范围大致相同就行,这有助于提高神经网络的转化速度。


这里写图片描述
应用丢弃——针对概率P取一个节点,然后从网络的一个梯度步长中将其移除,在其他梯度步长中重复此过程,并随机取不同的节点就行丢弃。
丢弃的节点越多,正则化的效果越强。

  • 如果丢弃所有节点,就会得到一个极为简单、毫无是处的模型;
  • 如果一个都不丢弃,模型将具备完整的复杂性;
  • 如果在训练过程中的某个位置进行丢弃,那就相当于在这个位置应用了某种有效的正则化。

猜你喜欢

转载自blog.csdn.net/qq_30354455/article/details/80494338