1. 程式人生 > >跟著AlphaGo 理解深度強化學習框架

跟著AlphaGo 理解深度強化學習框架

AlphaGo 這個被大家熱議過很久的主題,裡面其實包含了非常深刻的機器學習智慧,是學習機器學習甚至是人類決策的絕好教材。機器學習是AlphaGo 取勝的關鍵,為什麼它會發揮巨大作用,請看下文。

瞭解一門科學技術最好的方法就是找出其核心論文,讓我們看看AlphaGo 的核心論文是怎麼解讀這個問題的。如果把你放在這樣一個位置,你會如何設計這盤遊戲。

如果大家瞭解棋牌類遊戲以及電腦與之對弈的歷史,就會非常清楚老派程式設計師的套路,也就會明白這類問題最簡單的辦法就是窮舉法,比如歷史上著名的八皇后問題,你需要在國際象棋棋盤上擺放八個皇后,使得她們各自不位於對方的縱線、橫線或對角線上,你只需要按照一定的方法做一個迴圈,從第一排往下一排遍歷,當碰見擺不開的情形時,就回到上一步重新擺,最後總可以擺出來。

跟著AlphaGo 理解深度強化學習框架

與之類似的方法稍作改進可以很好地解決國際象棋的問題,卻難以解決圍棋的問題,為什麼?因為眾所周知,圍棋的維度實在太大了,每一次落子都有幾百(棋盤19*19 大小)種可能。設想假如一盤棋要在幾百步之後得出勝負,會有多少種可能性,確實很難通過任何和窮舉法沾邊的演算法解決。

這裡就涉及如何有效地減少搜尋空間這個核心問題。這也是為什麼一個下圍棋的問題需要用到機器學習,因為機器學習可以讓你通過有限資料推測所有其他可能(類似一個插值過程)。

在讓機器做這件事之前先看看人是怎麼做的。我們無時無刻不在決策,也面臨如何減少搜尋空間的問題。雖然人生有無限種可能,但大多數可能你連考慮都不會考慮。

我們人類用愚蠢和聰明、合理與不合理這些詞彙描述各種選擇的優劣,並且大腦自動遮蔽大部分不合理的解釋。你是如何得到這些答案的呢?第一個就是通過常年的試錯來計算每個行為的結果,所謂一朝被蛇咬,十年怕井繩。另一個就是看書,和高手對話,直接學習他們的經驗。

反過來就是機器學習的原理,首先說試錯學習,或者根據某種行為最終導致的結果來調整行為策略的方法,我們通常稱之為強化學習。

跟著AlphaGo 理解深度強化學習框架

強化學習如上圖,Agent 會根據環境給予的reward 調整action 的一個反饋系統,最終實現利益最大化,難點在於Agent 的行為通常會改變環境,而環境又會影響行為策略。

具體到圍棋上,這個策略的核心是根據圍棋的特性:

(1)在每一步雙方資訊完全已知;

(2)每一步的策略只需考慮這一步的狀態。

這允許機器學習用一個非常凶猛的簡化框架來解決這個問題,即馬爾科夫決策過程。也就是說,我們用一個離散的時間序列來表述狀態s,用另一個離散的時間序列表述行為a,兩個時間序列有著深刻的耦合關係,下一刻的狀態s(t+1)取決於此刻行為a(t)和狀態s(t),最終決定下一刻的行為a(t+1)。兩者間的關係即策略P(a(t)|s(t)),由於是馬爾科夫鏈,所以每一時刻的策略只與此刻狀態s(t)有關。各種棋類就是最明顯的馬爾科夫鏈。由於未來存在不確定性,因此策略本身也是一個概率分佈函式的形式。最終我們要優化,使得P(s|a)所得到的回報R(s)最大。馬爾科夫決策過程是在解決未來狀態不確定而行為和狀態又具有馬氏性時十分有利的方法。

解決馬爾科夫決策過程的一個簡單實用的演算法叫作蒙特卡洛樹搜尋(MCTS),如下圖。

跟著AlphaGo 理解深度強化學習框架

上圖描述了蒙特卡洛樹與它的四個步驟:選擇、擴張、模擬估值和結果回傳,對應一個經典的強化學習框架。

蒙特卡洛是大名鼎鼎的隨機抽樣方法。提到樹,大家一定可以想到決策樹,樹的節點是某一刻的狀態,枝杈代表一個決策。而這裡的蒙特卡洛樹,就是用隨機抽樣的方法生成整個決策樹的過程。

假設電腦現在的狀態是s(t),那麼你隨便扔個骰子走一步,然後電腦模擬的對手也扔個骰子隨便走一步,這樣下去,總有一刻會分出勝負,這個時候你回顧勝利和失敗的人的歷史走棋軌跡,贏的走法在其整個決策樹上的每個狀態(枝葉)都加一分,輸的走法每一步位置都減一分,這個分數會影響下一次抽樣的概率,使得容易贏的步子會有更大概率取到。玩無數次後,就會選擇出特別容易贏的策略。這個過程酷似進化選擇演算法,就是讓那些有優勢的選擇有更高的繁殖子代概率,從而最終勝出,體現了生物和環境的博弈。

注:這裡提個小問題,馬爾科夫決策過程威力巨大,而在現實決策裡,你要去哪個大學上學,你要選哪個股票,都很難只看當下,這個框架還能用多少呢?

