深度学习常见优化器(一):什么是深度学习优化器
在深度学习中,我们有损失的概念,它告诉我们模型在当前时刻的表现如何。现在,我们需要利用这种损失来训练我们的网络,使其性能更好。本质上,我们需要做的就是计算损失并尽量减少损失,因为较低的损失意味着我们的模型将表现得更好。最小化(或最大化)任何数学表达式的过程称为优化,现在我们需要了解如何将这些优化方法用于神经网络。
在神经网络中,每层之间都有许多权重。我们必须了解,网络中的每一个权重都会以某种方式影响网络的输出,因为它们都直接或间接地连接到输出。
因此,可以说,如果我们更改神经网络中的任何特定权重,则网络的输出也将发生变化。
如下图中所示,我们采用了3种不同的方案。在每种情况下,我们都选择一些随机权重,然后对其进行更改。更改选定的权重后,我们还看到了神经网络的哪些部分受到影响,哪些没有受到影响。在所有这三种情况下,网络的最后一层至少有一个受影响的节点。由于最后一层的所有节点也都连接到输出节点,因此可以肯定地说,只要最后一层的某些部分受到影响,输出节点也会受到影响。
从图中我们还可以观察到,权重距离输出节点较远(更靠近网络的起点),会影响中间的更多节点。因此,可以说它们非常间接地影响输出,因为它们和输出之间有很多权重。靠近输出的权重影响之间的较少节点,因此它们对输出节点有更直接的影响。
现在,我们了解了如何通过更改权重来更改网络的输出,让我们继续了解如何最小化损失函数。改变权重将改变输出。改变输出会改变损失,因为损失是预测值(Y_pred)的函数,该值就是网络的输出。因此,可以说改变权重最终将改变损失。
我们已经建立了权重和最终损失之间的关系,但是到目前为止,我们仅谈论改变。变化可以意味着增加或减少,但我们需要减少损失。因此,现在我们需要了解如何以减少损失的方式更改权重。此过程称为优化。
1.有哪些常见的优化器
01.随机梯度下降(SGD)
从数学角度来看,我们可以使用偏导数来做到这一点。偏导数使我们能够理解两个数学表达式如何相互影响。让我们看一下X和Y,它们通过某种任意的数学关系相连。如果我们发现X的偏导数相对于 Y, 我们可以了解如何改变X会影响Y. 如果偏导数是正的,这意味着增加X也会对