人透過與世界(環境)的互動認識世界、獲得反饋。
模仿這個範式,人們提出了強化學習的方法。
奠基#
先介紹強化學習中的幾個概念
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 並不明智。
下圖直觀的展示了強化學習的原理。
搞了半天,強化學習到底是幹嘛的?
強化學習的目標在於:透過不斷的互動,優化 Agent 的行動策略,透過選擇更好的 Action 來最大化 Reward 的和 (每一步的 Reward 都要加進來)
建模#
我們一般用馬爾可夫決策過程,來建模強化學習。
在進行下一步之前,請閱讀 馬爾科夫(Markov)和強化學習(RL)的關係 - 知乎
此處給出一個 馬爾可夫過程示意圖
圖源 https://towardsdatascience.com/markov-chain-analysis-and-simulation-using-python-4507cee0b06e
有幾個點需要再提一下:
- 馬爾可夫過程 Markov Process 由二元組 組成,馬爾可夫決策過程 Markov Decision Process 由四元組 組成。有時還會帶上 Reward 的折扣因子 , 這個下面會提到。
- 由於隨機性,給定初始態和終態,馬爾可夫過程 Markov Process 對應的馬爾可夫鏈 Markov Chain 不唯一。
重要概念#
在 Agent 與 Environment 的互動過程中。在某一個時刻 t:
-
Agent 根據對於環境的觀測 和收到的激勵 來構造 Agent State (通常,沒有特別說明,可認為 ),並決定如何採取行動(即向環境提交 )
-
環境接收到 Agent 提交的 Action ,需要承受 這個 Action 帶來的 “代價”,於是向 Agent 反饋回更新後的 和
如此循環往復。
個體與環境互動,產生了下面的互動軌跡。我們記為 。 這個互動軌跡存儲了每一次互動下的 Observation, Action 和 Reward。
透過這個 序列,我們可以構造出 Agent State
當環境滿足 Fully Observable 的性質時,我們認為 Agent State 所以也可以將上式 中的所有的 O 符號改為代表 State 的 S 符號。(很多材料中也直接使用 S 符號)
此時,就無需使用 來構造 了,直接將 當做 即可。
我們根據 State 來決定採取什麼樣的 Action,於是我們抽象出策略函數 ,策略函數 以 State 作為輸入,然後輸出對應的 Action,將其記作 有時也簡寫為
我們假設狀態空間 S 是離散的,且只可能有 |S| 種不同的狀態。同理,假設動作空間 A 也是離散的,並且只可能有 |A| 種不同的動作。
在這樣的設定下,我們應該如何理解策略函數 ?
系統當前處於 狀態,
在狀態 的條件下,應該採取什麼樣的 Action(選擇哪個 a)就是策略函數 所考慮的內容。
策略函數可以理解為一類複合函數。 除了隨機策略以外,我們可以大致認為,策略函數包括兩部分:action 評估和 action 選擇
action 的評估一般使用 Q value 來做
action 的選擇一般使用 argmax 或者 -greedy 來做
後面碰到了再說。
個體或者說 Agent 透過與環境的互動,獲得 Reward,我們上面提到,強化學習的目標在於,我們需要透過選擇 Action(也就是找到合適的 policy)來儘可能使得 Total Reward 最大。
我們將 Total Reward(有的材料也稱 Return 或 future reward)定義為
有幾點需要注意:
-
Total Reward,或者說總 Reward,在字面上理應是從 開始加,而這裡為什麼是從 開始加的?因為 的值已經固定,是常數,是不可被優化的。所以我們着眼於 Future Reward 更多一些。
-
式子中的 即為上面提到的折扣因子 discount factor 通常,discount factor 的範圍被限定在 之間。
如果 值較小,接近於 0 ,由於 隨著 k 的增大, 會越來越小,即 的權重會越來越小。這意味著,我們更加偏向於考慮短期影響,而不太考慮長期的影響 。
如果 值比較接近 1,代表我們會更多地將長期影響納入考慮。
我們定義狀態價值函數 State Value Function 或稱 Value Function 或 Value 為【從狀態 s 出發,遵循策略 所能獲得的期望累計回報】,狀態價值函數用於衡量狀態 s 有多 “好”,定義如下:
第一行的等號,是狀態價值函數的定義式。
第二行和第三行的等式,是將 Return 按定義展開後,得到的遞歸形式,或者說是 Bellman Equation 的形式
第四行將 Bellman Equation 打開,等式中的 和 需要注意
是狀態轉移概率。在馬爾可夫決策過程中應該有所描述。具體而言:
我們在狀態 s 下,依據策略函數 選擇一個 a 作為行為提交給 environment 後,會導致環境的觀測也就是 observation 發生變化,所以 state 也會跟著變化。
但動作 a 造成的影響,並不是固定的,我們不能保證狀態 s 在動作 a 的作用下,總是能變化到某個固定的狀態 ,也就是說 可以等於 state_1, state_2, state_3 或是其他某個 state_i,因此會對應一個概率分佈 同理我們有
我們定義動作價值函數 Action Value Function 為【從狀態 s 出發,採取動作 a 後,遵循策略 所能獲得的期望累計回報】
與 類似,不再另作贅述。
我們定義優勢函數 Advantage Function 為 Q 和 V 的差值。
表示在狀態 s 下,採取動作 a 比遵循當前策略 更好或更差的程度。 優勢函數的主要用途是優化策略,幫助 Agent 更明確地了解哪些動作在當前狀態下是有利的。
如何理解優勢函數(Advantage Function)?- 知乎
Model-based 與 Model-free
所謂 Model 包括狀態轉移概率,以及 Reward function。
如果 Model 是已知的,就是 model-based 我們將在完全信息下,進行規劃。也就是說,我們可以用動態規劃算法 Dynamic Programming,學習所求的 policy
知道 Model 就說明,當 Action 和 State 確定時,我們能夠知道狀態轉移概率 以及對應的 確定值。
相反,如果 learning 是不依賴於 model 的,也就是不知道 model 那麼就稱為 model-free。比如 Policy Gradient 方法,就是 Model free 的
後面碰到再細談。
On-Policy 和 Off-Policy
On-Policy 是說 episode 采樣時(behavior policy)和 policy 優化時(target policy)是同一種策略。
Off-Policy 則代表兩種策略不同。
後面碰到再細談。