Skip to content

Latest commit

 

History

History
193 lines (105 loc) · 11.6 KB

difference-between-backpropagation-and-stochastic-gradient-descent.md

File metadata and controls

193 lines (105 loc) · 11.6 KB

反向传播和随机梯度下降的区别

原文:https://machinelearningmastery.com/difference-between-backpropagation-and-stochastic-gradient-descent/

最后更新于 2021 年 2 月 1 日

对于初学者来说,关于使用什么算法来训练深度学习神经网络模型有很多困惑。

经常听到神经网络使用误差反向传播算法或随机梯度下降算法学习有时,这些算法中的任何一种都被用作神经网络如何适合训练数据集的简写,尽管在许多情况下,对于这些算法是什么、它们如何相关以及它们如何协同工作有着深刻的困惑。

本教程旨在明确随机梯度下降和反向传播算法在网络间训练中的作用。

在本教程中,您将发现随机梯度下降和反向传播算法之间的区别。

完成本教程后,您将知道:

  • 随机梯度下降是一种优化算法,用于最小化预测模型相对于训练数据集的损失。
  • 反向传播是一种自动微分算法,用于计算神经网络图结构中权重的梯度。
  • 随机梯度下降和误差算法的反向传播一起用于训练神经网络模型。

我们开始吧。

Difference Between Backpropagation and Stochastic Gradient Descent

反向传播和随机梯度下降的区别 图片由克里斯蒂安·科林斯提供,保留部分权利。

教程概述

本教程分为三个部分;它们是:

  • 随机梯度下降
  • 反向传播算法
  • 带反向传播的随机梯度下降

随机梯度下降

梯度下降是一种优化算法,它为目标函数寻找一组输入变量,得到目标函数的最小值,称为函数的最小值。

顾名思义,梯度下降涉及计算目标函数的梯度。

你可能还记得微积分中,函数的一阶导数计算函数在给定点的斜率或曲率。从左向右读,正导数表示目标函数是上坡的,负导数表示目标函数是下坡的。

  • 导数:目标函数相对于该函数特定输入值的斜率或曲率。

如果目标函数接受多个输入变量,它们可以一起作为变量向量。处理向量和矩阵被称为线性代数,用线性代数的结构做微积分被称为矩阵微积分或向量微积分。在向量微积分中,一阶导数(偏导数)的向量一般称为目标函数的梯度。

  • 梯度:目标函数相对于输入变量的偏导数向量。

梯度下降算法需要计算目标函数相对于输入值的特定值的梯度。梯度指向上坡,因此每个输入变量的负梯度跟随下坡,以产生每个变量的新值,这导致目标函数的较低评估。

步长用于缩放梯度,并控制每个输入变量相对于梯度的变化程度。

  • 步长:学习率或α,一个超参数,用于控制每个输入变量相对于梯度的变化量。

重复该过程,直到找到目标函数的最小值,评估出最大数量的候选解,或者某个其他停止条件。

梯度下降可适用于最小化训练数据集中预测模型的损失函数,例如分类或回归模型。这种适应被称为随机梯度下降

  • 随机梯度下降:梯度下降优化算法的扩展,用于最小化训练数据集上预测模型的损失函数。

目标函数作为数据集上的损失或误差函数,如回归的均方误差或分类的交叉熵。模型的参数被作为目标函数的输入变量。

  • 损失功能:正在最小化的目标功能。
  • 模型参数:正在优化的损耗函数的输入参数。

由于目标函数相对于输入变量的梯度是有噪声的(例如概率近似),因此该算法被称为“T0”随机。这意味着梯度的评估可能具有统计噪声,该噪声可能会模糊真实的潜在梯度信号,这是由于训练数据集中的稀疏性和噪声造成的。

随机梯度下降的观点是梯度是一种期望。可以使用一小组样本来近似估计期望值。

—第 151 页,深度学习,2016。

随机梯度下降可以用于训练(优化)许多不同的模型类型,如线性回归和逻辑回归,尽管通常已经发现了更有效的优化算法,并且应该被使用。

随机梯度下降(SGD)及其变体可能是机器学习,特别是深度学习中最常用的优化算法。

—第 294 页,深度学习,2016。

随机梯度下降是发现的用于训练人工神经网络的最有效算法,其中权重是模型参数,目标损失函数是在整个训练数据集的一个子集(批次)上平均的预测误差。

几乎所有的深度学习都是由一个非常重要的算法提供动力的:随机梯度下降或 SGD。

—第 151 页,深度学习,2016。

随机梯度下降有许多流行的扩展,旨在改进优化过程(在更少的迭代中损失相同或更好),例如动量、均方根传播(RMSProp)和自适应运动估计(Adam)

当使用随机梯度下降来训练神经网络时,一个挑战是如何计算网络中隐藏层中节点的梯度,例如距离模型输出层一步或多步的节点。

