You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

矩阵形式线性回归梯度下降不同初始参数得到不同最终theta问题排查

问题原因

  • 迭代未收敛:你设置的损失阈值epsilon=0.1远低于该任务下能达到的最小MSE(该数据集线性回归最优MSE约为1.0),所以所有训练都会跑满max_iterations=1000次就停止,并未收敛到全局最优点。同时学习率0.0001太小,1000次迭代的更新步长不足以让不同初始值的参数都走到最优区域,自然结果差异大。你可以打印梯度下降返回的第二个布尔值,所有场景下都会返回False,证明都跑满了1000次迭代,并未触发损失阈值停止条件,属于未收敛状态。
  • 梯度计算维度匹配问题:你当前的梯度计算逻辑在theta和y_obs为一维数组时,会出现隐式转置导致的计算偏差,标准MSE梯度计算应为:
def gradient_of_loss(theta, X, y_obs):
    n = len(y_obs)
    y_hat = X @ theta
    return 1.0/n * X.T @ (y_hat - y_obs)
  • 特征尺度未统一:输入特征total_bill取值范围为3~50,而bias恒为1,特征尺度差异过大会大幅降低梯度下降的收敛速度,需要更多迭代次数才能收敛。

修正方案

  1. 调整停止条件:将epsilon调大到1.05,或者把判断条件改为两次迭代的损失差值小于epsilon,避免用绝对损失值判断收敛
  2. 调大学习率到0.001,同时把最大迭代次数提升到1e5级别
  3. 对total_bill做标准化处理,加快收敛
  4. 修正梯度计算逻辑

修正后用不同初始值训练,最终得到的theta会和解析解[0.105, 0.920]基本一致。

内容的提问来源于stack exchange,提问作者Chloe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:39:03