正文
區分強化學習和其他種類的學習方式最顯著的特點是:在強化學習中,訓練信息被用於評估動作的好壞,而不是用於指導到底該是什么動作。這也是為何需要主動去做exploration的原因。純粹的評估性反饋可以表明一個動作的好壞、但並不能知道當前動作是否是最佳選擇或者是最差選擇。評估性反饋(包括evoluationary method)是方程優化的基礎。相對的,純粹的指導性反饋,表明了當前的最優動作,這個最優動作是獨立於實際采取的動作的。這種反饋形式是監督學習的基礎,被用於模式識別、人工神經網絡等方面。當然了,也有一些交叉案例中,這兩種反饋形式同時使用。
這一章主要在一種簡單的情境下研究強化學習的這種反饋形式,這種簡單情形只包含一個環境狀態,這樣能避免完整的強化學習問題的很多復雜方面,從而專注於研究evaluative feedback 和instuctive feedback的不同,以及如何對兩者進行結合使用。
這個簡單的案例叫做多臂賭博機問題。我們用這個案例來學習一些強化學習中的基本學習方法,在這章末尾,我們會討論一下當環境狀態不止一個時,多臂賭博機的學習問題會是什么樣子。
2.1 n-armed bandit problem:
這里稍微描述一下多臂賭博機這個概念。現在我有n台賭博機,每台有一個臂(也就是杠桿)我可以通過拉動這個臂來獲得這台賭博機的reward,但是每台賭博機的這個reward是按照一定的概率分布的,因此有上下浮動,不是固定不變的。現在呢,我需要解決的問題就是最大限度地通過杠桿拉動序列,使得獲得的獎勵最大。這個序列的次數是任意的。
對於每台賭博機的臂,都有一個期望reward,也就是我們之前說的value。當然這個value的數值之前肯定是不知道的,不然這個問題就沒有意義了。然而我們可以大概估計這個value值。
如果我們保持我們的這種value估計,那么在每次選擇動作之前肯定至少有一個臂的value是最大的。如果我們每次都選這個最大的value值的臂,那么這就是貪婪動作。如果我們每次都采取貪婪選擇,那我們就是在exploiting。如果我們每次不這么干,而是有時去選一些非貪婪選擇的臂,那么我們就是在exploring(探索),因為這樣我們就能改進對其他臂value信息的估計。exploitation當然是正確的,因為它是當前這一步的最優選擇,然而exploration也許會幫助我們在長遠的序列中得到更大的total reward。比如:假設每次做選擇的時候,貪婪選項的value是可以確定的,但是非貪婪選項的value值帶有一定的不確定性。這種不確定性的意思是,有可能個別的非貪婪選項的value會好於貪婪選項的value,但是不確定是哪個。這樣的情況下,適當的exploration有助於幫我們找到可能存在的比貪婪選項更好的那個選擇。可能在短期內reward比較低,然而一旦找到了,我們就可以反復選擇(exploit)那個之前被認為非貪婪的選項,從而使得長期reward總和較高。
在特定的情形下,是exploiting還是exploring取決於很多因素。比如value估計值的精確程度、非貪婪值的不確定性或者是剩余的選擇機會等等。有很多復雜的方法來平衡這兩者的選擇,然而大多數這樣的方法都有很強的假設前提或者先驗知識,而這些前提條件在很多的實際強化學習問題中是不能被保證的。當這些假設前提不被保證時,這些方法的效果也就不那么出色了。
在這一章,我們不必去用復雜的方法把exploiting和exploring之間平衡的那么好,而只是單純的去平衡就好了。我們會用幾種簡單的方法去實現兩者間的平衡,並表明平衡之后的學習效果要好於一味的exploiting。
2.2 action-value method:
首先,我們先來仔細的做一下value的估計。我們把每個action的真實value定義為
,把每個action在第t個時間步下的估計值定義為
。之前我們提到過,每個action的真實value,是當該動作被選擇時所獲得的期望reward,在這里,我們自然想到用最簡潔的歷史平均reward來表示當前動作的value估計值。假定某個action在t時間前總共被選擇了
次,於是我們的估計值如下式:

