Robbins-Monro 随机逼近算法和序列学习(Sequential Learning)
隨機(jī)逼近的問題背景:
設(shè)因素x的值可由試驗(yàn)者控制,x的“響應(yīng)”的指標(biāo)值為Y,當(dāng)取x之值x進(jìn)行試驗(yàn)時(shí),響應(yīng)Y可表為Y=h(x)+ε,式中h(x)為一未知函數(shù),ε為隨機(jī)誤差。設(shè)目標(biāo)值為A,要找這樣的x,使h(x)=A。分別以Y-A和h(x)-A代替Y和h(x)。不妨設(shè)A=0,問題就在于找方程h(x)=0的根x。例如若x為施藥量,Y為衡量藥物反應(yīng)的某種生理指標(biāo),則問題在于找出施藥量x,以使該生理指標(biāo)控制于適當(dāng)?shù)闹?/span>A。
算法分析:
若隨機(jī)誤差 ε=0,且h(x)為已知函數(shù),則數(shù)值分析中提供了許多近似解法。例如可用牛頓迭代法求解:從一適當(dāng)選擇的初始值x0出發(fā),用迭代公式x{i+1}=x{i}-h(x{i})/h'(x{i});但當(dāng)h(x)未知且有隨機(jī)誤差干擾時(shí),α{i}和h(x{i})無法算出。仔細(xì)觀察這個(gè)迭代公式,不難發(fā)現(xiàn),其核心思想就是利用當(dāng)前函數(shù)的取值位置去推算函數(shù)的0點(diǎn)位置。假如我們將函數(shù)限定為非降函數(shù),那么我們知道0點(diǎn)右邊的一定是大于0的,左邊的則是小于0的。那么如果我們?nèi)〉揭粋€(gè)大于0的值,我們就知道下一次取值要往左修正,反之如果是小于0,那么就要往右修正。為了不讓一次左修正加一次右修正以后又回到原來的點(diǎn),我們必須要讓每次修正的步長有所遞減(最后必須趨于0),這也是算法會(huì)收斂的關(guān)鍵所在——你不能讓它遞減的太快,否則在抵達(dá)0點(diǎn)前就收斂了,但是也不能過慢,否則雖然最后會(huì)收斂,但是時(shí)間會(huì)很長。
為了能夠處理一開始的那種隨機(jī)情況,Robbins-Monro將牛頓法稍作修改,利用以上的思想,引進(jìn)迭代程序x{i+1}=x{i}-a{i}Y{xi},式中a{i}為適當(dāng)選定的常數(shù)序列,用以嚴(yán)格控制收斂的速度。為什么這個(gè)算法是正確的,即使觀測到的數(shù)據(jù)具有隨機(jī)性?直觀的解釋,由于ε為隨機(jī)誤差,所以必定有E[Y]=E[h(x)+ε]=h(x), 也就是說,所取得的值雖然不準(zhǔn)確,確實(shí)在準(zhǔn)確值附近波動(dòng)的。那么如果準(zhǔn)確值大于0,波動(dòng)以后的值也大于0,最終修訂的方向就沒有錯(cuò)誤,所以波動(dòng)在這種情況所造成的影響只是稍微改變了一點(diǎn)步長,這對于收斂性本身毫無影響;但是如果波動(dòng)以后的值是小于0的,最終就會(huì)向相反的方向修訂,這樣就是遠(yuǎn)離0點(diǎn)的了,這必然是和收斂方向相違背的!但是,注意到,如果越是遠(yuǎn)離0點(diǎn),波動(dòng)的平均值(也就是準(zhǔn)確值)也是遠(yuǎn)離0點(diǎn)的,這樣如果想要產(chǎn)生一個(gè)波動(dòng)點(diǎn),這個(gè)點(diǎn)的取值符號(hào)和當(dāng)前準(zhǔn)確值取值符號(hào)相反的概率會(huì)越來越小!也就是說,函數(shù)的非降性在這里發(fā)揮了關(guān)鍵作用——它使得即使會(huì)由于隨機(jī)波動(dòng)造成錯(cuò)誤的修訂方向,但是最后這種錯(cuò)誤不會(huì)無限延續(xù)下去,必定在一定的時(shí)候被修正回正確的方向,而且犯的錯(cuò)誤越大,得到修正的可能性也就越大。
序列學(xué)習(xí):
那么, 這和序列學(xué)習(xí)有什么關(guān)系呢?比如我們有一個(gè)函數(shù)f(x), 我現(xiàn)在不知道這個(gè)函數(shù)的準(zhǔn)確形式,但是我手上有對應(yīng)的取值數(shù)據(jù),我要通過這些數(shù)據(jù)把函數(shù)還原出來(這個(gè)過程叫做回歸)。但是我的數(shù)據(jù)不是一次性獲得的,可能我用完第一個(gè)數(shù)據(jù)以后要等一段時(shí)間第二個(gè)數(shù)據(jù)才會(huì)出來。我不想浪費(fèi)時(shí)間等數(shù)據(jù),而想通過已有的數(shù)據(jù)動(dòng)態(tài)的去估計(jì)這個(gè)函數(shù),如果有了新的數(shù)據(jù),我就可以利用前面估計(jì)的結(jié)果結(jié)合這個(gè)新數(shù)據(jù)得到新的估計(jì)結(jié)果。。。這個(gè)過程就叫做序列學(xué)習(xí)?,F(xiàn)在,如果我不關(guān)注函數(shù)的具體形式,但是對函數(shù)在什么數(shù)據(jù)下取0點(diǎn)特別感興趣,那么我就要用到Robbins-Monro算法了:每次讀入一個(gè)新的數(shù)據(jù),把這個(gè)數(shù)據(jù)帶入已有的估計(jì)中就會(huì)得到一個(gè)修正量,用這個(gè)修正量就可以得到新的估計(jì):
對于某個(gè)統(tǒng)計(jì)量ti = t(x1,x2...,x_{i-1}) 以及關(guān)于這個(gè)統(tǒng)計(jì)量的未知函數(shù)f(t). 如何盡可能的準(zhǔn)確求出f(t)=0的解?
t_{i+1}=ti - ai F(xi;ti)
F(xi;ti) = f(ti)+ε (E[F(xi;ti)]=f(ti))
在當(dāng)前統(tǒng)計(jì)量ti下,F(xi;ti)為基于當(dāng)前觀測值xi的估計(jì)(具有隨機(jī)波動(dòng)性),?f(ti)為準(zhǔn)確函數(shù)取值。 注意到t_{i+1}在計(jì)算時(shí)已經(jīng)包括了xi這點(diǎn)的信息,所以下一次迭代直接從x_{i+1}開始。換句話說?F(xi;ti)這個(gè)估計(jì)值包含了x1,x2...,xi的全部信息。
總結(jié)
以上是生活随笔為你收集整理的Robbins-Monro 随机逼近算法和序列学习(Sequential Learning)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DS18B20数字温度传感器及单总线协议
- 下一篇: 激光测距仪系统设计 c语言程序),基于时