SGD(随机梯度下降) vs 反向传播

请问您能告诉我随机梯度下降(SGD)和反向传播之间的区别吗?


回答:

反向传播是一种在计算有向图(如神经网络)中高效计算梯度的方法。这不是一种学习方法,而是一种常用于学习方法中的巧妙计算技巧。实际上,这是对链式法则的简单实现,它使您能够以图形大小的线性时间计算所有所需的偏导数(而 naive 的梯度计算会随着深度呈指数增长)。

SGD 是众多优化方法中的一种,即一阶优化器,这意味着它基于对目标函数梯度的分析。因此,在神经网络中,它通常与反向传播一起使用以进行高效更新。您也可以将 SGD 应用于以其他方式获得的梯度(通过采样、数值近似等)。对称地,您也可以将其他优化技术与反向传播一起使用,任何可以使用梯度/雅可比矩阵的方法都可以。

这种常见的误解源于人们为了简便,有时会说“用反向传播训练”,实际上这意味着(如果他们没有指定优化器)“使用反向传播作为梯度计算技术的 SGD 进行训练”。此外,在旧教科书中,您可以找到“delta 规则”等一些有点令人困惑的术语,这些术语描述的正是相同的事情(因为神经网络社区长期以来与一般优化社区有点独立)。

因此,您有两层抽象:

  • 梯度计算 – 反向传播在这里发挥作用
  • 优化层面 – 像 SGD、Adam、Rprop、BFGS 等技术在这里发挥作用,这些技术(如果它们是一阶或更高阶)使用上面计算的梯度

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注