這個方法叫做sample-average,因為每個動作的estimated value都是依據過往sample reward的平均值進行計算的。當
等於0,我們可以把定義為一個默認的初始值,當
趨近無窮,則最終收斂於
。當然這個estimate的方法不一定是最好的,但是不要緊。
最簡單的選擇策略就是每次選擇action value最大的那個。也就是使得
,這樣的策略只是exploiting,不exploring。另一個簡單的方法就是大部分時間用來exploiting,然而每隔一段時間,比如說以概率為
的可能性,來exploring。因為這種方法和貪婪方法很像,就叫做
方法。這種做法的好處是隨着選擇次數的增加,對每個動作的選擇次數都會趨向無窮,也就保證了每個動作的estimate value都無限趨近真實值。
為了粗略的評估greedy算法和
算法的優劣,我們做了2000次實驗,賭博機的個數,每個賭博機的臂拉下的真實value服從高斯分布。在t時間的每個臂被選擇時的reward用真實值外加服從高斯標准正太分布(mean = 0 variance = 1)的噪聲之和來表示。
上圖表明了經過2000次實驗后的10個臂的平均reward水平。可以看出來隨着實驗次數增加,到了后期,
算法的優勢開始顯現。
當然,
算法相對於greedy算法的優勢也並非始終。當噪聲方差很大時,
算法可以通過較多的exploration來找到最優動作,這種情況下其相對於greedy算法的優勢很明顯。而當噪聲方差為0時,這種優勢就不盡然了。然而,就算是在deterministic的任務下,exploration想比於none-exploration也有很多優勢。比如假設賭博臂是nonstationary的,也就是它的真實value是不確定的(剛才我們討論的真實value是確定的,而在實際情況下,不確定的value更普遍)。
總之,這一節通過簡單的對比實驗告訴我們,exploiting和exploration之間的平衡是必須的。
2.3 soft-max action selection
提出softmax action selection的主要目的是因為上一節的
算法針對剩下的所有選擇都采取同樣的概率,這樣會導致最壞的選擇也會同等機會被選中,這不是我們想要的。一個明顯的解決辦法是讓每個賭博機臂被選中的概率和其estimate value相關聯。對於在t時間選中動作a的概率,由下式給出:

越大,則概率分布的越均衡,
越小,那么不同選項被選中的概率差異越大。
softmax-greedy算法和
算法都只有一個參數需要人為選擇。但是很多人覺得
的參數
很好設置,但是
卻不好准確設置,因為有了指數的緣故。因此,近些年來,softmax算法逐漸不太流行,一方面因為參數難以合理設置,另一方面也是因為在不知道實際value的情況下,更不能知道其中的概率和estimate value之間的關系。但是,當我們在后文中涉及policy-based方法時會再回來看這個softmax-selection的。
2.4 Incremental Implementation
這一節主要改進的是計算和內存復雜度。
回顧一下前文中的value estimation公式

可以發現,為了算在t時間的action a的value estimation,我們需要t時間之前所有時間該動作的reward記錄。隨着時間增加,這種計算方式涉及的計算復雜度和存儲壓力都會增加。
其實這是不必要的,我們完全可以用另一種方式來計算
。推導如下:

用這個形式的迭代公式,只需要保存
和k,再加上一點簡單的加減運算,就可以快速得到
。
這個形式的寫法貫穿於本書,需要加以注意:

target-oldEstimate是estimate的error,乘以stepsize是不斷地減小這個error,逼近target。在這個例子中,target就是第k次選擇某動作的的reward。實際上,stepsize也是隨着時間而變化的,在本書的其他地方,常用
來表征stepsize,或者更精確的
。在這里
。
這次上篇先寫到這里,未完待續。
原文鏈接:http://mp.weixin.qq.com/s/jJNyJ5UCRNHHOHf4s-fKvQ
如感興趣,歡迎關注微信公眾號:

