[Reinforcement Learning] Cross-entropy Method

來源:互聯網
上載者:User

Cross-entropy Method(簡稱CEM)雖然是一種基於交叉熵的演算法,但並不是我們熟知的監督學習中的交叉熵方法,與其說它是一種基於交叉熵的演算法,倒不如說是一種基於蒙特卡洛和進化策略的演算法。CEM演算法不僅可以用作評估,也可以作為一種有效最佳化演算法,與進化演算法(EAs)類似CEM是一種完全免梯度(gradients free)的演算法。

這裡引用維基百科上對Cross-entropy Method的解釋[1]:

The cross-entropy (CE) method is a Monte Carlo method for importance sampling and optimization. It is applicable to both combinatorial and continuous problems, with either a static or noisy objective.

CEM演算法的迭代訓練過程可以分為兩個階段:

  • 根據採樣機率分布進行重採樣;
  • 通過最小化採樣機率分布和目標機率分布的交叉熵來更新採樣機率分布。
Importance sampling

CEM要解決的是這樣一種問題,假設我們需要估計一個事件$H(x)$發生的期望:

$$\mathbb{E}_{u}[H(x)]=\int H(x)f(x;u)dx$$

最簡單的方法就是利用樸素蒙特卡洛採樣從真實機率密度函數$f(x;u)$中採樣一些樣本$x^{'}$,然後通過求均值估計期望,即:

$$\mathbb{E}_{u}[H(x)]=\frac{1}{N}\sum_{i=1}^{N}x_{i}^{'}$$

但如果事件$H(x)$是一種小機率事件,那麼樸素蒙特卡洛類比需要採樣非常多的樣本才能準確估計期望。針對這個問題,CEM演算法引入了重要性採樣(importance sampling)。

Importance sampling[2]的主要思想如下:

首先通過一個類似於目標機率分布的採樣機率分布$f(x;v)$(其中$v$被稱為reference parameter)來進行採樣,則期望變為:

$$\mathbb{E}_{u}[H(x)]=\frac{1}{N}\sum_{i=1}^{N}x_{i}^{'}\frac{f(x;u)}{f(x;v)}$$

於是現在的目標變成了如何找到一個最優的採樣機率函數$f(x;v^{*})$去指導採樣出一些少量的樣本來準確地估計期望。CEM在每次迭代中通過選取較好的採樣樣本(Elite samples)來更新採樣機率函數的參數$v$,目的是減小當前採樣機率函數$f(x;v)$與最優採樣機率函數$f(x;v^{*})$的分布差距(即KL散度,相對熵)(PS:paper最後只用到了交叉熵,所以取名為CEM)。

Pseudo-code of CEM

下面給出一個以高斯分布作為採樣機率分布的CEM虛擬碼:

# Step1: initialization初始化採樣機率分布參數:mu, sigma;初始化當前迭代次數t=0,設定最大迭代次數max_its,樣本個數N,精英樣本個數Ne,以及採樣方差的誤差範圍epsilon;for t in range(0, max_its):# Step2: 使用高斯分布進行隨機採樣X = SampleGaussian(mu, sigma, N)# Step3: 評估樣本S = EvaluateSamples(X)# Step4: 重要性採樣X = sort(X, S)mu = mean(X[0:Ne-1])sigma = var(X[0:Ne-1])if sigma > epsilon:break# Step5: 返回精英樣本的均值return mu
CEM && RL

註:以下內容引自博文《進化策略最佳化演算法CEM(Cross Entropy Method)》[3]。

CEM也可以用來求解馬爾可夫決策過程,也就是強化學習問題。我們知道,強化學習也是一種動態規划過程,在某個狀態下選擇某個動作就像在某個節點選擇路徑一樣,整個過程就是一個從初始狀態到末狀態的路徑規劃問題,只不過我們希望得到一條能最大化收益的路徑。在這種考慮下,就可以用CEM建模了,我們讓一條完整的路徑成為一個樣本$x=(s_0,a_0,s_1,a_1,…,s_n,a_n)$,路徑獲得的總收益為$S(x)=\sum_{i=0}^{N} r(s_i,a_i)$,目標是最大化這個$S(x)$,那麼如何採樣出這些樣本呢?我們可以構建一個$p$矩陣:矩陣行表示狀態,列表示動作,如$p_{ij}$表示在狀態$s_i$下執行$a_j$動作的機率,我們通過對這個$p$矩陣進行多次採樣就可以獲得多個樣本,然後選出$S(x)$較高的樣本用來更新$p$矩陣,不斷迭代,最終找到最優$\hat{p}$矩陣。

這是一種類似於策略迭代(policy iteration)的強化學習方法:通過$p$矩陣找到在每一步狀態下各個動作的機率來形成決策策略,但參數更新並沒有用到梯度。從另外一個角度,你也可以認為這是一種值迭代(value iteration)的強化學習方法,此時$p$矩陣就是經典Q-learning中的$Q$矩陣,只不過$Q$矩陣中第$i$行第$j$列元素表示的是狀態$s_i$下動作$a_j$的未來收益的期望,基于貝爾曼方程(Bellman equation)來更新Q值;而$p$矩陣表示的是機率值,通過交叉墒來更新。

Reference

[1] 維基百科:Cross-entropy Method

[2] 維基百科:Importance sampling

[3] 進化策略最佳化演算法CEM(Cross Entropy Method)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.