Sunforger

Sunforger

強化學習之基礎概念

人透過與世界(環境)的互動認識世界、獲得反饋。

image

圖源 https://storage.googleapis.com/deepmind-media/UCL%20x%20DeepMind%202021/Lecture%201%20-%20introduction.pdf

模仿這個範式,人們提出了強化學習的方法。

奠基#

先介紹強化學習中的幾個概念

Agent, 直譯為代理或智能體,可以理解成決策者、決策器。

Environment 即環境,Agent 透過與環境互動,獲取反饋。

反饋這個詞很有意思,它有著豐富的內涵。具體來說,Agent 的每一個決策,或者說每一個 Action 都會產生代價。

比如:它會導致環境 Environment 的狀態發生變化。這時候,智能體 Agent 對於環境的觀測 Observation 就會發生改變。

我們基於獲得的環境觀測 Observation,來構造 State (Agent State)

對於 Fully Observable Environments 我們可以認為 Agent State = Observation = environment
一般而言,沒有特別說明的情況下,默認所有環境都是完全可觀測,也就是 Fully Observable 的

採取一個 Action 產生的代價不僅僅局限於環境狀態的改變,Action 本身也具有好壞之分。我們以 Reward 來衡量決策 / 動作 Action 的質量。

如果一個 Action 有正值的 Reward,說明至少在短期來看,這個 Action 是好的。反之如果 Reward 為負值,則證明這個 Action 並不明智。

下圖直觀的展示了強化學習的原理。

image

搞了半天,強化學習到底是幹嘛的?

強化學習的目標在於:透過不斷的互動,優化 Agent 的行動策略,透過選擇更好的 Action 來最大化 Reward 的和 (每一步的 Reward 都要加進來)

建模#

我們一般用馬爾可夫決策過程,來建模強化學習。

在進行下一步之前,請閱讀 馬爾科夫(Markov)和強化學習(RL)的關係 - 知乎

此處給出一個 馬爾可夫過程示意圖

image

圖源 https://towardsdatascience.com/markov-chain-analysis-and-simulation-using-python-4507cee0b06e

有幾個點需要再提一下:

  1. 馬爾可夫過程 Markov Process 由二元組 M=(S,P)M=(S, P) 組成,馬爾可夫決策過程 Markov Decision Process 由四元組 M=(S,A,P,R)M=(S,A,P,R) 組成。有時還會帶上 Reward 的折扣因子 γ\gamma, 這個下面會提到。
  2. 由於隨機性,給定初始態和終態,馬爾可夫過程 Markov Process 對應的馬爾可夫鏈 Markov Chain 不唯一。

重要概念#

