梯度下降算法中-2*wx及代码对应项的数学推导问询
梯度下降中
-2 * wx * this.xArr[i]的数学推导说明 先明确代码变量与数学符号的对应关系
this.xArr[i]= 第i个样本的输入特征 (x_i)this.yArr[i]= 第i个样本的真实标签 (y_i)this.weight= 模型权重 (w)this.bias= 模型偏置 (b)wx= (y_i - (w \cdot x_i + b)),即第i个样本的真实值与预测值的误差
推导步骤
1. 定义均方误差损失函数
线性回归任务中,我们使用**均方误差(MSE)**作为损失函数,衡量预测值与真实值的差异,公式为:
[
L(w,b) = \frac{1}{N} \sum_{i=1}^{N} \left( y_i - (w \cdot x_i + b) \right)^2
]
其中 (N) 是样本总数(对应代码中的this.points)。
2. 计算损失函数对权重(w)的偏导数
梯度下降的核心是通过损失函数的偏导数(梯度)来更新参数,我们需要计算损失函数 (L(w,b)) 对权重 (w) 的偏导数 (\frac{\partial L}{\partial w}):
- 根据链式法则,先对平方项求导,再对括号内的预测表达式求导:
[
\frac{\partial L}{\partial w} = \frac{1}{N} \sum_{i=1}^{N} \left[ 2 \cdot \left( y_i - (w \cdot x_i + b) \right) \cdot \frac{\partial \left( y_i - w \cdot x_i - b \right)}{\partial w} \right]
] - 计算括号内的偏导项:(\frac{\partial \left( y_i - w \cdot x_i - b \right)}{\partial w} = -x_i)
- 代入后化简:
[
\frac{\partial L}{\partial w} = \frac{1}{N} \sum_{i=1}^{N} \left[ 2 \cdot \left( y_i - (w \cdot x_i + b) \right) \cdot (-x_i) \right] = -\frac{2}{N} \sum_{i=1}^{N} \left[ \left( y_i - (w \cdot x_i + b) \right) \cdot x_i \right]
]
3. 对应代码中的实现
代码中:
wx就是公式里的 (\left( y_i - (w \cdot x_i + b) \right))- 循环里的
-2 * wx * this.xArr[i]对应单个样本贡献的偏导分量(即公式中求和项里的 (2 \cdot \left( y_i - (w \cdot x_i + b) \right) \cdot (-x_i))) - 代码先通过
w_deriv += ...累加所有样本的偏导分量,之后除以样本数this.points(即 (N)),就得到了完整的 (\frac{\partial L}{\partial w}),最后结合学习率learnc完成权重更新。
内容的提问来源于stack exchange,提问作者chang dae Kim
相关产品推荐
相关产品推荐

