1. 程式人生 > >Planning and Learning with Tabular Methods

Planning and Learning with Tabular Methods

本節建立了一種統一的方法檢視,其中既包括需要一個環境模型)的方法(如動態程式設計、啟發式搜尋等,也包括一些不依賴於模型的方法(如蒙特卡洛、temporal-difference等),這裡將前者視為是一種 planning 方法,後者視為是一種 learning 方法,這兩類方法之間有一些不同點,也有一些相似點,例如,它們的思想的核心都是計算 value functions,並且都是基於對未來事件的展望計算得到一個 back-up value,再利用這個值來更新得到一個近似的 value 函式。前面的章節中介紹了蒙特卡洛方法和 temporal-difference 方法,以及如何用 n-step 方法來統一這兩種方法。這一章節也是一種類似的結合方式,它是將 planning 與 learning 方法相結合。在前面的章節中已經介紹了他們的不同點,下面將探討如何將他們結合在一起。

1、 Models 和 Planning

一個環境的 model 的是指:可以用來預測環境對 actions 的反應的東西,給定一個 state 和一個 action,model可以生成相應的下一個 state 和下一個 reward。如果 model 隨機的,那麼就有很多種可能的下一個 states 和 rewards,每一種都對應一種發生的概率。有些模型得到的是對所有可能性和概率的描述,這類方法稱為是 distributionmodel,還有一些模型得到的僅僅是某些可能性,是依據概率進行取樣得到的,這類方法稱為是

samplemodels。例如對股子的和進行預測的模型,一個 distribution model 會得到所有可能的和以及它們發生的概率,而一個 sample model 依據概率分佈得到的是一個單獨的sum。Distribution model 比 sample model 的能力更強,因為它們總可以用來生成 samples,但在一些應用中,獲得 sample model 比 distribution model 要更容易一些,就比如股子的例子,可以利用一個計算機程式來模擬並返回一個sum,而計算得到所有可能的 sums 和對應的概率要更難、更容易出錯。

模型可以用來模擬和模擬 experience。給定一個開始的狀態和動作,一個取樣模型可以生成一個可能的轉化,一個分佈模型可以生成所有可能的轉化(發生的概率作為其權重值)。給定一個初始狀態和一個 policy,一個取樣模型只可以生成一個 episode,而一個分佈模型可以生成所有可能的 episodes 和對應的概率值。無論在哪種情況下,我們都可以說該模型對環境進行了模擬並生成了 simulated experience。

在不同的領域,planning 可以表達不同的意思,這裡它代表的是任何一種以 model作為輸入,並能生成或提高一種與該環境結合的 policy 的計算過程:

圖1

在人工智慧領域,有兩種不同的 planning 方法,一種是 statespaceplanning,planning 從根本上來講是根據目標在狀態空間中搜索一種更優的 policy 或 path,其中 actions 導致 state 的轉變,value function 依據 states 進行計算。另外一種是 planspaceplanning,planning 是在整個 plans 空間中搜尋,操作者從一種 plan 轉化為另一種 plan,並且 value function 是定義在整個 plans 空間中的,plan-space planning 包括 evolutionary 方法和 “partial-order planning”(人工智慧領域一種常見的 planning,其中在 planning 的所有階段 steps 的順序不是完全決定的),在隨機優化控制問題中 plan-space 方法很難有效的應用,因此這裡不再詳述。

所有的 state-space planning 方法都具有一個統一的結構,主要有兩個基本思想:(1)所有的 state-space planning 方法都有一個計算 value functions 的過程,並作為提升 policy 的主要媒介;(2)它們都是利用模擬的 experience 中的 backup 操作來計算它們的 value function。它們的統一結構圖如下所示:

圖2

Learning 和 planning 的主要思想都是利用 backup 操作來估計 value functions,不同點在於 planning 使用的是模型生成的模擬的experience,而 learning 方法使用的是由環境生成的真實的 experience,由這個不同點就衍生出其他一系列的不同點,如估計 performance 的方法、生成 experience 的方法等等。這個統一的結構意味著很多思想和方法在 planning 和 learning 之間可以傳遞,特別地,在很多情況下,一個 learning 演算法可以由一個 planning 方法的 backup 步驟替換。learning 僅需要 experience 作為輸入,並且其他情況下它們可以應用於模擬的 experience 中,就像應用於真實的 experience 中一樣。下面的 box 展示了 planning 方法的一個簡單的例子,它基於 one-step tabular Q-learning 和取樣模型的隨機樣本,該方法稱為是 random-sample one-step tabular Q-planning。

圖3

2、Dyna:整合Planning、Acting和Learning

當線上的 planning 完成後,在與環境進行互動的過程中會產生大量的問題,從互動中獲得的新的資訊可能會改變模型並因此與 planning 互動,因此需要根據當前或將來的狀態或決策,以某種方式定製 planning 過程。如果決策的制定和學習模型都是計算密集型的過程,那麼可用的計算資源就需要在它們之間進行規劃和分配。為了開始探索這些問題,這一節將介紹 Dyna-Q 方法,這是一種簡單的框架,它集成了線上 planning 需要的主要函式。下面將主要介紹的是該方法的思想。

在 planning agent中,真實的 experience 至少有兩個角色,它們可以用來提升模型(更確切的說是貼近真實環境狀態),並且可以利用一些強化模型方法來直接提升 value function 和 policy。前者我們稱為是 model-learning,後者我們稱為是 direct reinforcement learning (direct RL)。Experience、model、values 和 policy 直接可能的關係如下圖所示,其中每一條箭頭代表了一種影響和推測的提升之間的關係,可以注意到,experience 不是直接地就是間接地通過 model 來提升 value 和 policy functions,有時會將後者稱為是 indirect reinforcement learning。

圖4

不論是 direct 還是 indirect 方法,它們均有各自的優缺點,indirect 方法常常可以充分利用有限的 experience,在與環境很少的互動下就能得到一個更好的 policy;而 direct 方法相比之下更簡單,並且不會受模型設計偏斜的影響。有些人認為 indirect 方法總是比 direct 方法更好,而其他人則認為 direct 方法對大部分的人類和動物學習有幫助,心理學和人工智慧領域有關的辯論關注的是認知的相對重要性而不是試錯學習,以及商議計劃而不是反應性決策的制定。這裡的觀點是,在所有這些辯論中,不同的選擇之間的對比被誇大了,通過觀測這兩種觀點之間的相似之處而不是直接反對它們,可以獲得更多的洞察力。例如,對動態規劃和 temporal-difference 方法,儘管其中一個是為計劃而設計的,另一個是用於無模型學習,但這裡還是強調了他們之間的相似性。

Dyna 的一般框架如下圖所示,Dyna-Q 包含了其中所有的過程:planning、acting、model-learning 和 direct RL,其中 planning 方法是 圖4 中給出的 random-sample one-step tabular Q-planning 方法,direct RL 方法是 one-step tabular Q-learning,model-learning 方法也是 table-based 並假設世界是確定性的。在每個 St,AtRt+1,St+1 轉換之後,table 中對 St,At 的模型記錄將用 Rt+1,St+1 更新,因此當用已經經歷過的 state-action pair 查詢 model 時,它會簡單的輸出之前觀測到的下一個狀態和獎勵作為其預測值。在 planning 過程中,因為 Q-planning 演算法只會隨機地從之前經歷過的 state-action pair 中隨機採用,因此該模型永遠不會探尋它沒有任何資訊的 pair。

Dyna-Q 演算法的全域性結構如 圖5 所示,中間一列代表了 agent 和 environment 之間主要的互動過程。圖中左邊的箭頭代表了 direct reinforcement learning 通過在真實的 experience 上操作來提升 value function 和 policy,右邊的箭頭是 model-based 過程。從真實的 experience 中學習得到的 model 生成了模擬的experience,這裡用 searchcontrol 代表為模擬的 experience 選擇初始的 states 和 actions 的過程,planning 是通過在 simulated experiences 上應用增強學習方法來實現的,這些 simulated experiences 就好像真實發生了一樣。和 Dyna-Q 一樣,這裡用了相同的增強學習方法來學習真實的 experience、來計劃模擬的 experience,因此,增強學習方法對 learning 和 planning 來說均為“final common path”,learning 和 planning 在這個意義上是深深整合在一起的,他們具有幾乎相同的機制,僅僅是它們的 experience 的來源不同。

圖5

從概念上來說,planning、acting、model-learning 和 direct RL 在 Dyna agents 中是連續和並行發生的,雖然如此,但為了序列計算機上的具體實現,在時間點上完全定義了他們發生的順序。在 Dyna-Q 中,acting、model-learning 和 direct RL 過程僅需要很少的計算資源,因此假設它們只消耗一小部分時間,而其他時間都用到了 planning 過程,planning 本質上就是一個計算密集型的過程。Dyna-Q 的完整演算法如 圖6 所示,其中,Model(s,a) 代表的是根據 state-action pair s,a 預測下一個狀態和 reward 的模型,步驟 (d)、(e) 和 (f) 分別實現了 direct RL、model-learning 和 planning,如果省略掉步驟 (e) 和 (f),那麼剩下的演算法就是 one-step tabular Q-learning。

圖6

3、當模型錯誤的時候

最開始的時候模型是空的,之後會用一些資訊來填充和構建,但是我們不能保證這些資訊是完全正確的,由於環境是隨機的,並且我們只觀察了有限的樣本數量,有可能用近似函式生成的模型是不好的,或者環境發生了變化有些新的行為還未觀測到,因此模型有可能是錯誤的,當模型錯誤的時候,planning 過程就很有可能計算得到一個非優的策略。

在一些情況下,planning 得到的非優的策略可以很快地發現和糾正模型誤差,這種情況是有可能發生的,它往往發生在模型樂觀的情況下,即該模型可以預測更好的 reward 或更好的 state 轉換。

這裡的問題可以一般化為 exploration 和 exploitation 之間的矛盾,在 planning 中,exploration 可以認為是嘗試 actions 來提升模型,而 exploitation 可以認為是執行當前模型中優化的方法,我們希望 agent 通過 explore 來發現環境的變化,而不是使效能大大的退化。像前面講的 exploration 和 exploitation 矛盾一樣,可能不存在既完美又實用的解決方法,但簡單的啟發式方法常常是有效的。

為了鼓勵那些長時間沒有嘗試過的 actions,有一種在模擬 experiences 上使用的方法稱為是“bonus reward”,比如,如果對某種轉變模型的 reward 為 r,並且該轉換在過去 τ 個時間點內都沒執行過,那麼執行 planning backups 時就假設該轉換的 reward 為 r+κτ,其中 κ 的值較小。該方法鼓勵 agent 繼續測試所有可達的狀態轉換,甚至為了執行這樣的測試而尋找長序列的 actions。當然所有這樣的測試都是有其代價的,但在大多情況下,這樣的計算是值得額外的探索的。

4、Prioritized Sweeping

在 Dyna agents 中,模擬的轉換過程最開始選擇的 state-action pairs,是從所有經歷過的 pairs 中以均等概率隨機選擇的,但等概率的選擇往往不是最好的方案,當模擬的 transitions 和 backups 專注於特定的 state-action pairs 時,planning 可以更加有效。比如,對第二個 episode,剛開始只有直接通向 goal 的 state-action pair 具有正的 value 值,其他的均為0,也就是說,沿著大部分的 transitions 進行 back up 都是沒有意義的,因為它們都是從一個 0 值狀態轉換到另外一個 0 值狀態,這種 backups 沒有任何影響作用,僅只有那些通向或開始於 goal 前面的狀態的 transitions 才能改變一些 values 值。如果模擬的 transitions 是等概率生成的,那麼在發現有用的 backups 之前就會經歷很多沒有用的 backups,隨著 planning 的進行,有用的 backups 區域會增長,但這種方式的效率遠遠低於專注於好的 state-action pairs 的方式。尤其是在一些真實的問題中,states 的數量巨大,沒有專注的查詢方式就會非常低效。

因此,如果專注於查詢那些目標狀態 backward (反向)經過的地方會更有效,當然這裡並不是說想利用任何方法來達到目標狀態,而是想找到一種適合於一般的 reward 函式的方法,目標狀態只是為了方便解釋舉的一個特殊的例子。一般情況下,我們不僅僅是想從目標狀態反向出發,而是從任何一個 value 值改變的狀態出發。假設一個模型給出的 value 值最開始都是對的,這時 agent 發現環境發生了變化,之前預測的一個狀態的 value 值改變了,那麼這就意味著其他狀態可能也改變了,此時最有效的 one-step backup 就是那些直接通向value 值改變的狀態的 action,當這些 actions 的 values 更新後,前任狀態的 value 值也可能會改變,如果是這樣的話,那麼通向它們的 actions 就需要 back up,之後“它們的”前任狀態也可能會改變……,通過這種方式,每次任意從 value 改變的狀態反向操作,既執行了有用的 backups,也終止了這種傳播過程,這種一般化的思想就稱為是 planning computations 的 backwardfocusing

當前面有用的 backups 向後傳播的時候,它會迅速的增長,產生有助於 back up 的 state-action pair,當然它們並不是同樣有效果的,可能有些狀態的 values 值改變的很多,而有的改變的很小,改變數大的 pairs 更有可能在傳播中產生更大的 change。在隨機的環境中,估計的轉換概率的變化會導致改變數的變化,以及 pairs 需要 back up 的重要程度的變化,自然會根據它們的重要程度排序來優先選擇那些重要的 backups,這就是 prioritizedsweeping 背後的思想,在該方法中會維持一個佇列,任何一個在 back up 後估計的 value 值改變的 state-action pair 均會存入這個佇列中,當佇列頭部的 state-action pair 執行 back up 後,就會計算得到它對前任 pairs 的影響,如果該影響值大於某個閾值,則該 pair 就會以一定的優先值插入佇列中(如果佇列中之前已經存在該 pair,則佇列會保留具有較高優先值的記錄)。通過這種方式,改變的影響會有效的向後傳播直到收斂,完整的演算法如 圖7 所示。

圖7

5、Planning as Part of Action Selection

Planning 的發展趨勢目前主要有兩種,一種就是前面介紹的以 dynamic programming 和 Dyna 為典型的方法,它們將 planning 構想是一種策略或 value 函式的逐漸的提升,它一般對所有狀態都是有益的,而非專注於某些特殊的狀態;另外一種方法認為遇到每個新的狀態 St,計算得到的輸出並不是一個真正的 policy,而是一個簡單的 action 決策 At,之後 planning 再更新