由于全文太长,只好分开发了。 (已完结!在专栏查看本系列其他文章)
个人博客可以直接看全文~
本系列为在学习赵世钰老师的"强化学习的数学原理" 课程后所作笔记。
课堂视频链接https://www.bilibili.com/video/BV1sd4y167NS/
第六章 Stochastic Approximation & Stochastic Grandient Descent
Stochastic Approximation(随机近似理论) 和Stochastic Grandient Descent(随机梯度下降)
Motivating example
mean estimation problem:
- 考虑有一个随机变量 X
- 目标是计算期望 E [ X ] \mathbb{E}[X] E[X]
- 假设我们有N个采样 { x i } i = 1 N \{x_i\}_{i=1}^N {xi}i=1N
- 那么期望可以被估计为 E [ X ] ≈ x ‾ : = 1 N ∑ N i = 1 x i \mathbb{E}[X] \approx \overline{x}:=\frac{1}{N}\underset{i=1}{\overset{N}{\sum}}x_i E[X]≈x:=N1i=1∑Nxi
- 当 N → ∞ N \to \infty N→∞ , x ‾ → E [ X ] \overline{x} \to \mathbb{E}[X] x→E[X]
怎么计算 m e a n x ‾ mean\ \overline{x} mean x ?
方法一: 计算所有的总和,然后除以 N N N
方法二(iterative mean estimation):实时估计 x ‾ \overline{x} x ,当出现新的 x i x_i xi时,更新 x ‾ \overline{x} x
我们规定 w k + 1 w_{k+1} wk+1 表示前KaTeX parse error: Invalid color: ' #0000EE' at position 11: \textcolor{̲ ̲#̲0̲0̲0̲0̲E̲E̲}̲{k}个x的均值。即w_{k+1} = \\frac{1}{k}\\underset{i=1}{\\overset{k}{\\sum}}x_i 。(一般设置 w 1 = x 1 w_1 = x_1 w1=x1)
那么根据如下公式
w k + 1 = 1 k ∑ k i = 1 x i = 1 k ( 1 k − 1 ∑ k − 1 i = 1 x i + x k ) = 1 k ( ( k − 1 ) w k + x k ) = w k − 1 k ( w k − x k ) \begin{aligned} w_{k+1} = \frac{1}{k}\underset{i=1}{\overset{k}{\sum}}x_i & = \frac{1}{k}(\frac{1}{k-1}\underset{i=1}{\overset{k-1}{\sum}}x_i+x_k) \\ &=\frac{1}{k}((k-1)w_k + x_k) = w_k - \frac{1}{k}(w_k-x_k) \end{aligned} wk+1=k1i=1∑kxi=k1(k−11i=1∑k−1xi+xk)=k1((k−1)wk+xk)=wk−k1(wk−xk)
我们就可以迭代地计算 w k + 1 w_{k+1} wk+1 了。
于是我们稍作改进,把 1 k \frac{1}{k} k1 换成 α \alpha α .于是我们就可以通过调整 α \alpha α 来改变公式的计算了。
w k + 1 = w k − α ( w k − x k ) w_{k+1} = w_k - \alpha (w_k-x_k) wk+1=wk−α(wk−xk)
Robbins-Monro algorithm
stochastic approximation能够做到在不知道函数具体公式的情况下求出解。
RM算法是stochastic approximation中的开创性工作。
而stochastic gradient descent algorithm 则是RM的一种特殊情况。
问题:求解 g ( w ) = 0 g(w) = 0 g(w)=0方程, 其中 w w w是未知量, g g g是函数。
于是RM算法可以求解如下问题:
w k + 1 = w k − a k g ~ ( w k , η k ) w_{k+1} = w_k - a_k \tilde g(w_k,\eta _k) wk+1=wk−akg~(wk,ηk)
其中 η k \eta _k ηk 是噪声, g ~ ( w k , η k ) = g ( w k ) + η k \tilde g(w_k,\eta _k) = g(w_k) + \eta_k g~(wk,ηk)=g(wk)+ηk , α \alpha α是一个正数 。
函数 g ( w k ) g(w_k) g(wk) 是一个黑盒函数,我们无法得出它的具体公式。
不断迭代这个公式,就能够收敛到 g ( w ) = 0 g(w) = 0 g(w)=0
RM算法-Convergence properties
RM算法的三个条件:
-
0 < c 1 ≤ ∇ w g ( w ) ≤ c 2 0 < c_1 \le \nabla _wg(w) \le c_2 0<c1≤∇wg(w)≤c2 ,即导数大于0,并且不会趋于无穷。
-
∑ k = 1 ∞ a k = ∞ \sum_{k=1}^{\infty}a_k = \infty ∑k=1∞ak=∞ 并且 ∑ k = 1 ∞ a k 2 < ∞ \sum_{k=1}^{\infty}a_k^2 < \infty ∑k=1∞ak2<∞ 。
∑ k = 1 ∞ a k 2 < ∞ \sum_{k=1}^{\infty}a_k^2 < \infty ∑k=1∞ak2<∞ 保证了 a k a_k ak一定会收敛到0。
∑ k = 1 ∞ a k = ∞ \sum_{k=1}^{\infty}a_k = \infty ∑k=1∞ak=∞ 保证了 a k a_k ak收敛的不会太快,否则加起来就不会是无穷了。
-
E [ η k ] = 0 \mathbb{E}[\eta_k] = 0 E[ηk]=0 并且 E [ n k 2 ∣ H ] < ∞ \mathbb{E}[n_k^2|\mathcal{H}]<\infty E[nk2∣H]<∞ (这里的 E [ η k 2 ∣ H ] \mathbb{E}[\eta_k^2|\mathcal{H}] E[ηk2∣H]的意思是 η k \eta_k ηk的方差)。通常这里的噪声通过同分布(Independent and Identically Distriuted)采样得来,并且在此处 η k \eta_k ηk并没有强制要求满足高斯分布。
对于条件二的解释:
根据上面的公式 w k + 1 − w k = a k g ~ ( w k , η k ) w_{k+1}-w_k = a_k \tilde g(w_k,\eta_k) wk+1−wk=akg~(wk,ηk) ,那么 a k a_k ak收敛到0,才能保证 w k + 1 − w k w_{k+1}-w_k wk+1−wk不断收敛到0,从而趋于稳定。
而将 k = 1 , 2 , . . . , ∞ k = 1,2,...,\infty k=1,2,...,∞ 的公式相加可以得到
w ∞ − w 1 = ∑ k = 1 ∞ a k g ~ ( w k , η k ) w_{\infty} - w_1 = \overset{\infty}{\underset{k=1}{\sum}}a_k \tilde g(w_k,\eta_k) w∞−w1=k=1∑∞akg~(wk,ηk) .
w ∗ ≈ w ∞ w^* \approx w_\infty w∗≈w∞是我们猜测的值, w 1 w_1 w1 是初始值,那么 ∑ k = 1 ∞ a k = ∞ \sum_{k=1}^{\infty}a_k = \infty ∑k=1∞ak=∞ 保证了不管我们选的初始值 w 1 w_1 w1离目标值有多远,最终都可以通过不断迭代得到 w ∗ w^* w∗
a k a_k ak取什么值是符合条件的? a k = 1 k a_k= \frac{1}{k} ak=k1 。(但一般在 k k k很大的时候,不会让 a k a_k ak一直变小,达到某个较小值后则会不再改变)
SGD(stochatic gradient descent)
目标是解决如下优化问题:
m i n w J ( w ) = E [ f ( w , X ) ] \underset{w}{min} J(w) =\mathbb E[f(w,X)] wminJ(w)=E[f(w,X)]
算法一、 gradient descent(GD)梯度下降法:
w k + 1 = w k − α k ∇ w E [ f ( w k , X ) ] = α k E [ ∇ w f ( w k , X ) ] w_{k+1} = w_k- \alpha_k \nabla_w \mathbb E[f(w_k,X)] = \alpha_k\mathbb E[\nabla_wf(w_k,X)] wk+1=wk−αk∇wE[f(wk,X)]=αkE[∇wf(wk,X)]
这里的 α k \alpha_k αk 是步长,就是学习率。 但是一般无法得到准确的梯度的期望。
算法二、batch gradient descent(BGD)批量梯度下降法:
∇ w f ( w k , X ) \] ≈ 1 n ∑ n i = 1 ∇ w f ( w k , x i ) \\mathbb \[\\nabla_w f(w_k,X)\] \\approx \\frac{1}{n} \\underset{i=1}{\\overset{n}{\\sum}}\\nabla_wf(w_k,x_i) \[∇wf(wk,X)\]≈n1i=1∑n∇wf(wk,xi) 于是得到: w k + 1 = w k − α k 1 n ∑ n i = 1 ∇ w f ( w k , x i ) w_{k+1} = w_k- \\alpha_k\\frac{1}{n} \\underset{i=1}{\\overset{n}{\\sum}}\\nabla_wf(w_k,x_i) wk+1=wk−αkn1i=1∑n∇wf(wk,xi) 不需要求期望,用多次采样的平均值来代替期望值,但是每次都需要求n个数的平均太耗时了。(n为采样次数) 算法三、stochastic gradient descent(SGD) 随机梯度下降: w k + 1 = w k − α k ∇ w f ( w k , x k ) w_{k+1} = w_k - \\alpha_k \\nabla_w f(w_k,x_k) wk+1=wk−αk∇wf(wk,xk) 和GD相比,替使用随机梯度来替换准确的期望的梯度。 和BGD相比,其实就是把n设置为了1。 #### SGD 的例子和练习 假设如下例子: m i n w J ( w ) = E \[ f ( w , X ) \] = E \[ 1 2 ∣ ∣ w − X ∣ ∣ 2 \] \\underset{w}{min} \\ J(w) = \\mathbb E\[f(w,X)\] = \\mathbb E\[\\frac{1}{2} \|\|w-X\|\|\^2\] wmin J(w)=E\[f(w,X)\]=E\[21∣∣w−X∣∣2
此处的 f ( w , X ) = ∣ ∣ w − X ∣ ∣ 2 / 2 , ∇ w f ( w , X ) = w − X f(w,X)= ||w-X||^2/2, \nabla_wf(w,X) = w - X f(w,X)=∣∣w−X∣∣2/2,∇wf(w,X)=w−X
三个练习:
- 证明最优解 w ∗ w^* w∗ 满足 w ∗ = E [ X ] w^* = \mathbb E [X] w∗=E[X]
∇ w J ( w ) = 0 ⇒ E [ ∇ w f ( w , X ) ] = 0 ⇒ E [ w − X ] = 0 ⇒ w ∗ = E [ X ] \begin{aligned} & \nabla _w\ J(w) = 0 \\ \Rightarrow & \mathbb E[\nabla _w f(w,X)] = 0 \\ \Rightarrow & \mathbb E[w-X] = 0 \\ \Rightarrow & w^* = \mathbb E[X] \end{aligned} ⇒⇒⇒∇w J(w)=0E[∇wf(w,X)]=0E[w−X]=0w∗=E[X]
- 这个例子的GD算法是什么?
w k + 1 = w k − α k ∇ w J ( w k ) = w k − α k E [ ∇ w J ( w k ) ] = w k − α k E [ w k − X ] \begin{aligned} w_{k+1} & = w_k - \alpha_k \nabla _w J(w_k) \\ &=w_k - \alpha_k \mathbb E[\nabla _w J(w_k)] \\ &=w_k - \alpha_k \mathbb E[w_k - X] \end{aligned} wk+1=wk−αk∇wJ(wk)=wk−αkE[∇wJ(wk)]=wk−αkE[wk−X]
- 这个例子的SGD算法是什么?
不求期望了,直接用某一个的 w k − x k w_k - x_k wk−xk 来代替 E [ w k − X ] \mathbb E[w_k - X] E[wk−X]
w k + 1 = w k − α k ∇ w f ( w k , x k ) = w k − α k ( w k − x k ) w_{k+1} = w_k - \alpha_k \nabla_wf(w_k,x_k) = w_k - \alpha _k (w_k - x_k) wk+1=wk−αk∇wf(wk,xk)=wk−αk(wk−xk)
我们发现最后的公式和mean alogrithm算法是一样的,所以mean algorithm算法就是一种特殊的SGD算法。
SGD算法的收敛性(convergence)
- 首先证明SGD是一种特殊的RM算法:
SGD的目标是最小化 J ( w ) = E [ f ( w , X ) ] J(w) = \mathbb E[f(w,X)] J(w)=E[f(w,X)] , 这个问题可以转换为寻根问题:
∇ w J ( w ) = E [ ∇ w f ( w , X ) ] = 0 \nabla_w \ J(w) = \mathbb E[\nabla _w f(w,X)] = 0 ∇w J(w)=E[∇wf(w,X)]=0
设 g ( w ) = ∇ w J ( w ) = E [ ∇ w f ( w , X ) ] g(w) = \nabla_w J(w) = \mathbb E[\nabla_wf(w,X)] g(w)=∇wJ(w)=E[∇wf(w,X)]
那么SGD的目标就是找到 g ( w ) = 0 g(w)= 0 g(w)=0的根。
我们可以测量的是:
g ~ ( w , η ) = ∇ w f ( w , x ) = E [ ∇ w f ( w , X ) ] + ( ∇ w f ( w , x ) − E [ ∇ w f ( w , X ) ] ) \begin{aligned} \tilde g(w,\eta) &= \nabla_w f(w,x) \\ &= \mathbb E[\nabla_wf(w,X)] + (\nabla_wf(w,x) - \mathbb E[\nabla_w f(w,X)]) \end{aligned} g~(w,η)=∇wf(w,x)=E[∇wf(w,X)]+(∇wf(w,x)−E[∇wf(w,X)])
而与之对应的RM算法是
w k + 1 = w k − α k g ~ ( w , η ) = w k − α k ∇ w f ( w k , x k ) w_{k+1}= w_k - \alpha _k \tilde g(w,\eta) = w_k - \alpha_k \nabla_wf(w_k,x_k) wk+1=wk−αkg~(w,η)=wk−αk∇wf(wk,xk)
- 接下来我们就可以应用RM算法的收敛性条件,来证明SGD是收敛的。
SGD算法的收敛模式
SGD收敛的过程中,是否会收敛很慢或者收敛随机?
我们定义相对误差 δ k \delta _k δk
δ k = ∣ ∇ w f ( w , x ) − E [ ∇ w f ( w , X ) ] ∣ ∣ E [ ∇ w f ( w , X ) ] ∣ \delta _k = \frac{|\nabla_wf(w,x) - \mathbb E[\nabla_w f(w,X)]|}{|\mathbb E[\nabla_w f(w,X)]|} δk=∣E[∇wf(w,X)]∣∣∇wf(w,x)−E[∇wf(w,X)]∣
此处的 E [ ∇ w f ( w , X ) ] \mathbb E[\nabla_w f(w,X)] E[∇wf(w,X)]是true gradient, 而 ∇ w f ( w , x ) \nabla_wf(w,x) ∇wf(w,x) 是 stochastic gradient。
性质:当 w k w_k wk 离 w ∗ w^* w∗ 较远时,相对误差较小, 当 w k w_k wk 离 w ∗ w^* w∗ 很近的时候,才会有比较大的相对误差(即随机性)
如何得到如上性质?
使用拉格朗日中值定理 f ( x 1 ) − f ( x 2 ) = f ′ ( x 3 ) ( x 1 − x 2 ) f(x_1)-f(x_2) =f'(x_3)(x_1 - x_2) f(x1)−f(x2)=f′(x3)(x1−x2)
那么由 E [ ∇ w f ( w ∗ , X ) ] = 0 \mathbb E[\nabla _wf(w^*,X)] = 0 E[∇wf(w∗,X)]=0和中值定理 ,我们有
δ k = ∣ ∇ w f ( w , x ) − E [ ∇ w f ( w , X ) ] ∣ ∣ E [ ∇ w f ( w , X ) ] − E [ ∇ w f ( w ∗ , X ) ] ∣ = ∣ ∇ w f ( w , x ) − E [ ∇ w f ( w , X ) ] ∣ ∣ E [ ∇ w 2 f ( w ~ , X ) ( w k − w ∗ ) ] ∣ \delta_k = \frac{|\nabla_wf(w,x) - \mathbb E[\nabla_w f(w,X)]|}{|\mathbb E[\nabla_w f(w,X)] - \mathbb E[\nabla_wf(w^*,X)]|} = \frac{|\nabla_wf(w,x) - \mathbb E[\nabla_w f(w,X)]|}{|\mathbb E[\nabla^2_w f(\tilde w,X)(w_k-w^*)]|} δk=∣E[∇wf(w,X)]−E[∇wf(w∗,X)]∣∣∇wf(w,x)−E[∇wf(w,X)]∣=∣E[∇w2f(w~,X)(wk−w∗)]∣∣∇wf(w,x)−E[∇wf(w,X)]∣
我们假设 ∇ w 2 f ≥ c > 0 \nabla^2_wf \ge c > 0 ∇w2f≥c>0
那么我们考虑分母项,就有
KaTeX parse error: Invalid color: ' #FF0000' at position 38: ...hbb E\textcolor{̲ ̲#̲F̲F̲0̲0̲0̲0̲}̲{[}\nabla^2_w f...
于是误差 δ k \delta_k δk满足
δ k ≤ ∣ ∇ w f ( w , x ) − E [ ∇ w f ( w , X ) ] ∣ c ∣ w k − w ∗ ∣ \delta_k \le \frac{|\nabla_wf(w,x) - \mathbb E[\nabla_w f(w,X)]|}{c|w_k - w^*|} δk≤c∣wk−w∗∣∣∇wf(w,x)−E[∇wf(w,X)]∣
于是当 w k w_k wk 距离 w ∗ w^* w∗比较远,那么分母比较大,相对误差 δ k \delta_k δk 的上界比较小。
当 w k w_k wk 距离 w ∗ w^* w∗比较近,那么分母比较小,此时相对误差 δ k \delta_k δk 的上界才会变大一些。
BGD,MBGD和SGD
- BGD(batch gradient descent) , 用到所有的采样来平均求期望
- MBGD(min-batch gradient descent) ,选择一部分采样(m个采样)
- SGD(stocastic gradient descent) ,选择一个采样
在MBGD中,当MBGD中的采样数量 m = 1 m=1 m=1时,等价于SGD。
当采样数量 m = n m = n m=n时,趋近于BGD(注意!此时不完全等于BGD,因为BGD是取出所有的n个样本,而MBGD是对样本集进行n次的采样)
考虑如下优化问题:
m i n w J ( w ) = 1 2 n ∑ n i = 1 ∣ ∣ w − x i ∣ ∣ 2 \underset{w}{min} \ J(w) = \frac{1}{2n} \underset{i=1}{\overset{n}{\sum}} ||w - x_i || ^2 wmin J(w)=2n1i=1∑n∣∣w−xi∣∣2
那么三种算法的迭代公式如下:
KaTeX parse error: Expected 'EOF', got '&' at position 121: ...- \overline x) &̲ (BGD)\\ w_{k+1...