Spark为何不再采用SGD作为优化器?迁移动机探究
Spark MLlib 从SGD切换至L-BFGS等优化器的原因与动机
SGD的核心局限性
SGD作为早期Spark MLlib回归任务的默认优化器,存在不少难以忽视的问题:
- 收敛效率低且不稳定:SGD依赖单样本或小批量数据更新参数,每次更新的噪声大,需要大量迭代才能收敛到最优解;同时对学习率的设置极度敏感,调参成本高,稍不注意就会出现参数震荡或无法收敛的情况。
- 复杂场景适配性差:面对带L1正则的回归任务(如Lasso),SGD在生成稀疏解时效率低下,难以精准控制参数的稀疏性;此外,当训练数据存在分布倾斜或异常值时,SGD的更新方向容易被干扰,最终收敛到次优解。
- 通用性有余但针对性不足:SGD是一种通用优化器,但在很多特定回归场景下,没有专门的优化器高效,无法充分发挥模型的性能潜力。
迁移至新优化器的核心动机
Spark MLlib转向L-BFGS、加权最小二乘正规方程求解器、IRLS,本质是为不同回归场景提供更高效的专用方案:
L-BFGS
- 作为拟牛顿法的变体,L-BFGS利用二阶近似信息优化参数更新方向,无需存储完整的海森矩阵(适合大规模分布式场景),收敛速度远快于SGD,且对学习率的依赖更低,调参成本大幅降低。
- 基于批量(或大批次)数据计算梯度,参数更新的噪声远小于SGD,模型最终的性能稳定性更高。
加权最小二乘法的正规方程求解器
- 针对低维度、小规模数据场景,正规方程可以直接求解最优参数,无需迭代计算,训练效率远高于SGD。
- 能直接将样本权重纳入计算逻辑,在处理带权重的回归任务时,比SGD的迭代更新更精准,避免权重带来的更新偏差。
迭代重加权最小二乘法(IRLS)
- 专门适配广义线性模型(GLM)类回归任务(如逻辑回归、泊松回归),通过迭代将非线性问题转化为加权最小二乘问题求解,比SGD更适配这类非凸/非线性场景,收敛速度和最终精度都更优。
官方设计逻辑总结
Spark MLlib的优化器迭代,核心是从「通用覆盖」转向「场景化最优」。随着用户对模型精度、训练效率的要求提升,SGD的通用性不再能满足多样化的回归任务需求,替换为针对性的优化器,既能提升特定场景下的模型性能,也能降低用户的调参和使用成本。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

