iT邦幫忙

2022 iThome 鐵人賽

DAY 23
2
AI & Data

OH~ AI 原來如此,互助就此開始!系列 第 23

Day 22. 深度學習模型 - DQN

  • 分享至 

  • xImage
  •  

2016年 AI 擊敗了圍棋頂尖棋士,那你知道機器人透過 AI 還可以做跑酷和後空翻嗎?讓我們來看一下動作靈活的機器人影片。

Yes
ーー出處:Youtube

上述影片是使用了深度強化學習的技術。機器學習模型時有提過強化學習,今天要來談談加入了深度學習的強化學習是怎麼回事。

影片中機器人做平衡微調是深度強化學習的成果,但是除了深度強化學習也加入了其他控制程式才能辦到,不全然只有強化學習。

DQN (Deep Q-network)

深度強化學習最早是在 2013年, DeepMind 結合了深度學習和強化學習,可以在 Atari2600(一個街機遊戲機,共57種遊戲)的部分遊戲中超過人類玩家的分數。

https://ithelp.ithome.com.tw/upload/images/20220929/20150622UvV1z3zvFv.jpg
ーー 出處: DQN 論文

DeepMind 2014年被 google 收購

使用的是 DQN 演算法,我們順便來複習一下強化學習的馬爾可夫決策過程

  1. Agent 在當下的時間取得狀態
    透過 CNN 擷取遊戲畫面取得目前狀態。
  2. Agent 從狀態根據目前的行為基準選擇了行動
    行為基準使用 Q 學習,透過神經網路用 SGD 逼近 Q 函數找出最佳解選出適合的動作(上下左右的操作)。並導入了 Epsilon 貪婪策略讓 Agent 不會每次只選最大Q值(利用),也會做適當的探索
  3. Agent 因此獲得了報酬
    畫面上的分數變更當作報酬。
  4. 回步驟 1.

DQN 除了 Q 學習,在步驟 2. 還另外用了2個新技巧:

  • 經驗再生(Experience replay)
    將探索的經驗資料存放在儲存器(replay buffer),隨機取出來做訓練。
    用來打散過去行為的訓練分布。
  • 目標網路(Target network)
    DQN 除了訓練用的網路還有一個目標網路,目標網路每隔一段時間會把訓練用網路的參數複製過來固定住,作為訓練網路的目標做學習,可以讓計算出的價值比較穩定。

其他從 DQN 延伸出來的演算法

  • Double DQN
    選最大Q值容易有價值高估的問題,所以 Double DQN 將動作選擇和價值評估兩個獨立出來,這就是雙 Q 學習,目的在減少動作價值被高估的問題

  • 優先經驗再生(prioritized experience replay)
    針對 Q 值誤差較大的部分優先做經驗再生。

  • Dueling network
    將 Q 函數拆成評估狀態的函數(Value fuction)和預測該狀態的動作價值函數(Adavantage function)。
    https://chart.googleapis.com/chart?cht=tx&chl=Q(s%2Ca)%3DV(s)%2BA(s%2Ca)
    中心思想是,有時候無論你做什麼,狀態的價值都是一樣的,比方說棋盤的局面你怎麼下棋(動作)結果都是要輸,透過狀態的評估可以加快學習的速度

  • Distributional DQN
    將行動價值函數換成價值分布。實際上成果比用行動價值函數更好。後述的 Rainbow 靠著這個方法和優先經驗再生提高非常多的性能。

  • Noisy network
    使用 Epsilon 貪婪策略會隨機作探索,而 Noisy network則是將來自常態分佈的隨機數(噪聲,Noisy)加到權重,允許網路根據需求控制隨機數大小。也就是對探索做改善

  • Rainbow(彩虹)
    DQN和上述演算法的集合體,性能飛躍性地成長。
    https://ithelp.ithome.com.tw/upload/images/20220929/20150622noHAdMsk8Q.jpg
    ーー 出處:Rainbow 論文

    A3C 在 Day10 有稍微提到,主要就是參與者-評價者(Actor-Critic) 透過複數的 CPU/GPU 做並行運算提高速度。

  • Agent57
    2020年發表的 Agent57 是 DeepMind 集大成的結果,Atari2600 所有的遊戲分數都擊敗人類玩家。
    https://ithelp.ithome.com.tw/upload/images/20220929/20150622Lp1it5sjq1.jpg
    ーー 57種遊戲制霸 by Agent57,出處:Agent57 論文

    Yes
    ーー Agent57 playing Solaris

棋盤 AI

Day3 有介紹過,如果沒有時間限制,理論上透過搜尋樹作所有組合的暴力搜尋一定可以找到必勝法。但是實際上時間是有限制的,所以就誕生了各種棋盤 AI。

蒙地卡羅樹(MCTS)

搜尋樹用蒙地卡羅方法,隨機讓遊戲玩到結束(Playout)找到勝率最高的方法。

AlphaGo

2016年打敗世界頂尖棋士。透過蒙地卡羅樹和深度強化學習的組合獲勝。
AlphaGo的架構有3個:

  • 策略網路
    預測落子的機率,使用了3種策略網路。
    • 監督式策略(SL)
      透過棋譜訓練。
    • 強化學習策略(RL)
      訓練完的 SL 用 RL 繼續強化,兩個 RL 互打提高勝率。
    • Rollout策略
      SL的一種。用來讓蒙地卡羅樹快速做預測評估,所以 Rollout 規模比較小,精度低但速度快。
  • 價值網路
    評估目前盤面的優劣
  • 蒙地卡羅樹
    模擬遊戲,透過 playout 找到相對勝率高的方法。

