梯度下降对每个优化器都至关重要吗?


Answers:


28

不能。梯度下降用于优化算法中,该算法使用梯度作为其步进运动的基础。AdamAdagradRMSProp都使用某种形式的梯度下降,但是它们并不能构成每个优化器。进化算法,例如粒子群优化遗传算法,是受自然现象启发而没有使用梯度的。贝叶斯优化Bayesian Optimization)等其他算法也从统计数据中汲取了灵感。

看看实际使用中的贝叶斯优化可视化: 贝叶斯优化实践

还有一些算法结合了来自进化和基于梯度的优化的概念。

基于非导数的优化算法在不规则非凸成本函数,不可微分成本函数或具有不同左导数或右导数的成本函数中尤其有用。

理解为什么可能会选择基于非导数的优化算法。看一下Rastrigin基准函数。基于梯度的优化不适用于具有这么多局部最小值的函数优化。

Rastrigin基准函数


非常感谢你。爱您的答案
InAFlash

8

根据标题:
否。只有特定类型的优化器才基于Gradient Descent。一个直接的反例是,优化是在不确定梯度的离散空间上进行的。

根据身体:
是的。Adam,Adagrad,RMSProp和其他类似的优化器(Nesterov ,Nadam 等)都在尝试为梯度下降提出自适应步长(学习率),以在不牺牲性能的情况下提高收敛速度(即导致更小的局部最小值/最大值)。

值得注意的是,还有牛顿法,以及类似的拟牛顿法,可用于损失函数的二阶导数(梯度下降可用于一阶导数)。由于实际问题中的大量模型参数,这些方法已失去了速度可扩展性与梯度下降的权衡。

一些额外的注意事项

  1. 损失函数的形状取决于模型参数和数据,因此选择最佳方法始终取决于任务,并且需要反复试验。

  2. 梯度下降的随机部分是通过使用一批数据而不是完整数据来实现的。该技术与所有提到的方法并行,这意味着所有方法都可以是随机的(使用一批数据)或确定性的(使用全部数据)。

  3. w21(0,1.1)(0,1)(0.43,0.9)


3

问题的答案可能是“否”。原因仅是由于可用的众多优化算法,但是选择一种算法很大程度上取决于上下文和进行优化的时间。例如,遗传算法是一种众所周知的优化方法,它内部没有任何梯度下降。在某些情况下,还有其他方法,例如回溯。都可以使用不逐步使用梯度下降的方法。

另一方面,对于诸如回归之类的任务,您可以找到用于解决问题的逼近形式以找到极值,但要注意的是,根据特征空间和输入数量,您可以选择接近形式方程式或梯度下降以减少计算次数。

尽管有许多优化算法,但由于多种原因,在神经网络中更多地使用了基于梯度下降的方法。首先,它们非常快。在深度学习中,您必须提供如此多的数据,以致无法将它们同时加载到内存中。因此,您必须应用批梯度方法进行优化。这是一些统计数据,但您可以考虑将带入网络的每个样本的分布与真实数据大致相似,并且可以足够有代表性地找到可以与成本函数的真实梯度接近的梯度。使用手中的所有数据来构造。

其次,对于简单的回归任务而言,使用矩阵及其极点逆的复杂度为,可以使用来找到参数。事实证明,简单的基于梯度的方法可以具有更好的性能。还应该提到的是,在前一种情况下,您必须将数据同时带到内存中,这在处理大数据任务的情况下是不可能的。O(n3)w=(XtX)1(Xty)

第三,存在优化问题,不一定具有封闭式解决方案。Logistic回归就是其中之一。


3

好吧,您选择了用于神经网络的优化器,这些优化器确实使用基于梯度的算法。大多数时候,基于梯度的算法被用于神经网络。这是为什么?好吧,您是希望尝试在不知道曲线斜率的情况下还是在不知道曲线的斜率的情况下找到最小值?当您无法计算梯度时,您将退回到无导数优化。话虽如此,在某些情况下,即使您具有有关渐变的信息,也最好使用无渐变方法。对于具有很多局部最小值的函数,通常是这种情况。基于种群的算法(例如进化策略和遗传算法)在这里占据上风。还有组合优化的分支,其中使用了整套不同的工具。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.