计算成本函数的梯度是优化的主要步骤。一个简单的线性模型,y=mx+b,用于表示数据。为了衡量这条直线与数据的拟合程度,通常使用成本函数(如均方误差MSE)来量化 (quantization)误差。目标是找到 m(斜率)和 b(y轴截距)的值,使这个成本尽可能小。
梯度下降 (gradient descent)算法需要方向。它需要知道:“如果我稍微改变 m,成本会如何变化?” 以及 “如果我稍微改变 b,成本会如何变化?” 这正是偏导数所告诉我们的。我们需要计算成本函数 ∇C 的梯度,它由关于每个参数 (parameter) m 和 b 的偏导数组成。
成本函数:均方误差 (MSE)
假设我们有 N 个数据点:(x1,y1),(x2,y2),...,(xN,yN)。对于任何给定的 m 和 b,我们的模型对每个输入 xi 预测得到 ypred,i=mxi+b。实际值为 yi。
均方误差成本函数 C(m,b) 定义为预测值与实际值之间平方差的平均值:
C(m,b)=N1i=1∑N(ypred,i−yactual,i)2
代入模型的预测结果:
C(m,b)=N1i=1∑N((mxi+b)−yi)2
这个函数 C(m,b) 以 m 和 b 为输入,输出一个代表平均误差的数值。我们现在的任务是找出 ∂m∂C 和 ∂b∂C。
计算关于 m 的偏导数 (∂m∂C)
为了找出 ∂m∂C,我们对成本函数 C(m,b) 关于 m 进行求导,同时将 b(以及所有 xi、yi 和 N)视为常数。
让我们逐项分析这个表达式:
- 常数因子: N1 是一个常数乘数,因此它保持不变。
- 求和法则: 和的导数是导数的和。我们可以将导数移到求和符号内部:
∂m∂C=N1i=1∑N∂m∂(mxi+b−yi)2
- 链式法则: 我们需要对 (mxi+b−yi)2 关于 m 进行求导。设 u=mxi+b−yi。我们正在对 u2 关于 m 求导。链式法则指出 dmd(u2)=2u⋅∂m∂u。
- 第一部分:2u=2(mxi+b−yi)。
- 第二部分:我们需要 ∂m∂u=∂m∂(mxi+b−yi)。由于 b 和 yi 被视为常数,它们的导数为零。mxi 关于 m 的导数就是 xi(因为 xi 被视为 m 的常数系数)。所以, ∂m∂u=xi。
- 组合起来: 代回链式法则公式:∂m∂(mxi+b−yi)2=2(mxi+b−yi)⋅xi。
- ∂m∂C 的最终结果: 现在将其代回求和式中:
∂m∂C=N1i=1∑N2(mxi+b−yi)xi
我们可以将常数 2 提出求和符号:
∂m∂C=N2i=1∑N(mxi+b−yi)xi
这个表达式告诉我们,当我们稍微改变斜率 m 时,成本如何变化。请注意,它取决于每个数据点的误差项 (mxi+b−yi) 和输入值 xi。
计算关于 b 的偏导数 (∂b∂C)
现在我们重复这个过程,但这次我们对 C(m,b) 关于 b 进行求导,同时将 m 视为常数。
- 常数因子和求和法则: 同前述步骤,我们得到:
∂b∂C=N1i=1∑N∂b∂(mxi+b−yi)2
- 链式法则: 同样,设 u=mxi+b−yi。我们需要 dbd(u2)=2u⋅∂b∂u。
- 第一部分:2u=2(mxi+b−yi)。
- 第二部分:我们需要 ∂b∂u=∂b∂(mxi+b−yi)。这次,m、xi 和 yi 被视为常数。mxi 关于 b 的导数为 0。b 关于 b 的导数为 1。yi 关于 b 的导数为 0。所以, ∂b∂u=1。
- 组合起来: ∂b∂(mxi+b−yi)2=2(mxi+b−yi)⋅1。
- ∂b∂C 的最终结果: 代回求和式中:
∂b∂C=N1i=1∑N2(mxi+b−yi)(1)
将常数 2 提出:
∂b∂C=N2i=1∑N(mxi+b−yi)
这个表达式告诉我们,当我们稍微改变y轴截距 b 时,成本如何变化。它仅取决于每个数据点的误差项 (mxi+b−yi)。
梯度向量 (vector) ∇C
我们已经成功计算出偏导数!现在我们可以将它们组合成成本函数 C(m,b) 的梯度向量:
∇C(m,b)=[∂m∂C,∂b∂C]
代入我们找到的表达式:
∇C(m,b)=[N2i=1∑N(mxi+b−yi)xi,N2i=1∑N(mxi+b−yi)]
这个向量 ∇C 是基本要素。对于任何给定的 m 和 b 值:
- 第一个分量 (∂m∂C) 告诉我们,如果只沿着 m 方向移动,成本函数的变化率。它的符号告诉我们增加 m 是增加还是减少成本。
- 第二个分量 (∂b∂C) 告诉我们,如果只沿着 b 方向移动,成本函数的变化率。它的符号告诉我们增加 b 是增加还是减少成本。
重要的一点是,梯度向量 ∇C 指向成本函数 C(m,b) 在当前点 (m,b) 处 增长最快 的方向。由于我们希望 最小化 成本,梯度下降 (gradient descent)将涉及沿着与梯度 相反 的方向迈步。
有了这些计算出的梯度,我们现在就有了迭代更新 m 和 b 所需的精确信息,以找到最拟合数据的直线。下一步是了解这些梯度在梯度下降算法中是如何使用的。