強化學習導論(2)多臂賭博機

本書的這一部分的第一章描述了強化學習問題的特例,其中只有一種狀態,叫做老虎機問題。第二章描述了我們在整個有限馬爾可夫決策過程中所討論的一般問題的表述及其主要思想,包括貝爾曼方程和值函數。接下來的三章描述了求解有限馬爾可夫的三類基本方法。決策問題:動態規劃、蒙特卡羅方法和時間差分學習。每一類方法都有其優點和缺點。動態規劃方法在數學上有不錯的發展,但需要一個完整和準確的環境模型。蒙特卡羅方法不需要模型,概念上簡單,但不太適合逐步增量計算。最後,時間差分方法不需要模型,完全增量,但更復雜的分析。這些方法在效率和收斂速度方面也有不同之處。剩下的兩章描述瞭如何將這三類方法結合起來獲得它們各自的最佳特徵。在一章中,我們描述了蒙特卡洛方法的優點,後面還有和時間差分法的優點結合起來。



     區分強化學習和其他類型學習的最重要的特徵是它使用訓練信息來評估所採取的行動,而不是通過給予正確的指導行動(即是非監督學習)這就是創造積極探索的必要性,明確地尋找好的行爲。他的反饋是監督學習的基礎,包括模式分類、人工神經網絡和系統辨識的大部分。在這一章中,我們研究了強化學習的評價方面在一個簡化的設置,一個不涉及學習在不止一種情況下行動。

  我們探索一下簡單的K搖臂老虎機來評估反饋(feedback)的問題,我們用這個問題介紹了一些基本的學習方法,我們在後面的章節中應用到完整的強化學習問題。在這一章的最後,我們通過討論當老虎機問題擴展後發生的情況,即在一個以上的情況下采取行動時會發生什麼樣的情況,從而更接近完整的強化學習問題。

2-1  K搖臂老虎機

    考慮一種情況,你需要不斷重複地從K個選項中選其中一個選項。你每次作出一個選項後,都會獲得一個數字作爲反饋,K個選項,就有K個數字反饋,這個數值可以理解爲reward。我們的目標是在一段時間內使預期的總獎勵(reward)最大化,比如作出10000次選擇或者一段時間後,計算獎勵的和。

    這個就是原始的K搖臂老虎機問題。這個問題就好像先假設K搖臂的K爲一,就是隻有一個搖臂的情況,每一次行爲(action)就是搖一次臂,然後獲得reward。通過反覆的行動選擇,你可以把你的行動集中在最佳的槓桿上,使你的獎金最大化。另一個比喻是醫生在一系列重病患者的實驗治療之間進行選擇治療,每一個動作都是一種治療的選擇,每一個獎賞都是病人的生存或幸福。今天,“多搖臂老虎機”一詞有時被用來概括上述問題,但在本書中,我們用它來引用這個簡單的例子。

    在K搖臂中,你的每一個選擇都有期望值,比如在K個搖臂中,你是第三次搖臂,你要搖第i個搖臂,搖臂的結果就是第三次搖臂行爲(action)的值(value),我們假設搖臂的次數t的集合At = {1,2,3,...t},相對應每次搖臂獲得的獎勵集合Rt,任意一次搖臂選擇a搖臂後,其對應的值爲q(a) = E(Rt|At=a)

