您好,欢迎访问这里是您的网站名称官网!
行业新闻
联系我们
首页-T6-T6娱乐城设备公司
邮箱:admin@youweb.com
电话:400-123-4567
地址:广东省广州市天河区88号
当前位置: 首页 > 新闻动态 > 行业新闻

行业新闻

深度学习中的优化算法(SGD|Momentum|Adam)
发布时间:2024-04-15 11:53:32浏览次数:

在深度学习中,对参数进行更改,从而达到最小化损失函数,进而达到最优解。优化算法的核心如何最小化损失函数,即怎么对参数更新。

对于凸函数来说,负梯度方向是函数下降方向最快的方向,根据求梯度的数据集合可以划分为全梯度下降、mini-batch梯度下降和随机梯度下降。

全梯度下降计算梯度根据整个数据集合。
优点:梯度是在全部数据集上计算出的,因此每次迭代都是向着整体的最优化方向。
缺点: 1、每更新一次参数,就要遍历全部数据集,计算起来非常慢。 2、容易陷入极小值点,因为在极小值点(鞍点)梯度为0,所以参数不会更新。

与BGD一次更新用所有的数据计算不同,SGD每次更新时对随机选择一个样本进行梯度更 新。
优点:
1、与全梯度下降相比,更新参数时速度快。
2、与全梯度相比,SGD可能会跳出局部极小值点,因为在极小值(鞍点)的时候它计算梯度是随机选择的一个样本,这个梯度未必是0
缺点:
1、SGD每次的更新并不是向着整体最优化方向,虽然速度快,准确度下降,并不是全局最优。虽然具有随机性,但是从期望上看,它是等于正确的导数。

MBGD每次使用一小批数据更新,是全梯度和随机梯度的一个折衷。
缺点:
1、不能保证很好的收敛性,依赖学习率。如何学习率太小,收敛慢,如果太大就会在极小值附近震荡。
2、batch-size大小的选择

三种梯度下降方式总的更新方式都是

区别就是梯度计算所选取的集合不同。

缺点:
1、下降慢. 2、容易陷入局部极小值点.

梯度下降仅考虑一阶导数,牛顿法在更新参数时考虑使用二阶导数,因此比梯度下降更加精确。

当变量为一维时,变量更新量的计算如下 \
abla x=\\frac{f'(x)}{f''(x)}

当变量为多维时,更新方式如下

牛顿法在更新参数时,需要计算Hessian矩阵,计算量较大,因此实际中用到较少

与梯度下降不同的是在计算梯度地方,当前时刻的梯度是 从开始时刻到当前时刻的梯度指数加权平均,并给这个梯度的指数加权值取了个名字速率v, 既有方向也有大小。


优点:
1、与梯度下降相比,下降速度快,因为如果方向是一直下降的,那么速度将是之前梯度的和,所以比仅用当前梯度下降快。
2、对于窄长的等梯度图,会减轻梯度下降的震荡程度,因为考虑了当前时刻是考虑了之前的梯度方向,加快收敛

指数加权平均通俗理解指数加权平均
如图第100时刻的V值是前100时刻值的加权和,并且权重是呈指数递减

偏差校验指数加权平均的偏差修正
指数加权有一个缺点就是当t较小的时刻,预测会出现很大的偏差,如图:
随着t增加分母逐渐等于1,所以修正是没用的

上面的算法中的学习率都是固定不变的,Adam是对学习率自适应调整。
Adam不仅存储了过去梯度的平方的指数衰减平均值,还向Monentum一样保持了过去提取的指数衰减平均值:


另外也做了偏差校验:


梯度更新规则:


优点:
1、学习率自适应修正,不用手动调整.
2、自适应学习率可以对低频的参数做较大的更新,对高频的做较小的更新【怎么理解?】

【1】从 SGD 到 Adam —— 深度学习优化算法概览(一).
【2】深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam).
【3】Adam那么棒,为什么还对SGD念念不忘 (1) —— 一个框架看懂优化算法

平台注册入口