梯度下降算法如何确定权重变化的方向

人工智能 机器学习 线性回归 梯度下降
2021-11-10 13:26:05

梯度下降算法的结果是一个向量。那么这个算法是如何决定权重变化的方向的呢?我们给出步长的超参数。但是,为了减少线性回归模型中的损失函数,该算法如何确定权重变化的向量方向?

2个回答

首先,梯度下降是做什么的?梯度下降是一种微积分工具,我们通过迭代运行梯度下降算法来确定机器学习算法或神经网络中使用的参数(此处为权重)。

从梯度下降的一次迭代中获得的向量告诉我们什么?它告诉我们权重变化的方向(当权重被视为向量时),以最大程度地减少损失函数输出的值。为什么梯度下降给出这样一个方向背后的直觉可以在这里找到:

在一般情况下,成本/损失函数是一个 n 维抛物面(我们设计函数使其凸出)。

在此处输入图像描述

x具有和y作为自变量的二维抛物面。

现在为什么我们只减少负梯度方向的权重?为什么不是其他方向?

由于我们想降低线性回归的成本以获得更好的预测,我们只选择负梯度下降方向,因为它是最陡下降的方向,即使我们可以选择其他可能的向量方向来降低成本,但是负梯度下降方向确保:

  • 成本总是降低(如果步长是正确的,并且通常只在凸函数的情况下,例如抛物面)。
  • 如果我们朝那个方向移动,成本会减少最大量,所以我们不必担心如果我们朝那个方向移动,成本是否会降低。

此外,我们使用学习率alpha来缩放我们想要减少权重的数量。

编辑:正如@pasaba 所指出的,误差函数可能不是抛物面,但一般来说,一个好的成本函数看起来像一个带有倾斜轴的抛物面。

我们可以分析一个基本的常见示例:由 NN 逼近 AND 逻辑门。

NN 的输入为“x1”和“x2”,其输出为“y”。NN要学习的数据是:

在此处输入图像描述

基本 NN 有一个带有激活函数 sigmoid 的中间单元和一个输出单元标识函数。这意味着:

在此处输入图像描述

(注意对称性,我们假设 w1=w2)

然后,错误是:

在此处输入图像描述

这些是这个函数的一些图:

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

这是 e 的 w 导数:

在此处输入图像描述

此图的Sage Math 代码(链接):

s(x)=1/(1+e^(-1*x))
e(w,b)=(1/2)*(s(b)^2+2*s(w+b)^2+(1-s(2*w+b))^2)
plot3d(e(w,b),(w,-5,5),(b,-5,5),adaptive=True, color=rainbow(60, 'rgbtuple'))

edw=e.derivative(w)
plot3d(edw(w,b),(w,-5,5),(b,-5,5),adaptive=True, color=rainbow(60, 'rgbtuple'))

(PS:请在此堆栈交换上激活乳胶)。