1. 程式人生 > 實用技巧 >強化學習筆記10:經典遊戲示例 classic games

強化學習筆記10:經典遊戲示例 classic games

1、前沿 state of art

學習經典遊戲的原因

  • 規則簡單,細思又很深入
  • 歷史悠久,已經被研究了幾百年
  • 對IQ測試有意義
  • 是現實世界的問題的縮影

已經有很多RL案例,戰勝了人類,例如

2、遊戲理論 game theory

遊戲的最優性

對於石頭剪刀布來說,最優策略,顯然和對手agent策略相關,我們期望找到一種一致的策略策略,對所有對手都有效
什麼是第i個玩家的最優策略\(\pi\)

  • 最佳響應 best response \(\pi^i_*(\pi^{-i})\) 是針對其他agent的最優策略
  • 納什平衡點 Nash equilibrium是針對所有對手的聯合策略 \[
    \pi^i = \pi^i_*(\pi^{-i})\]

對於agent來說的最優策略,是一種general 的 策略,對大多數情況,都適用一致的策略去action.

單agent 自驅動 強化學習

  • 最佳響應 是 單代理RL問題的解決方案
    • 其他玩家 變成環境的一部分
    • 將遊戲 抽象為MDP
    • 最佳策略是 最佳響應
  • 納什平衡點 在 自學習RL問題中是 不動點
    • 學習的經驗是 代理玩遊戲產生的
      \[a_{1} \sim \pi^{1}, a_{2} \sim \pi^{2}, \ldots\]
    • 每個代理學習針對其他玩家的最佳響應
    • 代理的策略決定了其他代理的環境
    • 所有的代理適應其他代理

二人零和博弈遊戲

收益來自其他agent,一方受益,意味著其他虧損

\[R^1 + R^2 = 0\]

methods for finding 納什平衡點

  • Game tree search (i.e. planning)
  • 自驅動RL

perfect and imperfect information games

  • 完美資訊或者 馬爾科夫遊戲是 完全可觀的
    • 象棋
    • 圍棋
    • 跳棋
    • 五子棋
  • 不完全資訊遊戲是部分可觀的
    • 撲克
    • 拼圖

3、最小、最大搜索

introduction

  • 價值函式定義了策略\(\pi\)下的價值
    \[
    v\pi(s) = \mathcal E_\pi [G_t|S_t= s]\]

  • 最小、最大化價值函式,是在降低其他代理表現的同時,最大化自己的價值

\[
v_{*}(s)=\max _{\pi^{1}} \min _{\pi^{2}} v_{\pi}(s)
\]

  • 最小、最大搜索存在納什平衡點

  • 通過深度優先樹搜尋,找到極值


從下往上找:
一步找max,一步找min
缺點是,運算量指數增長,不能求解整個樹的分支
Solution:

  • 用值函式估計器,估計葉節點
  • 根據節點值,限制搜尋深度

Example

二進位制 線性組合 值函式

  • 每 個狀態特徵,只有0、1
  • 每個特徵對應權重 w
  • 線性組合

深藍 Deep blue,並不是真正的學習,手動權重

  • 知識 Knowledge
    • 8k個手動特徵
    • 二進位制線性組合價值函式
    • 人工個調參 權重
  • 搜尋 Search
    • 高效能平行字母搜尋
    • 40步預測
    • 每秒
  • 結果 Results
    • 擊敗了世界冠軍

Chinook

  • 知識 Knowledge
    • 二進位制線性組合價值函式
    • 21個經驗權重(位置、流動性)
    • 四象限
  • 搜尋 Search
    • 高效能平行字母搜尋
    • 逆向搜尋
      • 從贏的位置從後向前搜尋
      • 儲存所有決勝點位置在 lookup 表中
      • 在最後n步,表現完美
  • 結果 Results
    • 擊敗了世界冠軍

4、自驅動強化學習 self-play reinforcement learning

Introduction

