本文內容源自百度強化學習 7 日入門課程學習整理
感謝百度 PARL 團隊李科澆老師的課程講解
文章目錄
一、強化學習MDP四元組
<S,A,P,R>
S:狀態 state
A:動作 action
R:獎勵 reward
P:狀態轉移概率 probability
1.1 狀態轉移概率
在 t 時刻,處於 的狀態,選擇了 的動作,的情況下:
轉移到 狀態,並且獲得 獎勵,的概率
該狀態轉移概率符合 “馬爾可夫”
因爲 的狀態僅僅與 相關,與 ,還是 都沒有關係
還取決於智能體與環境交互的動作 ,有了一個決策過程在裏面
所以這個過程叫做 “馬爾可夫決策過程” Markov Decision Process,簡稱 MDP,是序列決策的經典表達方式
根據狀態(環境)變化,產生的一系列的決策過程,就是與環境的交互產生的經驗
1.2 如何描述環境
使用 P 函數 和 R 函數
- P函數:probability function:
- 反映了一個環境的隨機性:一個狀態下作出決策後,可能有多種結果,不同結果存在不同的概率
- R函數:reward function:
在動態規劃下,P函數和R函數都是已知的,即 Model-based,我們可以根據現有條件作出最優規劃
1.3 Mode-free 試錯探索
在強化學習的實際環境中,P 函數 和 R 函數都是未知的,所以是 Mode-free
價值函數 V(st) 表示在 t 時刻的狀態的優劣
用 Q(st , at) 值表示,在 st 狀態下做動作 at 能拿到(最大)的獎勵(的概率)
二、Q 表格
1.1 Q 值表格概念
Q 表示狀態動作價值
是累積的經驗,取得成功所需的知識
例如:
在某一狀態 S 下,我們可以採取 2 個動作:A 和 B
採取 A 動作以後,100% 獲得 10 分
採取 B 動作以後,90% 獲得 5 分,10% 獲得 15 分
那麼 Q(S,A) = 100% * 10 = 10,Q(S,B) = 90% * 5 + 10% * 15 = 6
以上的例子中,之所以我們知道概率分佈,是因爲這個 Q 表是訓練後的結果
Q 表中累積的學習到的知識,所以應用的時候,我們很自然的會在 S 狀態下選擇 A 的動作
以獲得最大的回報
但是上面的例子僅僅是一次選擇
在實際中,我們會面對多次選擇,於是我們要看的是做了一系列選擇以後,最終的回報最大的,纔是最優路徑
所以要把(預估)後續的所有 收益 及其對應 概率 ,都累計到當前狀態下做計算
所以在強化學習中,環境給到的 reward ,即環境的反饋就非常重要!
1.2 Q 表格的目標導向型
我們要看的是總收益,來更新 Q 表格
例子:救護車闖紅燈
假設每個交通燈,正常通過是 0 分,闖紅燈時 -1 分,一共有 10 個紅綠燈路口
那麼對於一個普通的汽車來說,通過這一段路最高的分數就是 0,即每次都不闖紅燈
但是對於救護車來說,我要用最短的時間把病人及時送到醫院,可以獲得 1000 分,病人死亡則 0 分
這時候最優的方法是每次都闖紅燈,前面獲得 -10,最後獲得 1000,總分 990
這個例子中每一步設定的 Q(s,a) 不能只看當前這一步的收益,要看未來總收益:
G = R1+R2+R3+R4+…+RT
例子:股票投資
關注累積收益,但是股票交易是永續進行的,所以無法考慮未來收益只和
我們無法得到 t 時刻預期的未來總收益:
Gt= Rt+1+Rt+2+Rt+3+…
所以要引如 “衰減因子”:
Gt= Rt+1+γRt+2+γ2Rt+3+…
這裏的 衰減因子 γ 取值範圍 0~1,等於 1 的時候即看到最後一步,等於 0 的時候即只看後一步
約後面的收益對當前的價值影響越小
1.3 實踐:懸崖問題(快速到達目的地)
問題描述:
在一張地圖上,我們要從起點 S 到達終點 G,每走一步 reward 爲 -1(因爲我們希望越快到達越好)
掉下懸崖一次 reward 爲 -100(所以我們希望避免發生),並回到起點
到達終點 G 的時候遊戲結束
設定 reward 的衰減因子 γ
當前時刻 t,可獲得的收益預期總計:
Gt = Rt+1 + γRt+2 + γ2Rt+3 + … =
-
γ 取 0 代表目光短淺
-
γ 取 1 代表目光過於長遠
我們選擇一條路走完以後,就可以知道這條路徑上每一個狀態路徑的價值
所以多次嘗試以後,就可以做出更優的選擇
而不斷地嘗試,即在更新 Q 值表格,由這個表格指導每一步動作
所以這個表格的維度是 (狀態總數,每個狀態下的動作總數),初始化的時候都爲 0
Agent 和環境的交互,就是不斷更新 Q 表格
三、強化學習更新 Q 表格
核心:用下一個狀態的 Q 值來更新當前狀態的 Q 值
這裏利用到了統計裏面的 Bootstrapping (自舉)算法
強化學習中叫做:時序差分更新方法
我的理解是:
由於每一次都用下一個狀態來更新這一個狀態,於是最後的累積 reward 會向前傳遞,最終影響整個路徑
類似於多重條件反射(反射鏈條)
例子:斯坦福的狀態價值迭代小遊戲
https://cs.stanford.edu/people/karpathy/reinforcejs/gridworld_td.html
可以看到遊戲中,小球不斷試錯,最後產生價值判斷,終點的 +1 reward 會不斷影響周邊的格子
然後這個影響力會往起點延伸,最終形成一條最優路徑
3.1 Temporal Difference 時序差分(TD單步更新)
公式:
-
當前值:
-
目標值:
-
我們希望 “當前值” 可以不斷逼近 “目標值”
-
目標值:即未來收益只和(reward)
-
-
-
就近似等於
-
-
軟更新:
- 通過參數 α 來控制每次更新的幅度(可以理解爲學習速率 learning rate)
- α 爲 0,則表示不更新
- α 爲 1,則表示完全更新
所以這個更新公式,用到的是:
當前時刻的 St,At,下一時刻的 Rt,St+1,At+1(與環境交互後產生)
這就組成了 Sarsa 算法
3.2 與環境交互
- 根據Q表選動作(agent)
- 預測/評估:sample()
- 執行動作(帶有探索概率):sample()
- 與環境交互(enviroment)
- 獲得 State 和 Reward
- 獲得下一步的動作預測和決策
- 更新 Q 表(agent)
- 學習:learn()
四、相關方法和策略
4.1 Epsilon Greedy 方法
權衡探索和利用之間的概率:
- 利用 Exploitation:最優選(概率 ε)
- 探索 Exploration:隨機選(概率 1-ε)
- 假設 ε 設置爲 0.1
- 在當前狀態下,選擇最優的選擇提取出來
- 然後 90% 在最優選擇中隨機選一個動作
- 10% 在所有選擇中隨機選一個動作
如果沒有探索,那我們無法找到比當前最優 更優 的選擇
在 Sarsa 算法中,由於在動作選擇上一定存在 “探索” 的可能性,所以最終優化的路徑是一條保守的路徑,而不是最優的路徑!
4.2 On-Policy 和 Off-Policy 策略
-
On-Policy:用於優化的,是實際會被執行的策略
- 比如 Sarsa
- 在學習過程中,只存在一種策略
- 這種策略用作 Action 的選取
- 這種策略也用作優化(更新 Q 表)
- 先採樣下一步,再更新 Q 表
- 由於需要兼顧探索,所以策略 π 並不穩定
-
Off-Policy:用於優化的,
- 比如 Q-Learning
- 保留兩種策略
- 行爲策略(μ):Behavior Policy,用於大膽地探索環境,執行動作,獲取經驗
- 目標策略(π):Target Policy,使用 最優策略 來進行優化(更新Q表),但是這個策略不一定被執行
- 先更新 Q 表,再採樣下一步