大家好,我是小寒。
今天给大家介绍一种优化算法,RMSprop
RMSprop 是一种自适应学习率优化算法。
事实上,它是梯度下降和流行的AdaGrad 算法的扩展,旨在显着减少训练神经网络时使用的计算量。
该算法的工作原理是每当梯度平方小于某个阈值时,学习率就会呈指数衰减。
在我们的模型训练开始时,成本会相当高。从那里开始,我们有一个锯齿形图案,在垂直方向上有较大的运动,在水平方向上有相对较小的运动,直到达到全局最小值(中心的红点)。
在普通梯度下降中,我们体验到了这种随意的运动。为什么?这是由于高维数导致存在大量局部最优(因为成本函数取决于许多增加维数的权重)。
当尝试在多维情况下优化参数时,普通或小批量梯度下降算法将陷入许多局部最小值、高原和其他收敛到真正的全局最小值的障碍。
正如我们将看到的,在 RMSprop 中使用均方根有助于避免学习率太小或太大的问题。如果梯度较小,则提高学习率以加快收敛速度;如果梯度较大,则降低学习率以避免超过损失函数的最小值。
我们都知道梯度下降更新可以封装在以下两个方程中:
在 RMSprop 中,更新状态的方程修改如下:
其中 SdW 定义为:
{dW} = beta S
{dW{prev}} + (1 - beta) dW^2 ‘ data-formula-type=‘block-equation’>
Sdb 定义为:
{db} = beta S
{db{prev}} + (1 - beta) db^2 ‘ data-formula-type=‘block-equation’>
由于我们取参数平方的平方根,因此该算法适当地称为均方根传播。
但我们忽略了一件事。为了避免被零除,我们添加标准化值 ε = 10^-8。
最后,我们得到:
B 通常设置为 0.999。
下面一起来看看如何使用 Keras 和 TensorFlow 对 MNIST 数据集上的分类问题实施 RMSprop 优化。
我们还将它与普通梯度下降进行比较。
导入必要的库
首先,我们需要导入必要的库,包括 TensorFlow 和 Keras。
加载并预处理 MNIST 数据集
接下来,我们将加载 MNIST 数据集并对其进行预处理。
讯享网
定义模型架构
我们将定义一个带有两个隐藏层的简单前馈神经网络模型。
训练模型
现在,我们将使用 RMSprop 优化器编译模型。
讯享网
与普通梯度下降法进行比较
最后,我们可以通过使用 SGD 优化器创建另一个模型来将结果与它进行比较。
比较结果
最后,我们将比较两个模型的结果。
RMSProp(均方根传播)是一种机器学习优化算法,通过不同的自适应学习率来训练人工神经网络 (ANN)。
它源自梯度下降和 RProp 的概念。结合小批量的平均、效率以及连续小批量的梯度,RMSProp 可以以比原始优化器更快的速度达到收敛,但比更高级的优化器(例如 Adam)慢。
最后
—

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/151372.html