強化學習導論(1)帝王引擎的轟鳴聲

Reinforcement Learning:An Introduction翻譯,能力有限,有錯和不清楚的地方請指出來。

因爲孤高才去挑戰


人類通過與環境互動學習的想法可能是我們第一次思考學習的本質。嬰兒玩耍時,揮舞着手臂,四處看,他沒有老師教,但他每個行爲都能與周遭的環境聯繫上,環境與行爲的連接產生大量關於因果關係的信息,關於行動的後果,爲了實現目標,該做些什麼。在我們的生活中,這種相互作用無疑是存在的。關於我們的環境和我們自己的知識的主要來源。從交互中學習是一個基礎,幾乎所有學習和智力理論皆如此。我們在學怎麼開車或者在撩妹,我們都意識到周圍環境對我們行爲作出的反映。

  在這本書中,我們探索了一種從交互中學習的計算方法。而不是直接關於人或動物如何學習的理論,我們探索理論化的學習情況並評估各種學習方法的有效性。也就是說,我們採用人工智能的觀點。我們探索設計有效解決學習問題的機器。

1-1 強化學習

  強化學習是機器去學習怎麼做,去尋找作出每個行爲獲得的最大獎勵,機器沒有被告知應該怎麼做,而是通過機器自身去發現什麼樣的行爲才能獲得最大的獎勵,最有趣和最具挑戰性的案例中,行動可能不僅影響眼前的獎勵,而且影響下一個情況,並由此影響所有延遲的獎勵。強化學習最重要的特點便是錯誤搜索和延遲獎勵。

  強化學習,就像許多主題以“ing”爲狀態的主題。例如機器人去爬山,爬山的過程既是遇到問題過程又是解決問題的過程。

強化學習與監督學習和無監督學習都有區別,首先,監督學習的輸入是帶有標籤的數據,這類學習的目標是提高泛化能力,而強化學習是從agent自身與環境的交互中進行學習。其次,無監督學習的目標是爲了找出無標籤數據中隱藏的結構,而強化學習的目標是最大化與環境交互所得的獎勵。因此強化學習可以說是除了監督學習與無監督學習之外的第三種範式。
強化學習面臨的挑戰之一是探索-利用困境(exploit and explore)。

現在只要知道強化學習的基本概念即可:需要學習的對象成爲代理器(agent),代理器在特定的環境(envvirment)中行動(action),環境中有代理器的目標(goal),一旦代理器完成目標,就會獲得獎勵(reward),代理器根據策略(policy)行動,狀態(state)不同,或許就採取不同的策略行動。

1-2要素

除了agent和環境之外,強化學習的要素還包括策略(Policy)獎勵(reward signal)值函數(value function)環境模型(model),下面對這幾種要素進行說明:

  1. 策略(Policy),策略就是一個從當環境狀態到行爲的映射;

  2. 獎勵(reward signal),獎勵是agent執行一次行爲獲得的反饋,強化學習系統的目標是最大化累積的獎勵,在不同狀態下執行同一個行爲可能會得到不同的獎勵;

  3. 值函數(value function),一種狀態的value爲從當前狀態出發到停機狀態所獲得的累積的獎勵;

  4. 環境模型(model),agent能夠根據環境模型預測環境的行爲,採用環境模型的強化學習方法稱爲基於模型(model-based)的方法,不採用環境模型的強化學習方法稱爲model-free方法。

1-3強化學習的限制和範圍:

    強化學習在很大程度上依賴狀態,狀態既是策略函數和價值函數的輸入,同時又是模型的輸出和輸入。通俗的說,我們把狀態(state)作爲一個傳輸到代理器上的信號,告訴代理器該環境是什麼。這本書並不重點講解state,而重點是無論任何狀態,我們的代理器作出的行爲。

    我們在本書中所考慮的大部分強化學習方法都是圍繞估計值函數來構造的,但解決強化學習問題並不是必須的。例如,遺傳算法、遺傳規劃、模擬退火和其他優化方法等方法已被用於研究強化學習問題,而不必求助於值函數。我們稱這些進化的方法,是因爲它們的操作類似於生物進化產生的生物體具有熟練行爲的方式,即使它們在個體壽命期間沒有學習。如果時間充足,進化的算法會有效,同時,因爲代理器沒法感知整個環境,進化算法會有優勢。

    我們的重點是強化學習方法,學習與環境相互作用,而進化方法不這樣做。進化的方法忽略了大量的強化學習問題的有用的結構。

