ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Rprop 与 RMSprop 优化器

2022-07-23 03:36:00  阅读:221  来源: 互联网

标签:权重 梯度 RMSprop step Rprop dw 优化 size


https://www.cnblogs.com/setdong/p/16508415.html

1. Rprop

在 full-batch optimization 中, 一些梯度可能很小, 而另一些梯度可能很大, 故难以寻找一个 global 学习率.

可以使用梯度的 sign 解决这个问题, 保证所有权重更新相同的大小. Rprop 在此基础上又考虑为每个权重单独调整步长, 且这些步长随时间变化而调整, 算法如下:

  1. 设置权重变化的加速因子(increase factor)和减速因子(decrease factor).
  2. 设置权重变化的 max 限制和 min 限制, 它们的取值取决于模型和数据集, 默认值是 50 和 10[^-5].
  3. 首先, 对于一个权重, 观察其 the last two 梯度.
  4. 如果它们的 sign 相同, 说明我们正朝着正确的方向更新梯度, 并且可以增加步长; 如果它们的 sign 值不同, 说明我们的步长太大并且跳过了局部最小值, 因此可以减小步长.
  5. 按权重变化限制对权重进行更新

有不同版本的 Rprop 算法, 这里介绍的是最简单的一个. 简单的代码如下:

```
for t in range(num_interations):
    dw[t] = compute_gradient(x, y)
    
    if dw[t] * dw[t - 1] > 0:
        step_size = min(step_size * incFactor, step_size_max)
    elif dw[t] * dw[t - 1] < 0:
        step_size = max(step_size * decFactor, step_size_min)
    
    w[t] = w[t - 1] - sign(dw[t]) * step_size
```

2. Rprop to RMSprop

当我们的数据集规模很大并使用 mini-batch 时, Rprop 就无法起作用了. 例如, 考虑权重的 10 个 mini-batches, 其中它在 9 个 mini-batches 上得到了梯度 0.1, 在一个 mini-batch 上得到了梯度 -0.9, 我们想要的是这些梯度的变化大致抵消 (averaging), 但使用 Rprop 的话, 我们将权重增加 9 次, 减少 1 次, 因此权重变得更大.

RMSprop 中的 RMS 表示的是均方根 (root mean square). Rprop 的主要思想是使用梯度, 同时除以梯度的大小 (sign), RMSprop 的主要思想是将梯度除以均方根的平方, 并且还考虑相邻的 mini-batch. 数学公式如下:

\[E[g^2]_t = \beta E[g^2]_{t-1} + (1-\beta)(\frac{\delta C}{\delta w})^2 \\ w_t = w_{t-1} - \frac{\eta}{\sqrt{E[g^2]_t}}\frac{\delta C}{\delta w} \]

\(E\) 为梯度平方的 moving average, \(C\) 为损失函数, \(\eta\) 为学习率, \(\beta\) 为 moving average 的参数(默认值 0.9). 代码如下:

drad_squared = 0
for _ in num_iterations:
    dw = compute_gradients(x, y)
    grad_squared = 0.9 * grads_squared + 0.1 * dx * dx
    w = w - (lr / np.sqrt(grad_squared)) * dw

img

source: https://imgur.com/a/Hqolp#NKsFHJb

标签:权重,梯度,RMSprop,step,Rprop,dw,优化,size
来源: https://www.cnblogs.com/setdong/p/16508415.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有