強化學習基礎:
注:
在強化學習中 獎勵函數和狀態轉移函數都是未知的,之所以有已知模型的強化學習解法是指使用采樣估計的方式估計出獎勵函數和狀態轉移函數,然后將強化學習問題轉換為可以使用動態規划求解的已知模型問題。
強化學習問題由於采用了MDP數學形式來構建的,由此貝爾曼方程式是我們最常用的,如下:
基礎知識可參考:
https://www.cnblogs.com/devilmaycry812839668/p/10306175.html
=======================================================
值迭代求解MDP
最優性原理:
最優性原理說的是一個序列問題中一個片段如果為最優的,那么其子片段也為最優。
例如:
最短路徑問題中,如果 A -> B -> C -> D -> E -> F -> G 是 A到B的最短路徑,那么
B到F的最短路徑必為 B -> C -> D -> E -> F
C到E的最短路徑必為 C -> D -> E
C到G的最短路徑必為 C -> D -> E -> F -> G
根據最優性原理我們可以知道在任意一個最優決策過程中的任何子過程也必為最優決策,所以在任意一個決策step中我們的策略都應該是最優的,根據貝爾曼方程可知在任意狀態的決策如果最優那么決策為唯一動作,即state-action 值最大的那個動作作為策略在該狀態的選擇動作,由此我們得出貝爾曼最優方程式如下:
貝爾曼最優性方程:
根據最優性原理和貝爾曼方程我們可以知道最優決策必然滿足貝爾曼最優方程,而貝爾曼最優方程也可反向推出滿足貝爾曼最優方程的策略為最優決策。
下圖 參照西瓜書(周志華)
使用 以上知識對MDP求解最優策略的方式我們叫做值迭代(即使用貝爾曼最優方程),本文不給出值迭代的具體算法步驟,因為不是本文重點,只給出其算法思想。
上圖取自西瓜書
=====================================================
根據上面的知識我們知道了對於已知模型的情況(即對強化學習問題進行采樣,先估計出狀態轉換概率和獎勵函數,於是將強化學習問題轉換為了MDP問題)可以采用值迭代的方式求解最優策略,這個知識點是我們推導出Q-learning的一個先知條件,下面介紹無模型的情況下如何求解最優策略(即不先對狀態轉換概率和獎勵函數進行抽樣估計)
Gxy(s) 表示 第x試驗中第y次出現狀態s 這一時刻開始到 x 試驗結束總共獲得的累積獎勵。
蒙特卡洛采樣是我們對 狀態值V 進行直接采樣的方法。
蒙特卡洛采樣:
以下引自:
https://www.cnblogs.com/devilmaycry812839668/p/10308770.html
在MDP里評估策略的時候,由於獎賞和轉移都是知道的,所以可以直接用這兩個函數算評估值。現在這兩個函數都不知道,那怎么辦呢?
這個Q值函數實際上是個期望,所以直接用采樣來替代期望就可以了。換句話說,就是拿該策略在環境里面去跑,看跑出來什么結果。
如此一來,我們就可以去評價一個策略的好壞。
以蒙特卡洛采樣進行對策略評估 是我們采用蒙特卡洛采樣來解決強化學習的一種方法, 當然蒙特卡洛采樣只能用來評估一種策略,那么我們在使用蒙特卡洛采樣之前也必然需要有一個要被采樣的策略才行,這里我們一般使用 epsilo-貪婪策略,當然初始的V值、Q值我們一般可以設置為0, 這樣我們使用蒙特卡洛采樣學習到的策略就是 epsilo貪婪策略。
上圖取自西瓜書
上圖說的意思是我們每一次采樣,即對一次按照策略運行后的軌跡來更新該軌跡上的各 狀態-動作 值,其更新方式(第六步)詳細見下圖:
這里給出的兩個圖可以發現 西瓜書中的遞增計算均值和下圖的遞增計算均值一個算的q值,一個是v值。
假設是執行兩次的action選擇就結束,即 x0 , a0, r1, x1, a1, r2, x2, a2 r3, x3
而我們進行了三次episode :
第一次: x0 , a0, r1, x1, a1, r2, x2, a2 r3, x3
第二次: x0 , a0, r1, x1, a1, r2, x2, a2 r3, x3
第三次: x0 , a0, r1, x1, a1, r2, x2, a2 r3, x3
第一次的 x0 a0 分布為 state0 action1
第二次的 x0 a0 分布為 state0 action2
第三次的 x0 a0 分布為 state0 action1
那么 V(state0)=( (第一次的 r1+r2+r3) + (第二次的 r1+r2+r3) + (第三次的 r1+r2+r3) )/ 3
q(state0, action1)= ( (第一次的 r1+r2+r3) + (第三次的 r1+r2+r3) )/ 2
q(state0, action2)= (第二次的 r1+r2+r3)
這就是區別, 由於我們在使用蒙特卡洛采樣對epsilo貪婪策略采樣之后需要對策略進行改進,而使用V值不能直接用來判斷哪個動作選擇更好,而q值可以,所以我們一般采樣q值。
策略改進就是 判斷當前狀態的那個q值高,則設置其為 貪婪策略的動作, 該種方式也叫做同策略的方式。
根據上面的描述我們也可以知道我們最后學習到的策略 不是貪婪策略,而是 epsilo貪婪策略,但是在實際中我們在使用學習到的策略時會將其近似為貪婪策略,即不以epsilo的概率探索所有動作,而是直接唯一確定的選擇最大q值的動作。
有上述的算法步驟可以看出我們采用蒙特卡洛采樣來學習強化策略時 一般采用的是 每次訪問蒙特卡洛方法。
還有一個需要注意的地方是 每次按照現有的策略 進行一次采樣(一個episode, 從開始狀態,開始狀態集合中的一個狀態開始進行采樣到該episode結束),我們對采樣過程中的每個q(s,a)進行更新,這時候整個策略也就發生了變化,因為涉及到的 q(s,a) 變化后 狀態s的最大q值 選擇的 action 是可能發生變化的。所有我們在每次對一個episode采樣后都是需要更新策略的。這里由於我們采樣的策略為epsilo貪婪策略,而更新的仍是epsilo貪婪策略,於是稱這種方式為同策略的蒙特卡洛采樣的強化學習方法。
問題:
我們最終需要得到的策略是確定性策略,我們獲得或者說是學習到的策略是不確定策略(epsilo貪婪策略),最終輸出的策略是將epsilo策略進行估計,給出貪婪策略,即確定性策略。
根據bandit problem 我們知道epsilo貪婪策略是解決有限次采樣並保證較大可能獲得最優選擇的一種在采樣時帶有探索能力的方法,而在bandit problem中我們要求所有采樣過程中所獲得的reward總和盡量最大, 而在蒙特卡洛采樣問題中卻沒有這個要求,問什么說這兩種情況下是等價的,所以都使用epsilo貪婪策略來進行探索?我們知道在蒙特卡洛采樣的強化學習方法中我們並不是一定要知道哪個q(s,a)的值一定是多少,而是要知道在不同狀態s下 最大的那個q(s,a)所對應的a是什么,那么我們可不可以全部采用探索策略來采樣呢,也就是說在有限次的采樣中,如100次,有動作a1和動作a2,我們對q(s,a1)采樣50次, q(s,a2)采樣50次,這樣會不會更好呢?如果說真實的q(s, a1)和q(s,a2)相差較大 我們沒必要都采樣50次,這樣的話浪費了太多的采樣在較小的q值對應的action上, 而q(s, a1) 和 q(s, a2) 相差較小 我們各采樣50次,可以保證 q(s, a1) 和 q(s, a2)的方差較小,但是偏差較大,這時反而更是無法判斷q(s, a1)和q(s, a2)到底哪個更大哪個更小。這就涉及了這么一個問題,在有限次的采樣中 如何判斷 q(s, a1) 和 q(s, a2) 哪個更大?
如果全部都采樣q(s, a1) 無疑 q(s, a1) 偏差最小, 全部都采樣q(s, a2) 無疑 q(s, a2) 偏差最小, 但是我們只采樣q(s, a1)的時候 q(s, a2)=0 , 只采樣q(s, a2)的時候 q(s, a1)=0 , 這時候我們會以較大的不確定性選擇動作,即對q(s, a1)采樣100次是就肯定選擇a1, 反之選擇a2 , 該種方法采樣出的確定性策略具有較大的變動性,所以不選擇。
而各選50次,導致確實各q值都得到了充分探索,但是各個q值都具備較大偏差(因為各個q值采樣都不充分),但方差較小 ,方差不好說,或許也很大,但是這種情況我們難以判斷具體哪個q值更大,所以選擇具有較大變動和不確定性。每個q值由於都采樣不充分,所以導致每個q值距離真實的q值都有較大偏差,無法判斷哪個q值最優,即使采樣后最大的q值由於其采樣的不充分我們都無法確認該值一定准確,由此無法判斷該值是否一定為最優選擇。
而采用 epsilo貪婪策略, 可以盡量在有限次采樣過程中使各q值偏差較小(即都得到一定程度上的采樣),使各q值不會有較大偏差。epsilo貪婪策略可以是最大的q值偏差較小,其他q值也能得到一定采樣(各q值相差較大的情況), 各q值相差較小的情況 使各q值得到充分采樣的同時也會較准確的采樣出最大q值。
我們采樣的遵循原則就是在有限次采樣過程中,能更多的采樣到最優決策路徑:
如下圖,更多的采樣到最優策略的決策路徑,這需要 第一,采樣中知道哪個路徑最優, 第二,要最優的那個路徑盡量多采樣。由此我們發現這個問題和bandit problem是相同的,都是在有限次采樣中更多的采樣到最優的那個選擇。
為了找出那一條決策路徑最優,我們希望該條路徑能盡可能的多被采樣,以此保證該路徑為最優決策路徑的可信性,由此我們采用epsilo貪婪策略。
另一種觀點是為找出最優決策路徑,不僅應使目前顯示最優的路徑被多采樣,如果其它路徑采樣次數過少的話也應該多采樣,於是有了UCB方法。
還有一種觀點認為如果最優路徑和其它路徑值相差過大的話則應該加大對最優路徑的采樣次數,於是有了soft采樣方法。
有效采樣次數中,為找出最優路徑,首先應該保證最優路徑被采樣到較多次數,以此其結果可信,偏差較小, 同時也應該使其它路徑也采樣到一定次數。
對最優路徑的采樣可以看做是利用操作,對其它路徑的采樣可以看做是探索操作。
問題?
在有限次采樣過程中,最優路徑選擇的次數最大化 和 路徑選擇獲得的收益總和最大化 是否等價?
最優路徑選擇的越多 我們或者的收益總和的期望值 越大, 假設第一回100次采樣 a, b 兩個動作, 第二回也100次采樣 a, b 兩個動作,
假設a動作的路徑回報最大(期望值最大),第一回選擇a動作55次, b動作45次,分別收獲 120,100 。
第二回選擇a動作55次, b動作45次,分別收獲 90, 95 。
也就是說最優動作選擇的越多,不一定收獲的總和就最多,但是從期望上看確是最多的。
==========================================================
在這一策略狀態下的期望為
, 策略為epsilo貪婪策略。
所以
而在q_learning 中我們使用 max q(s, a) 估計 V(s) ,
而在 saras 中 我們使用 epsilo貪婪策略選擇 q(s, a) 來估計 V(S), 其實 E( q(s, a) )=V(s) (a 為狀態S下的任意可選狀態 ),因為是同策略,q(s, a) 和 V(S) 都是指在當前策略下, 但是這時假設共有動作a1和a2 那么有 q(s, a1) 和 q(s, a2) , q(s, a1)和q(s, a2)並不是根據當前策略求得的,而是根據不斷更新的策略采樣累加獲得的,根據非靜態的遞增迭代均值可以知道越是后采樣的reward對q值影響越大,雖然 q(s, a1) 和 q(s, a2) 的期望不等於 V(s) ,我們也可以使用epsilo貪婪策略選擇 q(s, a1) 和 q(s, a2) 來代替 選擇 q(s, a) 來估計 V(S) , 從而估計當前策略下的單次的episode的采樣reward總和。
之所以需要用 q(s,a) 來估計 V(S) 是因為即使在當前策略下 假設s狀態有動作a1和a2 那么有 q(s, a1) 和 q(s, a2) 也無法算出 V(S) , 這是因為 q(s, a1)和q(s, a2)並不是根據當前策略求得的,而是根據不斷更新的策略采樣累加獲得的。