應用 Value-based RL,完成遊戲自學

  • MC 向\(G_t\)更新
    \[\Delta \mathbf{w}=\alpha\left(G_{t}-v\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} v\left(S_{t}, \mathbf{w}\right)\]

  • TD(0)向\(v(s_t +1)\)更新
    \[\Delta \mathbf{w}=\alpha\left(v\left(S_{t+1}, \mathbf{w}\right)-v\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} v\left(S_{t}, \mathbf{w}\right)\]

  • TD(\(\lambda\))向\(\lambda\)-return \(G_t^\lambda\)更新
    \[\Delta \mathbf{w}=\alpha\left(G_{t}^{\lambda}-v\left(S_{t}, \mathbf{w}\right)\right) \nabla_{\mathbf{w}} v\left(S_{t}, \mathbf{w}\right)\]

策略提升 Policy improvement

規則的定義決定了後繼者的狀態 \(succ(s,a)\)

對於確定性的遊戲,估計價值函式是足夠的
\[
q_*(s,a) = v_*(succ(s,a))\]

同樣採用最小最大優化

\[ A_{t}=\underset{a}{\operatorname{argmax}} v_{*}\left(\operatorname{succ}\left(S_{t}, a\right)\right)
\ for\ white\\
A_{t}=\underset{a}{\operatorname{argmin}} v_{*}\left(\operatorname{succ}\left(S_{t}, a\right)\right)
\ for\ black\]

Self-play TD in Othello: logistello

使用了策略迭代的方法:

  • 用2個代理進行對抗
  • 用MC 評估 策略
  • Greedy 策略優化

6:0戰勝世界冠軍

TD Gammon: 非線性價值函式估計

自學習 TD 在西洋雙陸棋 Backgammon

  1. 權重隨機初始化
  2. 自學習訓練
  3. 使用非線性TD 學習演算法
    \[\begin{aligned}
    \delta_{t} &=v\left(S_{t+1}, \mathbf{w}\right)-v\left(S_{t}, \mathbf{w}\right) \\
    \Delta \mathbf{w} &=\alpha \delta_{t} \nabla_{\mathbf{w}} v\left(S_{t}, \mathbf{w}\right)
    \end{aligned}\]
  4. Greedy 策略優化

TD gammon 的幾個層級:

  • zero 專家經驗
  • 人造特徵
  • n層極小極大搜尋

隱藏層個數、 訓練代數,直接影響模型表現

5、聯合強化學習和最大化搜尋

簡單 TD Simple TD

TD:向繼承者的方向更新價值函式

分為兩步

  • 用TD learning 學習價值函式
  • 用價值函式 進行 最小最大搜索

\[v_{+}\left(S_{t}, \mathbf{w}\right)=\operatorname{minimax}_{s \in \text {leaves}\left(S_{t}\right)} v(s, \mathbf{w})\]

在有些情景表現優異,有些糟糕

TD root

TD root:從繼承者 搜尋值更新 價值函式

  • 搜尋值 根據 根節點計算得到
    \[v_{+}\left(S_{t}, \mathbf{w}\right)=\underset{s \in \text { leaves }}{\operatorname{minimax}} \left(S_{t}\right) v(s, \mathbf{w})\]
  • 從下一個狀態的 搜尋值 備份 值函式
    \[v\left(S_{t}, \mathbf{w}\right) \leftarrow v_{+}\left(S_{t+1}, \mathbf{w}\right)=v\left(l_{+}\left(S_{t+1}\right), \mathbf{w}\right)\]
  • \(I_+(s)\)是 從狀態s 進行極小極大搜尋後 的 節點值

TD leaf

TD leaf:從繼承者的 搜尋值 更新 搜尋值

  • 搜尋值 由當前和 下一個狀態計算得到

這個公式無法顯示

v_{+}\left(S_{t}, \mathbf{w}\right)=\underset{{s \in \text { leaves }\left(S_{t}\right)}}{\rm{minimax}} v(s, \mathbf{w})\\
v_{+}\left(S_{t+1}, \mathbf{w}\right)=\underset{{s \in \text { leaves }\left(S_{t+1}\right)}}{\rm{minimax}} v(s, \mathbf{w})

