首先回顾mean estimation:
已经知道这个估计的基本想法是Monte Carlo estimation,以及xˉ→E\bar{x}\rightarrow \mathbb{E}xˉ→E,随着N→∞N\rightarrow \inftyN→∞。这里为什么又要关注mean estimation,那是因为在强化学习中许多value被定义为means,例如state/action value。
新的问题:如何计算mean barxbar{x}barx:E[X]≈xˉ:=1N∑i=1Nxi\mathbb{E}[X]\approx \bar{x}:=\frac{1}{N}\sum_{i=1}^N x_iE[X]≈xˉ:=N1i=1∑Nxi
我们有两种方式:
具体地,假设wk+1=1k∑i=1kxi,k=1,2,...w_{k+1}=\frac{1}{k}\sum_{i=1}^k x_i, k=1,2,...wk+1=k1i=1∑kxi,k=1,2,...然后有wk=1k−1∑i=1k−1xi,k=2,3,...w_k=\frac{1}{k-1}\sum_{i=1}^{k-1} x_i, k=2,3,...wk=k−11i=1∑k−1xi,k=2,3,...,我们要建立wkw_kwk和wk+1w_{k+1}wk+1之间的关系,用wkw_kwk表达wk+1w_{k+1}wk+1:wk+1=1k∑i=1kxi=1k(∑i=1k−1xi+xk)=1k((k−1)wk+xk)=wk−1k(wk−xk)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}((k-1)w_k+x_k)=w_k-\frac{1}{k}(w_k-x_k)wk+1=k1i=1∑kxi=k1(i=1∑k−1xi+xk)=k1((k−1)wk+xk)=wk−k1(wk−xk)因此,获得了如下的迭代算法:wk+1=wk−1k(wk−xk)w_{k+1}=w_k-\frac{1}{k}(w_k-x_k)wk+1=wk−k1(wk−xk)
我们使用上面的迭代算法增量式地计算x的mean:
这样就得到了一个求平均数的迭代式的算法。算法的优势是在第k步的时候不需要把前面所有的xix_ixi全部加起来再求平均,可以在得到一个样本的时候立即求平均。另外这个算法也代表了一种增量式的计算思想,在最开始的时候因为kkk比较小,wk≠E[X]w_k\ne \mathbb{E}[X]wk=E[X],但是随着获得样本数的增加,估计的准确度会逐渐提高,也就是wk→E[X]as k→Nw_k\rightarrow \mathbb{E}[X] \text{ as } k\rightarrow Nwk→E[X] as k→N。
更进一步地,将上述算法用一个更泛化的形式表示为:wk+1=wk−αk(wk−xk)w_{k+1}=w_k-\alpha_k(w_k-x_k)wk+1=wk−αk(wk−xk),其中1/k1/k1/k被替换为αk>0\alpha_k >0αk>0。
Stochastic approximation (SA):
Robbins-Monro (RM) algorithm:
问题声明:假设我们要求解下面方程的根g(w)=0g(w)=0g(w)=0,其中w∈Rw\in \mathbb{R}w∈R是要求解的变量,g:R→Rg:\mathbb{R}\rightarrow \mathbb{R}g:R→R是一个函数.
那么如何求解g(w)=0g(w)=0g(w)=0?
这样的问题可以使用Robbins-Monro(RM)算法求解:wk+1=wk−akg~(wk,ηk),k=1,2,3,...w_{k+1}=w_k-a_k\tilde{g}(w_k, \eta_k), k=1,2,3,...wk+1=wk−akg~(wk,ηk),k=1,2,3,...其中
函数g(w)g(w)g(w)是一个black box!也就是说该算法依赖于数据:
这里边的哲学思想:不依赖model,依靠data!这里的model就是指函数的表达式。
为什么RM算法可以找到g(w)=0g(w)=0g(w)=0的解?
首先给出一个直观的例子:
在本例中RM算法如下:wk+1=wk−akg(wk)w_{k+1}=w_k-a_kg(w_k)wk+1=wk−akg(wk)
当ηk=0\eta_k=0ηk=0的时候g~(wk,ηk)=g(wk)\tilde{g}(w_k, \eta_k)=g(w_k)g~(wk,ηk)=g(wk)。
模拟仿真结果:wkw_kwk收敛到true root w∗=1w*=1w∗=1。
直观上:wk+1w_{k+1}wk+1比wkw_kwk更接近于w∗w*w∗
上面的分析是基于直观的,但是不够严格。一个严格收敛的结果如下:
在RM算法中,如果上面的条件满足,那么wkw_kwk就会收敛到w∗w*w∗,w∗w*w∗就是g(w)=0g(w)=0g(w)=0的一个解。第一个条件是关于g(w)的梯度要求,第二个条件是关于aka_kak系数的要求,第三个条件是关于这个ηk\eta_kηk,就是测量误差的要求。
这三个条件的解释:
对第二个条件进行讨论:∑k=1∞ak2<∞, ∑k=1∞ak=∞\sum_{k=1}^\infty a_k^2< \infty \text{ , } \sum_{k=1}^\infty a_k=\inftyk=1∑∞ak2<∞ , k=1∑∞ak=∞
那么问题来了,什么样的ak{a_k}ak能够满足这样两个条件呢?∑k=1∞ak=∞\sum_{k=1}^\infty a_k=\infty∑k=1∞ak=∞且∑k=1∞ak2<∞\sum_{k=1}^\infty a_k^2< \infty∑k=1∞ak2<∞
一个典型的序列是ak=1ka_k=\frac{1}{k}ak=k1
Euler-Mascheroni
常数(也称为Euler常数)Basel problem
。如果上面三个条件不满足,则RM算法将不再工作,例如:
在许多RL算法中,aka_kak经常选择一个非常小的常数(sufficiently small constant),尽管第二个条件不满足,但是该RM算法仍然可以工作。
回顾本文最初的mean estimation算法wk+1=wk−αk(wk−xk)w_{k+1}=w_k-\alpha_k(w_k-x_k)wk+1=wk−αk(wk−xk)
我们知道:
现在我们证明这个算法是一个特殊的RM算法,它的收敛性就能够得到了。
1)考虑一个函数g(w)≐w−E[X]g(w)\doteq w-\mathbb{E}[X]g(w)≐w−E[X]我们的目标是求解g(w)=0g(w)=0g(w)=0,这样,我们就可以得到E[X]\mathbb{E}[X]E[X]
2)我们不知道X,但是可以对X进行采样,因此我们得到的观察是g~(w,x)≐w−x\tilde{g}(w, x)\doteq w-xg~(w,x)≐w−x,注意
3)求解g(x)=0g(x)=0g(x)=0的RM算法是wk+1=wk−αkg~(wk,ηk)=wk−αk(wk−xk)w_{k+1}=w_k-\alpha_k \tilde{g}(w_k, \eta_k)=w_k-\alpha_k(w_k-x_k)wk+1=wk−αkg~(wk,ηk)=wk−αk(wk−xk),这就是之前给出的mean estimation算法。
Dvoretzkys convergence theorem
mean estimation problem
Q-learning
和TD learning
算法。stochastic gradient descent(SGD)算法在机器学习和强化学习的许多领域中广泛应用;SGD也是一个特殊的RM算法,而且mean estimation algorithm是一个特殊的SGD算法。
假设我们的目标是求解下面优化问题:minwJ(w)=E[f(w,X)]\min_{w} J(w)=\mathbb{E}[f(w, X)]wminJ(w)=E[f(w,X)]
有三种方法求解:
Method 1: gradient descent (GD)
问题是the expected value is difficult to obtain。
Method 2: batch gradient descent (BGD)
问题是对于每个wkw_kwk,在每次迭代中需要许多次采样。
Method 3: stochastic gradient descent (SGD):
SGD与前面两种算法相比:
考虑下面的一个优化问题:
其中:
有三个练习:
首先看第一个练习:
对J(w)J(w)J(w)求梯度,使其等于0,即可得到最优解,因此有∇wJ(w)=0\nabla _w J(w)=0∇wJ(w)=0,然后根据公式,得到E[∇wf(w,X)]=0\mathbb{E}[\nabla_wf(w,X)]=0E[∇wf(w,X)]=0,然后得到E[w−X]=0\mathbb{E}[w-X]=0E[w−X]=0,由于w是一个常数,因此w=E[X]w=\mathbb{E}[X]w=E[X]。
第二个联系的答案是:
相应的,使用SGD算法求解上面问题:
从GD到SGD:
∇wf(wk,xk)\nabla _w f(w_k, x_k)∇wf(wk,xk)被视为E[∇wf(wk,X)]\mathbb{E}[\nabla _w f(w_k, X)]E[∇wf(wk,X)]的一个noisy measurement:
不管怎样,由于∇wf(wk,xk)≠E[∇wf(wk,X)]\nabla _w f(w_k, x_k)\ne \mathbb{E}[\nabla _w f(w_k, X)]∇wf(wk,xk)=E[∇wf(wk,X)],是否基于SGD随着k趋近于无穷,wk→w∗w_k\rightarrow w*wk→w∗?答案是肯定的。
这里的方式证明SGD是一个特殊的RM算法,自然地得到收敛性。SGD的目标是最小化J(w)=E[f(w,X)]J(w)=\mathbb{E}[f(w, X)]J(w)=E[f(w,X)]
这个问题可以转换为一个root-finding问题:∇wJ(W)=E[∇wf(w,X)]=0\nabla_w J(W)=\mathbb{E}[\nabla _w f(w, X)]=0∇wJ(W)=E[∇wf(w,X)]=0
令g(w)=∇wJ(W)=E[∇wf(w,X)]g(w)=\nabla_w J(W)=\mathbb{E}[\nabla _w f(w, X)]g(w)=∇wJ(W)=E[∇wf(w,X)],那么SGD的目标就是找到满足g(w)=0g(w)=0g(w)=0的根。
这里使用RM算法求解,因为g(w)的表达式未知,所以要用到数据。what we can measure is
然后,RM算法求解g(w)=0g(w)=0g(w)=0就得到
因为SGD算法是一个特殊的RM算法,它的收敛性遵从:
问题:由于stochastic gradient是随机的,那么approximation是不精确的,是否SGD的收敛性是slow或者random?
为了回答这个问题,我们考虑在stochastic和batch gradients之间的一个relative error:
由于E[∇wf(w∗,X)]=0\mathbb{E}[\nabla_w f(w*, X)]=0E[∇wf(w∗,X)]=0,我们有:
其中后面等式的分母使用了一个mean value theorem(中值定理),并且w~k∈[wk,w∗]\tilde{w}_k\in [w_k, w*]w~k∈[wk,w∗]
假设fff是严格凸的,满足∇w2f≥c>0\nabla_w^2f \ge c > 0∇w2f≥c>0对于所有的w,Xw, Xw,X,其中ccc是一个positive bound。
然后,δk\delta_kδk的证明就变为了
然后把这个分母的性质带入刚才的relative error公式,就得到
再看上面的式子:
这个公式也表明了SGD的一个有趣的收敛模式:
考虑一个例子:
Setup:
Result:
MBGD:mini-batch gradient descent
在之前介绍的SGD的formulation中,涉及random variable和expectation。但是在学习其他材料的时候可能会遇到一个SGD的deterministic formulation,不涉及任何random variables。
同样地,考虑这样一个优化问题:minwJ(w)=1n∑i=1nf(w,xi)\min_w J(w)=\frac{1}{n}\sum_{i=1}^n f(w, x_i)wminJ(w)=n1i=1∑nf(w,xi)
求解这个问题的gradient descent算法如下:
假设这样的一个实数集合比较大,每次只能得到一个xix_ixi,在这种情况下,可以使用下面的迭代算法: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∇wf(wk,xk)
那么问题来了:
回答上面问题的思路是:我们手动地引入一个random variable,并将SGD从deterministic formulation转换为stochastic formulation。
具体地,假设一个XXX是定义在集合{xi}i=1n\{x_i\}_{i=1}^n{xi}i=1n的random variable。假设它的概率分布是均匀的,即p(X=xi)=1/np(X=x_i)=1/np(X=xi)=1/n
然后,这个deterministic optimization problem变成了一个stochastic one:
假设我们想要最小化J(w)=E[f(w,X)]J(w)=\mathbb{E}[f(w,X)]J(w)=E[f(w,X)],给定一组来自XXX的随机采样{xi}i=1n\{x_i\}_{i=1}^n{xi}i=1n。分别用BGD,SGD,MBGD求解这个问题:
在BGD算法中:
在MBGD算法中:
在SGD算法中
MBGD与BGD和SGD进行比较:
举个例子:给定一些数值{xi}i=1n\{x_i\}_{i=1}^n{xi}i=1n,我们的目标是计算平均值mean: xˉ=∑i=1nxi/n\bar{x}=\sum_{i=1}^n x_i/nxˉ=∑i=1nxi/n。这个问题可以等价成一个优化问题:minwJ(w)=12n∑i=1n∣∣w−wi∣∣2\min_w J(w)=\frac{1}{2n}\sum_{i=1}^n||w-w_i||^2wminJ(w)=2n1i=1∑n∣∣w−wi∣∣2分别用三个算法求解这个优化问题:
其中xˉk(m)=∑j∈Lkxj/m\bar{x}_k^{(m)}=\sum_{j\in \mathcal{L}_k} x_j/mxˉk(m)=∑j∈Lkxj/m
更进一步地,如果αk=1/k\alpha_k=1/kαk=1/k,上面等式可以求解为:
仿真结果:令αk=1/k\alpha_k=1/kαk=1/k,给定100个点,使用不同的mini-batch size得到不同的收敛速度:
下一篇:ERP(企业资源管理)概述