官术网_书友最值得收藏!

4.2 交叉熵方法的實踐

交叉熵方法的描述可以分成兩個不同的方面:實踐和理論。實踐方面是這個方法的直觀表示,而理論方面解釋了為什么交叉熵方法有用,以及它如何生效,這會更復雜。

RL中最關鍵、最復雜的就是智能體,它通過和環境交互,試圖累積盡可能多的總獎勵。在實踐中,我們遵循通用的機器學習(ML)方法,將智能體中所有復雜的部分替換成非線性、可訓練的函數,然后將智能體的輸入(來自環境的觀察)映射成輸出。這個函數的具體輸出取決于特定的方法或方法的類型,如上一節所述的基于價值或基于策略的方法。由于交叉熵方法是基于策略的,非線性函數(神經網絡)生成策略,它針對每一個觀察都告訴智能體應該執行什么動作,如圖4.1所示。

081-01

圖4.1 RL的高階表示

實踐中,策略通常表示為動作的概率分布,這和分類問題很像,類型的數量和要執行的動作數量相同。

這種抽象讓智能體變得非常簡單:將從環境中得到的觀察傳給NN,得到動作的概率分布,使用概率分布來進行隨機采樣以獲得要執行的動作。隨機采樣為智能體添加了隨機性,這是一件好事,因為在開始訓練的時候,權重是隨機的,智能體的行為也是隨機的。當智能體得到一個動作后,將其應用到環境中,再獲得由動作產生的下一個觀察和獎勵。然后繼續這樣的循環。

在智能體的一生中,它的經歷被表示成片段。每個片段都由一系列的觀察(智能體從環境中獲得的)、動作(智能體發出的)和獎勵(由動作產生的)組成。假設智能體已經玩了好幾輪片段了。針對每一個片段,我們都可以計算出智能體獲得的總獎勵。它可以是有折扣或沒有折扣的,我們假設折扣因子γ=1(這意味著將每個片段的所有立即獎勵都直接加起來)。總獎勵顯示智能體在這個片段中表現得有多好。

我們用圖表來表示它,假設一共有4個片段(注意不同的片段有不同的oiairi值),如圖4.2所示。

081-02

圖4.2 帶有觀察、動作和獎勵的片段示例

每個單元格表示智能體在片段中的一步。由于環境的隨機性以及智能體選擇動作的不同方式,某些片段會比其他片段好。交叉熵方法的核心是將差的片段丟掉,并用好的片段來訓練。所以,該方法的步驟如下:

1)使用當前的模型和環境產生N次片段。

2)計算每個片段的總獎勵,并確定獎勵邊界。通常使用總獎勵的百分位來確定,例如50或70。

3)將獎勵在邊界之下的片段丟掉。

4)用觀察值作為輸入、智能體產生的動作作為目標輸出,訓練剩余的“精英”片段。

5)從第1步開始重復,直到得到滿意的結果。

這就是交叉熵方法的描述。通過前面的過程,NN學會了如何選擇能獲得更大獎勵的動作,并不斷將邊界提高。盡管這個方法很簡單,但它能在基本環境中表現得很好,同時它很好實現,當超參改變時也很穩定,這讓它成為被最先嘗試的理想的基準方法。現在我們來將它應用到CartPole環境。

主站蜘蛛池模板: 普兰店市| 山西省| 沙雅县| 班玛县| 永新县| 修文县| 博兴县| 隆安县| 阳新县| 宁海县| 丹寨县| 都昌县| 五华县| 武清区| 闻喜县| 浦东新区| 丹巴县| 丹阳市| 陆河县| 双流县| 新津县| 佛山市| 菏泽市| 洞口县| 凤阳县| 清水河县| 永和县| 和静县| 华蓥市| 大兴区| 广南县| 鄱阳县| 永兴县| 维西| 丰城市| 疏附县| 芮城县| 华安县| 无棣县| 辰溪县| 长沙市|