MommyTalk1599040691831

  • t時刻的搜尋值 由 t+1時刻的搜尋值備份得到
    \[
    \begin{aligned}
    v_{+}\left(S_{t}, \mathbf{w}\right) & \leftarrow v_{+}\left(S_{t+1}, \mathbf{w}\right) \\
    \Longrightarrow v\left(l_{+}\left(S_{t}\right), \mathbf{w}\right) & \leftarrow v\left(l_{+}\left(S_{t+1}\right), \mathbf{w}\right)
    \end{aligned}
    \]

examples:

TD leaf in chess: knightcap

  • learning
    • 訓練專家對手
    • 使用TD leaf 學習權重
  • 搜尋
    • alpha-beta search
  • Results
    • master level 完成少數的遊戲之後
    • 不夠高效 in 自學習
    • 不夠高效,受初始權重影響較大

TD leaf in Checkers: Chinook

  • 初始的chinook採用手動調優的權重
  • 後來的版本自訓練
  • 採用Td leaf 調整權重
    • 固定了專家
  • 自學習權重的表現 > 人工調優權重的表現
  • 超過人類水平

TreeStrap

  • TreeStrap:用深層的搜尋值 更新 淺層的 搜尋值

  • 在所有節點 計算 極小、極大搜尋
  • 價值從搜尋值備份得到,在同一個step,對所有節點

\[\begin{aligned}
v\left(s, \mathbf{w}\right) & \leftarrow v_{+}\left(s, \mathbf{w}\right) \\
\Longrightarrow v\left( s, \mathbf{w}\right) & \leftarrow v\left(l_{+}\left(s \right), \mathbf{w}\right)
\end{aligned}\]

Treestrap in chess :meep

  • 2k個特徵,二進位制線性組合價值函式
  • 隨機初始權重
  • 權重調節方式:Treestrap
  • 自驅動學習過程表現高效:利用率高
  • 隨機權重情況下表現良好

Simulation-based Search

  • 自驅動RL 可以替代 搜尋
  • 基於模擬的遊戲從根節點 \(s_t\)開始
  • 應用RL 到 模擬經驗
    • MC control \(\Rightarrow\) MC tree search
    • 最高效的變體演算法是 UCT 演算法
      • 使用置信上界UCB 來平衡探索和利用
    • 自驅動 UCT 收斂於 極小極大價值函式
    • 在完美資訊遊戲、不完美資訊遊戲均表現良好

MCTS蒙特卡洛樹搜尋 表現in games

簡單蒙特卡洛搜尋 in Maven(拼字遊戲)

  • 學習 價值函式

    • 二進位制價值函式
    • MC policy iteration
  • 搜尋 價值函式,

    • 搜尋n步
    • 使用學到的價值函式評價 當前狀態
    • x
    • 選擇高分動作
    • 特定的endgame 用\(B^*\)

6、在完整資訊中的強化學習

Game tree search 在不完美資訊遊戲中

真實的狀態可能共享相同的資訊狀態空間

Solution:

  • Iterative forward-search mehtods
    • e.g. 反事實的 後悔值最小化
  • 自驅動RL
  • e.g. smooth UCT

Smooth UCT search

  • 應用 MCTS 到 資訊狀態遊戲樹
  • UCT的變種,由博弈論的虛擬play啟發
    • 代理agent根據對手的平均行為作出 動作 並 學習
  • 從節點的動作計數中 提取 平均策略
    \[\pi_{a v g}(a \mid s)=\frac{N(s, a)}{N(s)}\]

  • 對每個節點,根據UCT概率選擇動作
    \[A \sim\left\{\begin{array}{ll}
    \text { UCT }(S), & \text { with probability } \eta \\
    \pi_{\text {avg}}(\cdot \mid S), & \text { with probability } 1-\eta
    \end{array}\right.\]

  • 經驗

    • Naive MCTS 發散
    • Smooth UCT 收斂到納什平衡點

7、結論