强化学习的数学原理 · Chap6 · Stochastic Approximation and SGD

好好学习

[TOC]

https://www.bilibili.com/video/BV1sd4y167NS

以计算采样数据的平均数为例

  • 采样大量数据,最后一次性计算平均值
  • 采样一个算一次,迭代计算,手上的均值最终会趋向真实

我们采样第二种方法,记:

$$ w_{k+1} = \frac{1}{k}\sum_{i=1}^k x_i $$

则:

$$ \begin{split} w_{k+1} &= \frac{1}{k}\sum_{i=1}^k x_i = \frac{1}{k}(\sum_{i=1}^{k-1}x_i+x_k)\\ &= \frac{1}{k}\left [ (k-1)w_k + x_k \right ] = w_k - \frac{1}{k}(w_k-x_k) \end{split} $$

Robbins-Monro Algorithm

对于一个方程:

$$ g(w) = 0 $$

我们希望求出解$w^$,使得$g(w^) = 0$

为了简化问题,$g(w)$是一个单调递增的函数

如果函数已知,我们可以通过牛顿迭代法求解

但是如果函数未知,我们通过采样:

$$ y_k = g(w_k) $$

往往带有噪声:

$$ \widetilde{g}(w_k,\eta_k) = g(w_k) + \eta_k $$

我们定义一个迭代过程:

$$ w_{k+1} = w_k - a_k\widetilde{g}(w_k,\eta_k) $$
  • 当$w_k>w^*$时,$g(w_k)>0$时
    • $w_{k+1} = w_k - a_k\widetilde{g}(w_k,\eta_k) < w_k$
    • 所以会往$w^*$走一步
  • 当$w_k<w^*$时,$g(w_k)<0$​时
    • $w_{k+1} = w_k - a_k\widetilde{g}(w_k,\eta_k) > w_k$
    • 所以会往$w^*$走一步

但其实这个非常理想,条件也比较苛刻,需要满足

  • $0<c_1\leq \nabla g(w)\leq c_2,\text{ for all } w$

    • $c_1$保证函数单调递增,且必然存在0解
    • $c_2$​保证梯度有界,防止垂直
  • $\sum a_k = \infty, \sum a_k^2 < \infty$​

    • 促进探索:$a_k$​是步长,若不趋近无穷,代表调整幅度与范围是有限的

    • 抑制噪声:噪声的方差大致是$\sum a_k^2 \mathbb{E}\left| \eta_k^2\right |$,$\sum a_k^2 < \infty$​保证方差不会发散

      • 同时暗含了$a_k\to 0$,使得最后的$w^*$趋于定值
  • $\mathbb{E}(\eta_k|\mathcal{H}_k) =0, \text{ and }\mathbb{E}(\eta_k^2|\mathcal{H}_k < \infty)$

    • 噪声条件期望为0,可以保证噪声是不依赖于历史的(不会随着采样步数增加而增加/减少,即不存在系统性偏移)
    • 条件方差不会无穷大,从而避免出现极端大的扰动,保证理论分析(如大数定律、中心极限定理)可用

懒得纠结太多了

Stochastic Gradient Descent

随机梯度下降的目标是:

$$ \min_w \mathcal{J}(w) = \mathbb{E}\left[f(w,X)\right] $$

是一个含有随机变量的式子,需要优化一个参数$w$

  • Method1:Gradient Descent,沿梯度的反方向走一个步长
$$ w_{k+1} = w_k -\alpha_k \nabla_w \mathbb{E}[f(w_k,X)] $$

但是实际上我们很难获得所有样本分布$X$(数据是收集不完的)

所以这是一个理想的情况

  • Method2:Batch Gradient Descent
    • 考虑使用一个Batch进行近似
$$ \mathbb{E}[\nabla_wf(w_k,X)] \approx \frac{1}{n}\sum_i^n\nabla_w f(w_k,x_i)\\ w_{k+1} = w_k - \alpha_k \frac{1}{n}\sum_i^n\nabla_w f(w_k,x_i) $$

但是每次迭代,都需把每一个Batch进行扫描,并不是很轻松

  • Method3:Stochastic Gradient Descent
    • 其实就是batch变成1了
$$ w_{k+1} = w_k - \alpha_k \nabla_w f(w_k,x_i) $$

为了证明SGD算法是收敛的,我们可以尝试构造一个方程:

$$ g(w) = \mathbb{E}\left[\nabla_w f(w,X)\right] = 0 $$

我们使用RM算法求解,则有:

$$ \widetilde{g}(w,\eta) = g(w) + \eta = \mathbb{E}\left[\nabla_w f(w,X)\right] + \eta $$

则有迭代式:

$$ w_{k+1} = w_k - a_k\widetilde{g}(w_k,\eta_k) = w_k - a_k\nabla_wf(w_k,x_k) $$

所以事实上SGD就是一个RM


截止到此,后续内容我应该不会继续深入,理论性比较强

之后如果有涉猎到的话再进行学习

使用 Hugo 构建
主题 StackJimmy 设计