在深度学习的领域中,许多初学者对于反向传播(Backpropagation)和梯度下降(Gradient Descent)的区别感到困惑。这种困惑源于这两个概念在实际应用中的紧密联系。它们共同的目标是提高神经网络的预测准确性,通过减少神经网络的输出误差来实现这一目标。尽管它们都用于提高神经网络的预测准确性,但在这一过程中,它们扮演着完全不同的角色。反向传播负责计算梯度,而梯度下降则负责沿着梯度下降。
反向传播是一种用于训练前馈神经网络的算法,它在提高神经网络的预测中扮演着重要的角色。这是因为反向传播能够迭代地改善神经网络的输出。在前馈神经网络中,输入从输入层向前传递到输出层。反向传播通过将误差从输出层反向传播到输入层来帮助改善神经网络的输出。
要理解反向传播的工作原理,首先需要了解前馈网络是如何工作的。前馈网络由输入层、一个或多个隐藏层以及输出层组成。输入层接收神经网络的输入,每个输入都有一个与之关联的权重。这些与每个输入相关的权重是数值,它们指示输入在预测最终输出中的重要性。例如,与大权重相关的输入将比与小权重相关的输入对输出有更大的影响。
当神经网络首次被训练时,它首先被输入数据。由于神经网络尚未训练,不知道每个输入应该使用哪些权重。因此,每个输入都被随机分配一个权重。由于权重是随机分配的,神经网络可能会做出错误的预测。这将导致输出误差,即实际输出和预测输出之间的差异。成本函数测量这个误差。
成本函数(J)指示模型的准确性。它告诉预测输出值与实际值之间的差距有多大。它也被称为误差。因为成本函数量化了误差,目标是最小化成本函数。希望减少输出误差。由于权重影响误差,需要重新调整权重。需要调整权重,以便有一组最小化成本函数的权重组合。
这就是反向传播的用武之地...反向传播允许重新调整权重以减少输出误差。在反向传播期间,误差从输出层反向传播到输入层。然后使用这个误差来计算每个权重相对于成本函数的梯度。本质上,反向传播旨在计算成本函数的负梯度。这个负梯度有助于调整权重。它给出了需要如何改变权重以减少成本函数的想法。
反向传播使用链式法则来计算成本函数的梯度。链式法则涉及求导。这涉及到计算每个参数的偏导数。通过将一个权重视为变量,而将其他权重视为常数来计算这些导数。这样做的结果,得到了梯度。
一旦计算出梯度,就可以调整权重。权重的调整是使用一个称为梯度下降的过程来完成的。梯度下降是一个优化算法,用于找到最小化成本函数的权重。最小化成本函数意味着到达成本函数的最低点。因此,梯度下降的目标是找到对应于成本函数最低点的权重。
为了找到这个权重,必须沿着成本函数向下导航,直到找到它的最低点。但是首先,为了导航成本函数,需要两件事:导航的方向和导航的步长大小。
导航成本函数的方向是使用梯度找到的。梯度下降使用反向传播计算出的梯度。这些梯度用于确定导航的方向,以找到最小点。具体来说,目标是找到负梯度。这是因为负梯度表示下降的斜率。下降的斜率意味着向下移动将使到达最低点。例如:
gradient = -1 * (partial derivative of cost function with respect to weight)
导航成本函数的步长大小是使用学习率来确定的。学习率是一个调整参数,它决定了梯度下降每次迭代的步长大小。它决定了沿着斜坡向下移动的速度。
步长在确保优化时间和准确性之间的平衡中起着重要作用。步长由参数α(阿尔法)来衡量。α小意味着步长小,α大意味着步长大。如果步长太大,可能完全错过最低点。这可能导致不准确的结果。如果步长太小,优化过程可能需要太多时间。这将导致计算能力的浪费。
步长根据成本函数的行为进行评估和更新。成本函数的梯度越高,斜率越陡,模型学习越快(高学习率)。高学习率导致更高的步长值,低学习率导致更低的步长值。如果成本函数的梯度为零,则模型停止学习。
导航成本函数包括调整权重。权重的调整使用以下公式:
new_weight = old_weight - learning_rate * gradient
这是梯度下降的公式。正如所看到的,为了获得新的权重,使用梯度、学习率和初始权重。调整权重包括多次迭代。每次迭代都向下迈出新的一步,并计算新的权重。使用初始权重和梯度以及学习率,可以确定后续的权重。
让考虑一个成本函数的图形示例:从成本函数的图形中,可以看到:
要开始下降成本函数,首先初始化一个随机权重。然后,向下迈出一步,并使用梯度和学习率获得新的权重。有了梯度,可以知道导航的方向。可以使用学习率知道导航成本函数的步长大小。然后可以使用梯度下降公式获得新的权重。重复这个过程,直到到达成本函数的最低点。
一旦到达最低点,就找到了对应于成本函数最低点的权重。