機器學習小社-9

講師 000

  • 你可以叫我 000 / Lucas

  • 建國中學資訊社37th學術長

  • 建國中學電子計算機研習社44th學術

  • 校際交流群創群者

  • 不會音遊不會競程不會數學的笨

  • 資訊技能樹亂點但都一樣爛

  • 專案爛尾大師

  • IZCC x SCINT x Ruby Taiwan 聯課負責人

講師 章魚

  • 建國中學電子計算機研習社44th學術+總務

  • 是的,我是總務。在座的你各位下次記得交社費束脩給我

  • 技能樹貧乏

  • 想拿機器學習做專題結果只學會使用API

  • 上屆社展烙跑到資訊社的叛徒

  • 科班墊神

  • 無模型的策略迭代

  • Policy Gradient

  • Actor-Critic

  • 連續動作

目錄

無模型的策略迭代

基於模型

Model-based

基於價值

Value-based

基於策略

Policy-based

基於價值

Value-based

基於策略

Policy-based

策略梯度

Actor-Critic

Q-Leaning

DQN

策略迭代

價值迭代

無模型

Model-free

強化學習

Reinforcement Learning

Policy Gradient

Deep Q-Network

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)\)

僅限離散動作

Policy-Based

\(state\)

NN

\(Q(s,a_1)\)

\(Q(s,a_2)\)

\(\dots\)

\(Q(s,a_n)\)

argmax

Policy-Based

\(state\)

NN

\(\pi(a_1|s)\)

\(\pi(a_2|s)\)

\(\dots\)

\(\pi(a_n|s)\)

Policy(probability of each action)

\(10\%\)

\(45\%\)

\(5\%\)

sample

Value-based

Policy-based

輸出\(Q(s,a)\)

輸出\(\pi(a|s)\)

確定策略

隨機策略

\(\varepsilon -greedy\)

自帶探索性

策略固定

策略較靈活

Policy Gradient

提高Gain最大的動作的\(\pi(a|s)\)

降低其他動作的機率

蒙地卡羅

蒙特卡羅方法

Monte Carlo method

1 episode

\(S_t\)

\(a\)

\(S_{t+1}\)

\(a\)

\(S_{t+2}\)

\(a\)

terminate

\(R_t\)

\(R_{t+1}\)

\(R_{t+2}\)

