機器學習小社-7

講師 000

  • 你可以叫我 000 / Lucas

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

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

  • 校際交流群創群者

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

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

  • 專案爛尾大師

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

講師 章魚

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

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

  • 技能樹貧乏

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

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

  • 科班墊神

  • 強化學習概論

  • 馬可夫決策過程

  • OpenAI Gym

  • 基於模型的策略迭代

  • 基於價值的價值迭代

  • 無模型的價值迭代

目錄

強化學習概論

人工智慧

機器學習

監督式學習

非監督式學習

強化學習

深度學習

強化學習

  • 在給定的環境中,學習怎麼樣才能獲得最多的獎勵                                                                     
  • 簡單來說,就是去學怎麼玩一款遊戲

reinforcement learning

Agent

Action

Environment

New State

Reward

可能是超越人類的智慧

Q:可以用強化學習做監督式學習嗎

監督式學習

人為標註的資料

強化學習

人為標註的資料

跟環境互動獲取資料

做出預測

做出決策

存在唯一正解

可能有多種最佳解

誤差越小越好

獎勵越多越好

模仿人類智慧

透過試錯自行產生智慧

強化學習應用

自駕車

大型語言模型(RLHF)

基於模型

Model-based

基於價值

Value-based

基於策略

Policy-based

基於價值

Value-based

基於策略

Policy-based

策略梯度

Actor-Critic

Q-Leaning

DQN

策略迭代

價值迭代

無模型

Model-free

強化學習

Reinforcement Learning

馬可夫決策過程

馬可夫性質

Markov Property

馬可夫性質

Markov Property

\(S=\{S_1,S_2,...,S_n\}\)

\(S_4\rightarrow S_8\rightarrow S_7\)

\(S_7\)

\(S_6\)

\(S_5\)

50%

30%

20%

*相加必等於1

馬可夫性質

Markov Property

\(S=\{S_1,S_2,...,S_n\}\)

\(S_7\)

\(S_7\)

\(S_6\)

\(S_5\)

50%

30%

20%

馬可夫性質

Markov Property

\(S=\{S_1,S_2,...,S_n\}\)

\(S_4\rightarrow S_8\rightarrow S_7\)

\(S_7\)

\(S_6\)

\(S_5\)

50%

30%

20%

有些問題可能一開始不具有馬可夫性質

可以將歷史資訊也當作狀態使其具備馬可夫性質

\(S=\{\{S_4,S_8,S_7\},S_1,S_2,...,S_n\}\)

馬可夫鏈

Markov Chain

\(S=\{上課,困惑,睡覺\}\)

滿足馬可夫性質的狀態序列

上課

50%

上課

上課

困惑

睡覺

30%

20%

睡覺

10%

上課

困惑

睡覺

30%

60%

困惑

30%

上課

困惑

睡覺

30%

40%

馬可夫鏈

Markov Chain

\(上課\rightarrow 上課\rightarrow 困惑\)

\(H\)

\(p(H)=0.5\times 0.5\times 0.3\)

上課

50%

上課

上課

困惑

睡覺

30%

20%

睡覺

10%

上課

困惑

睡覺

30%

60%

困惑

30%

上課

困惑

睡覺

30%

40%

轉移矩陣

Transition Matrix

將狀態轉移的機率以矩陣表示

上課 困惑 睡覺
上課 0.5 0.3 0.2
困惑 0.3 0.3 0.4
睡覺 0.1 0.3 0.6

上課

50%

上課

上課

困惑

睡覺

30%

20%

睡覺

10%

上課

困惑

睡覺

30%

60%

困惑

30%

上課

困惑

睡覺

30%

40%

原來狀態

後來狀態

轉移矩陣

Transition Matrix

上課

50%

上課

上課

困惑

睡覺

30%

20%

睡覺

10%

上課

困惑

睡覺

30%

60%

困惑

30%

上課

困惑

睡覺

30%

40%

T= \begin{bmatrix} 0.5 &0.3 &0.2 \\ 0.3 &0.3 &0.4 \\ 0.1 &0.3 &0.6 \end{bmatrix}

轉移矩陣

Transition Matrix

將原來狀態也以矩陣表示

