【白话机器学习系列】白话梯度下降

白话梯度下降

梯度下降是机器学习中最常见的优化算法之一。理解它的基本实现是理解所有基于它构建的高级优化算法的基础。

在这里插入图片描述

文章目录

    • 优化算法
    • 一维梯度下降
    • 均方误差梯度下降
      • 什么是均方误差
      • 单权重
      • 双权重
      • 三权重
      • 三个以上权重
    • 矩阵求导
    • 结论

优化算法

在这里插入图片描述

在机器学习中,优化是寻找理想参数或权重以最大化或最小化成本或损失函数的过程。全局最大值是函数定义域上的最大值,而全局最小值是函数的最小值。虽然只有一个全局最大值和/或最小值,但可以有许多局部最大值和最小值。成本函数的全局最小值或最大值指示模型参数生成接近实际目标的预测。训练模型时,局部最大值和最小值可能会导致问题,因此应始终留意它们的存在。上图显示了每种最大值/最小值的示例。

优化算法有几种不同类别的算法:包围算法、局部下降算法、一阶算法和二阶算法。本文的重点是使用一阶导数进行优化的一阶算法。在此类别中,梯度下降算法是最受欢迎的。

一维梯度下降

梯度下降是一种一阶迭代优化算法,用于最小化成本函数。通过使用偏导数、方向和学习率,梯度下降减少了预测值和实际值之间的误差或差异。

梯度下降背后的思想是每个权重的导数将揭示其方向和对成本函数的影响。下图中,成本函数为 f ( w ) = w 2 f(w) = w^2 f(w)=w2,它是一条抛物线。最小值位于 (0,0),当前权重为 − 5.6 -5.6 5.6。当前损失为 31.36 31.36 31.36,橙色线代表导数,或权重的当前变化率,即 − 11.2 -11.2 11.2。这表明权重需要“下坡”移动——或者变得更正——才能达到损失为 0 0 0 。这就是梯度下降的用武之地。

在这里插入图片描述

通过使用称为学习率的值缩放梯度并从其权重的当前值中减去缩放后的梯度,输出将最小化。可以在下图中看到。 在十次迭代( w 0 → w 9 w_0 \to w_9 w0w9)中,使用 0.1 的学习率来最小化成本函数。

在这里插入图片描述

在下面的算法步骤中,权重由 w w w 表示, j j j 表示其当前值, j + 1 j+1 j+1 表示其新值。衡量误差的成本函数用 f f f 表示,偏导数是成本函数相对于参数的梯度。学习率用 α \alpha α 表示。

  1. 选择学习率和迭代次数

  2. 选择参数的随机值

  3. 用下面的公式更新参数

w j + 1 = w j − α ∂ ∂ w j f ( w j ) w_{j+1} = w_j-\alpha\frac{\partial}{\partial_{w_j}}f(w_j) wj+1=wjαwjf(wj)

  1. 重复第三步,直到达到最大迭代次数

当对函数求偏导数或梯度时,一次只能评估一个参数,其他参数被视为常数。对于上面的例子, f ( w ) = w 2 f(w) = w^2 f(w)=w2,只有一个参数,因此导数为 f ′ ( w ) = 2 w f'(w) = 2w f(w)=2w。 更新参数的公式如下:
w j + 1 = w j − α ( 2 w j ) w_{j+1} = w_j-\alpha(2w_j) wj+1=wjα(2wj)
假设学习率为 0.1 0.1 0.1,初始权重为 − 5.6 -5.6 5.6,前十次迭代如下:

在这里插入图片描述

上表展示了公式的每个组成部分如何帮助最大限度地减少损失。通过负缩放梯度,新权重趋近于0,斜率变得不那么陡。随着斜率逐渐变小,每次迭代都会产生更小的更新。

梯度下降的这种基本实现可以应用于几乎任何损失函数,包括具有大量权重的损失函数。

均方误差梯度下降

什么是均方误差

机器学习中流行的损失函数是均方误差 (MSE)。
M S E = 1 n ∑ i = 1 n ( Y ^ i − Y i ) 2 MSE = \frac{1}{n}\sum_{i=1}^n(\hat Y_i-Y_i)^2 MSE=n1i=1n(Y^iYi)2

该函数用于计算模型的预测 ( Y ^ \hat Y Y^) 和预期输出 ( Y Y Y) 之间的差异。然后对差值进行平方以确保输出始终为正。这意味着计算差值时可以先考虑 Y ^ \hat Y Y^ Y Y Y。这在一组大小为 n n n 的点上重复进行。通过将所有这些点的平方差相加并除以 n n n,得到均方差(误差)。这是同时评估模型在所有点上的表现的简单方法。下面是一个简单的例子:

在这里插入图片描述

在此公式中, Y ^ \hat Y Y^ 代表模型的预测。在回归中,模型的方程可能包含一个或多个权重,具体取决于训练数据的要求。下表反映了这些情况。

权重数量 Y ^ \hat Y Y^MSE
1 w X wX wX 1 n ∑ i = 1 n ( w X i − Y i ) 2 \frac{1}{n}\sum_{i=1}^n(wX_i-Y_i)^2 n1i=1n(wXiYi)2
2 w 1 X + w 0 w_1X+w_0 w1X+w0 1 n ∑ i = 1 n ( w 1 X i + w 0 − Y i ) 2 \frac{1}{n}\sum_{i=1}^n(w_1X_i+w_0-Y_i)^2 n1i=1n(w1Xi+w0Yi)2
3 w 2 X 2 + w 1 X 1 + w 0 w_2X_2+w_1X_1+w_0 w2X2+w1X1+w0 1 n ∑ i = 1 n ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 \frac{1}{n}\sum_{i=1}^n(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2 n1i=1n(w2X2i+w1X1i+w0Yi)2
k k k w k X k + ⋯ + w 2 X 2 + w 1 X 1 + w 0 w_kX_k+\dots+w_2X_2+w_1X_1+w_0 wkXk++w2X2+w1X1+w0 1 n ∑ i = 1 n ( w k X k i + ⋯ + w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 \frac{1}{n}\sum_{i=1}^n(w_kX_{ki}+\dots+w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2 n1i=1n(wkXki++w2X2i+w1X1i+w0Yi)2

现在,要使用这些方程中的任何一个执行梯度下降,必须计算它们的梯度。梯度包含函数的偏导数:
∇ MSE = [ ∂ MSE ∂ w 0 … ∂ MSE ∂ w k ] \nabla \text{MSE} = \begin{bmatrix} \frac{\partial \text{MSE}}{\partial w_0} \\ \dots\\ \frac{\partial \text{MSE}}{\partial w_k} \end{bmatrix} MSE= w0MSEwkMSE
必须计算每个权重的偏导数。偏导数的计算方式与普通导数相同,但每个未考虑的变量都必须视为常数。

单权重

∇ 1 n ∑ i = 1 n ( w X i − Y i ) 2 = [ ∂ ∂ w [ 1 n ∑ i = 1 n ( w X i − Y i ) 2 ] ] = 2 n ∑ i = 1 n X i ( w X i − Y i ) \nabla \frac{1}{n}\sum_{i=1}^n(wX_i-Y_i)^2 = \Bigg[\frac{\partial}{\partial w}\Big[\frac{1}{n}\sum_{i=1}^n(wX_i-Y_i)^2\Big]\Bigg] = \frac{2}{n}\sum_{i=1}^nX_i(wX_i-Y_i) n1i=1n(wXiYi)2=[w[n1i=1n(wXiYi)2]]=n2i=1nXi(wXiYi)

当仅用一个权重求 MSE 的梯度时,可以计算关于 w w w 的导数。 X X X Y Y Y n n n 必须被视为常数。考虑到这一点,分数和求和可以移到导数之外:
1 n ∑ i = 1 n ∂ ∂ w [ ( w X i − Y i ) 2 ] \frac{1}{n}\sum_{i=1}^n\frac{\partial}{\partial w}\Big[(wX_i-Y_i)^2\Big] n1i=1nw[(wXiYi)2]
从这里开始,可以利用链式法则计算关于 w w w 的导数:
1 n ∑ i = 1 n [ 2 ( w X i − Y i ) ∂ ∂ w ( w X i − Y i ) ] 1 n ∑ i = 1 n [ 2 ( w X i − Y i ) X i ] \frac{1}{n}\sum_{i=1}^n\Big[2(wX_i-Y_i)\frac{\partial}{\partial w}(wX_i-Y_i)\Big]\\ \frac{1}{n}\sum_{i=1}^n\Big[2(wX_i-Y_i)X_i\Big] n1i=1n[2(wXiYi)w(wXiYi)]n1i=1n[2(wXiYi)Xi]
这样可以简化为:
2 n ∑ i = 1 n X i ( w X i − Y i ) \frac{2}{n}\sum_{i=1}^nX_i(wX_i-Y_i) n2i=1nXi(wXiYi)

双权重

∇ 1 n ∑ i = 1 n ( w 1 X i + w 0 − Y i ) 2 = [ ∂ ∂ w 0 [ 1 n ∑ i = 1 n ( w 1 X i + w 0 − Y i ) 2 ] ∂ ∂ w 1 [ 1 n ∑ i = 1 n ( w 1 X i + w 0 − Y i ) 2 ] ] = [ 2 n ∑ i = 1 n ( w 1 X i + w 0 − Y i ) 2 n ∑ i = 1 n X i ( w 1 X i + w 0 − Y i ) ] \begin{aligned} \nabla \frac{1}{n}\sum_{i=1}^n(w_1X_i+w_0-Y_i)^2 &= \begin{bmatrix} \frac{\partial}{\partial w_0}\Big[\frac{1}{n}\sum_{i=1}^n(w_1X_i+w_0-Y_i)^2\Big] \\ \frac{\partial}{\partial w_1}\Big[\frac{1}{n}\sum_{i=1}^n(w_1X_i+w_0-Y_i)^2\Big] \end{bmatrix}\\ &=\begin{bmatrix} \frac{2}{n}\sum_{i=1}^n(w_1X_i+w_0-Y_i) \\ \frac{2}{n}\sum_{i=1}^nX_i(w_1X_i+w_0-Y_i) \end{bmatrix} \end{aligned} n1i=1n(w1Xi+w0Yi)2= w0[n1i=1n(w1Xi+w0Yi)2]w1[n1i=1n(w1Xi+w0Yi)2] =[n2i=1n(w1Xi+w0Yi)n2i=1nXi(w1Xi+w0Yi)]

当采用两个权重求 MSE 的梯度时,必须对两个参数 w 0 w_0 w0 w 1 w_1 w1 求偏导数。对 w 0 w_0 w0 求偏导数时, X X X Y Y Y n n n w 1 w_1 w1 被视为常数。对 w 1 w_1 w1 求偏导数时, X X X Y Y Y n n n w 0 w_0 w0 被视为常数。可以重复与前面示例相同的步骤。首先,分数和求和可以移到导数之外。
[ 1 n ∑ i = 1 n ∂ ∂ w 0 ( w 1 X i + w 0 − Y i ) 2 1 n ∑ i = 1 n ∂ ∂ w 1 ( w 1 X i + w 0 − Y i ) 2 ] \begin{bmatrix} \frac{1}{n}\sum_{i=1}^n\frac{\partial}{\partial w_0}(w_1X_i+w_0-Y_i)^2 \\ \frac{1}{n}\sum_{i=1}^n\frac{\partial}{\partial w_1}(w_1X_i+w_0-Y_i)^2 \end{bmatrix} [n1i=1nw0(w1Xi+w0Yi)2n1i=1nw1(w1Xi+w0Yi)2]
然后用链式法则计算每个权重的导数:
[ 1 n ∑ i = 1 n [ 2 ( w 1 X i + w 0 − Y i ) ∂ ∂ w 0 ( w 1 X i + w 0 − Y i ) ] 1 n ∑ i = 1 n [ 2 ( w 1 X i + w 0 − Y i ) ∂ ∂ w 1 ( w 1 X i + w 0 − Y i ) ] ] \begin{bmatrix} \frac{1}{n}\sum_{i=1}^n\Big[2(w_1X_i+w_0-Y_i)\frac{\partial}{\partial w_0}(w_1X_i+w_0-Y_i)\Big] \\ \frac{1}{n}\sum_{i=1}^n\Big[2(w_1X_i+w_0-Y_i)\frac{\partial}{\partial w_1}(w_1X_i+w_0-Y_i)\Big] \end{bmatrix} n1i=1n[2(w1Xi+w0Yi)w0(w1Xi+w0Yi)]n1i=1n[2(w1Xi+w0Yi)w1(w1Xi+w0Yi)]

[ 1 n ∑ i = 1 n [ 2 ( w 1 X i + w 0 − Y i ) 1 ] 1 n ∑ i = 1 n [ 2 ( w 1 X i + w 0 − Y i ) X i ] ] \begin{bmatrix} \frac{1}{n}\sum_{i=1}^n\Big[2(w_1X_i+w_0-Y_i)1\Big] \\ \frac{1}{n}\sum_{i=1}^n\Big[2(w_1X_i+w_0-Y_i)X_i\Big] \end{bmatrix} n1i=1n[2(w1Xi+w0Yi)1]n1i=1n[2(w1Xi+w0Yi)Xi]

最后化简为:
[ 2 n ∑ i = 1 n ( w 1 X i + w 0 − Y i ) 2 n ∑ i = 1 n X i ( w 1 X i + w 0 − Y i ) ] \begin{bmatrix} \frac{2}{n}\sum_{i=1}^n(w_1X_i+w_0-Y_i) \\ \frac{2}{n}\sum_{i=1}^nX_i(w_1X_i+w_0-Y_i) \end{bmatrix} [n2i=1n(w1Xi+w0Yi)n2i=1nXi(w1Xi+w0Yi)]
请注意,方程之间的唯一区别是 X X X

三权重

∇ 1 n ∑ i = 1 n ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 = [ ∂ ∂ w 0 [ 1 n ∑ i = 1 n ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 ] ∂ ∂ w 1 [ 1 n ∑ i = 1 n ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 ] ∂ ∂ w 2 [ 1 n ∑ i = 1 n ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 ] ] = [ 2 n ∑ i = 1 n ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 n ∑ i = 1 n X 1 i ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 n ∑ i = 1 n X 2 i ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) ] \begin{aligned} \nabla \frac{1}{n}\sum_{i=1}^n&(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2 \\ &= \begin{bmatrix} \frac{\partial}{\partial w_0}\Big[\frac{1}{n}\sum_{i=1}^n(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2\Big] \\ \frac{\partial}{\partial w_1}\Big[\frac{1}{n}\sum_{i=1}^n(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2\Big] \\ \frac{\partial}{\partial w_2}\Big[\frac{1}{n}\sum_{i=1}^n(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2\Big] \end{bmatrix}\\ &=\begin{bmatrix} \frac{2}{n}\sum_{i=1}^n(w_2X_{2i}+w_1X_{1i}+w_0-Y_i) \\ \frac{2}{n}\sum_{i=1}^nX_{1i}(w_2X_{2i}+w_1X_{1i}+w_0-Y_i) \\ \frac{2}{n}\sum_{i=1}^nX_{2i}(w_2X_{2i}+w_1X_{1i}+w_0-Y_i) \end{bmatrix} \end{aligned} n1i=1n(w2X2i+w1X1i+w0Yi)2= w0[n1i=1n(w2X2i+w1X1i+w0Yi)2]w1[n1i=1n(w2X2i+w1X1i+w0Yi)2]w2[n1i=1n(w2X2i+w1X1i+w0Yi)2] = n2i=1n(w2X2i+w1X1i+w0Yi)n2i=1nX1i(w2X2i+w1X1i+w0Yi)n2i=1nX2i(w2X2i+w1X1i+w0Yi)

当采用三个权重求 MSE 梯度时,必须对每个参数求偏导数。当对一个权重求偏导数时, X X X Y Y Y n n n 和其他两个权重将被视为常数。可以重复与前面示例相同的步骤。 首先,分数和求和可以移到导数之外。
[ 1 n ∑ i = 1 n ∂ ∂ w 0 ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 1 n ∑ i = 1 n ∂ ∂ w 1 ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 1 n ∑ i = 1 n ∂ ∂ w 2 ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 ] \begin{bmatrix} \frac{1}{n}\sum_{i=1}^n\frac{\partial}{\partial w_0}(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2 \\ \frac{1}{n}\sum_{i=1}^n\frac{\partial}{\partial w_1}(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2 \\ \frac{1}{n}\sum_{i=1}^n\frac{\partial}{\partial w_2}(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2 \end{bmatrix} n1i=1nw0(w2X2i+w1X1i+w0Yi)2n1i=1nw1(w2X2i+w1X1i+w0Yi)2n1i=1nw2(w2X2i+w1X1i+w0Yi)2
然后用链式法则计算每个权重的导数:
[ 1 n ∑ i = 1 n [ 2 ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) ∂ ∂ w 0 ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) ] 1 n ∑ i = 1 n [ 2 ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) ∂ ∂ w 1 ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) ] 1 n ∑ i = 1 n [ 2 ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) ∂ ∂ w 1 ( w 3 X 2 i + w 1 X 1 i + w 0 − Y i ) ] ] \begin{bmatrix} \frac{1}{n}\sum_{i=1}^n\Big[2(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)\frac{\partial}{\partial w_0}(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)\Big] \\ \frac{1}{n}\sum_{i=1}^n\Big[2(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)\frac{\partial}{\partial w_1}(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)\Big] \\ \frac{1}{n}\sum_{i=1}^n\Big[2(w_2X_{2i}+w_1X_{1i}+w_0-Y_i)\frac{\partial}{\partial w_1}(w_3X_{2i}+w_1X_{1i}+w_0-Y_i)\Big] \end{bmatrix} n1i=1n[2(w2X2i+w1X1i+w0Yi)w0(w2X2i+w1X1i+w0Yi)]n1i=1n[2(w2X2i+w1X1i+w0Yi)w1(w2X2i+w1X1i+w0Yi)]n1i=1n[2(w2X2i+w1X1i+w0Yi)w1(w3X2i+w1X1i+w0Yi)]
最后化简为:
[ 2 n ∑ i = 1 n ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 n ∑ i = 1 n X 1 i ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 n ∑ i = 1 n X 2 i ( w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) ] \begin{bmatrix} \frac{2}{n}\sum_{i=1}^n(w_2X_{2i}+w_1X_{1i}+w_0-Y_i) \\ \frac{2}{n}\sum_{i=1}^nX_{1i}(w_2X_{2i}+w_1X_{1i}+w_0-Y_i) \\ \frac{2}{n}\sum_{i=1}^nX_{2i}(w_2X_{2i}+w_1X_{1i}+w_0-Y_i) \end{bmatrix} n2i=1n(w2X2i+w1X1i+w0Yi)n2i=1nX1i(w2X2i+w1X1i+w0Yi)n2i=1nX2i(w2X2i+w1X1i+w0Yi)
如前所述,每个偏导数之间的唯一区别是输入特征 X X X。这可以在下一个示例中推广到 k k k 个权重。

三个以上权重

∇ 1 n ∑ i = 1 n ( w k X k i + ⋯ + w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 = [ ∂ ∂ w 0 [ 1 n ∑ i = 1 n ( w k X k i + ⋯ + w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 ] ∂ ∂ w 1 [ 1 n ∑ i = 1 n ( w k X k i + ⋯ + w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 ] ∂ ∂ w 2 [ 1 n ∑ i = 1 n ( w k X k i + ⋯ + w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 ] ⋮ ∂ ∂ w k [ 1 n ∑ i = 1 n ( w k X k i + ⋯ + w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 ] ] = [ 2 n ∑ i = 1 n ( w k X k i + ⋯ + w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 n ∑ i = 1 n X 1 i ( w k X k i + ⋯ + w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) 2 n ∑ i = 1 n X 2 i ( w k X k i + ⋯ + w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) ⋮ 2 n ∑ i = 1 n X k i ( w k X k i + ⋯ + w 2 X 2 i + w 1 X 1 i + w 0 − Y i ) ] \begin{aligned} \nabla \frac{1}{n}\sum_{i=1}^n&(w_kX_{ki}+\dots+w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2 \\ &= \begin{bmatrix} \frac{\partial}{\partial w_0}\Big[\frac{1}{n}\sum_{i=1}^n(w_kX_{ki}+\dots+w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2\Big] \\ \frac{\partial}{\partial w_1}\Big[\frac{1}{n}\sum_{i=1}^n(w_kX_{ki}+\dots+w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2\Big] \\ \frac{\partial}{\partial w_2}\Big[\frac{1}{n}\sum_{i=1}^n(w_kX_{ki}+\dots+w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2\Big] \\ \vdots \\ \frac{\partial}{\partial w_k}\Big[\frac{1}{n}\sum_{i=1}^n(w_kX_{ki}+\dots+w_2X_{2i}+w_1X_{1i}+w_0-Y_i)^2\Big] \end{bmatrix}\\ &=\begin{bmatrix} \frac{2}{n}\sum_{i=1}^n(w_kX_{ki}+\dots+w_2X_{2i}+w_1X_{1i}+w_0-Y_i) \\ \frac{2}{n}\sum_{i=1}^nX_{1i}(w_kX_{ki}+\dots+w_2X_{2i}+w_1X_{1i}+w_0-Y_i) \\ \frac{2}{n}\sum_{i=1}^nX_{2i}(w_kX_{ki}+\dots+w_2X_{2i}+w_1X_{1i}+w_0-Y_i) \\ \vdots \\ \frac{2}{n}\sum_{i=1}^nX_{ki}(w_kX_{ki}+\dots+w_2X_{2i}+w_1X_{1i}+w_0-Y_i) \end{bmatrix} \end{aligned} n1i=1n(wkXki++w2X2i+w1X1i+w0Yi)2= w0[n1i=1n(wkXki++w2X2i+w1X1i+w0Yi)2]w1[n1i=1n(wkXki++w2X2i+w1X1i+w0Yi)2]w2[n1i=1n(wkXki++w2X2i+w1X1i+w0Yi)2]wk[n1i=1n(wkXki++w2X2i+w1X1i+w0Yi)2] = n2i=1n(wkXki++w2X2i+w1X1i+w0Yi)n2i=1nX1i(wkXki++w2X2i+w1X1i+w0Yi)n2i=1nX2i(wkXki++w2X2i+w1X1i+w0Yi)n2i=1nXki(wkXki++w2X2i+w1X1i+w0Yi)

当采用 k k k 个权重求 MSE 的梯度时,必须对每个参数求偏导数。当对一个权重求偏导数时, X X X Y Y Y n n n 和其他 k − 1 k-1 k1 个权重将被视为常数。如前面的示例所示,当权重超过两个时,只有每个偏导数的输入特征发生变化。

矩阵求导

上面的公式展示了如何在不利用向量和矩阵的优势的情况下执行梯度下降。然而,大多数机器学习最好通过矩阵或张量操作执行。本文的其余部分将致力于使用矩阵微积分来导出 MSE 的导数,更多背景知识请阅读《白话张量》 和 《白话向量点积》。首先, Y ^ \hat Y Y^ Y Y Y 应理解为大小为 ( n × 1 n\times1 n×1) 的矩阵。两者都是 1 列 n n n 行的矩阵,或者它们可以视为列向量,这会将它们的表示法更改为小写:
M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE = \frac{1}{n}\sum_{i=1}^n(y_i - \hat y_i)^2 MSE=n1i=1n(yiy^i)2
MSE 是 y ^ \hat y y^ y y y 之间的逐元素向量减法,后跟与其自身差值的点积。请记住,只有尺寸兼容时才能计算点积。由于目标是获得标量输出,因此必须转置第一个向量。
M S E = 1 n ( y − y ^ ) T ( y − y ^ ) MSE = \frac{1}{n}(y - \hat y)^T(y - \hat y) MSE=n1(yy^)T(yy^)
然后, y ^ \hat y y^ 可以替换为 X w Xw Xw 进行回归。 X X X 是大小为 ( n n n 个样本, n u m num num 个特征) 的矩阵, w w w 是大小为 ( n u m num num 个特征, 1 1 1) 的列向量。
M S E = 1 n ( y − X w ) T ( y − X w ) MSE = \frac{1}{n}(y - Xw)^T(y - Xw) MSE=n1(yXw)T(yXw)
下一步是在求导之前简化方程。请注意, w w w X X X 交换位置以确保它们的乘法仍然有效:( 1 1 1, n u m num num 个特征) x ( n u m num num 个特征, n n n 个样本) = ( 1 1 1, n n n 个样本)。
M S E = 1 n ( y T − w T X T ) ( y − X w ) = 1 n ( y T y − y T X w − w T X T y + w T X T X w ) \begin{aligned} MSE &= \frac{1}{n}(y^T - w^TX^T)(y - Xw) \\ &= \frac{1}{n}(y^Ty - y^TXw - w^TX^Ty + w^TX^TXw) \end{aligned} MSE=n1(yTwTXT)(yXw)=n1(yTyyTXwwTXTy+wTXTXw)
请注意,第三项可以进行转置来重写,然后与第二项合并。
M S E = 1 n ( y T y − y T X w − ( w T X T y ) T + w T X T X w ) = 1 n ( y T y − y T X w − y T X w + w T X T X w ) = 1 n ( y T y − 2 y T X w + w T X T X w ) \begin{aligned} MSE &= \frac{1}{n}(y^Ty - y^TXw - (w^TX^Ty)T + w^TX^TXw) \\ &= \frac{1}{n}(y^Ty - y^TXw - y^TXw + w^TX^TXw) \\ &= \frac{1}{n}(y^Ty - 2y^TXw + w^TX^TXw) \end{aligned} MSE=n1(yTyyTXw(wTXTy)T+wTXTXw)=n1(yTyyTXwyTXw+wTXTXw)=n1(yTy2yTXw+wTXTXw)
接下来,对权重求 MSE 的偏导数。
∂ M S E ∂ w = 1 n ∂ ∂ w ( y T y − 2 y T X w + w T X T X w ) \frac{\partial MSE}{\partial w} = \frac{1}{n}\frac{\partial}{\partial w}(y^Ty - 2y^TXw + w^TX^TXw) wMSE=n1w(yTy2yTXw+wTXTXw)
这相当于对每一项求导:
∂ M S E ∂ w = 1 n [ ∂ ∂ w ( y T y ) − 2 ∂ ∂ w ( y T X w ) + ∂ ∂ w ( w T X T X w ) ] \frac{\partial MSE}{\partial w} = \frac{1}{n}\Big[\frac{\partial}{\partial w}(y^Ty) - 2\frac{\partial}{\partial w}(y^TXw) + \frac{\partial}{\partial w}(w^TX^TXw)\Big] wMSE=n1[w(yTy)2w(yTXw)+w(wTXTXw)]
w w w 之外的每一项都可以视为常数。每个分量的导数可以使用以下规则计算:
d A x x = A , d x T A x = A T , d x T A x x = 2 x T A , d A x = 0 \frac{dAx}{x} = A, \quad \frac{dx^TA}{x} = A^T, \quad \frac{dx^TAx}{x} = 2x^TA, \quad \frac{dA}{x} = 0 xdAx=A,xdxTA=AT,xdxTAx=2xTA,xdA=0
等式中的第一项遵循第四条规则变为0。第二项遵循第一条规则,第三项遵循第三条规则。
M S E = 1 n ( − 2 y T X + 2 w T X T X ) = 2 n ( − y T X + w T X T X ) \begin{aligned} MSE &= \frac{1}{n}(-2y^TX+2w^TX^TX) \\ &= \frac{2}{n}(-y^TX+w^TX^TX) \end{aligned} MSE=n1(2yTX+2wTXTX)=n2(yTX+wTXTX)
该方程可用于梯度下降,同时计算所有偏导数:
w j + 1 = w j − α 2 n ( − y T X + w j T X T X ) w_{j+1} = w_j-\alpha\frac{2}{n}(-y^TX+w_j^TX^TX) wj+1=wjαn2(yTX+wjTXTX)

结论

以上详细为大家推导了 MSE 作为损失函数时的梯度下降公式。我将在《简单线性回归》中为大家详细展示如何利用梯度下降。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/127142.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT实战与私有化大模型落地

文章目录 大模型现状baseline底座选择数据构造迁移方法评价思考 领域大模型训练技巧Tokenizer分布式深度学习数据并行管道并行向量并行分布式框架——Megatron-LM分布式深度学习框架——Colossal-AI分布式深度学习框架——DeepSpeedP-tuning 微调 资源消耗模型推理加速模型推理…

Python批处理(一)提取txt中数据存入excel

Python批处理(一)提取txt中数据存入excel 问题描述 现从冠层分析软件中保存了叶面积指数分析的结果,然而软件保存格式为txt,且在不同的文件夹中,每个文件夹的txt文件数量不固定,但是txt文件格式固定。现需…

C#__多线程之任务和连续任务

/// <summary> /// /// 任务&#xff1a;System.Threading.Tasks&#xff08;异步编程的一种实现方式&#xff09; /// 表应完成某个单元工作。这个工作可以在单独的线程中运行&#xff0c;也可以以同步方式启动一个任务。 /// /// 连续任务&#…

thinkphp6-简简单单地开发接口

目录 1.前言TP6简介 2.项目目录3.运行项目运行命令访问规则 4.model db使用db连接配置model编写及调用调用接口 5.返回json格式 1.前言 基于上篇文章环境搭建后&#xff0c;便开始简单学习上手开发接口…记录重要的过程&#xff01; Windows-试用phpthink发现原来可这样快速搭…

如何使用SQL SERVER的OpenQuery

如何使用SQL SERVER的OpenQuery 一、OpenQuery使用说明二、 OpenQuery语法2.1 参数说明2.2注解 三、示例3.1 执行 SELECT 传递查询3.2 执行 UPDATE 传递查询3.3 执行 INSERT传递查询3.4 执行 DELETE 传递查询 一、OpenQuery使用说明 在指定的链接服务器上执行指定的传递查询。 …

电工什么是电动势

什么是电动势&#xff1f;及电源电动势计算公式与方向确定 前面我们讲到在基本电路中的电流和电压的基础知识&#xff0c;而本文要讲的电动势和电压是一个很类似的概念。那么什么是电动势&#xff1f;电源电动势的计算公式是什么&#xff1f;它的方向如何确定及与电压有什么区…

轻量容器引擎Docker基础使用

轻量容器引擎Docker Docker是什么 Docker 是一个开源项目&#xff0c;诞生于 2013 年初&#xff0c;最初是 dotCloud 公司内部的一个业余项目。 它基于 Google 公司推出的 Go 语言实现&#xff0c;项目后来加入了 Linux 基金会&#xff0c;遵从了 Apache 2.0 协议&#xff0c;…

【Redis】深入探索 Redis 的数据类型 —— 哈希表 hash

文章目录 前言一、hash 类型相关命令1.1 HSET 和 HSETNX1.2 HGET 和 HMGET1.3 HKEYS、HVALS 和 HGETALL1.4 HEXISTS 和 HDEL1.5 HLEN1.6 HINCRBY 和 HINCRBYFLOAT1.7 哈希相关命令总结 二、hash 类型内部编码三、hash 类型的应用场景四、原生&#xff0c;序列化&#xff0c;哈希…

Android相机-架构3

目录 引言 1. Android相机的整体架构 2. 相机 HAL 2.1 AIDL相机HAL 2.2 相机 HAL3 功能 3. HAL子系统 3.1 请求 3.2 HAL和相机子系统 3.2.1 相机的管道 3.2.2 使用 Android Camera API 的步骤 3.2.3 HAL 操作摘要 3.3 启动和预期操作顺序 3.3.1 枚举、打开相机设备…

C语言课程作业

本科期间c语言课程作业代码整理&#xff1a; Josephus链表实现 Josephus 层序遍历树 二叉树的恢复 哈夫曼树 链表的合并 中缀表达式 链接&#xff1a;https://pan.baidu.com/s/1Q7d-LONauNLi7nJS_h0jtw?pwdswit 提取码&#xff1a;swit

《TCP/IP网络编程》阅读笔记--进程间通信

目录 1--进程间通信 2--pipe()函数 3--代码实例 3-1--pipe1.c 3-2--pipe2.c 3-3--pipe3.c 3-4--保存信息的回声服务器端 1--进程间通信 为了实现进程间通信&#xff0c;使得两个不同的进程间可以交换数据&#xff0c;操作系统必须提供两个进程可以同时访问的内存空间&am…

MySQL之MHA高可用配置及故障切换

目录 一、MHA概念 1、MHA的组成 2、MHA的特点 3、主从复制有多少种复制方法 二、搭建MySqlMHA部署 1&#xff0e;Master、Slave1、Slave2 节点上安装 mysql 2&#xff0e;修改 Master、Slave1、Slave2 节点的 Mysql主配置文件/etc/my.cnf 3. 配置 mysql 一主两从 4、安…

关于el-input和el-select宽度不一致问题解决

1. 情景一 单列布局 对于上图这种情况&#xff0c;只需要给el-select加上style"width: 100%"即可&#xff0c;如下&#xff1a; <el-select v-model"fjForm.region" placeholder"请选择阀门类型" style"width: 100%"><el-o…

【轻量化网络】MobileNet系列

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, CVPR2017 论文&#xff1a;https://arxiv.org/abs/1704.04861 代码&#xff1a; 解读&#xff1a;【图像分类】2017-MobileNetV1 CVPR_說詤榢的博客-CSDN博客 MobileNetV2: Inverted …

如何使用PySide2将designer设计的ui文件加载到Python类上鼠标拖拽显示路径

应用场景&#xff1a; designer快速设计好UI文件后&#xff0c;需要增加一些特别的界面功能&#xff0c;如文件拖拽显示文件路径功能。 方法如下&#xff1a; from PySide2.QtWidgets import QApplication, QMainWindow from PySide2.QtUiTools import loadUiTypeUi_MainWindo…

Java中wait和notify详解

线程的调度是无序的&#xff0c;随机的&#xff0c;但是也是有一定的需求场景&#xff0c;希望能够有序执行&#xff0c;join算是一种控制顺序的方式&#xff08;功能有限&#xff09;——》一个线程执行完&#xff0c;才能执行另一个线程&#xff01; 本文主要讲解的&#xf…

【工具使用】Dependency Walker使用

一&#xff0c;简介 在工作过程中常常会遇到编译的dll库运行不正常的情况&#xff0c;那就需要确认dll库是否编译正常&#xff0c;即是否将函数编译到dll中去。今天介绍一种查看dll库中函数定义的工具——Dependency walker。 二&#xff0c;软件介绍 Dependency Walker是一…

CSS3技巧36:backdrop-filter 背景滤镜

CSS3 有 filter 滤镜属性&#xff0c;能给内容&#xff0c;尤其是图片&#xff0c;添加各种滤镜效果。 filter 滤镜详见博文&#xff1a;CSS3中强大的filter(滤镜)属性_css3滤镜_stones4zd的博客-CSDN博客 后续&#xff0c;CSS3 又新增了 backdrop-filter 背景滤镜。 backdr…

源码剖析:Elasticsearch 段合并调度及优化手段

1、背景 经常看到集群的merge限流耗时比较高&#xff0c;所以想分析其原因、造成的影响、以及反思merge的一些优化手段。 比如下图中测试集群相关监控截图&#xff1a; 可是从磁盘的写入来看&#xff0c;并不高&#xff1a; 那么目前的情况带来哪些影响&#xff1f; 资源利用率…

七大排序算法

目录 直接插入排序 希尔排序 直接选择排序 堆排序 冒泡排序 快速排序 快速排序优化 非递归实现快速排序 归并排序 非递归的归并排序 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 常见的排序算法有插入排序(直接插入…