28 天自制你的 AlphaGo (5) : 結合強化學習與深度學習的 Policy Gradient(左右互搏自我進化的基礎)

知乎對於人機大戰的關注度很高,所以寫這個系列,希望能讓大家對於人工智慧和圍棋有更多的了解。如果有收穫,請記得點一下贊。

本系列已更新多篇,其它幾篇的傳送門:

  • (1) : 圍棋 AI 基礎 知乎專欄

  • (2) : 安裝 MXNet 搭建深度學習環境 知乎專欄

  • (3) : 訓練策略網路,真正與之對弈 知乎專欄
  • (4) : 對於策略網路的深入分析(以及它的弱點所在) 知乎專欄

  • (4.5):後文預告(Or 為什麼你應該試試 Batch Normalization 和 ResNet)知乎專欄

本篇提前回答一個大家經常問的問題:強化學習在 AlphaGo 中究竟是怎麼用的?比如說,SL策略網路,是怎麼變成 RL 策略網路的?

Policy Gradient:簡單而有效

很有意思的是,很少見到有人回答上述問題(可能是因為 AlphaGo 論文在此寫得很簡略)。其實,這個問題的答案特別簡單:

  • 如果我贏了棋,就說明這次我選擇的策略是正確的。所以可以對於這次所經歷的每一個局面,都加強選擇這局的走法的概率。

  • 如果我輸了棋,就說明這次我選擇的策略是錯誤的。所以可以對於這次所經歷的每一個局面,都減少選擇這局的走法的概率。

舉個例子,比如說電腦左右互搏,黑棋開局走星位,白棋回應走小目,最後白棋輸了,那麼黑棋就加強開局走星位的概率(以及後續的每一步選擇這局的走法的概率),白棋就減少在黑棋開局走星位的情況下走小目的概率(以及後續的每一步選擇這局的走法的概率)。

等一下,這裡好像有問題。這是不是太傻了?也許白棋並不是敗在開局,而是敗在中盤的某一步?也許黑棋並不是真的這次走對了策略,而是白棋看漏了一步(而且白棋如果走對是可以贏的)?

以上說的很正確。但是,反過來想,如果黑棋的走法可以讓白棋後面打勺的概率增加,那也不錯啊。另一方面,如果白棋發現自己目前的策略容易進入自己不容易掌握的局面,那麼儘管確實可能有完美的招數隱藏在裡面,那白棋也不妨一開始就去避免這種局面吧。而且,勝和負的影響可以相互抵消,所以在經過大量對局後,這個過程是比較穩定的。比如說如果某個開局的後續勝率經統計是50%,那它就不會被改變;但如果不是50%,這種改變就有一定道理。

這個過程,有點像人類棋手的「找到適合自己的棋風」的過程。毫無疑問,現在的 AlphaGo 已經找到了十分適合自己的棋風,它確實是會揚長避短的。

以上是最簡單的 Policy Gradient 的例子,它的問題是有可能陷入局部的最優(對付自己有效,不代表對付其他人有效),因此 AlphaGo 論文中會建立一個對手池(包括整個進化過程中形成的所有策略),保證新策略盡量對於不同對手都有效。在這個基礎上,可以做各種各樣的改進,例如配合未來的價值網路,更清楚地看到自己的敗著在哪裡,而不是傻傻地把所有概率都同樣修改 。

Deepmind 的相關研究

其實 Deepmind 自創始以來就在做類似的研究,在此簡單說說。經典的一系列論文是學會玩 Atari 遊戲:

arxiv.org/abs/1312.5602

nature.com/nature/journ

例如最經典的 Pong:

這裡也有一個策略網路,它輸入的是目前的屏幕圖像(實際上要輸入幾幅圖像,或者前後兩幅圖像的差,用於判斷運動情況),輸出的是此時應該往上移動的概率。用這裡所說的訓練方法就可以讓它無師自通,自己學會玩遊戲,最終達到相當高的水準(可以想像,這個學習過程會比較慢)。

但是如果我們仔細想想,這個辦法恐怕很難自己學會玩好星際!一個重要原因是星際的決策中有太複雜的「層次結構」。因此儘管 Deepmind 此前說星際是下一個目標,目前我們尚未看到 Deepmind 在這方面發表的進展。如果真的成功實現,將是相當大的成就。

最後,如果對於這方面感興趣,這是一篇很好的介紹:

Deep Reinforcement Learning: Pong from Pixels

這篇就到此吧,我們下一篇見。

如需轉載本系列,請先與本人聯繫,謝謝。小廣告:晚上工作學習是否覺得光線不夠舒服,精神不夠集中,眼睛容易疲勞?不妨點擊看看我們的自然全光譜燈系列:Blink Sunshine護眼LED燈泡 高顯指97顯色指數無頻閃學習檯燈床頭 如果需要好用的耳機或錢包,我們也有 :-)

推薦閱讀:

深度增強學習前沿演算法思想
從Google大會看到未來:AI來襲
技術永遠不會夠好?技術公司會被 BAT 取代?在兒童領域做 AI 的他們憑啥這麼說?
報姐看片 | 女主神顏挽救一切!機器人談戀愛也好甜哦

TAG:AlphaGo | 人工智能 | 机器学习 |