首页 > 试题广场 >

SGD,Momentum,Adagard,Adam原理

优化方法总结:SGD,Momentum,AdaGrad,RMSProp,Adam
发表于 2019-04-15 22:22:43 回复(1)

SGD:随机梯度下降,一次只用一个样本更新,优点是更新速度快,缺点是训练不稳定,准确度下降。

momentum 动量学习,用来解决梯度下降不稳定,容易陷入鞍点的缺点,它采用将新旧梯度加权平均的方法产生新的梯度。可以加快训练,减小动荡

adagrad 解决学习率不能在不同分量上改变的缺点。因为随着训练的不断进行,我们希望模型的更新趋于稳定,逐渐收敛,若是保持一个较大的学习率,会导致模型的损失函数在极值点不断震荡达不到收敛。而采用adagrad将之前梯度的平方求和再开根号作为分母,会使得一开始学习率呈放大趋势,随着训练的进行学习率会逐渐减小

Adam 集众家之所长,结合momentum和adagrad两种算法的优势。

编辑于 2020-04-15 08:49:45 回复(0)

我写得博客:优化方法总结

发表于 2019-06-05 10:30:53 回复(0)

sgd随机梯度下降,与数据集的batch有关。

Momentum梯度指数衰减。

Adagarm可自动变更学习率。

Adam每次迭代后的学习率有个确定的范围。



发表于 2020-01-30 19:33:27 回复(0)
<p>SGD 随机梯度下降 参数更新快,对每一个mini-batch 进行计算来进行参数更新size= 1 速度快</p><p>Monment 利用了物理中的动量概念,对于前几次的梯度进行记录并进行移动加权平均,使得参数更新减少了震荡的情况</p><p>Adgard 自动更新学习率,来控制参数的更新</p><p>Adam 通过一阶矩和二阶矩分别控制参数的更新(移动加权前几次的梯度),控制学习率的自动更新(梯度的平方根),通过偏差,减少误差 </p><p><br></p>
发表于 2020-10-01 16:32:26 回复(0)
sgd,随机小批量梯度计算,更新全部 momt:梯度矢量得以保留 adgrad和adam,对于每个训练样本梯度的计算方式都不同
发表于 2019-08-08 08:58:21 回复(0)
SGD,Momentum,Adagrad,Adam原理
SGD:随机梯度下降,每一步在训练集中选择一个实例,并且基于该实例计算梯度。相对于批量梯度下降而言,它具有速度快的优点,在成本函数不规则时可以帮助算法跳出局部最优值,但是不稳定,成本函数并非稳定地慢慢下降,而是上上下下,即使达到了最优值,依旧会持续反弹,永远不会停止,若要解决这个问题,可以逐步降低学习率。
Momentum:动量优化。梯度下降方法只关心当前梯度,而不关心较早的梯度,如果局部梯度很小,那么成本函数下降得会非常慢。动量优化引入了动量向量的概念,参数沿着动量向量进行更新。每一次迭代,动量向量都会减去局部梯度(乘以学习率),换言之,局部梯度在动量优化中提供的是加速度而非速度。为了防止动量向量变得过大,也为了消除在最小值附近的震荡,需要将动量向量乘以超参数Beta。
Adagrad:对于梯度下降而言,每一次都沿着最陡的坡度进行下降,但是这并不代表可以更早更直接地指向全局最优解,因此Adagrad实际上是对梯度进行校正,它的方法是使梯度在各个维度上按比例地缩小,也就是降低学习率,随着迭代次数的增加,学习率会越来越小,并且在某个维度上越陡峭,学习率降低得就越快,在这个维度上越平缓,学习率降低得就越慢。简而言之,它通过调节学习率,使结果更早地指向全局最优解。
Adam:Momentum是对下降方向进行优化,AdaGrad是对学习率进行优化,而Adam是两者的结合。
发表于 2021-03-09 09:48:21 回复(0)
发表于 2022-08-16 23:51:54 回复(0)
666
发表于 2021-12-04 17:01:03 回复(0)
SGD:随机梯度下降法 与训练batch有关 Momentum:梯度下降呈指数衰减 Adagrad:训练中会改变学习率 Adam:学习率在一定范围内变化
发表于 2021-06-20 00:37:52 回复(0)
SGD每次计算一个样本的loss更新一次参数。批量梯度下降,每次计算所有训练数据loss,求平均,更新参数。小批量梯度下降,选择适当的数据量,计算部分一部分数据loss,求平均,更新参数。一般来说,批量梯度下降loss曲线更加平稳,但是对于大量数据,训练速度慢。随机梯度下降,在有异常值情况下,loss曲线不稳定,但是速度快。小批量梯度下降法是综合他们俩的优点,使用更加频繁。 动量主要是针对SGD随机梯度下降时loss不稳定,下降过程陷入鞍点问题。动量将考虑当前样本参数更新之前的样本信息,这样会使得异常点影响降低。同样在鞍点,样本考虑当前样本参数更新前样本信息,会使得在鞍点有动力突破。 adagrad称为自适应梯度算法,随着迭代次数增加,学习率变小,对于不同参数,使用不一样的学习率。 Adam算法是RMSProp的动量版本,一般效果最好。
发表于 2021-01-31 20:42:27 回复(0)
<p>随机梯度下降每次随机从训练集中选择一个样本,训练模型,并更新梯度,动量梯度下降,在每个batch上,计算出梯度,再用上一个batch的动量乘以权重 加上梯度乘以一减权重 作为这一时刻的动量,去更新梯度</p><p><br></p>
发表于 2020-12-23 22:08:45 回复(0)
<p>A</p>
发表于 2020-12-14 19:14:51 回复(0)
<p>SGD:随机梯度下降</p><p>momentum:基于动量的优化</p><p>adagard:学习率自动变更</p><p>adam:基于一阶矩估计和二阶矩估计的学习率更新</p>
发表于 2020-10-21 08:06:33 回复(0)
<p>hello</p><p><br></p>
发表于 2020-09-12 01:29:54 回复(0)
<p>通过反向传播机制,获得损失函数相对于权重的梯度,然后沿着梯度下降的方向进行权重更新,使损失函数不断优化</p>
发表于 2020-08-07 18:05:15 回复(0)
<p>随机梯度下降</p>
发表于 2020-07-14 18:33:02 回复(0)
<p>随机梯度下降</p>
发表于 2020-07-13 11:29:56 回复(0)

<p>SGD的每个step使用样本的一小部分(称为minibatch)进行训练。</p><p>momemtum在更新参数的时候不只试用当前的梯度,还加上了历史梯度。一般当前梯度的权重取0.1或0.01。</p><p><br></p>

adagrad则使用当前梯度除以历史梯度之和来更新梯度。

adam

编辑于 2020-06-23 18:33:45 回复(0)
<p>11</p>
编辑于 2020-05-03 00:50:05 回复(0)