1-4一個擴展例子:井字遊戲

    爲了說明強化學習的一般概念,並與其他方法進行對比,我們接下來將更詳細地考慮一個示例。


    井字遊戲,兩個玩家在3乘3的格子中做圈圈叉叉的事情,一個玩家用叉叉,一個玩家用圈圈,只要圈圈或叉叉在橫向或者豎向或者斜向有3個連成一條線就算贏。儘管這是個簡單的遊戲,但也不容易通過傳統的技術解決。比如,經典的“極小極大”的博弈論解決方案在這裏是不正確的,因爲它假設對手有一種特殊的博弈方式。經典的序列決策問題的優化方法,如動態規劃,可以計算出任何對手的最優解,但要求輸入該對手的全部規格,包括對手在每個板狀態下移動的概率。策略就是告訴玩家規則該怎麼行動,對於每個考慮的策略,通過對對手進行一些比賽來獲得估計其獲勝概率,這一評估將指導下一步考慮哪些策略。一種典型的演化方法是在策略空間中進行改變,然後依次生成和評估策略,以獲得增量改進。

    下面是使用值函數的方法來解決井字問題的方法。首先,我們建立了一個數字表,每一個可能的狀態的遊戲。每一個數字將是我們獲勝的最新估計。我們把這個估計看作是狀態的數值,整個表是學習值函數。如果從A中獲勝的概率估計高於B,狀態A比B有更高的值,就認爲比B狀態更好。假設我們是叉叉的一方,當一行有3個叉叉時,我們贏的概率爲1,因爲已經贏了,以此類推,當有3個圈圈在一行時或者9個空位被填滿時,我們贏的概率爲0。我們將所有其他狀態的初始值設爲0.5,表示猜測我們有50%的獲勝機會。

    我們與對面玩家玩了多盤這個遊戲。爲了選擇我們的動作,我們檢查每個動作可能產生的狀態(在棋盤上的每個空格中有一個),並在表中查找它們當前的值。大多數時候,我們貪婪地移動,選擇最有價值的行爲,也就是說,選擇最高的獲勝概率。然而,偶爾我們會從其他動作中隨機選擇。這些被稱爲試探性的舉動,因爲增加了經驗,但我們可能永遠也不會看到。一個序列,在遊戲中可以考慮的行動圖如圖:


     實線表示遊戲中所採取的動作;虛線表示我們(強化學習玩家)考慮但未做的動作。我們的第二移動是一個探索性的舉措,這意味着它是即使另一個選擇的舉動,一個e∗,排名更高。探索性的動作不會導致任何學習,但我們的其他動作都會產生更新,如曲線箭頭所建議的那樣。

    當我們玩的時候,我們改變了我們在遊戲中發現的狀態的值。我們試圖使他們更準確地估計獲勝的可能性。爲了做到這一點,我們在每一個渴望移動到狀態之前,都要“備份”狀態值,如箭頭所建議的那樣。更準確地說,早期狀態的當前值被更新以接近後狀態的值。這可以通過將早期狀態值移動到稍後狀態值的一小部分來完成。如果我們在渴望移動之前表示s狀態,s`表示狀態在移動之後,對s的估計值的更新表示爲V(s),可以寫成


其中α是一個小的正分數,稱爲步長參數,它影響學習速度。此更新規則是時間差學習方法的一個例子,如此稱呼是因爲它的變化是基於時間不同,V(s`)−V(s)之間的估計。

上面描述的方法在這個任務上執行得很好。例如,如果步長參數隨着時間適當地減少,則該方法收斂到任何固定的對手,使每個玩家以最佳狀態概率獲勝。換句話說,該方法收斂到一個最佳策略,用於與對手進行博弈。

    爲了評估一個策略,對對手進行許多遊戲,或者用對手的模型模擬許多遊戲。獲勝的頻率是對該政策獲勝概率的估計,可以用來指導下一次的策略選擇。但是每一項政策的改變都是在許多比賽之後才進行的,只有每場比賽的最終結果才被採用:在比賽中發生的事情被忽略了。例如,如果玩家贏了,那麼遊戲中的所有行爲都會被授予信任,而不是特定動作對獲勝的關鍵。甚至連從未發生過的舉動也給予了信任!相反,值函數方法允許對單個狀態進行評估。這個其實就是回合更新還是單步更新的差別。最後,進化算法和價值函數法都是搜索政策的空間,但是學習價值函數利用了遊戲過程中可用的信息。

    這個簡單的例子說明了強化學習方法的一些關鍵特性。首先,強調在與環境交互中學習,在井字遊戲中就是與對手交互的過程,第二,有明確的目標,正確的行爲需要規劃或預見,考慮到選擇的延遲的影響。

儘管這個井字遊戲玩家只是學習基本的移動,在多層學習系統中,強化學習能夠在多層面工作。

課後練習:

1,自娛自樂,假設井字遊戲不是與隨機的對手對戰,而是強化學習算法訓練的玩家,也就是兩個玩家都是強化學習的代理器,你認爲會發生什麼事?會不會它會開發出不一樣的移動路徑?

2,對稱性,井字遊戲看起來有很多套路,其實因爲對稱性,大部分的路徑都是一樣的。我們應該怎麼修改學習算法使得學習更有利?這種改變會怎樣改善學習過程?現在再想一下,假設對方玩家沒有采用優勢對稱的方法,那麼在相同的位置,是否會有相同的值?


日常深推公衆號:


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