在 Agent 與 Environment 的互動過程中。在某一個時刻 t:

  1. Agent 根據對於環境的觀測 OtO_t 和收到的激勵 RtR_t 來構造 Agent State StS_t(通常,沒有特別說明,可認為 St=OtS_t=O_t),並決定如何採取行動(即向環境提交 AtA_t

  2. 環境接收到 Agent 提交的 Action AtA_t,需要承受 AtA_t 這個 Action 帶來的 “代價”,於是向 Agent 反饋回更新後的 Ot+1O_{t+1}Rt+1R_{t+1}

如此循環往復。


個體與環境互動,產生了下面的互動軌跡。我們記為 Ht\mathcal H_t 這個互動軌跡存儲了每一次互動下的 Observation, Action 和 Reward。

Ht=O0,A0,R1,O1,A1,,Ot1,At1,Rt,Ot\mathcal H_t = O_0, A_0, R_1,O_1, A_1,\cdots, O_{t-1}, A_{t-1}, R_t, O_t

透過這個 Ht\mathcal H_t 序列,我們可以構造出 Agent State StS_t

當環境滿足 Fully Observable 的性質時,我們認為 Agent State St=OtS_t = O_t 所以也可以將上式 Ht\mathcal H_t 中的所有的 O 符號改為代表 State 的 S 符號。(很多材料中也直接使用 S 符號)

此時,就無需使用 Ht\mathcal H_t 來構造 StS_t 了,直接將 OtO_t 當做 StS_t 即可。


我們根據 State 來決定採取什麼樣的 Action,於是我們抽象出策略函數 π\pi,策略函數 π\pi 以 State 作為輸入,然後輸出對應的 Action,將其記作 π(as)\pi(a|s) 有時也簡寫為 π\pi

我們假設狀態空間 S 是離散的,且只可能有 |S| 種不同的狀態。同理,假設動作空間 A 也是離散的,並且只可能有 |A| 種不同的動作。

在這樣的設定下,我們應該如何理解策略函數 π(as)\pi(a|s)

系統當前處於 ss 狀態,sSs\in S

在狀態 ss 的條件下,應該採取什麼樣的 Action(選擇哪個 a)就是策略函數 π(as)\pi(a|s) 所考慮的內容。

策略函數可以理解為一類複合函數。 除了隨機策略以外,我們可以大致認為,策略函數包括兩部分:action 評估和 action 選擇

action 的評估一般使用 Q value 來做

action 的選擇一般使用 argmax 或者 ϵ\epsilon-greedy 來做

後面碰到了再說。


個體或者說 Agent 透過與環境的互動,獲得 Reward,我們上面提到,強化學習的目標在於,我們需要透過選擇 Action(也就是找到合適的 policy)來儘可能使得 Total Reward 最大。

我們將 Total Reward(有的材料也稱 Return 或 future reward)定義為 GtG_t

Gt=k=0γkRt+k+1=Rt+1+γRt+2+γ2Rt+3++γkRt+k+1+G_t = \sum_{k=0}^\infty {\color{red} \gamma^k}R_{t+k+1} = R_{t+1} + {\color{red} \gamma } R_{t+2} + {\color{red} \gamma^2}R_{t+3} + \cdots + {\color{red} \gamma^k}R_{t+k+1} + \cdots

有幾點需要注意:

  1. Total Reward,或者說總 Reward,在字面上理應是從 R1R_1 開始加,而這裡為什麼是從 Rt+1R_{t+1} 開始加的?因為 R1RtR_1 \sim R_t 的值已經固定,是常數,是不可被優化的。所以我們着眼於 Future Reward 更多一些。

  2. 式子中的 γ\gamma 即為上面提到的折扣因子 discount factor γ\gamma 通常,discount factor 的範圍被限定在 0<γ<10<\gamma<1 之間。

    如果 γ\gamma 值較小,接近於 0 ,由於 隨著 k 的增大,γk\gamma^k 會越來越小,即 Rt+k+1R_{t+k+1} 的權重會越來越小。這意味著,我們更加偏向於考慮短期影響,而不太考慮長期的影響 。

    如果 γ\gamma 值比較接近 1,代表我們會更多地將長期影響納入考慮。


我們定義狀態價值函數 State Value Function 或稱 Value Function 或 Value 為【從狀態 s 出發,遵循策略 π\pi 所能獲得的期望累計回報】,狀態價值函數用於衡量狀態 s 有多 “好”,定義如下:

Vπ(s)=Eπ[GtSt=s]=Eπ[Rt+1+Rt+2+St=s]=Eπ[Rt+1+Gt+1St=s]=Eπ[Rt+1+Vπ(St+1)St=s]=aπ(as)spssa[rssa+γVπ(s)]\begin{align*} V^\pi(s) &= \mathbb E_\pi[G_t|S_t=s] {\color{red}=\mathbb E_\pi[R_{t+1}+R_{t+2}+\cdots|S_t = s] } \\ &=\mathbb E_\pi [R_{t+1}+G_{t+1}|S_t = s] \\ &=\mathbb E_\pi[R_{t+1}+V^\pi(S_{t+1})|S_t = s]\\ &={\color{red} \sum_a\pi(a|s)\sum_{s^\prime}p_{ss^\prime}^a \left[ r_{ss^\prime}^a + \gamma V^\pi(s^\prime) \right] } \end{align*}

第一行的等號,是狀態價值函數的定義式。
第二行和第三行的等式,是將 Return GtG_t 按定義展開後,得到的遞歸形式,或者說是 Bellman Equation 的形式
第四行將 Bellman Equation 打開,等式中的 pssap_{ss^\prime}^arssar_{ss^\prime}^a 需要注意

pssap_{ss^\prime}^a 是狀態轉移概率。在馬爾可夫決策過程中應該有所描述。具體而言:

我們在狀態 s 下,依據策略函數 π(as)\pi(a|s) 選擇一個 a 作為行為提交給 environment 後,會導致環境的觀測也就是 observation 發生變化,所以 state 也會跟著變化。

但動作 a 造成的影響,並不是固定的,我們不能保證狀態 s 在動作 a 的作用下,總是能變化到某個固定的狀態 ss^\prime,也就是說 ss^\prime 可以等於 state_1, state_2, state_3 或是其他某個 state_i,因此會對應一個概率分佈 pssap_{ss^\prime}^a 同理我們有 rssar_{ss^\prime}^a


我們定義動作價值函數 Action Value Function 為【從狀態 s 出發,採取動作 a 後,遵循策略 π\pi 所能獲得的期望累計回報】

Qπ(s,a)=Eπ[GtSt=s,At=a]=Eπ[Rt+1+Rt+2+St=s,At=a]=Eπ[Rt+1+Gt+1St=s,At=a]=Eπ[Rt+1+Qπ(St+1,At+1)St=s,At=a]=spssa[rssa+γaπ(as)Qπ(s,a)]\begin{align*} Q^\pi(s,a) &= \mathbb E_\pi[G_t|S_t=s, A_t=a] {\color{red}=\mathbb E_\pi[R_{t+1}+R_{t+2}+\cdots|S_t = s, A_t = a] } \\ &=\mathbb E_\pi [R_{t+1}+G_{t+1}|S_t = s, A_t = a] \\ &=\mathbb E_\pi[R_{t+1}+Q^\pi(S_{t+1}, A_{t+1})|S_t = s, A_t=a]\\ &={\color{red} \sum_{s^\prime}p_{ss^\prime}^a \left[ r_{ss^\prime}^a +\gamma \sum_{a^\prime} \pi(a^\prime|s^\prime) Q^\pi(s^\prime, a^\prime)\right] } \end{align*}

Vπ(s)V^\pi(s) 類似,不再另作贅述。


我們定義優勢函數 Advantage Function 為 Q 和 V 的差值。

A(s,a)=Q(s,a)V(s)A(s,a) = Q(s, a) - V(s)

表示在狀態 s 下,採取動作 a 比遵循當前策略 π\pi 更好或更差的程度。 優勢函數的主要用途是優化策略,幫助 Agent 更明確地了解哪些動作在當前狀態下是有利的。

如何理解優勢函數(Advantage Function)?- 知乎


Model-based 與 Model-free

所謂 Model 包括狀態轉移概率,以及 Reward function。

如果 Model 是已知的,就是 model-based 我們將在完全信息下,進行規劃。也就是說,我們可以用動態規劃算法 Dynamic Programming,學習所求的 policy

知道 Model 就說明,當 Action 和 State 確定時,我們能夠知道狀態轉移概率 pssap_{ss^\prime}^a 以及對應的 rssar_{ss^\prime}^a 確定值。

相反,如果 learning 是不依賴於 model 的,也就是不知道 model 那麼就稱為 model-free。比如 Policy Gradient 方法,就是 Model free 的

後面碰到再細談。


On-Policy 和 Off-Policy

On-Policy 是說 episode 采樣時(behavior policy)和 policy 優化時(target policy)是同一種策略。

Off-Policy 則代表兩種策略不同。

後面碰到再細談。

相關資料#

A (Long) Peek into Reinforcement Learning

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。