如果你知道每個行動的值,那你就能輕易解決k搖臂問題:你只要去搖能搖出最高獎勵的搖臂即可。但實際問題是這樣的,我們並不知道每個搖臂能搖出什麼值,你可以去估計每個搖臂,我們假設你估計搖第a個臂的值爲Qt(a),t爲第t次搖臂,那麼我們的任務就是把估計的搖臂值Q(a)儘可能地接近真實值q(a).

    每一次搖臂,K個搖臂,你去估計每一個搖臂的值,總得有一個搖臂的值最大吧(不然怎麼選呢),找最大值這個就是貪婪法(greedy),當你搖其中一次臂後,我們就可以說你是利用(exploiting)你當前對行爲值的瞭解而作出的選擇,你選擇了你評估出的最大值。如果你搖臂不是根據你估計的最大值而作出選擇,那就非貪婪,我們就可以說你是探索(exploring),探索能夠提高你對非貪婪行動的價值估計。利用和探索有什麼區別呢?利用就是在一次搖臂中選出你評估值最大的那個搖臂,也就說,如果只能搖臂一次,那麼利用(exploiting)就有很大優勢,但是探索(exploiting)就能在長時間的搖臂中獲取更大的reward。舉個例子,假設一個貪婪法的行動的價值是已經知道的,既是已知每個搖臂能搖出什麼值,那麼無論你做多少次搖臂,結果都是最優的,但實際上你不知道搖臂能搖出什麼值,不然還賣什麼彩票啊。這個不確定就是,你搖出一個值,但可能有個更大的搖臂值,但你不知道。因爲探索法是算每個搖臂搖出值的概率,當搖臂次數很多的時候,概率就會準,在短期內,獎勵在探索過程中較低,但長遠來看更高,因爲在你發現了更好的行動之後,你可以多次利用它們。單純的探索和利用都是沒用的,必須要在探索和利用之間找到折衷,探索和利用的矛盾就強化學習面對的問題。特別情況下是探索更好還是利用更好,取決於當前的評估值,選擇次數。當然也有很多方法來平衡探索和利用我們在後面的章節會講述,特別對於K搖臂問題。

    在這本書中,我們不擔心以複雜的方式平衡探索和利用。這一章我們介紹了幾種簡單的平衡方法來解決k搖臂問題,總的來說,會比只用“利用”會好。

2-2 行爲-值方法(action-value)

    還是先估值然後選擇。選擇一個搖臂後,獲得的搖臂值是平均獎勵,評估這一個方法就是是平均得到實際回報。

這個隨機值如果爲真那麼預測值就爲1如果預測值爲假那麼就爲0,如果分母爲0,那麼我們就把Qt(a)定義爲默認值,比如0。如果分母接近無限大,那麼Qt(a)收斂爲q(a)。我們稱之爲估計行動價值的樣本平均法,因爲每一個評估都是相關獎勵樣本的平均值。當然,這只是估計動作值的一種方法,而不一定是最好的方法。不過,現在讓我們繼續使用這個簡單的估計方法,轉而討論如何使用估計值來選擇操作。最簡單的行爲選擇就是是選擇具有評估值最高的操作之一,就是上面說的先猜猜每個搖臂的值,然後選評估值最高的搖臂。我們定義這種“貪婪”行爲選擇爲:

這裏argmax指選擇最大,貪婪法行爲總是選擇評估值最大(利用),這個方法不會去理會選擇出來的是否是個垃圾,它不會想怎麼做纔會更好。有一個簡單的方法來優化這個貪婪行爲,就是在往貪婪法中加入隨機選擇,大部分時間都是在評估價值最高中選搖臂,但偶爾任性一下,隨機選出一個搖臂,也就是說有一個小概率ε會出現隨機選擇搖臂。我們把這種大部分使用貪婪法偶爾任性隨機選擇的方法稱爲--ε貪婪法(ε-greedy),以後會經常看到這個ε-greedy的。這些方法的一個優點是,在步驟數量增加的限度內,每一個動作都會被無限次採樣,從而確保所有的Qt(a)收斂到q(a)。行動將進行無限次,從而確保所有的Qt(a)收斂到q(a)。這當然意味着選擇最優行動的概率收斂於大於
1−ε。

課後練習2.1 在ε-greedy方法選擇中,要作出兩次選擇,現在ε=0.5,現在問,兩個選擇中出現貪婪法的概率?

