MDP Control
在這節內容裏我們不討論如何學習策略,我們僅僅探討計算最佳策略。
計算最佳策略和計算最佳價值都屬於MDP Control。
- 計算最佳策略
- 存在一個獨一無二的最優價值函數
- 在一個有限horizon內MDP的最優策略是確定的
最後一條是一個非常好的原因,能夠解答爲什麼我們僅僅關注確定性策略就已經足夠解決問題。
火星小車可以移動。
那麼一共有多少個確定性策略?
計算公式
MDP的最優策略永遠是獨一無二的嗎?
不是的。因爲可能存在兩個不同的動作由相同的價值函數。
在上面這個例子中,最優價值函數是獨一無二的,雖然可以有多個最優策略,但這些策略計算出來的價值的最大值是一樣的。
同時,我們假定在所有的狀態下所有的動作都是能夠進行的。雖然在現實世界,這可能並不成立。在很多實際例子中,一些動作是指定在某些狀態下才能執行的。
總結下來:
- 計算最佳策略
- 存在一個獨一無二的最優價值函數
- 在一個有限horizon內MDP的最佳策略(哪怕agent永遠在行動)
- 確定的(Deterministic)
- 固定不動的(Stationary, does not depend on tims step)
- 獨一無二的?不需要非得是獨一無二的,可能有多個狀態-動作對擁有相同的最佳價值。
策略搜索
- 一個選項是使用搜索去計算最佳策略
- 確定性策略的數量是
- 策略迭代通常比暴力枚舉更高效
MDP Policy Iteration(PI)
(下面是是一個算法,Markdown代碼模式無法輸入公式,所以寫成這樣)
- Set i = 0
- Initialize randomly for all states s
- While or (-norm, measures if the policy changed for any state):
- V function policy evaluation of
- Policy improvement
- i = i + 1
New Dedinition: State-Action Value Q
爲了定義我們如何改進一個策略,我們定義狀態-動作價值 Q。
在之前的敘述中,我們使用如下notation描述狀態-動作價值:
即,採用策略時在狀態s下的動作價值。這裏我們定義新的概念,同時也定義了Q函數。
一個策略的狀態-動作價值是:
它的直觀理解是,我先採取動作a,然後再遵循策略。
Policy Imporvement
- Compute state-action value of a policy
- For s in S and a in A:
- For s in S and a in A:
- Compute new policy , for all
上面的等式中,,也就是說,agent要麼採取了策略指定的動作,要麼採取了經由 Q function計算得到的更好的動作,從而產生了新的策略。
如果採用梯度下降的策略迭代方法,跟其他深度學習方法一樣,會有局部最優值的問題,但是目前的情景下不會遇到這樣的情況。
更進一步理解優化(改進)步驟:
- 假設我們在一個action採取了計算的得到的,然後再一直遵循舊的。
- 我們的回報期望總值至少和從頭到尾遵循一樣
- 但是奇怪的是,新提出的策略將會一直遵循
改進步驟將會單調遞增地改進策略價值。
爲什麼?
Momotonic Improvement in Policy Value
定義(Definition):
命題(Proposition):
,在是次優的條件下,這個不等式嚴格成立,其中是我們在上進行策略優化得到的。
證明過程如下:
證明思路總結如下:不等式右邊按定義展開,然後再構造另一個不等式,這個不等式的右邊可以展開成一個迭代過程,剛好等於。
回顧前述內容策略優化的過程:
如果策略不發生改變了,策略有再次發生改變的可能性嗎?
沒有。
有策略迭代次數的最大值嗎?
有,如前面提到的
博主在學習TD Learning之後回來補充一點:這其實就是Q-Learining。
MDP: Computing Optimal Policy and Optimal Value
- 策略迭代計算最優價值和最優策略
- 價值迭代是另外一種技術:
- 思想:在本輪(this episode)中,從狀態s開始還剩下k步,這維持了一個最優值。
- 迭代地以類似方式思考後面的輪次。
這和策略地帶的不同之處在於:
在策略迭代中,你總是都有一個策略,並且你知道它的價值,只是這個策略可能不是很好。
在價值迭代中,你總是知道策略中的最優價值,但是你僅僅需要執行k步才能得到。
Bellman Equation and Bellman Backup Operators
一個策略的價值函數必須滿足Bellman Equation:
- Bellman backup operator
- 應用於一個價值函數
- 返回一個新的價值函數
- 儘可能的提升價值
有時我們會使用BV來表示Bellman Operator,意思是,在每次迭代,你取就的V值代入上式的右邊計算新的V值。
Value Iteration (VI)
算法表示如下:
- Set k = 1
- Initialize for all states s
- Loop until [finite horizon, convergence]:
- For each state s
- View as Bellman backup on value function
- For each state s
初始化爲零時有意義的,因爲相當於第一次迭代的時候最優值是一個動作的即時回報,然後把它備份,進行下一次迭代,如如此往復。
Policy Iteration as Bellman Operations
一個特定策略的Bellman backup operator 被定義爲:
策略迭代等同於計算的不動點。
爲了進行策略迭代,重複應用operator直到V停止變化。
所以你可以通過固定策略來初始化Bellman operator。
Policy Iteration as Bellman Operation
一個特定策略的Bellman backup operator 被定義爲:
爲了進行策略優化:
Going back to value Iteration(VI)
算法表示如下:
- Set k = 1
- Initialize for all states s
- Loop until [finite horizon, convergence]:
- For each state s
- Equivalently, in Bellman backup notation
- For each state s
To extract optimal policy if can act for k+1 more steps,
Contration Operator
補充一點縮減(Contration)方面的知識。
- 定義O是一個操作符,並且表示x的任何形式的norm
- 如果,那麼O就是一個縮減操作符
Will Value Iteration Converge?
Bellman backup 也是一個縮減操作符。
是的,如果折扣因子,整個過程會以1的概率結束在一個終止狀態。
Bellman backup在折扣因子時會縮減。
如果把Ballman backup應用到兩個不同的價值函數,兩個函數的距離在應用Bellman Equation後會減小。
證明如下,有興趣的話你可以看看。
Value Iteration for Finite Horizon
optimal value if making k more decisions
optimal policy if making k more decisions
- Initialize for all state s
- For k=1 : H
- For each state s
- For each state s
這個算法跟之前講過的一樣,只是限定了迭代到H次,即horizon大小。
注意,這裏說最優策略不是固定的(獨立於時間步),是在迭代求最優價值的情境下,跟博文開頭的最優策略不在一個情境下。
Value vs Policy Iteration
- 價值迭代
- 計算的是horizon爲k時的最優價值
- 注意這點可以被用來計算最優策略
- 計算的是horizon爲k時的最優價值
- 策略迭代
- 計算有限horizon內策略的價值
- 用於選擇另外的更好的策略
- 策略迭代跟RL裏一個非常流行的方法策略梯度關係非常緊密