Robbins-Monro算法与随机梯度下降(SGD)

举报
yd_269763035 发表于 2026/10/13 00:28:08 2026/10/13
【摘要】 Robbins-Monro算法(RM 算法)RM算法(Robbins-Monro)是一个求根算法,它的设计初衷是专门用来寻找让某个函数等于 0 的点。在 随机逼近(Stochastic Approximation) 领域,RM算法是现代随机优化(包括深度学习中的SGD)的理论基石。 1. 它解决什么问题?它的核心目的是:在有噪声(随机误差)干扰的情况下,找到一个函数的根(即零点)。常规场景...

Robbins-Monro算法(RM 算法)

RM算法(Robbins-Monro)是一个求根算法,它的设计初衷是专门用来寻找让某个函数等于 0 的点。

在 随机逼近(Stochastic Approximation) 领域,RM算法是现代随机优化(包括深度学习中的SGD)的理论基石。

1. 它解决什么问题?

它的核心目的是:在有噪声(随机误差)干扰的情况下,找到一个函数的根(即零点)。

  • 常规场景(无噪声): 假设你有一个方程 f(x)=0f(x)=0,你想求 xx。如果能准确计算$ f(x)$ 和它的导数,我们可以用牛顿法快速求解。
  • RM场景(有噪声): 现实中,我们无法直接得到准确的 $ f(x)$ ,每次测量都会带有一个随机噪声η\eta 。也就是说,我们观测到的是 y=f(x)+ηy=f(x)+\eta。如果用常规方法,噪声会让计算结果剧烈震荡,无法收敛。

2. 算法核心公式

RM算法提出了一种迭代方法,通过不断修正猜测值来逼近真实解:

wn+1=wn−anynw_{n+1}=w_n−a_ny_n

  • wnw_n:第 nn次对解的猜测。
  • yny_n:在 wnw_n 处观测到的带噪声的函数值。
  • ana_n:步长(Step Size),也常被称为学习率。

直观理解:
看观测值yny_n 是正还是负,如果是正的,就往反方向减一点;如果是负的,就加一点。

可以把整个过程想象成一个黑盒子:

  1. 输入 (wnw_n):你往黑盒子里扔进一个猜测值wnw_n。
  2. 输出 (yny_n):黑盒子吐出来一个结果yny_n(告诉你是大了还是小了)。
  3. 更新 (wn+1w_{n+1}):你根据吐出来的 yny_n,利用公式 wn+1=wn−anynw_{n+1}=w_n-a_ny_n 计算出下一次该扔进去什么值。

所以:ww 是我们在调整的旋钮(输入),yy是旋钮对应的读数(输出)。

3. 成功的关键:步长序列ana_n

RM算法最天才的地方在于规定了步长 ana_n必须满足两个条件,算法才能保证收敛到真值:

  1. ∑an=∞\sum a_n = \infty:步长加起来要是无穷大。这意味着ana_n不能快速的收敛到0,如果快速收敛到0了,初始值w1w_1就会离方程的解 w∗w^\ast 很远就无法收敛到 w∗w^\ast 了。
  2. ∑an2<∞\sum a_n^2 < \infty:步长的平方和要是有限的。这意味着随着时间推移,步长必须减小得足够快,以抵消噪声的影响,防止在终点附近无限震荡。

典型例子: an=1/na_n=1/n (随着次数增加,步长越来越小)。

4. 形象的类比:蒙眼调水温

想象你在蒙着眼睛调试水龙头的温度,目标是得到40度温水(f(x)=T(x)−40f(x)=T(x)-40):

  • 你摸了一下水,感觉烫了(观测值 yy 有误差,可能是手感不准)。
  • 你把开关往回拧一点。
  • 关键点: 刚开始你拧的幅度很大(步长 a 大);随着感觉越来越接近,你拧的幅度必须越来越微小。如果你一直大幅度拧,水温就会忽冷忽热(震荡),永远停不下来。RM算法就是告诉你如何科学地减小“拧”的幅度。

