您能告诉我随机梯度下降(SGD)和反向传播之间的区别吗?
反向传播是一种在有向计算图中(例如神经网络)中“计算梯度”的有效方法。这不是一种学习方法,而是一种很好的计算技巧,经常在学习方法中使用。这实际上是导数的链式法则的简单实现,它让您能够根据图的大小在线性时间内计算所有所需的偏导数(而朴素的梯度计算将随着深度呈指数级增长)。 SGD 是众多优化方法中的一种,即
一阶优化器,意思是它基于对目标的梯度的分析。因此,就神经网络而言,它通常与反向传播一起应用以进行有效的更新。您还可以将 SGD 应用于以不同方式(通过采样、数值逼近器等)获得的梯度。对称地,您也可以将其他优化技术与反向传播一起使用,所有可以使用梯度/雅可比的技术。 这种常见的误解来自这样一个事实,即为了简单起见,人们有时会说“使用反向传播进行训练”,实际上意味着(如果他们没有指定优化器)“使用反向传播作为梯度计算技术通过 SGD 进行训练”。此外,在旧教科书中,您可以找到诸如“增量规则”和其他有点令人困惑的术语之类的内容,它们描述完全相同的事物(因为神经网络社区很长一段时间都有点独立于一般优化社区)。
因此你有两层抽象:
梯度计算 - 反向传播发挥作用的地方
(SGD)是一种优化方法,例如最小化损失函数。 在 SGD 中,您在每次迭代时使用
1 个示例来更新模型的权重,具体取决于此示例导致的误差,而不是使用 所有 示例的误差平均值(如“简单的“梯度下降),在每次迭代中。为此,SGD 需要计算“模型的梯度”。
反向传播是一种计算 SGD 使用的“梯度”的有效技术。
是一种寻找每个参数的误差导数的技巧W[i]
) 更新 W[i]