请问您能告诉我随机梯度下降(SGD)和反向传播之间的区别吗?
回答:
反向传播是一种在计算有向图(如神经网络)中高效计算梯度的方法。这不是一种学习方法,而是一种常用于学习方法中的巧妙计算技巧。实际上,这是对链式法则的简单实现,它使您能够以图形大小的线性时间计算所有所需的偏导数(而 naive 的梯度计算会随着深度呈指数增长)。
SGD 是众多优化方法中的一种,即一阶优化器,这意味着它基于对目标函数梯度的分析。因此,在神经网络中,它通常与反向传播一起使用以进行高效更新。您也可以将 SGD 应用于以其他方式获得的梯度(通过采样、数值近似等)。对称地,您也可以将其他优化技术与反向传播一起使用,任何可以使用梯度/雅可比矩阵的方法都可以。
这种常见的误解源于人们为了简便,有时会说“用反向传播训练”,实际上这意味着(如果他们没有指定优化器)“使用反向传播作为梯度计算技术的 SGD 进行训练”。此外,在旧教科书中,您可以找到“delta 规则”等一些有点令人困惑的术语,这些术语描述的正是相同的事情(因为神经网络社区长期以来与一般优化社区有点独立)。
因此,您有两层抽象:
- 梯度计算 – 反向传播在这里发挥作用
- 优化层面 – 像 SGD、Adam、Rprop、BFGS 等技术在这里发挥作用,这些技术(如果它们是一阶或更高阶)使用上面计算的梯度