(1) 问题的本质

  • xx:水龙头旋转的角度(我们控制的变量)。
  • T(x)T(x):当旋转到 xx 角度时,实际流出来的水温(我们观测到的值)。
  • 目标:我们希望 T(x)=40T(x)=40。

(2) 为什么要转化成 f(x)=0f(x)=0?

RM算法(Robbins-Monro)是一个求根算法,它的设计初衷是专门用来寻找让某个函数等于 0 的点。

为了使用RM算法,我们需要把“目标是40”这个问题,伪装成“目标是0”的问题。

(3) 数学定义

我们定义一个新的函数 f(x)f(x),也就是误差函数:

f(x)=T(x)−40f(x) = T(x) - 40

这时候,我们来看看 f(x)f(x) 的含义:

  • 如果 f(x)>0f(x) > 0(比如 +5):说明 T(x)T(x) 是 45 度。意味着 “太热了” ,需要降温。
  • 如果 f(x)<0f(x) < 0(比如 -5):说明 T(x)T(x) 是 35 度。意味着 “太冷了” ,需要升温。
  • 如果 f(x)=0f(x) = 0:说明 T(x)−40=0T(x) - 40 = 0,即 T(x)=40T(x) = 40。意味着 “刚刚好” 。

结论:

找到 f(x)=0f(x) = 0 的解,等同于找到了让水温变成 40 度 的那个旋钮角度。


5. 基础概念回顾:向量与梯度

在深入理解现代应用(如SGD)之前,我们需要建立两个核心数学概念的认知:向量与梯度。它们是连接物理世界与数字计算的桥梁。

5.1 什么是向量 (Vector)?

向量是承载多维信息的基本容器。根据观察角度不同,它有三种理解:

  1. 物理视角(有方向的量): 就像一支箭,既有大小(Magnitude)又有方向(Direction)。例如速度是向量,而速率是标量。
  2. 数学视角(有序数组): 它是线性空间中的元素,表示为一列有序的数字。例如 v=[x,y,z]T\mathbf{v} = [x, y, z]^T。这一视角使得我们可以处理高维(甚至无穷维)问题。
  3. AI与控制视角(状态与特征):
    • 状态向量 (State Vector): 在控制中,描述系统在某时刻的完整情况(如 [位置,速度,角度,角速度]T[位置, 速度, 角度, 角速度]^T)。
    • 特征向量 (Feature Vector): 在AI中,万物皆可向量化。图像、文本都可以编码成高维向量,其空间位置包含了语义信息。

5.2 什么是梯度 (Gradient)?

如果说向量是砖块,梯度就是设计蓝图上的指南针。

  • 直观理解: 想象你蒙眼登山。梯度是一个向量,它永远指向地形变陡最快(上升最快)的方向,其模长代表了陡峭程度。
  • 数学定义: 梯度是由函数对各个自变量的偏导数组成的向量,记作 ∇f\nabla f。它将标量场(如温度分布)转化为向量场(如热流方向)。
  • 核心作用: 在最优化问题中,梯度告诉我们:“别瞎猜了,往这个方向走变化最快”。
    • 梯度下降 (Gradient Descent): 为了找谷底(最小化误差),我们沿着梯度的反方向走。

5.3 符号解析:∇wf(w,X)\nabla_w f(w, X)

在机器学习公式中,常看到这个符号,其含义是关键的**“关注点分离”**:

  • 定义: 计算函数 ff 的梯度,但只针对 ww (参数) 求导,将 XX (数据) 视为常数。
  • 直观比喻:
    • ff 是考试丢分,ww 是你脑中的知识,XX 是试卷题目。
    • ∇w\nabla_w 意味着:题目 XX 是老师出的(不可改),你只能通过修改脑中的知识 ww 来提高分数。
    • 反之,如果你求 ∇X\nabla_X,那是试图修改题目(作弊/对抗攻击)。

6. 现代应用:随机梯度下降 (SGD)

