2022年3月28日 星期一

機器學習筆記 : 深度學習的 16 堂課 (四)

本篇繼續整理 "深度學習的16堂課" 這本書的讀後筆記, 本系列之前的文章參考 : 


以下是讀完第四章 "遊戲對局-Alpha Go, DQN, RL 概述" 的摘要筆記 :
  1. 訓練機器下棋與玩遊戲背後所使用的技術是增強式學習 (Reinforcement Learning, RL), 此架構中有一個會與環境 (Environment, 例如遊戲, 或自駕車的駕駛場景等) 進行一連串互動的代理人(Agent, 例如遊戲中的虛擬玩家, 自駕車的隱形司機等), 代理人在採取動作 (Action, 例如遊戲搖桿或上下左右按鍵) 後會收到環境給它的狀態 (State, 例如遊戲的最新畫面) 與回饋值 (Reward, 可稱為獎勵或處罰). 強化式學習演算法本身不具有任何背景知識, 完全依靠回饋值來修正動作而學習到正確的回應方式. 
  2. 當強化學習加上神經網路時就會冠上深度兩字, 被稱為深度強化式學習 (Deep Reinforcement Learning, DRL), 這個神經網路的目的是要用來學習, 當環境傳來各種狀態時, 代理人應該要執行甚麼動作, 才能將回饋值最大化. 
  3. 大多數情況下深度強化式學習都發生在模擬環境中, 亦即指要讓代理人多模擬幾回合, 不斷產生的模擬數據 (動作 & 結果) 都可以做維神經網路的訓練資料.
  4. 深度強化式學習最早的應用是用來玩電子遊戲, 由 Demis Hassabis 等人於 2010 年創立的英國 DeepMind 公司於 2013 年發表了 Deep Q-Learning Netwwork, DQN) 技術, 可以讓模型學會玩多款 Atari 遊戲機的遊戲. 他們所訓練的遊戲代理人會不斷從環境 (即遊戲) 收到狀態資訊 (即以像素表示的遊戲畫面), 宛如人類玩家在盯著螢幕一樣. 為了有效處理這些像素資訊, DQN 也加入了卷積神經網路 (CNN) 以便從高達每秒 200 萬像素的資料中萃取出關鍵特徵. 在訓練過程中 DQN 的代理人除了獲得當前狀態 (螢幕像素), 回饋值 (遊戲得分), 以及可以採取的動作 (可按哪個按鈕) 外, 並不會得到任何指示. DeepMind 團隊評估了 DQN 在 49 款 Atari 遊戲中的表現, 有 94% 表現超越其他機器學習方法, 超過 50% 優於人類的成績. 由於 DQN 的卓越成果, Google 於 2014 年以 5 億美元收購了 DeepMind
  5. 真正讓深度強化式學習大放異彩的其實是複雜度與難度比電子遊戲還高的棋類遊戲, 特別是於 2015 年 10 月以五比零全勝成績擊敗華裔法籍職業圍棋手樊麾的 AlphaGo, 這是歷史上電腦首次打敗人類職業圍棋棋士.  2016 年 3 月 AlphaGo 更以 4:1 成績擊敗擁有 18 項世界圍棋冠軍頭銜, 全球頂尖的南韓職業圍棋棋士李世乭九段而獲得全球矚目, AlphaGo 也因此被韓國棋院授予職業九段榮譽.
  6. 相較於西洋棋而言, 圍棋棋子在棋盤上的位置超過 2*10**170 種, 比西洋棋高出 10**100 倍. 一般的棋類遊戲像西洋棋等只要用蒙地卡羅搜尋法 (Monte Carlo Tree Search, MCTS) 即可應付, 但對複雜度高的圍棋來說並不足以達到很好的表現. DeepMind 研究員 David Silver 等人結合 MTCS, 監督式學習, 以及強化式學習, 大幅地提升了 AlphaGo 演算法的能力.
  7.  AlphaGo 的運作方式分為兩個階段, 研究人員先以圍棋專家歷史棋局資料集 (棋譜) 與監督式學習建立了所謂的策略網路 (policy  network) 演算法, 只要給定棋局目前的狀態, 演算法便能將可能的下一步列成一張簡短的清單. 然後再以自我對奕 (self-play) 的強化式學習加強這個策略網路. 經過一輪輪的自我對奕, 代理人的棋力也不斷提升. 此外 AlphaGo 用蒙地卡羅搜尋法設計了一個估值網路 (value network) 來預測對奕的贏家, 評估棋子大量的選擇點位置, 然後用兩個深度學習網路來習得有效的落子方式. 
  8. OpenAI Gym :
    http://github.com/openai/gym
  9. OpenAI Hide and Seek :
    # http://openai.com/blog/emergent-tool-use/
    https://www.youtube.com/watch?v=kopoLzvh5jY


  10. DeepMind Lab 是 Google DeepMind 開發的模擬環境, 其安裝使用參考 :
    # http://bit.ly/buildDML

沒有留言 :