lucasw
大佬教麻
你可以叫我 000 / Lucas
建國中學資訊社37th學術長
建國中學電子計算機研習社44th學術
校際交流群創群者
不會音遊不會競程不會數學的笨
資訊技能樹亂點但都一樣爛
專案爛尾大師
IZCC x SCINT x Ruby Taiwan 聯課負責人
建國中學電子計算機研習社44th學術+總務
是的,我是總務。在座的你各位下次記得交社費束脩給我
技能樹貧乏
想拿機器學習做專題結果只學會使用API
上屆社展烙跑到資訊社的叛徒
科班墊神
策略梯度
Actor-Critic
Q-Leaning
DQN
策略迭代
價值迭代
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)\)
僅限離散動作
\(state\)
NN
\(Q(s,a_1)\)
\(Q(s,a_2)\)
\(\dots\)
\(Q(s,a_n)\)
argmax
\(state\)
NN
\(\pi(a_1|s)\)
\(\pi(a_2|s)\)
\(\dots\)
\(\pi(a_n|s)\)
Policy(probability of each action)
\(10\%\)
\(45\%\)
\(5\%\)
sample
輸出\(Q(s,a)\)
輸出\(\pi(a|s)\)
確定策略
隨機策略
\(\varepsilon -greedy\)
自帶探索性
策略固定
策略較靈活
提高Gain最大的動作的\(\pi(a|s)\)
降低其他動作的機率
蒙地卡羅
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}\)
沒有Q-Table
其實這才是最初的版本=>\(E(G_t)\)
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}\)
\(S_t\)
\(10\%\)
\(30\%\)
\(20\%\)
\(p(s' |s,a)\)
\(R_t\)
\(S_{t+1}\)
\(\pi(a_1|s)\)
\(\pi(a_2|s)\)
\(\pi(a_n|s)\)
\(\vdots\)
\(\vdots\)
\(但那樣是直接把a_2當標準答案\)
實際上\(a_2\)不一定是最好的
回報相對大的動作發生機率增加
回報相對小的動作發生機率降低
在一個獎勵都是正的環境中
有更新到的之後動作機率提高
更容易再被更新到
陷入像Q-Learning一樣的循環
喔是喔
一樣喔
那就複製貼上阿
\(設定一個b=E(G_t|\pi)\)
\(將Loss中的G換成A=G-b\)
之前說過他自帶探索性
而且很酷的是它的探索性會自動衰減
但我們怕它衰減過頭了
所以要讓它不會衰減的那麼快
把\(-\lambda\times Entropy\)加入損失函數
\(Entropy\)代表亂度
\(-Entropy\)則相反
訓練目標是讓\(Loss\)降低
也就是讓\(-Entropy\)降低
負負得正,讓亂度上升
暈了嗎
補充說明
訓練本來就是讓亂度下降的過程
(很好懂吧,只希望使用最好的那個動作)
熵正則只是在某種程度上延緩這個過程
至於程度則由超參數\(\lambda\)決定
還是同樣的問題
每次都要玩到最後才更新太沒效率了
每步更新應該必較好
但又沒有DQN
怎麼辦
蛤?沒有就加一個阿
簡稱AC算法
有Actor跟Critic兩部分組成
Actor:做出決策,Policy-based
Critic:評價動作,Value-based
達成時序差分的效果
Actor
Critic
\(state\)
\(Q(s,a_i)\)
\(\pi(s,a_i)\)
更新
更新
簡稱A2C
跟DQN同樣的問題
所以改成\(A\)
時序差分
偷懶
直觀的理解
TD error 大於0代表
這個動作能帶來比當前狀態好的價值
TD error 小於0代表
這個動作把狀態搞得比原來差
簡稱A3C
一個Global Network將參數複製給workers
workers與環境互動
將梯度回傳給Global Network
並行訓練
算法還是用A2C
僅僅改變訓練方式
加速訓練
直到剛才我們玩的遊戲動作空間都是離散的
在這堂課的最後來補一下連續動作
神經網路輸出 \(\mu\) , \(\sigma\)
再從他的Normal Distribution中採樣
By lucasw