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

给定的线性回归梯度下降代码是顺序还是同时更新参数?

梯度下降参数更新方式:你的代码是同时更新,不是顺序更新

先明确两种更新模式的核心区别:

  • 同时更新:先基于当前参数的原始值,计算所有待更新参数的梯度;计算完成后,再统一用这些梯度更新所有参数,整个过程中梯度计算不会用到任何更新后的参数值。
  • 顺序更新:更新某一个参数后,后续参数的梯度计算会依赖已经更新过的参数值。

看你给出的代码:

dj_dw=((w*x[i]+b-y[i])*x[i])/m
dj_db=(w*x[i]+b-y[i])/m
w=w-a*dj_dw
b=b-a*dj_db

dj_dw和dj_db的计算完全基于更新前的w和b,两个梯度计算完成后才执行w和b的更新操作。更新b时,使用的依然是原始的w值(因为w的更新在梯度计算之后,且dj_db的计算没有用到更新后的w),这完全符合同时更新的定义。

那些AI工具判断错误,大概率是混淆了更新逻辑的细节。如果是顺序更新,代码会是这样的:

dj_dw=((w*x[i]+b-y[i])*x[i])/m
w=w-a*dj_dw
dj_db=(w*x[i]+b-y[i])/m  # 此处使用了已经更新后的w来计算梯度
b=b-a*dj_db

这种情况下,dj_db的计算依赖更新后的w,才属于顺序更新。

在线性回归的梯度下降实现中,同时更新是标准且正确的方式——因为均方误差代价函数的梯度是基于当前参数的整体状态计算的,顺序更新会引入不必要的偏差,影响收敛效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:10:58