ex.一開始在上課\(\rightarrow S_0=[1,0,0]\)

可由轉移矩陣求得下個狀態的機率

S_1=S_0T= \begin{bmatrix} 1 &0 &0 \end{bmatrix} \begin{bmatrix} 0.5 &0.3 &0.2 \\ 0.3 &0.3 &0.4 \\ 0.1 &0.3 &0.6 \end{bmatrix}
S_1= \begin{bmatrix} 0.5 &0.3 &0.2 \end{bmatrix}

轉移矩陣

Transition Matrix

可由同個關係式

\(S_{n+1}=S_nT\)

求得再下個狀態的機率

S_1= \begin{bmatrix} 0.5 &0.3 &0.2 \end{bmatrix}
S_2= \begin{bmatrix} 0.5 &0.3 &0.2 \end{bmatrix} \begin{bmatrix} 0.5 &0.3 &0.2 \\ 0.3 &0.3 &0.4 \\ 0.1 &0.3 &0.6 \end{bmatrix}

馬可夫獎勵過程

Markov Reward Process

上課 困惑 睡覺
上課 1 -1 -10
困惑 1 0 -10
睡覺 1 0 0

原來狀態

後來狀態

獎勵(Reward)表:狀態轉移時獲得由環境決定獎勵

馬可夫獎勵過程

Markov Reward Process

回報(Return or Gain):馬可夫鏈的獎勵總和

\(G_t\):從t時刻(狀態\(S_t\))到中止的回報

\(G_t=R_t+R_{t+1}+R_{t+2}+...=\sum^{\infty}_{k=0} R_{t+k}\)

馬可夫獎勵過程

Markov Reward Process

對未來的期望要打折扣

而且越遠的未來折扣越多

\(\rightarrow\)後一個時刻的獎勵要多乘上一個折扣因子\(\gamma\)

(\(0\le\gamma\le 1\))

\(G_t=R_t+\gamma R_{t+1}+\gamma^2R_{t+2}+...=\sum^{\infty}_{k=0} \gamma^kR_{t+k}\)

馬可夫獎勵過程

Markov Reward Process

\begin{aligned} G_t&=R_t+\gamma R_{t+1}+\gamma^2R_{t+2}+...\\ &=R_t+\gamma(R_{t+1}+\gamma R_{t+2}...)\\ &=R_t+\gamma G_{t+1} \end{aligned}

狀態價值

Value

為每個狀態S

設定一個狀態價值V(s)

代表這個位置的好壞

這樣一來

策略就可以簡單地設定為朝狀態價值高的方向走

條件機率

條件機率表示為\(P(A|B)\),讀作「A在B發生的條件下發生的機率」

{\displaystyle P(A|B)={\frac {P(A\cap B)}{P(B)}}}

貝爾曼方程式

BellMan Equation