以蒙特卡洛樹為代表的強化學習在圍棋這種走法可能性超多的情況下,只能部分地減少搜尋空間,使得電腦達到一個高階業餘選手的水平,而如果要進一步減少搜尋空間,應該怎麼辦呢?人類減少搜尋空間的一個重要方法是學習高手經驗,背棋譜,看得多了,就有一種犀利的直覺走出一個妙招。轉化為數學語言,就是通過看棋譜,取得一個在某種局面下任意策略和最終贏率的對應關係,即使這個局面你從未見過。

注:我們經常會覺得直覺這個東西好像是天上掉下來的異稟,實則恰恰相反,直覺才是最需要學習的。

讓機器來做就是有監督學習的迴歸演算法,你要提取棋局的特徵,算出對應每一個走法出現的概率P(a(t)|s(t)),然而圍棋棋局的特徵實在太複雜,這時候我們的深度學習開始派上用場,它可以自發地學習事物的表徵。

機器學習訓練的目標是使得資料被觀測到的概率最大, 所謂MaximumLikelihood,對於神經網路,就是網路連線引數的調整。

深度學習的過程正如同我們見識一個東西多了,自發地開始具有舉一反三的能力,自然而然地把直覺加入了策略選擇,這時候你可以通過有限的經驗把握無限。在訓練過程中,AlphaGo 不停地根據現有的局面預測專家可能會出的招,在經過三千萬組資料的訓練後,深度學習可以達到55.7%的預測率,這個概率說明人類的意圖也並不難被猜中,這也是很多人說和AlphaGo 下棋如同和無數高手過招的原因。當然,這還不是訓練的終結,此處的神經網路只是在描摹高手的動作,而之後我們要讓它能贏,好比在實踐中理解和優化高手的招術,這就是訓練的第二步,用強化學習方法,訓練網路連線係數,具體方法是讓現有的策略網路和隨機選出的一個之前的策略網路進行左右互搏,然後把勝負結果回傳到每一步的策略上,進行梯度訓練。經過這個過程,策略網路可以成功戰勝一些中級愛好者水平的演算法和自己之前在描摹各種高手時候的狀態。

策略網路的思維是計算每種走法出現的概率。

跟著AlphaGo 理解深度強化學習框架

 

跟著AlphaGo 理解深度強化學習框架

訓練的最後一步是估值網路。估值網路是做什麼的呢?首先,在一個強化學習框架下,你需要知道每個行為所對應的確定回報,難點在於圍棋是下完棋才有確定回報的,想想圍棋步驟中的無限多可能性以及得到結果可能的步數就令人生畏,此處深度學習演算法的作用正是不需要走完就巧妙地估計出這一步對應的盈利期望,過程需要用一個深度網路通過強化學習的框架來進行。估值網路的本質在於建立現有行為和長遠收益的聯絡,有人稱之為看趨勢和全域性觀。

公式如下,訓練要解決的問題是,求得狀態S 下采取策略p 的最終收益。

跟著AlphaGo 理解深度強化學習框架

估值網路的效果圖如下。

跟著AlphaGo 理解深度強化學習框架

那麼問題來了,蒙特卡洛樹和深度學習兩者是如何天衣無縫地結合起來的呢?這就是整個AlphaGo 設計最巧妙的地方。首先蒙特卡洛樹可以拆解為4 步:

第一步,Selection,在已有的選項(經歷過的)中進行抽樣選擇。

第二步,Expansion,走到一個先前從未經歷的局面上,探索新行為,即生成新的枝杈。

第三步,Evaluation,得到新行為的回報。

第四步,Backup,把回報的結果反向傳遞給策略。深度學習的結果可以被非常完美地嵌入蒙特卡洛搜尋的步驟裡,首先,在Expansion 的階段,我們不用從零開始隨機生成一個前所未有的狀態,而是根據前人經驗訓練的策略網路直接生成新狀態,海量減小了無用的搜尋。然後,在Evaluation 步驟,我們無須跑完整個比賽,而是通過深度學習的結果直接算出這個新舉措可能的回報(此處即估值網路的作用),這個計算出的回報,會在最終遊戲完成的時候與真正的結果相結合,從而完成學習的步驟。

深度學習嵌入蒙特卡洛樹搜尋的方法如下。

跟著AlphaGo 理解深度強化學習框架

與戰勝國際象棋大師的深藍不同,在AlphaGo 這裡,機器學習發揮了巨大的作用,因為AlphaGo 的策略和智慧主要是在不停地看棋譜和左右互搏中進化出來的,對於圍棋這樣規則非常複雜的東西,設計一套必勝規則幾無可能,只有機器學習(強化學習)的進化和自我改進思想才是最終取勝的法器。因此AlphaGo 的技術對其他人工智慧非常有啟發。

從整個解析來看,其實訓練AlphaGo 的演算法思路並不十分複雜,用一句話總結,就是站在巨人的肩膀上迅速試錯。這可能也是各種人生決策的最好方法吧。然而,我們人類沒有那麼多時間玩Simulation,也沒有那麼多GPU 進行並行運算,所以我們其實尋找的是低搜尋成本的近似解,謂之次優解。


本文選自《機器學習vs複雜系統》一書,作者許鐵,電子工業化版社2018年8月出版。

這是一本有關人工智慧、機器學習、深度學習、複雜系統的科普讀物,本書從跨學科視角來看待人工智慧這個技術性的學科。圍繞用數學模型預測未來這一主題,介紹演算法,主要包括現在流行的機器學習和深度學習演算法,以及演算法要解決問題本身的複雜性。複雜的問題,需要複雜的演算法,而演算法設計背後的老師正是自然界的複雜性本身。

本書詳情:京東噹噹亞馬遜