- 深度強化學習實踐(原書第2版)
- (俄)馬克西姆·拉潘
- 1108字
- 2021-08-18 17:39:23
4.2 交叉熵方法的實踐
交叉熵方法的描述可以分成兩個不同的方面:實踐和理論。實踐方面是這個方法的直觀表示,而理論方面解釋了為什么交叉熵方法有用,以及它如何生效,這會更復雜。
RL中最關鍵、最復雜的就是智能體,它通過和環境交互,試圖累積盡可能多的總獎勵。在實踐中,我們遵循通用的機器學習(ML)方法,將智能體中所有復雜的部分替換成非線性、可訓練的函數,然后將智能體的輸入(來自環境的觀察)映射成輸出。這個函數的具體輸出取決于特定的方法或方法的類型,如上一節所述的基于價值或基于策略的方法。由于交叉熵方法是基于策略的,非線性函數(神經網絡)生成策略,它針對每一個觀察都告訴智能體應該執行什么動作,如圖4.1所示。

圖4.1 RL的高階表示
實踐中,策略通常表示為動作的概率分布,這和分類問題很像,類型的數量和要執行的動作數量相同。
這種抽象讓智能體變得非常簡單:將從環境中得到的觀察傳給NN,得到動作的概率分布,使用概率分布來進行隨機采樣以獲得要執行的動作。隨機采樣為智能體添加了隨機性,這是一件好事,因為在開始訓練的時候,權重是隨機的,智能體的行為也是隨機的。當智能體得到一個動作后,將其應用到環境中,再獲得由動作產生的下一個觀察和獎勵。然后繼續這樣的循環。
在智能體的一生中,它的經歷被表示成片段。每個片段都由一系列的觀察(智能體從環境中獲得的)、動作(智能體發出的)和獎勵(由動作產生的)組成。假設智能體已經玩了好幾輪片段了。針對每一個片段,我們都可以計算出智能體獲得的總獎勵。它可以是有折扣或沒有折扣的,我們假設折扣因子γ=1(這意味著將每個片段的所有立即獎勵都直接加起來)。總獎勵顯示智能體在這個片段中表現得有多好。
我們用圖表來表示它,假設一共有4個片段(注意不同的片段有不同的oi、ai、ri值),如圖4.2所示。

圖4.2 帶有觀察、動作和獎勵的片段示例
每個單元格表示智能體在片段中的一步。由于環境的隨機性以及智能體選擇動作的不同方式,某些片段會比其他片段好。交叉熵方法的核心是將差的片段丟掉,并用好的片段來訓練。所以,該方法的步驟如下:
1)使用當前的模型和環境產生N次片段。
2)計算每個片段的總獎勵,并確定獎勵邊界。通常使用總獎勵的百分位來確定,例如50或70。
3)將獎勵在邊界之下的片段丟掉。
4)用觀察值作為輸入、智能體產生的動作作為目標輸出,訓練剩余的“精英”片段。
5)從第1步開始重復,直到得到滿意的結果。
這就是交叉熵方法的描述。通過前面的過程,NN學會了如何選擇能獲得更大獎勵的動作,并不斷將邊界提高。盡管這個方法很簡單,但它能在基本環境中表現得很好,同時它很好實現,當超參改變時也很穩定,這讓它成為被最先嘗試的理想的基準方法。現在我們來將它應用到CartPole環境。