这需要微积分中一种称为链式规则的特定技术,以及一种实现链式规则的有效算法,该算法可用于计算网络中任何参数的梯度。这种算法被称为反向传播。

反向传播算法

反向传播,也称为“反向传播,或简称为“反向传播,是一种计算损失函数相对于模型变量的梯度的算法。

  • 反向传播:计算损失函数相对于模型变量的梯度的算法。

你可能会从微积分中回想起,一个输入变量的特定值的函数的一阶导数是该输入的函数的变化率或曲率。当我们有一个函数的多个输入变量时,它们形成一个向量,一阶导数(偏导数)的向量称为梯度(即向量微积分)。

  • 梯度:特定输入值相对于目标函数的偏导数向量。

在训练神经网络模型时使用反向传播来计算网络模型中每个权重的梯度。然后,优化算法使用梯度来更新模型权重。

该算法被明确开发用于计算图结构中变量的梯度,从图的输出朝图的输入反向工作,传播用于计算每个变量梯度的预测输出中的误差。

反向传播算法,通常简称为反向传播,允许来自成本的信息通过网络反向流动,以计算梯度。

—第 204 页,深度学习,2016。

损失函数表示模型或误差函数的误差,权重是函数的变量,因此误差函数相对于权重的梯度被称为误差梯度。

  • 误差函数:训练神经网络时损失函数最小。
  • 权重:网络参数作为损耗函数的输入值。
  • 误差梯度:损耗函数相对于参数的一阶导数。

这给算法起了个名字“反向传播”,或者有时是“误差反向传播”或者是“误差反向传播

  • 误差反向传播:评论如何从输出层开始通过网络图递归反向计算梯度。

该算法涉及微积分中链规则的递归应用(不同于概率中的链规则),该规则用于在已知导数的母函数导数的情况下计算子函数的导数。

微积分的链式法则用来计算由导数已知的其他函数组成的函数的导数。反向传播是一种计算链规则的算法,具有高效的特定操作顺序。

—第 205 页,深度学习,2016。

  • 链式法则:利用导数已知的相关函数计算函数导数的微积分公式。

还有其他算法来计算链规则,但是反向传播算法是使用神经网络构造的特定图的有效算法。

公平地说,反向传播算法是自动微分算法的一种,属于一类叫做反向累加的微分技术。

这里描述的反向传播算法只是自动微分的一种方法。这是一种更广泛的称为反向模式积累技术的特殊情况。

—第 222 页,深度学习,2016。

虽然反向传播是为了训练神经网络模型而发展起来的,但无论是特定的反向传播算法,还是其高效实现的链式规则公式,都可以更普遍地用于计算函数的导数。

此外,反向传播经常被误解为特定于多层神经网络,但原则上它可以计算任何函数的导数…

—第 204 页,深度学习,2016。

带反向传播的随机梯度下降

随机梯度下降是一种优化算法,可用于训练神经网络模型。

随机梯度下降算法要求为模型中的每个变量计算梯度,以便可以计算变量的新值。

反向传播是一种自动微分算法,可用于计算神经网络中参数的梯度。

反向传播算法和随机梯度下降算法可以一起用于训练神经网络。我们可以称之为“反向传播的随机梯度下降”

  • 带反向传播的随机梯度下降:参考优化算法和梯度计算算法,对用于训练神经网络的一般算法的更完整描述。

从业者经常说他们使用反向传播来训练他们的模型。从技术上讲,这是不正确的。即使作为一个空头,这也是不正确的。反向传播不是优化算法,不能用于训练模型。

反向传播这个术语经常被误解为多层神经网络的整个学习算法。实际上,反向传播仅指计算梯度的方法,而另一种算法,如随机梯度下降,用于使用该梯度执行学习。

—第 204 页,深度学习,2016。

公平地说,神经网络是使用随机梯度下降作为速记来训练或学习的,因为假设反向传播算法被用来计算梯度作为优化过程的一部分。

也就是说,可以使用不同的算法来优化神经网络的参数,例如不需要梯度的遗传算法。如果使用随机梯度下降优化算法,可以使用不同的算法来计算损失函数相对于模型参数的梯度,例如实现链式规则的替代算法。

然而,带反向传播的“*随机梯度下降”*组合被广泛使用,因为它是迄今为止为拟合神经网络模型而开发的最有效的通用方法。

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

文章

摘要

在本教程中,您发现了随机梯度下降和反向传播算法之间的区别。

具体来说,您了解到:

  • 随机梯度下降是一种优化算法,用于最小化预测模型相对于训练数据集的损失。
  • 反向传播是一种自动微分算法,用于计算神经网络图结构中权重的梯度。
  • 随机梯度下降和误差算法的反向传播一起用于训练神经网络模型。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。