強化學習筆記10:經典遊戲示例 classic games
1、前沿 state of art
學習經典遊戲的原因
- 規則簡單,細思又很深入
- 歷史悠久,已經被研究了幾百年
- 對IQ測試有意義
- 是現實世界的問題的縮影
已經有很多RL案例,戰勝了人類,例如
2、遊戲理論 game theory
遊戲的最優性
對於石頭剪刀布來說,最優策略,顯然和對手agent策略相關,我們期望找到一種一致的策略策略,對所有對手都有效
什麼是第i個玩家的最優策略\(\pi\)
- 最佳響應 best response \(\pi^i_*(\pi^{-i})\) 是針對其他agent的最優策略
- 納什平衡點 Nash equilibrium是針對所有對手的聯合策略
\[
對於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
- 權重隨機初始化
- 自學習訓練
- 使用非線性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}\] - 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})
- 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 收斂到納什平衡點