白话梯度下降
梯度下降是机器学习中最常见的优化算法之一。理解它的基本实现是理解所有基于它构建的高级优化算法的基础。
文章目录
优化算法
在机器学习中,优化是寻找理想参数或权重以最大化或最小化成本或损失函数的过程。全局最大值是函数定义域上的最大值,而全局最小值是函数的最小值。虽然只有一个全局最大值和/或最小值,但可以有许多局部最大值和最小值。成本函数的全局最小值或最大值指示模型参数生成接近实际目标的预测。训练模型时,局部最大值和最小值可能会导致问题,因此应始终留意它们的存在。上图显示了每种最大值/最小值的示例。
优化算法有几种不同类别的算法:包围算法、局部下降算法、一阶算法和二阶算法。本文的重点是使用一阶导数进行优化的一阶算法。在此类别中,梯度下降算法是最受欢迎的。
一维梯度下降
梯度下降是一种一阶迭代优化算法,用于最小化成本函数。通过使用偏导数、方向和学习率,梯度下降减少了预测值和实际值之间的误差或差异。
梯度下降背后的思想是每个权重的导数将揭示其方向和对成本函数的影响。下图中,成本函数为 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 w0→w9)中,使用 0.1 的学习率来最小化成本函数。
在下面的算法步骤中,权重由 w w w 表示, j j j 表示其当前值, j + 1 j+1 j+1 表示其新值。衡量误差的成本函数用 f f f 表示,偏导数是成本函数相对于参数的梯度。学习率用 α \alpha α 表示。
-
选择学习率和迭代次数
-
选择参数的随机值
-
用下面的公式更新参数
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−α∂wj∂f(wj)
- 重复第三步,直到达到最大迭代次数
当对函数求偏导数或梯度时,一次只能评估一个参数,其他参数被视为常数。对于上面的例子, 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=1∑n(Y^i−Yi)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 n1∑i=1n(wXi−Yi)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 n1∑i=1n(w1Xi+w0−Yi)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 n1∑i=1n(w2X2i+w1X1i+w0−Yi)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 n1∑i=1n(wkXki+⋯+w2X2i+w1X1i+w0−Yi)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= ∂w0∂MSE...∂wk∂MSE
必须计算每个权重的偏导数。偏导数的计算方式与普通导数相同,但每个未考虑的变量都必须视为常数。
单权重
∇ 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=1∑n(wXi−Yi)2=[∂w∂[n1i=1∑n(wXi−Yi)2]]=n2i=1∑nXi(wXi−Yi)
当仅用一个权重求 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=1∑n∂w∂[(wXi−Yi)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=1∑n[2(wXi−Yi)∂w∂(wXi−Yi)]n1i=1∑n[2(wXi−Yi)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=1∑nXi(wXi−Yi)
双权重
∇ 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=1∑n(w1Xi+w0−Yi)2= ∂w0∂[n1∑i=1n(w1Xi+w0−Yi)2]∂w1∂[n1∑i=1n(w1Xi+w0−Yi)2] =[n2∑i=1n(w1Xi+w0−Yi)n2∑i=1nXi(w1Xi+w0−Yi)]
当采用两个权重求 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} [n1∑i=1n∂w0∂(w1Xi+w0−Yi)2n1∑i=1n∂w1∂(w1Xi+w0−Yi)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} n1∑i=1n[2(w1Xi+w0−Yi)∂w0∂(w1Xi+w0−Yi)]n1∑i=1n[2(w1Xi+w0−Yi)∂w1∂(w1Xi+w0−Yi)]
[ 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} n1∑i=1n[2(w1Xi+w0−Yi)1]n1∑i=1n[2(w1Xi+w0−Yi)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} [n2∑i=1n(w1Xi+w0−Yi)n2∑i=1nXi(w1Xi+w0−Yi)]
请注意,方程之间的唯一区别是 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=1∑n(w2X2i+w1X1i+w0−Yi)2= ∂w0∂[n1∑i=1n(w2X2i+w1X1i+w0−Yi)2]∂w1∂[n1∑i=1n(w2X2i+w1X1i+w0−Yi)2]∂w2∂[n1∑i=1n(w2X2i+w1X1i+w0−Yi)2] = n2∑i=1n(w2X2i+w1X1i+w0−Yi)n2∑i=1nX1i(w2X2i+w1X1i+w0−Yi)n2∑i=1nX2i(w2X2i+w1X1i+w0−Yi)
当采用三个权重求 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} n1∑i=1n∂w0∂(w2X2i+w1X1i+w0−Yi)2n1∑i=1n∂w1∂(w2X2i+w1X1i+w0−Yi)2n1∑i=1n∂w2∂(w2X2i+w1X1i+w0−Yi)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} n1∑i=1n[2(w2X2i+w1X1i+w0−Yi)∂w0∂(w2X2i+w1X1i+w0−Yi)]n1∑i=1n[2(w2X2i+w1X1i+w0−Yi)∂w1∂(w2X2i+w1X1i+w0−Yi)]n1∑i=1n[2(w2X2i+w1X1i+w0−Yi)∂w1∂(w3X2i+w1X1i+w0−Yi)]
最后化简为:
[ 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} n2∑i=1n(w2X2i+w1X1i+w0−Yi)n2∑i=1nX1i(w2X2i+w1X1i+w0−Yi)n2∑i=1nX2i(w2X2i+w1X1i+w0−Yi)
如前所述,每个偏导数之间的唯一区别是输入特征 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=1∑n(wkXki+⋯+w2X2i+w1X1i+w0−Yi)2= ∂w0∂[n1∑i=1n(wkXki+⋯+w2X2i+w1X1i+w0−Yi)2]∂w1∂[n1∑i=1n(wkXki+⋯+w2X2i+w1X1i+w0−Yi)2]∂w2∂[n1∑i=1n(wkXki+⋯+w2X2i+w1X1i+w0−Yi)2]⋮∂wk∂[n1∑i=1n(wkXki+⋯+w2X2i+w1X1i+w0−Yi)2] = n2∑i=1n(wkXki+⋯+w2X2i+w1X1i+w0−Yi)n2∑i=1nX1i(wkXki+⋯+w2X2i+w1X1i+w0−Yi)n2∑i=1nX2i(wkXki+⋯+w2X2i+w1X1i+w0−Yi)⋮n2∑i=1nXki(wkXki+⋯+w2X2i+w1X1i+w0−Yi)
当采用 k k k 个权重求 MSE 的梯度时,必须对每个参数求偏导数。当对一个权重求偏导数时, X X X、 Y Y Y、 n n n 和其他 k − 1 k-1 k−1 个权重将被视为常数。如前面的示例所示,当权重超过两个时,只有每个偏导数的输入特征发生变化。
矩阵求导
上面的公式展示了如何在不利用向量和矩阵的优势的情况下执行梯度下降。然而,大多数机器学习最好通过矩阵或张量操作执行。本文的其余部分将致力于使用矩阵微积分来导出 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=1∑n(yi−y^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(y−y^)T(y−y^)
然后, 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(y−Xw)T(y−Xw)
下一步是在求导之前简化方程。请注意, 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(yT−wTXT)(y−Xw)=n1(yTy−yTXw−wTXTy+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(yTy−yTXw−(wTXTy)T+wTXTXw)=n1(yTy−yTXw−yTXw+wTXTXw)=n1(yTy−2yTXw+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) ∂w∂MSE=n1∂w∂(yTy−2yTXw+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] ∂w∂MSE=n1[∂w∂(yTy)−2∂w∂(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 作为损失函数时的梯度下降公式。我将在《简单线性回归》中为大家详细展示如何利用梯度下降。