lucasw
大佬教麻
你可以叫我 000 / Lucas
建國中學資訊社37th學術長
建國中學電子計算機研習社44th學術
校際交流群創群者
不會音遊不會競程不會數學的笨
資訊技能樹亂點但都一樣爛
專案爛尾大師
IZCC x SCINT x Ruby Taiwan 聯課負責人
建國中學電子計算機研習社44th學術+總務
是的,我是總務。在座的你各位下次記得交社費束脩給我
技能樹貧乏
想拿機器學習做專題結果只學會使用API
上屆社展烙跑到資訊社的叛徒
科班墊神
策略梯度
Actor-Critic
Q-Leaning
DQN
策略迭代
價值迭代
現在沒有人告訴我們轉移方式跟機率了
怎麼辦
重複採樣取得所求機率分布的近似值
紀錄每次個點的\(s,a對應的reward跟下個狀態\)
取得動作價值的近似值
1 episode
\(S_t\)
\(a\)
\(S_{t+1}\)
\(a\)
\(S_{t+2}\)
\(a\)
terminate
\(R_t\)
\(R_{t+1}\)
\(R_{t+2}\)
這東西靠蒙地卡羅取得
1 episode
\(S_t\)
\(a\)
\(S_{t+1}\)
\(a\)
\(S_{t+2}\)
\(a\)
terminate
\(R_t\)
\(R_{t+1}\)
\(R_{t+2}\)
也就是說我們指依照我們走過的足跡更新
只要夠多次就可以得到\(P(s'|s,a)\)的近似值
1 episode
\(S_t\)
\(a\)
\(S_{t+1}\)
\(a\)
\(S_{t+2}\)
\(a\)
terminate
\(R_t\)
\(R_{t+1}\)
\(R_{t+2}\)
這個會用到\(\epsilon -greedy\)
等等會講
不過在更新Q時,我們只在乎我們的足跡
所以這一步他不影響
1 episode
\(S_t\)
\(a\)
\(S_{t+1}\)
\(a\)
\(S_{t+2}\)
\(a\)
terminate
\(R_t\)
\(R_{t+1}\)
\(R_{t+2}\)
1 episode
\(S_{t+1}\)
\(a\)
\(S_{t+2}\)
\(a\)
terminate
\(R_{t+1}\)
\(R_{t+2}\)
1 episode
\(S_{t+2}\)
\(a\)
terminate
\(R_{t+2}\)
狀態+動作\(\longrightarrow\)獎勵
1 episode
\(S_t\)
\(a\)
\(S_{t+1}\)
\(a\)
\(S_{t+2}\)
\(a\)
terminate
\(R_t\)
\(R_{t+1}\)
\(R_{t+2}\)
1 episode
\(S_t\)
\(a\)
\(S_{t+1}\)
\(R_t\)
1 episode
\(S_{t+1}\)
\(a\)
\(S_{t+2}\)
\(R_{t+1}\)
1 episode
\(S_{t+2}\)
\(a\)
terminate
\(R_{t+2}\)
好處
更新較快,不必每次都玩到終點在更新
更新方法
\(TD\_error=reward+\gamma Q(s',a')-Q(s,a)\)
\(Q(s,a)\space+=\space\alpha TD\_error\)
\(Q(s,a)\space+=\space\alpha(reward+\gamma Q(s',a')-Q(s,a))\)
learning rate
探索-利用策略
exploration-exploitation strategy
探索
利用
隨機選擇下一個動作
選擇目前看起來最好的動作
隨機選擇下一個動作
選擇目前看起來最好的動作
花太多時間亂走,難以收斂
可能有其他先苦後甘的選擇
探索-利用策略
exploration-exploitation strategy
\(\varepsilon -greedy\)
有時探索,有時利用
\(\varepsilon\)代表探索比例
\(0\le \varepsilon \le 1\)
探索-利用策略
exploration-exploitation strategy
動態的策略
當迭代次數越多
預測的動作價值就會越接近真實值
花在探索上的時間就可以減少
線性衰減
指數衰減
\(\varepsilon_{min}\)
\(y=max(1-\frac{1-\varepsilon_{min}}{\varepsilon_{end}}x,\varepsilon_{min})\)
\(y=(1-\varepsilon_{min})e^{\frac{-5x}{n\_episode}}+\varepsilon_{min}\)
\(On-Policy\)
\(Off-Policy\)
SARSA
Q-Learning
\(On-Policy\)
\(Off-Policy\)
以下一步實際使用的動作之動作價值更新
以下一步最高的
動作價值更新
\(On-Policy\)
\(Off-Policy\)
其實就是剛剛的作法啦
人為標註的資料
比較謹慎
比較樂觀
收斂較慢
收斂較快
適合真實環境
適合模擬環境
Q-Table
Neural-Network
\(state\)
\(action\)
NN
\(Q(s,a)\)
\(s_1\)
\(s_2\)
\(s_3\)
\(a_3\)
\(a_2\)
\(a_1\)
\(Q(s_1,a_1)\)
\(Q(s_1,a_2)\)
\(Q(s_1,a_3)\)
\(Q(s_2,a_1)\)
\(Q(s_3,a_1)\)
\(Q(s_2,a_2)\)
\(Q(s_2,a_3)\)
\(Q(s_3,a_2)\)
\(Q(s_3,a_3)\)
\(state\)
NN
\(Q(s,a_1)\)
\(Q(s,a_2)\)
\(\dots\)
\(Q(s,a_n)\)
僅限離散動作
人為標註的資料
狀態多時很佔記憶體
只需儲存有限參數
只能處理離散狀態
可以處理連續狀態
沒有泛化能力
有泛化能力
ex.圍棋有361個點,每個點有三種狀態
\(3^{361}\)
\(\approx 1.74\times 10^{172}\)
\(TD\_error=reward+\gamma Q(s',a')-Q(s,a)\)
\(L=(reward+\gamma Q(s',a')-Q(s,a))^2\)
每步更新可能會受到資料順序影響
且每筆資料只用一次
太浪費了!
\(s_1,a,r,s_2\)
\(s_2,a,r,s_3\)
\(s_3,a,r,s_4\)
\(s_4,a,r,s_5\)
\(s_1,a,r,s_2\)
\(s_2,a,r,s_3\)
\(s_3,a,r,s_4\)
\(s_4,a,r,s_5\)
\(s_2,a,r,s_3\)
\(s_3,a,r,s_4\)
\(s_4,a,r,s_5\)
sample
train
\(L=(reward+\gamma Q(s',a')-maxQ(s,a))^2\)
同一個神經網路,難收斂
神經網路
\(s_2,a,r,s_3\)
\(s_3,a,r,s_4\)
\(s_4,a,r,s_5\)
與環境互動取得資料
採樣訓練
預測網路
目標網路
\(s_2,a,r,s_3\)
\(s_3,a,r,s_4\)
\(s_4,a,r,s_5\)
與環境互動取得資料
採樣訓練
過段時間後再把參數複製給他
\(L=(reward+\gamma maxQ(s',a')-Q(s,a))^2\)
同一個神經網路,難收斂
\(L=(reward+\gamma maxQ(s',a')-Q(s,a))^2\)
同一個神經網路,會放大誤差
某處出現高估
較容易用他更新(Q-learning)
傳遞這個高估
過度樂觀
預測網路
目標網路
\(s_2,a,r,s_3\)
\(s_3,a,r,s_4\)
\(s_4,a,r,s_5\)
與環境互動取得資料
採樣訓練
過段時間後再把參數複製給他
目標網路
採樣訓練
\(L=(reward+\gamma maxQ(s',a')-Q(s,a))^2\)
還是同一個神經網路
目標網路
採樣訓練
\(L=(reward+\gamma Q(s',a^*)-Q(s,a))^2\)
預測網路
沒有解決,但能緩解
\(a^*=argmax_a\space Q(s',a)\)
同樣的問題
不同的解法
\(state\)
\(DQN\)
\(Q(s,a)\)
同樣的問題
不同的解法
\(state\)
\(DQN\)
\(v(s)\)
\(A(s,a)\)
\(Q(s,a)=v(s)+A(s,a)\)
\(v(s)\)
\(A(s,a)\)
狀態價值
優勢函數(相對動作價值)
\(\sum_a A(s,a)=0\)
\(Q(s,a)\)平均值
變得更靈活
要避免Agent只靠\(A(s,a)\)做決策
\(A(s,a)=Q(s,a)-v(s)\)
\(A^*(s,a)=Q^*(s,a)-v^*(s)\)
\(A^*(s,a)=Q^*(s,a)-v^*(s)\)
\(v^*(s)=Q^*(s,a)\)
\(A^*(s,a)=0\)
也就是說讓最大的\(A\)是0
其他的是負的
\(A^*(s,a)=0\)
\(Q(s,a)=v(s)+[A(s,a)-max_a A(s,a)]\)
經過神奇的嘗試發現
\(Q(s,a)=v(s)+[A(s,a)-mean_a A(s,a)]\)
這樣比較好
By lucasw