深度強化學習cs294 Lecture2: Supervised Learning of behaviors
cs294 Lecture2: Supervised Learning of behaviors
這一章主要講在序列化決策裡常用的模仿學習。
Definition of sequential decision problems
Terminology & notation
還是用觀察叢林中的老虎舉例。首先是傳統的監督學習的模式:
輸入是一個觀察到的圖片,用
表示,輸出是一組分類標籤的概率,在這裡用
表示。而中間的函式就是一個基於輸入圖片的概率分佈的擬合函式
。其中
表示的是函式的引數,比如在深度學習模型裡就是那些權重。
如果把原來的監督學習中對於每幅作為觀察結果
的影象的分類結果改為看到影象一個人需要做出的動作
,而做出動作之後會改變接下來觀察到的影象
,之後重複整個過程。那麼這樣的過程就叫做一個序列的決策過程。
而在每個當前觀察到的圖片
的背後有一個實際的狀態
,它有可能與當前觀察到的部分有所區別。而對應的策略函式
也有基於觀察的版本與基於實際狀態的版本。比如豹子追捕羚羊,它們被觀察到的作為
的是作為一個圖片,實際上它們之間存在著一個相對的位置關係:
因此對於整個的序列決策過程,可以看成是一個概率圖模型。對應不同的狀態
得到一個觀察
,基於觀察由策略
中得到一個動作a_{t},執行動作然後當前狀態根據狀態轉移分佈
轉移到下一個狀態
。在這個過程中有一個馬爾科夫性質,那就是下一個狀態
的分佈只與當前狀態
有關係,而知道
之前的狀態並不會為狀態轉移或決策提供更多的資訊。對於能夠完全對狀態進行觀察的情形,我們只需要知道當前狀態即可,但是很多時候會遇到只能夠部分觀察到當前狀態的情況。
依然是豹子追捕羚羊,如果在當前狀態時有一個汽車擋住了攝像機,那麼觀察到的
中可能就沒有豹子的位置,但是可能前一時刻
的時候汽車並不在這裡,因此在只能部分觀察的情況下,利用好過往的資訊也可能帶來更多的資訊。
這裡還有一個符號表示的問題。另外一個表示通常用在控制領域,但是表示的意思是一樣的:
Imitation learning: supervised learning for decision making
接下來看一個實際的應用場景。當我們需要訓練程式來進行自動駕駛時,能夠選擇的一個方法是,在車上裝一個攝像頭,記錄下對應圖片場景下車上司機的動作,把這些對應的標籤作為訓練資料來做一個圖片分類的監督學習的工作。如果能夠做的比較好,最終得到的分類模型就相當於是一個決策的函式。這樣程式也就克隆了人類司機的行為。
但是很不幸,如果僅僅是直接就這麼做的話,大部分情況下不會得到理想的效果。我們可以簡單的進行一些理論分析。
把狀態作為一個維度,時間作為一個維度,我們就得到了模仿學習可能得到的一個軌跡曲線和實際的訓練樣本的曲線。出現這種偏差的原因可能僅僅是因為訓練出來的模型在某一個狀態下犯了一個很小的錯誤,但是得到的下一個狀態會與訓練集合中的狀態也有一些差別,於是模型得到的動作還會進一步的導致狀態的偏移,錯誤最終累積得到了如圖示的比較大的差距。
但是在實際的應用中,使用模仿學習的方法能夠得到一個較好的結果,他們是如何做的呢?
他們的做法是,在車上裝了三個攝像頭,一個正中,一個偏左一個偏右。對於正中的攝像頭,對應的動作與人類的動作一致。對於偏左的攝像頭輸入的影象,將對應時刻的人類動作進行一定的往右修正。同樣偏右的攝像頭動作往左修正。這樣將它們得到的訓練集合合併用來訓練模型。
這樣就解決了原來做法不穩定的問題。因為每當模型出現了一點錯誤,比如往左或往右偏離了一點,那麼訓練集中還有對應的狀態與動作,就能夠幫助汽車糾正回正中的狀態軌跡上。因此能夠保證最終的穩定性。
因為對於實際的訓練資料來說,使用多個攝像頭並且對對應的動作進行一定的糾正相當於是將訓練資料中的軌跡資料加入了噪音。這樣實際的訓練資料中,軌跡在每個時間的狀態裡相當於是一個分佈。而且加入的噪音類似於強迫人類專家做出動作來糾正這個噪音,相當於得到了一個比較全面的軌跡分佈。當你的策略從最優的動作偏離的時候,訓練資料裡依然有一些資料能夠幫助模型做出糾正動作,回到正確的軌跡上來。這對於人類來說很難自己寫下來這樣的分佈,但是使用模仿學習模仿一個完美的策略,加入一定的噪音,然後讓人類糾正這些噪音,就能夠得到這樣的分佈。從而得到比較穩定的結果。
但是這樣的做法是一個非常啟發式的做法。就是對可能會出現的偏離情況添加了對應的資料讓模型能夠糾正自己。有沒有一種演算法能夠自然的保證模仿學習的結果至少在最理想化的情況下最終能夠保持穩定呢?現在來更深入的理解這種不穩定性為何會發生。
現在我們得到了一個策略
,這是我們的訓練結果。那麼在應用這個策略的過程中得到的軌跡的分佈就相當於是
,而實際的訓練資料用的是人類基於觀察到的情況做出的決策
。也就是說實際應用訓練得到的策略時對應的觀察分佈與訓練時候輸入的分佈不同。那麼我們就會想到,能不能使得兩者相等
。如果實際遇到的場景與訓練時候的場景是同分布的,那麼訓練得到的策略顯然就會能夠穩定(不考慮監督學習本身的不穩定性)。
Ross在論文裡提出了這樣一個演算法。先根據已有的訓練資料進行訓練,然後在實際情形裡執行訓練得到的結果,得到新的軌跡。利用人類專家將這些新得到的軌跡進行標記。之後與原來的訓練資料組合起來重複訓練。這樣一直下去最終就能夠完成
的目標。
但是這個演算法也有個問題,那就是中間依然需要大量的人工標註。我們是否能夠完成一種演算法也不需要更多的資料就能夠得到良好結果呢?
即使是擁有一個完美的不會偏離的模型,我們依然需要能夠精確地模仿人類專家的行為。那麼模仿人類專家的行為又有哪些難度?
難度主要在兩個地方,一個是人類的行為有可能是非馬爾科夫的。對於馬爾科夫性質的假設來說,如果兩次遇到相同的觀察,那麼兩次做出的動作會是完全相同的。但是對於人類來說,做決策時候卻不一定是遵循馬爾科夫性質的。因此有時候需要將策略依賴前面若干個觀察。
如果想要解決非馬爾科夫性的問題,可能就需要處理歷史資訊,這個時候使用RNN系列的演算法會很有幫助,特別是LSTM。
第二點就是,得到的動作有可能是多峰的。有些情況下多峰的情況是影響不大的,比如動作是離散的情況下。但是對於連續的動作空間,如果使用了一個高斯分佈,那麼輸出的一般會是高斯分佈的均值與方差。但是有些情況比如滑雪時候繞過大樹,往左或往右都可以,但輸出均值意味著很多時候選擇中間的動作,這樣就會有問題。
解決多峰動作也有三個方案。第一個是輸出一個混合的高斯模型:
第二種是從輸入開始加入一定的噪聲。講的不是很細,可以看ppt上提供的三個更詳細的方向。
最後一個方法是將輸出的維度進行分割。每一次只輸出一個維度上的動作,將前一個維度的結果和原來的狀態作為下一個維度預測模型的輸入,預測下一個維度的結果,以此類推。這樣做主要是將指數級別的輸出空間化為線性的:
總結:模仿學習一般直接使用是不好使的,因為會帶來軌跡的漂移問題。有時候會使用一些方法來使模仿學習能夠應用。
Case studies of recent work in imitaion learning
第一個例子用的是類似於之前自動駕駛裡使用的方法,使用多個攝像頭來加入噪聲增加穩定性。
第二個例子是用的模擬環境中人類的動作來幫助機械臂完成拿起物體並放在另一個位置的工作。
還有一些模仿學習中其它的例子。比如結構化的預測。就是給定了一些樣例,能夠模仿學習出符合結構規則的結果。還有逆強化學習。並不是從給出的動作中學習動作,而是從中學出這些動作的目標。
What is missing from imitation learning
還有一個關於目標函式設定的問題。對於最初的看到老虎做出動作的例子,可能目標函式是最小化被老虎吃掉的概率。對於模仿學習來說,最簡單的cost函式可以設定為是否與需要模仿的動作一樣。也就是0/1 error。或者是與給定的動作相同的概率等等。
下面來對模仿學習的學習效果來做一些數學上的分析。分析通過求一條軌跡的總的cost的期望入手。為了推導的簡單,假設cost使用的就是0/1 error。然後假設對於最後訓練出來的模型,對每個訓練集中的狀態
都有
。那麼推匯出對於整個序列來說,cost的期望是一個T的二次式:
理解這個推導的重點在於,當軌跡偏離了訓練軌跡之後,後面所有的動作都可以看成是錯誤的,因為設定的對比策略是訓練集中的。偏離了訓練集之後的所有動作都沒有什麼最優策略。
如果把假設做出一些改動,將