\begin{aligned} v(s)&=E(G_t|S_t=s)\\ &=E(R_t+\gamma G_{t+1}|S_t=s)\\ &=E(R_t|S_t=s)+\gamma E(G_{t+1}|S_t=s)\\ &=R(s)+\gamma v(s') \end{aligned}

貝爾曼方程式

BellMan Equation

\begin{aligned} v(s)&=R(s)+\gamma v(s')\\ &=R(s)+\gamma \sum p(s'|s)v(s') \end{aligned}

10%

\(s\)

5%

20%

15%

\(s'_1\)

\(s'_2\)

\(s'_3\)

\(s'_n\)

條件機率 \(p(s'_1|s)=10\%,p(s'_2|s)=15\%...\)

.

.

.

貝爾曼方程式

BellMan Equation

可表示成矩陣型式

\(V=R+\gamma PV\)

\begin{bmatrix} v(s_1)\\ v(s_2)\\ \vdots\\ v(s_n) \end{bmatrix} = \begin{bmatrix} R(s_1)\\ R(s_2)\\ \vdots\\ R(s_n) \end{bmatrix} + \gamma \begin{bmatrix} p(s_1|s_1)&p(s_2|s_1)&\dots&p(s_n|s_1)\\ p(s_1|s_2)&p(s_2|s_2)&\dots&p(s_n|s_2)\\ \vdots&\vdots&\ddots\\ p(s_1|s_n)&p(s_2|s_n)&\dots&p(s_n|s_n) \end{bmatrix} \begin{bmatrix} v(s_1)\\ v(s_2)\\ \vdots\\ v(s_n) \end{bmatrix}

動作

Action

狀態實際上是根據採取的動作(Action)進行改變

\(s\)

\(a_1\)

\(a_2\)

\(a_n\)

.

.

.

\(s'_1\)

\(s'_2\)

\(s'_3\)

\(s'_1\)

\(s'_2\)

\(s'_3\)

\(s'_1\)

\(s'_2\)

\(s'_3\)

0.1

0.3

0.6

0.2

0.5

0.3

0.0

0.8

0.2

策略

Policy

Agent(智能體)根據採取的策略決定執行的動作

\(S_t=s\)

\(\pi\)

\(A=\{a_1,a_2,...,a_n\}\)

\(p(s|s,a)\)

\(S=\{s_1,s_2,...,s_n\}\)

\(R_t\)

\(S_{t+1}=s'\)

策略

Policy

\(S_t=s\)

\(\pi\)

\(A=\{a_1,a_2,...,a_n\}\)

\(p(s|s,a)\)

\(S=\{s_1,s_2,...,s_n\}\)

\(R_t\)

\(S_{t+1}=s'\)

\(\pi (a|s) = p(A_t=a|S_t=s)\)

\(P(s'|s) = \sum \pi (a|s)P(s'|s,a)\)

策略

Policy

\(\pi (a|s) = p(A_t=a|S_t=s)\)

\(P(s'|s) = \sum \pi (a|s)P(s'|s,a)\)

\begin{aligned} v^\pi (s)&=E^\pi(G_t|S_t=s)\\ &=\sum\pi[R(s,a)+\gamma\sum pv(s')] \end{aligned}

動作價值

\(s\)

\(a_1\)

\(a_2\)

\(a_n\)

.

.

.

\(s'_1\)

\(s'_2\)

\(s'_3\)

\(s'_1\)

\(s'_2\)

\(s'_3\)

\(s'_1\)

\(s'_2\)

\(s'_3\)

0.1

0.3

0.6

0.2

0.5

0.3

0.0

0.8

0.2

評估一個動作的價值

\(v^\pi(s)\)

\(Q^\pi(s,a_1)\)

\(v^\pi(s'_1)\)

動作價值

\(s\)

\(a_1\)

\(a_2\)

\(a_n\)

.

.

.

\(v^\pi(s)=\sum \pi(a|s)Q^\pi(s,a)\)

動作價值

\(a_1\)

\(s'_1\)

\(s'_2\)

\(s'_3\)

0.1

0.3

0.6

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

動作價值

\(a_1\)

\(s'_1\)

\(s'_2\)

\(s'_3\)

0.1

0.3

0.6

\(s\)

\(a_2\)

\(a_n\)

.

.

.

\(s'_1\)

\(s'_2\)

\(s'_3\)

\(s'_1\)

\(s'_2\)

\(s'_3\)

0.2

0.5

0.3

0.0

0.8

0.2

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

動作價值

\(a_1\)

\(s'_1\)

\(s'_2\)

\(s'_3\)

0.1

0.3

0.6

\(s\)

\(a_2\)

\(a_n\)

.

.

.

\(s'_1\)

\(s'_2\)

\(s'_3\)

\(s'_1\)

\(s'_2\)

\(s'_3\)

0.2

0.5

0.3

0.0

0.8

0.2

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

\(s'\)

\(a_1'\)

\(a_2'\)

\(a_n'\)

\(s\)

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

\(v^\pi(s)=\sum \pi(a|s)Q^\pi(s,a)\)

\(s'\)

\(a\)

馬可夫決策過程

Markov Decision Process

最優策略

我們要訓練Agent做出最好的決策

也就是有最佳策略「*」

根據此策略可以得到以下結果

v^*(s)=max_{\pi}\space v^\pi(s)\\ Q^*(s,a)=max_{\pi}\space Q^\pi(s,a)\\ a^*(s)=argmax_{\pi}\space Q^\pi(s,a)

* => 選Q值最高的動作

OpenAI Gym

observation,reward,terminated,truncated,info = env.step(action)

observation: 新環境觀測資料

reward: 執行動作所獲得的獎勵

terminated: 遊戲是否結束

truncated: 遊戲異常終止(ex.超時)

info: 額外資訊,通常用不到

基於模型的策略迭代

基於模型

Model-based

基於價值

Value-based

基於策略

Policy-based

基於價值

Value-based

基於策略

Policy-based

策略梯度

Actor-Critic

Q-Leaning

DQN

策略迭代

價值迭代

無模型

Model-free

強化學習

Reinforcement Learning

基於模型

Model-based

基於價值

Value-based

基於策略

Policy-based

基於價值

Value-based

基於策略

Policy-based

策略梯度

Actor-Critic

Q-Leaning

DQN

策略迭代

價值迭代

無模型

Model-free

強化學習

Reinforcement Learning

\(\pi\)

\(v\)

v^\pi(s)=\sum \pi(a|s)[R(s,a)+\gamma \sum P(s'|s,a)v(s')]
a^*(s)=argmax_{\pi}\space Q^\pi(s,a)

動態規劃

基於模型的價值迭代

基於模型

Model-based

基於價值

Value-based

基於策略

Policy-based

基於價值

Value-based

基於策略

Policy-based

策略梯度

Actor-Critic

Q-Leaning

DQN

策略迭代

價值迭代

無模型

Model-free

強化學習

Reinforcement Learning

基於模型

Model-based

基於價值

Value-based

基於策略

Policy-based

基於價值

Value-based

基於策略

Policy-based

策略梯度

Actor-Critic

Q-Leaning

DQN

策略迭代

價值迭代

無模型

Model-free

強化學習

Reinforcement Learning

不制訂策略(直接往價值高處走)

拿下個狀態中價值最高的來更新

重複更新直到收斂即可

v^*(s)=max[R(s,a)+\gamma \sum P(s'|s,a)v(s')]

無模型的價值迭代

基於模型

Model-based

基於價值

Value-based

基於策略

Policy-based

基於價值

Value-based

基於策略

Policy-based

策略梯度

Actor-Critic

Q-Leaning

DQN

策略迭代

價值迭代

無模型

Model-free

強化學習

Reinforcement Learning

現在沒有人告訴我們轉移方式跟機率了

怎麼辦

蒙特卡羅方法

Monte Carlo method

重複採樣取得所求機率分布的近似值

蒙特卡羅方法

Monte Carlo method

1 episode

紀錄每次個點的\(G_t\)

\(G_t=R_t+\gamma R_{t+1}+\gamma^2R_{t+2}+...=\sum^{\infty}_{k=0} \gamma^kR_{t+k}\)

\(S_t\)

\(a\)

\(S_{t+1}\)

\(a\)

\(S_{t+2}\)

\(a\)

terminate

蒙特卡羅方法

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

蒙特卡羅方法

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+2}=R_{t+2}\)

蒙特卡羅方法

Monte Carlo method

1 episode

\(S_{t+2}\)

\(a\)

terminate

\(R_{t+2}\)

\(G_{t+2}=R_{t+2}\)

時序差分學習

Temporal difference learning

1 episode

\(S_t\)

\(a\)

\(S_{t+1}\)

\(a\)

\(S_{t+2}\)

\(a\)

terminate

\(R_t\)

\(R_{t+1}\)

\(R_{t+2}\)

時序差分學習

Temporal difference learning

1 episode

\(S_t\)

\(a\)

\(S_{t+1}\)

\(R_t\)

\(G_t=R_t+\gamma G_{t+1}\)

時序差分學習

Temporal difference learning

1 episode

\(S_{t+1}\)

\(a\)

\(S_{t+2}\)

\(R_{t+1}\)

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

時序差分學習

Temporal difference learning

1 episode

\(S_{t+2}\)

\(a\)

terminate

\(R_{t+2}\)

\(G_{t+2}=R_{t+2}\)

時序差分學習

Temporal difference learning

好處

更新較快,不必每次都玩到終點在更新

機器學習社課 第七堂

By lucasw

機器學習社課 第七堂

  • 113