深度学习基础—动量梯度下降法

ops/2024/9/23 10:23:12/

1.算法原理

        动量梯度下降法就是在梯度下降法的基础上,使用指数加权移动平均值,来平均梯度,这种算法比梯度下降法更快。

        如上图,损失函数的最小值是红点,椭圆是损失函数的图像,梯度下降法就像蓝线和紫线(学习率高,因此计算容易超出范围)一样,摆动着朝最小值移动。但是这种优化算法的计算步骤很多,并且靠近最小值,梯度比较小,此时算法速度减慢,也无法使用更高的学习率(否则就会出现紫色的情况)。

        从另一角度讨论,我们希望算法的运行轨迹是x轴处更快点,y轴更慢点,不希望摆动太多(增加计算),因此这就启发我们寻找更加平滑的优化路径。于是指数加权移动平均值就排上用场,因为它可以平滑计算,同时也能反应趋势。

2.算法流程

        在梯度下降法或Mini-batch 梯度下降法中添加指数加权移动平均值深度学习基础—指数加权移动平均值icon-default.png?t=N7T8http://t.csdnimg.cn/ZY628代替原来的权重更新,得到的算法如下:

        这个算法存在两个超参数:学习率a和参数b,参数b通常取值0.9。不加偏差修正的原因是b=0.9表示平均了10次的梯度,我们不需要准确估计网络初期的梯度,而10次迭代后就已经越过了这个时期,此时预估的梯度是比较准确的,因此不需要偏差修正。

        结合开始的图可以发现,对于y轴方向,正负值抵消,梯度的估计值接近0,因此减小了摆动,而x轴方向微分始终朝向最小值方向,因此优化更加平缓的向最小值方向移动,因此减少了计算,加快了收敛速度。对于接近最小值的地方,该算法预估出来的梯度值更大,因此也加快了速度。

3.如何理解

        如何理解算法:通常优化函数是一个碗状形状,最小值在碗底。优化路径像从碗边滚下的小球,小球的加速度就是梯度(dW、db),小球的速度就是动量项(VdW、Vdb)。梯度下降法更像离散的运动轨迹,因为小球是每计算出一个优化值,就向那个地方直接跳跃。而动量梯度下降法是连续的运动轨迹,指数加权移动平均值平滑了梯度,进而速度也更加平滑,小球有了连续运动的惯性,因此赋予了小球动量。这也是动量梯度下降法名字的由来。

        注意:有些文献去掉了(1-b),这也不错,但是去掉(1-b)后往往会导致VdW和Vdb扩大,于是可能需要调整学习率a,从而控制权重更新不那么快。这更加繁琐,至于使用哪个公式,顺手就行。


http://www.ppmy.cn/ops/96838.html

相关文章

WebDeveloper:1靶机

信息收集: 靶机地址:https://www.vulnhub.com/entry/web-developer-1,288/ (1)ip扫描 nmap 192.168.254.0/24 -sn | grep -B 2 00:0C:29:0F:DB:75 (2)端口扫描 nmap -p- -A 192.168.254.160 &#xff0…

延迟加载JS有哪些方式

1、defer 等HTML全部解析完成&#xff0c;才会执行js代码&#xff0c;按顺序执行js脚本 <script defer typetext/javascript srcscript.js></script> 2、async async是和HTML解析同步的&#xff08;一起的&#xff09;&#xff0c;不是按顺序执行js脚本&#xff0…

【JavaEE】MyBatis 实战指南:从 JDBC 到高效数据库操作的进阶教程

目录 MyBatis 操作数据库JDBC 操作⽰例回顾什么是MyBatis?MyBatis⼊⻔1. 准备⼯作2. 配置数据库连接字符串3. 写持久层代码4. 单元测试使用MyBatis可能遇到的问题 MyBatis的基础操作打印⽇志参数传递增(Insert)返回主键 删(Delete)改(Update)查(Select)起别名结果映射开启驼峰…

派森学长带你学python—集合

python中的集合是无序不重复元素序列 集合中只能存储不可变数据类型 在Python中用{}来定义 与列表字典一样&#xff0c;集合石python中的可变数据类型 集合属于序列中的一种#集合的创建1 s{(1,2,3),hello,9} print(s)#{9, hello, (1, 2, 3)}#集合的创建2 set() sset() print(s)…

sql总结

1.sql 1.多数据筛选排名 row_number 从1到10顺序排名&#xff0c; rank(&#xff09;11335并列的算一名 DENSE_RANK是1122333排&#xff0c;rank是11335 SELECT 销售经理 AS f_a,bureau_name AS f_b,deal_staff_name AS f_c,COUNT(CASE WHEN main_price_name 全家福229元套…

【面向对象】04面向对象三大特征之——继承

文章目录 一、super1.构造方法2.属性3.方法 二、规则三、继承权限 继承 继承是Java中实现代码重用的重要手段之一。使用继承&#xff0c;可以减少代码量&#xff0c;方便修改代码。Java中只支持单根继承&#xff0c;即一个类只能有一个直接父类。 继承使用关键字extends&#…

机器学习-傅里叶变换

傅里叶变换是一种在各种科学和工程领域中发挥了关键作用的数学技术&#xff0c;其应用范围从信号处理到量子力学。近年来&#xff0c;它在机器学习领域找到了新的重要性。 傅里叶变换通过频域分析&#xff0c;让我们看到了另一份观景&#xff0c;在机器学习领域也同样适用。 理…

二叉树(三)

一、二叉树的遍历 二叉树遍历是按照某种特定的规则&#xff0c;依次对二叉树中的结点进行相应的操作&#xff0c;并且每个结点只操作一次。 1.前序遍历&#xff08;先根遍历&#xff09; 前序遍历&#xff08;Preorder Traversal也叫先序遍历&#xff09;——根、左子树、右…