为什么在不是神经网络的东西中使用优化器?

数据挖掘 机器学习 Python 神经网络
2022-02-23 05:48:28

为什么在不是神经网络的东西中使用优化器?

在神经风格迁移架构中,更新的是图像而不是神经网络权重。

在 stylegan 编码器(在潜在空间中查找图像)中,更新潜在空间而不是神经网络的权重。

为什么它在这些情况下有效,因为更新的不是神经网络的权重?

1个回答

一般来说,优化器不止一种。基于梯度的优化器,例如梯度下降、随机梯度下降、Adam、Adagrad、RMSProp,构成了一大类优化器,只要可以计算梯度,它就可以找到标量函数的最小值或最大值。

然而,在你的问题中,你实际上只关注基于梯度的优化器——为什么它们可以用来改变输入图像或潜在空间,以及神经网络权重?

答案是这些优化器不是特定于神经网络权重,甚至不是神经网络。它们适用于以下情况:

  • 您可以使用标量函数衡量任务的成功 - 通常这是要最小化的损失或成本函数,但它也可以是您希望最大化的数字分数。

  • 该任务涉及您可以控制的参数。这是一组可以更改以解决问题的变量。神经网络的权重就是一个例子,但如果您的目标是找到符合某些标准的图像(例如看起来像一张人脸照片),那么图像中的像素也是如此。

  • 您有一种方法可以根据您可以控制的参数来估计该函数的梯度。通常使用某种形式的反向传播来从损失函数获取您关心的参数。在风格迁移或 stylegan 中就是这种情况,但这不是必需的。

基本要求是能够根据可以更改的参数估计评分函数的梯度。然后您可以最小化或最大化该函数 - 或者至少找到局部最小值和最大值。神经网络权重只是该方法的一个常见示例。

同样,使用小批量输入/输出对示例是估计梯度的一种常用方法。它通常在学习如何从数据集中进行泛化时使用,但并不是获得梯度的唯一可能方法 - 哪些方法可用且有意义取决于您需要解决的优化问题。