参数更新方法
来源:互联网 发布:现在做淘宝店晚吗 编辑:程序博客网 时间:2024/05/22 13:22
https://github.com/hsmyy/zhihuzhuanlan/blob/master/momentum.ipynb
1、梯度下降法
加大梯度下降的步长
继续加大步长
2、动量更新
Momentum改进自SGD算法,让每一次的参数更新方向不仅仅取决于当前位置的梯度,还受到上一次参数更新方向的影响。
v = mu * v - learning_rate * dx # integrate velocity
x += v # integrate position
3、NAG
如果预到的地点梯度比较大,更新就比较快,如果梯度比较小就更新比较慢
- x_ahead = x + mu * v 通过上一次的动量v估计本次的位置,
- v = mu * v - learning_rate * d x_ahead 通过估计的位置计算梯度,
- x += v
4、Adagrad
cache += dx**2
x += - learning_rate * dx / (np.sqrt(cache) + eps)
这个方法其实是动态更新学习率的方法,其中cache将每个梯度的平方和相加,而更新学习率的本质是,如果求得梯度距离越大,那么学习率就变慢,而eps是一个平滑的过程,取值通常在(10^-4~10^-8 之间)
gt,i=∇θJ(θi)是目标函数对参数的梯度,ϵ是平滑项,防止除零操作,一般取值1e−8
Adagrad的一大优势时可以避免手动调节学习率,比如设置初始的缺省学习率为0.01,然后就不管它,另其在学习的过程中自己变化。当然它也有缺点,就是它计算时要在分母上计算梯度平方的和,由于所有的参数平法必为正数,这样就造成在训练的过程中,分母累积的和会越来越大。
5、RMSprop
cache = decay_rate * cache + (1 - decay_rate) * dx**2
x += - learning_rate * dx / (np.sqrt(cache) + eps)
6、Adam
m = beta1*m + (1-beta1)*dx
v = beta2*v + (1-beta2)*(dx**2)
x += - learning_rate * m / (np.sqrt(v) + eps)
- 参数更新方法
- 神经网络参数更新方法
- 神经网络更新参数的几种方法
- 参数更新
- jquery uploadify动态更新配置参数方法uploadifySettings()
- LoadRunner参数化---数据文件属性 之 数据分配方法和数据更新方法
- 更新超参数
- FLAG_ACTIVITY_REORDER_TO_FRONT 参数更新
- 参数的更新
- 梯度更新参数
- 神经网络参数更新
- C# 数据库sql中用参数的方法来执行UPDATE命令,实现更新dataTime类型
- Javascrpt获取页面的传递的参数,超简单更新【2种方法】
- LR测试文件/表参数的数据分配和更新方法(十)
- 低功耗蓝牙BLE之连接事件、连接参数和更新方法
- mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)
- 低功耗蓝牙BLE之连接事件、连接参数和更新方法
- mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)
- 如何高质量的陪伴孩子
- Unity3D中的阴影设置
- string和stringstream用法详解
- 贪吃蛇完整代码
- 自动化编译shell脚本_jenkins
- 参数更新方法
- LeetCode 581. Shortest Unsorted Continuous Subarray
- 安卓(java)计算器简单实现
- 数字化企业的智慧企业架构框架——使能企业全面向数字化转型
- UnityAI行为-----群组行为之群集动画
- 到了Vue2.x有哪些变化?—— 组件通信
- 一键搭建本地yum源
- iframe中使用My97DatePicker WdatePicker()无法弹框
- Leetcode: symmetric-tree