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

梯度下降更新时应使用参数旧值还是新值?含D维向量优化场景咨询

梯度下降更新时参数取值的问题解答

首先明确:标准批量梯度下降中,必须用所有参数的旧值完成本轮所有更新。

针对你提到的D维嵌入优化场景,目标函数是对所有(i,j)对求和$\frac{1 - e \cdot x_i \cdot x_j}{2}$,对应的更新规则本质是基于全局梯度推导的。这里的关键规则是:

  • 同一迭代轮次里,所有参数的更新都要基于本轮开始时的旧状态。如果更新$x_i$时用了已经更新过的$x_j$,这就变成了在线更新的变体,会打乱原本的梯度方向,导致收敛路径偏离预期的最优方向。
  • 正确的操作是:先把本轮所有参数的旧值缓存下来(比如复制一份独立的数组),然后对每个$x_i$,用缓存的旧值来计算更新量,最后统一把所有参数替换为新值。

给你一段伪代码示例,更直观:

# 先复制一份本轮的旧参数
x_old = x.copy()
# 遍历每个分量计算更新
for i in range(D):
    # 这里根据你的目标函数,需要遍历对应的j项求和,示例简化为单个j的情况
    x[i] = x_old[i] - lr * 0.5 * e * x_old[j]

如果是刻意采用每更新一个参数就用新值参与后续计算的方式,那属于另一种优化策略,但对于你这种全局求和的目标函数,用旧值的标准批量梯度下降收敛更稳定,结果更可控。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:57:09