簡單來說,先透過監督學習模仿專家(棋譜),站在巨人的肩膀上讓學習的起點更高,再透過這個專家互打來做強化學習,而只要贏了,價值網路就為1,輸了價值網路為-1,反覆用來學習人類評估盤面的方法。而有了策略網路和價值網路來縮小搜尋範圍,就可以透過蒙地卡羅樹模擬數量有限的遊戲找出相對高勝率的方法,

AlphaGo Zero

2017年10月発表,完全不使用人類棋譜,單純讓 AlphaGo 自己和自己重複對戰獲得經驗做深度強化學習。 學習初期雖然比人類玩家弱,但透過學習修正,學習的越久就越強,等於是有1個人類玩家無限期的累積對戰經驗。

以電玩來說就是一般人終其一生圍棋等級最高只能升到99級,而 AI 可能隨著花費的時間已經9999級的概念。

Alpha Zero

已經不侷限在圍棋,各種棋盤遊戲都能夠超過人類玩家,和 AlphaGo Zero 一樣只靠 AI 自己對戰來學習成長。

多人強化學習(multi-agent reinforcement learning,MARL)

在棋盤遊戲已經稱霸的 AI,將眼光移到了下一個目標:多人對戰。

OpenAI Five

2018年 OpenAI 發表 OpenAI Five,在線上多人對戰遊戲 Dota2 打贏了頂尖玩家組成的團隊。比較特別的是和其他模型相比花費了巨大的資源(該說真不愧是 OpenAI 嗎)。5萬個 cpu 和 1024 個 gpu 。

https://ithelp.ithome.com.tw/upload/images/20220930/20150622n06ae4inTA.jpg
ーー出處:Dota 2 with Large Scale Deep Reinforcement Learning

AlphaStar

2019年 DeepMind 在即時戰略(RTS,Real-Time Strategy)星海爭霸2的對戰中,透過 AlphaStar 擊敗有大師(Grandmaster )稱號的頂尖玩家。

https://ithelp.ithome.com.tw/upload/images/20221007/20150622jYfqZSdMOF.jpg
ーー AlphaStar訓練過程,出處:youtube

初期 AlphaStar 雖然只能侷限於使用於一張遊戲地圖,但是隨著強化學習越來越適應各種狀況。如下圖使用了圖像和自然語言等多種模型,包含了 ResNet,Attention,Transformer 等等的演算模型。

https://ithelp.ithome.com.tw/upload/images/20220930/20150622RXGAhaE263.jpg
ーー出處:Grandmaster level in StarCraft II using
multi-agent reinforcement learning

現實世界的深度強化學習

目前深度強化學習在遊戲上大放異彩的原因是,和現實世界比起來遊戲的環境相對單純。而現實世界有幾個困難點:

  • 狀態的觀察
    現實世界的資訊非常大量,雖然可以透過感測器做各種狀態的數字化,但使用所有狀態會因為參數過多造成維度的詛咒。
  • 動作的設定
    遊戲或棋盤一次是一個指令一個動作,現實生活可能是連續的動作。
  • 報酬的設計
    遊戲有分數和勝敗,現實世界比較難數字化。
  • 樣本少成本高
    遊戲可以一直反覆試驗,現實世界中不管做什麼都是要成本。
  • 無法擔保安全性
    遊戲死亡或輸了可以重來,自駕車或醫療處理出事情很難擔責任。

而針對上述的問題有幾個對策:

  • 使用模擬器
    模擬類似的環境來做學習。可以降低成本。

    如果有試著寫強化學習的程式就會用到 OpenAI gym 這個程式庫,可以用來模擬各種環境。

  • 對環境建立模型
    像真實世界,很難預測下一步的叫做 model-free,而像棋盤遊戲這種環境已經侷限於你下一步我下一步這種可以預測下一步的狀態和報酬的叫做 model-based,而這種被建造出來的環境模型叫做 world model。透過對環境建立某種程度的模型可以針對需要預測的狀況提高學習的效率。
  • 使用 offline 強化學習(offline reinforcement learning)
    對實際環境做互動的強化學習叫 online 強化學習,而只透過給予的資料作強化學習叫 offline 強化學習,下列兩個就很適合 offline 強化學習。
    • 廣告投放的推薦系統
      直接從用戶的行為履歷做強化學習。
    • 客服的聊天機器人系統
      直接從用戶的對話紀錄做強化學習。

現實世界的深度強化學習實例

  • 自駕車
    根據停車場狹窄的道路和障礙物做強化學習。
  • 機器人動作控制
    透過是否達成目的做強化學習,比如說讓機器人成功的把物體投入籃子,或是讓機器人做後空翻。
  • 紅綠燈控制
    透過車子的等待時間做強化學習。期待降低車子的等待時間。
  • 廣告投放
    透過廣告有沒有被點選做強化學習。提高推薦的效率。

補充資料

立即複習

  1. Double DQN 是為了解決 DQN 什麼高估的問題?
  2. AlphaGo之後不使用人類棋譜的圍棋 AI 叫做?
  3. AlphaGo之後可以運用在各種棋盤遊戲的 AI 叫做?
  4. AlphaGo算是 model-free 還是 model-based?
  5. Q學習算是 model-free 還是 model-based?

參考資料


上一篇
Day 21. 深度學習模型 - NLP 預訓練模型
下一篇
Day 23. AI × Data - 資料和資料科學
系列文
OH~ AI 原來如此,互助就此開始!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言