Q^\pi(s,a)=R(s,a)+\gamma \sum P(s'|s,a)\sum \pi(a'|s')Q'(s',a')

這東西靠蒙地卡羅取得

蒙特卡羅方法

Monte Carlo method

1 episode

\(S_t\)

\(a\)

\(S_{t+1}\)

\(a\)

\(S_{t+2}\)

\(a\)

terminate

\(R_t\)

\(R_{t+1}\)

\(R_{t+2}\)

Q^\pi(s,a)=R(s,a)+\gamma\sum \pi(a'|s')Q'(s',a')
G_t=R(s,a)+\gamma\sum \pi(a'|s') G_{t+1}

沒有Q-Table

其實這才是最初的版本=>\(E(G_t)\)

蒙特卡羅方法

Monte Carlo method

1 episode

\(S_t\)

\(a\)

\(S_{t+1}\)

\(a\)

\(S_{t+2}\)

\(a\)

terminate

\(R_t\)

\(R_{t+1}\)

\(R_{t+2}\)

G_t=R_t+\gamma R_{t+1}+\gamma^2 R_{t+2}
G_t=R(s,a)+\gamma\sum \pi(a'|s') G_{t+1}

更新

蒙特卡羅方法

Monte Carlo method

1 episode

\(S_{t+1}\)

\(a\)

\(S_{t+2}\)

\(a\)

terminate

\(R_{t+1}\)

\(R_{t+2}\)

G_{t+1}=R_{t+1}+\gamma R_{t+2}

蒙特卡羅方法

Monte Carlo method

1 episode

\(S_{t+2}\)

\(a\)

terminate

\(R_{t+2}\)

G_{t+1}=R_{t+2}

Policy Gradient

\(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\)

Loss=-\sum_{i}y_{i} \log_{2} \hat y_{i}=-1\times\log_{2}\pi(a_2|s)

Policy Gradient

Loss=-1\times\log_{2}\pi(a_2|s)

\(但那樣是直接把a_2當標準答案\)

實際上\(a_2\)不一定是最好的

Loss=-\log_{2}\pi(a_2|s)\times G

回報相對大的動作發生機率增加

回報相對小的動作發生機率降低

Baseline

在一個獎勵都是正的環境中

有更新到的之後動作機率提高

更容易再被更新到

陷入像Q-Learning一樣的循環

喔是喔

一樣喔

那就複製貼上阿

Baseline

\(設定一個b=E(G_t|\pi)\)

\(將Loss中的G換成A=G-b\)

你說為什麼是\(A\)

因為他是Advantage阿

詳情請見Dueling DQN

Loss=-\log\pi(a_2|s)\times (G-E(G|\pi))
Loss=-\log\pi(a_2|s)\times A

熵正則

之前說過他自帶探索性

而且很酷的是它的探索性會自動衰減

但我們怕它衰減過頭了

所以要讓它不會衰減的那麼快

熵正則

Entropy=-\sum_{i}p_i \log p_i

把\(-\lambda\times Entropy\)加入損失函數

\(Entropy\)代表亂度

\(-Entropy\)則相反

訓練目標是讓\(Loss\)降低

也就是讓\(-Entropy\)降低

負負得正,讓亂度上升

暈了嗎

熵正則

補充說明

訓練本來就是讓亂度下降的過程

(很好懂吧,只希望使用最好的那個動作)

熵正則只是在某種程度上延緩這個過程

至於程度則由超參數\(\lambda\)決定

Actor-Critic

還是同樣的問題

每次都要玩到最後才更新太沒效率了

每步更新應該必較好

但又沒有DQN

怎麼辦

蛤?沒有就加一個阿

Actor-Critic算法

簡稱AC算法

有Actor跟Critic兩部分組成

Actor:做出決策,Policy-based

Critic:評價動作,Value-based

達成時序差分的效果

G_t=R_t+\gamma \space argmax\space Q(s',a')
G_t=R_t+\gamma R_{t+1}+\gamma^2 R_{t+2}+\dots

Actor-Critic算法

Actor

Critic

\(state\)

\(Q(s,a_i)\)

\(\pi(s,a_i)\)

更新

更新

-\log_{2}\pi(a_i|s)\times G
Q=R_t+\gamma \space max Q'

Advantage Actor-Critic

簡稱A2C

跟DQN同樣的問題

所以改成\(A\)

\begin{aligned} A(s,a)&=Q(s,a)-v(s)\\ &=E(R_t+\gamma v(s'))-v(s)\\ &=R_t+\gamma v(s')-v(s)\\ &=TD\space error \end{aligned}

時序差分

偷懶

Advantage Actor-Critic

直觀的理解

TD error 大於0代表

這個動作能帶來比當前狀態好的價值

TD error 小於0代表

這個動作把狀態搞得比原來差

Asynchronous Advantage Actor-Critic

簡稱A3C

一個Global Network將參數複製給workers

workers與環境互動

將梯度回傳給Global Network

Asynchronous Advantage Actor-Critic

並行訓練

算法還是用A2C

僅僅改變訓練方式

加速訓練

連續動作

直到剛才我們玩的遊戲動作空間都是離散的

在這堂課的最後來補一下連續動作

Normal Distribution

{\displaystyle f(x)={\frac {1}{\sqrt {2\pi \sigma ^{2}}}}e^{-{\frac {(x-\mu )^{2}}{2\sigma ^{2}}}}}

神經網路輸出 \(\mu\) , \(\sigma\)

再從他的Normal Distribution中採樣

機器學習社課 第九堂

By lucasw

機器學習社課 第九堂

  • 89