随机梯度下降(SGD) 是 RM 算法最著名的特例。
在机器学习中,我们想求损失函数的最小值。由于数据是分批(Batch)采样的,计算出的梯度带有“噪声”。SGD 本质上就是应用了 Robbins-Monro 算法来寻找梯度函数的零点。

6.1 从理想目标到现实困难

我们的终极目标是找到一组参数 ww,使得在整个数据分布下的期望损失最小:

min⁡wJ(w)=E[f(w,X)]\min_w J(w) = \mathbb{E}[f(w, X)]

根据梯度下降,理想更新公式是:

wk+1=wk−αk∇J(wk)=wk−αkE[∇wf(wk,X)]w_{k+1} = w_k - \alpha_k \nabla J(w_k) = w_k - \alpha_k \mathbb{E}[\nabla_w f(w_k, X)]

现实困难: E\mathbb{E}(期望)几乎算不出来!

  1. 分布未知: 无法获取全宇宙的数据。
  2. 计算量无限: 即使有海量数据,算一次完整的期望(遍历所有数据求平均)太慢了。

6.2 SGD 的工程妥协

既然算不出“全数据的平均梯度”,我们就用“抽样”来代替。

SGD 更新公式:

wk+1=wk−αk∇wf(wk,xk)w_{k+1} = w_k - \alpha_k \nabla_w f(w_k, x_k)

  • 操作: 每次只随机抽取一个样本 xkx_k,算出它的梯度,立刻更新参数。
  • 对应 RM 算法:
    • 我们要找的根是 ∇J(w)=0\nabla J(w) = 0。
    • 我们的观测值 yny_n 是单样本梯度 ∇wf(wk,xk)\nabla_w f(w_k, x_k)。
    • 噪声 η\eta 是单样本梯度与真实期望梯度的差值。

6.3 为什么能收敛?(理论兜底)

虽然单次更新可能因为样本偏差被“带偏”(引入噪声),但我们可以将梯度分解为:

观测梯度=真实梯度+噪声\text{观测梯度} = \text{真实梯度} + \text{噪声}

只要数据是独立同分布的,噪声的期望为 0。随着 RM 算法要求的步长 aka_k 逐渐减小,这些随机噪声会互相抵消,参数最终会摇摇晃晃地走到真实的最优解。


7. 案例分析:均值估计 (Mean Estimation)

为了彻底理解 RM 和 SGD 的关系,我们看一个最简单的例子:求一组数据的平均值。

7.1 将“求平均”看作“最优化”

求随机变量 XX 的期望 E[X]\mathbb{E}[X],在数学上等价于寻找一个 ww,使得它与 XX 的**欧氏距离平方和(最小二乘)**最小:

min⁡wJ(w)=E[12∥w−X∥2]\min_w J(w) = \mathbb{E}\left[ \frac{1}{2} \| w - X \|^2 \right]

7.2 求解过程

如果我们对这个目标函数求梯度:

∇wf(w,X)=w−X\nabla_w f(w, X) = w - X

代入 SGD 的更新公式 wk+1=wk−αk∇wf(wk,xk)w_{k+1} = w_k - \alpha_k \nabla_w f(w_k, x_k),我们得到:

wk+1=wk−αk(wk−xk)w_{k+1} = w_k - \alpha_k (w_k - x_k)

7.3 深度解读

这个公式变形后为:wk+1=(1−αk)wk+αkxkw_{k+1} = (1 - \alpha_k)w_k + \alpha_k x_k。
这正是工程中常用的迭代平均算法或一阶低通滤波器!

  • wkw_k:当前的估计值。
  • xkx_k:新的观测数据。
  • wk−xkw_k - x_k:当前的预测误差(梯度)。

结论: 简单的“求平均值”操作,本质上就是一个针对平方损失函数的随机梯度下降过程。这完美体现了 RM 算法的思想:通过不断利用带噪声的新样本 (xkx_k) 来修正当前的估计 (wkw_k),最终收敛到真实均值。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。