課後練習2.2 在搖臂例子中,假設有4個搖臂,現在使用ε-greedy方法選擇搖臂和簡單行爲-價值選擇法。現在初始化評估Q1(a)=0,假設行動和獎勵的初始順序是A1=1,R1=1;A2=1,R2=1;A3=2,R3=2;A4=2,R4=2;A5=3,R5=0;在這些步驟中可能會出現ε使得搖臂隨機選擇,這一步是什麼時候發生的?這一步可能發生在哪一步?


2.3 10個搖臂的實驗

    爲了粗略地評估貪婪和ε貪婪方法的相對有效性,我們在一組測試問題上對它們進行了數值比較。這是一組2000個隨機產生的10搖臂數據。

根據均值和單位方差的正態分佈選取了10個搖臂真實值q(a),然後實際的報酬是根據平均q(a)選擇單位方差的正態分佈,正如這些灰色分佈所顯示的。

    下圖中,對於ε-greedy法,有兩個ε值(ε=0.01和ε=0.1),貪婪法一開始提升得比其他方法快,但後面收益並不好,貪婪法最高reward大約只有1,而圖中最高reward有1.55左右。貪婪方法在長期運行中表現得更糟,因爲它經常被卡住,下面那個圖顯示貪婪方法在其中一個任務中找到最佳的行動,其他兩個任務並不理想。這個ε-greedy法表現得比較好,它在“利用”中依然保持“探索”,ε=0.1時,它探索得比較多,找到最優選擇時也比較早,但它從未選擇過超過91%的時間,ε=0.01時,線條提升得比較慢,但最終表現得比ε=0.1好,也有可能隨着時間的推移減少ε,這樣就能即快速提升,最終表現也不錯。假設reward方差較大,比如10而不是1,與獎勵它需要更多的探索,找到最佳的行動,和ε-貪婪的方法應該更優於相對於貪心法。


2.4  增量執行

    迄今爲止,我們討論的行動價值方法都是以觀察獎勵的樣本平均值作爲估計行動價值。我們現在討論的問題是如何以計算效率的方式計算這些平均值,特別是具有常數內存和常數時間步長計算。爲了簡化符號,我們專注於單個動作,讓Ri代表第i個行爲的reward,讓Qn表示第n-1次評估的行動值,我們用:

明顯的優勢就是保持,然而,如果這樣做,那麼隨着更多獎勵的出現,內存和計算需求將隨着時間的推移而增長,每個額外的獎勵將需要額外的內存來存儲和額外的計算來計算分子的總和,正如你可能懷疑的那樣,這並不是一定的,很容易設計增量公式來更新平均值,計算每個新的獎勵需要小而恆定的計算。

當n=1,對於隨機Q1獲得Q2=R1,這個實現需要內存僅爲Qnn。上面式子只需要較少的計算即可得到每個新reward,以下是僞代碼

上面更新規則會經常出現在本書中,普遍形式是:


表達式中[Target-OldEstimate]是一個評估(estimate)的誤差項(error),當向“target"接近時,誤差項減少,假定目標可以指示移動的理想方向,儘管它可能是有噪聲的。上面的例子中,target就是第n個reward。

注意到步數參數(stepsize),在本書中我們用α來表示,機器學習中我們把這個α成爲學習效率,有時候我們爲了簡便就把α=1/n,n是第n步(第n次選擇)。

2.5 跟蹤非平穩問題

    均值法只適用於靜態搖臂問題,所謂靜態搖臂就是,每一個搖臂對應的reward不會變化比如你搖第a個搖臂,搖出來的值永遠都不會變,而之前說過強化學習可以有效應對非靜態的搖臂,在這種情況下,對最近的獎勵比過去長期的獎勵更重視是有意義,其中一個方法就是把連續的數(隨時間改變)作爲步數。舉個例子,用上面那個Qn與Qn+1的式子來說:

這裏我們就把α的值取值區間爲(0,1],那麼Qn+1就與Q1和評估均值有關:


我們把這個稱爲平均權重,因爲權重之和爲:

注意到權重,Ri的值取決於n-i之前reward值,因爲α小於1,所以給予R的權重隨着介入獎勵次數的增加而減少,因此,這是有時被稱爲近因加權平均指數(exponential recency-weighted average)。

    有時從步驟到步驟改變步長參數是很方便的(α=1/n),使用α=1/n作爲簡單均值法的步長,能夠在大量行爲中收斂到真實的行爲的值(action value),隨機逼近理論中的一個著名結果給出了保證收斂概率爲1所需的條件:

第一個條件要求保證步長足夠大,以最終克服任何初始條件或隨機波動,第二個條件保證最終步長變小,以保證收斂(原文是開始要求steps足夠大,然後最終steps變小,這裏的steps應該是步長的意思而不是步數)。

2.6 樂觀的初始值Optimistic Initial Values

    到目前爲止,我們討論的所有方法都在一定程度上依賴於初始動作值評估Q1,在統計學的語言中,這些方法被初始估計值所偏向(biased)。

    初始化行爲值可以被用來鼓勵“探索”,假設初始行爲值Q1不是0,而把他們都設爲5,本來我們對所有搖臂的評估值都爲0,現在全爲5,這就是對所有搖臂很樂觀,認爲都能搖出高的值,但僅僅是樂觀值,搖出來的數值可能會比樂觀初始值要低,我們評估是5,搖出來卻是1,那麼我們的算法就會對這個比評估值低的分數感到“失望”,於是接下來,我們就暫時不會繼續搖這個臂,因爲其他的搖臂都是評估值爲5啊,這種方法的結果就是,我們會把所有的搖臂輪流搖一邊,一遍遍搖直到我們對所有搖臂的評估值接近搖臂的真實值,下圖給出初始值Q1爲0和初始值爲5的對比:

上圖兩種方法的α均爲0.1

一開始,樂觀初始值的方法表現並不好,因爲樂觀初始值一開始是“探索”,就是一遍一遍輪流地把每一個搖臂都搖效率就會很低,到了後面,它已經知道哪個搖臂能夠經常爆出比較高的分數,樂觀初始值的方法表現就比較好。樂觀初始值法是偏於“探索”的方法,但這種方法比較適合搖臂值固定的情況,其實所有注重樂觀初始值的方法都不適合搖出數值不穩定的情況,因爲在開始的時候,在單個搖臂上花的時間少了(搖臂機會平均到每個搖臂)。

課後練習 2.6 神祕的尖峯,上圖中結果應該比較令人信服的,但是在前期出現震盪和尖峯,問題是,是什麼原因使得早期這個方法表現的更好或者更差?

2.7 置信上限選擇

    由於評估action-value有不確定率,所以有“探索”是必須的,貪婪法(純“利用”)只找評估最高的選擇,但有時其他的選擇可能有更好的分數,ε貪婪方法使得貪婪法去嘗試“探索”,在非貪婪行爲中根據其潛在的最佳可能性選擇最好,

考慮到他們的估計是如何接近最大值和這些估計中的不確定性,一個有效的方法是:

Nt(a)表示時間t之前,行爲a被選擇的次數,c>0表示探索程度,如果Nt(a)=0表示行爲a爲最大化行爲。置信上限(upper confidence bound,UCB)行爲選擇是平方跟項爲行爲a的評估值的不確定項和方差,行爲a能達到最大值的次數和c確定了置信水平。每選擇一次a,不確定項就會減少,分母Nt(a)提高,另一方面,每一次選擇了a以外的行爲,t會增加但Nt(a)不會改變,不確定評估值會增加。用自然對數意味着增量隨着時間減少,但也是無限增大,所有的行爲終將被選擇過,那些評估值低和經常被選到的行爲會隨着時間被選擇的次數降低。在10搖臂例子中,UCB的表現比

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章