當前位置:
首頁 > 最新 > 如何一文讀懂「進化策略」?這裡有幾組動圖!

如何一文讀懂「進化策略」?這裡有幾組動圖!

GIF/1817K

「雷克世界」編譯:嗯~阿童木呀

本文將藉助於一些視覺實例,闡述進化策略(Evolution Strategies,ES)是如何進行工作的。為了能夠讓讀者更為容易地了解更多詳細信息,將盡量保持文中所涉及的等式簡明易懂,同時附加原始文章的鏈接。這是一系列文章中的第一篇文章,計劃展示該如何將這些演算法應用於MNIST、OpenAI Gym、RobSchool以及PyBullet環境的一系列任務中。

介紹

神經網路模型具有很強的表達性和靈活性,如果我們能夠找到合適的模型參數的話,那麼就可以使用神經網路,解決許多具有挑戰性的問題。深度學習的成功很大程度上來自於使用反向傳播演算法有效地計算目標函數在每個模型參數上的梯度的能力。有了這些梯度,我們就可以有效對參數空間進行搜索,以找到一個解,而這個解通常足夠讓我們的神經網路完成困難的任務。

不過,有許多問題是反向傳播演算法無法解決的。例如,在強化學習(RL)問題中,我們也可以訓練一個神經網路做出決策,以執行一系列動作來完成環境中的某些任務。然而,當智能體在當前執行了一個動作之後,對未來給予智能體的獎勵信號的梯度進行評估是非常重要的,特別是在未來,獎勵是跨越了許多時間步長之後實現的情況下。另外,即使我們能夠計算出精確的梯度,但也存在被困於局部最優解的問題,而這個問題在強化學習任務中是極其常見的。

GIF/1867K

困於局部最優解

可以這樣說,強化學習的整個領域都是致力於研究這一信用分配問題的,並且近年來也取得了很大的進步。但是,當獎勵信號稀疏時,信用分配仍然是個難題。在實際中,獎勵可以是稀疏和嘈雜的。有時候,我們可能只得到一份獎勵,這就像是年終的獎金支票,主要是取決於僱主,我們很難弄清楚為什麼會這麼低。對於這些問題,與其依賴於對策略進行未來的非常嘈雜且可能毫無意義的梯度評估,還不如忽略任何梯度信息,並嘗試使用諸如遺傳演算法(GA)或ES這樣的黑盒優化技術。

OpenAI發表了一篇名為《進化策略:作為強化學習的可擴展性替代方法》(https://blog.openai.com/evolution-strategies/)的論文,其中,他們展示了雖然進化策略在數據效率方面低於強化學習,但提供了不少益處。放棄梯度計算的能力使得該演算法能夠更有效地對其進行評估。也很容易將一個ES演算法的計算分配給數千台機器進行並行計算。通過多次運行該演算法,他們還發現,與RL演算法發現的策略相比,使用ES發現的策略更具多樣化。

我想指出的是,即使是識別諸如設計一個神經網路架構這樣的機器學習模型問題,也是我們無法直接計算梯度的。雖然強化學習、進化、GA等可以應用於在模型空間中進行搜索,以及它們的模型參數可以用來解決某些問題,但在本文中,我將把重點放在應用這些演算法來搜索預先定義的模型的參數上。

什麼是進化策略(ES)?

二維Rastrigin函數有很多局部最優解(資料來源:維基百科)

下圖是自動調整2D Schaffer和Rastrigin函數的自上而下的曲線,用於測試連續黑盒優化演算法的幾個簡單玩具問題的其中兩個。圖中較亮的區域代表F(x,y)的較高值。正如你所看到的那樣,在這個函數中有很多局部最優解。我們的任務是找到一組模型參數(x,y),使得F(x,y)能夠儘可能接近全局最大值。

Schaffer-2D函數

Rastrigin-2D函數

儘管進化策略有很多定義,但我們可以將進化策略定義為一種演算法,它能夠為用戶提供一組候選解以對問題進行評估。該評估基於一個目標函數,該函數接受給定的解,並返回一個單一的適應性值。基於當前解的適應性結果,該演算法將生成下一代候選解,而且極有可能比當前一代生成更好的結果。一旦用戶對最好的解滿意的話,迭代過程就會停止。

簡單進化策略(ES)

GIF/613K

GIF/471K

這個簡單的演算法通常只適用於簡單的問題。鑒於其貪婪的本質,它拋棄了除了最好的解之外的所有解,並且可能容易陷入局部最優,以至更複雜的問題。而且從代表更多樣化想法的概率分布中進行下一代採樣,而不是對來自當前一代的最佳解採樣,這一點可能更為有有益。

簡單遺傳演算法(Simple GA)

GIF/683K

GIF/399K

遺傳演算法通過追蹤一系列不同的候選解來重現下一代,以幫助實現多樣性。然而,在實際中,「精英生存」式的大多數解往往會隨著時間的推移而趨向於局部最優解。同時還有GA的更為複雜的變體,例如CoSyNe、ESP和NEAT,其想法是將群體中的類似解集中到不同的種類中,以保持更好的多樣性。

協方差矩陣適應性進化策略(CMA-ES)

簡單ES和簡單GA的缺點是我們的標準偏差雜訊參數是固定的。有時候,我們想要進行更多的探索、增加搜索空間的標準偏差。有時候,我們會非常有信心,覺得正接近一個很好的最優解,只想對解進行微調。我們基本上希望搜索過程如下:

GIF/717K

GIF/617K

上圖中所示的搜索過程就是由協方差矩陣適應進化策略(CMA-ES)生成的。CMA-ES。

如果再一次對整個解進行設想的話,就整個搜索過程而言,如下圖所示:

GIF/819K

GIF/711K

因為CMA-ES可以使用最佳解的信息來調整其均值和協方差矩陣,所以在距離最佳解很遠時,它可以決定擴大至更廣泛的網路,或者當距離最佳解很近時,縮小搜索空間。如果對CMA-ES演算法進行高度簡化描述的話,那就是:讓想法變為現實。有關更多詳細信息,可閱讀CMA-ES作者Nikolaus Hansen編寫的CMA-ES教程。(https://arxiv.org/abs/1604.00772)

該演算法是最流行的無梯度優化演算法之一,並且已經成為許多研究人員和從業者的首選演算法。唯一真正的缺點就是,如果我們需要解決的模型參數的數量很大的話,其性能是個問題。

自然進化策略(NES)

GIF/924K

GIF/508K

該演算法能夠動態地更改函數參數值,以便根據需要對解空間進行探索或微調。與CMA-ES不同的是,其在實現過程中沒有相關性結構,所以我們只能得到對角橢圓樣本、垂直或水平的樣本,但原則上如果需要的話,我們可以推出更新規則以合併整個協方差矩陣,但這一點是要以犧牲計算效率為代價的。

很多人喜歡這個演算法,因為同CMA-ES一樣,搜索空間可以隨著時間的推移而擴展或縮小。因為在該實現中沒有使用相關參數,所以演算法的效率是較高的。

OpenAI進化策略(OpenAI-ES)

在OpenAI的論文(https://blog.openai.com/evolution-strategies/)中,他們實現了一種進化策略,這是前面提到的REINFORCE-ES演算法的一個特例。下面就是該策略:

GIF/914K

GIF/590K

Fitness Shaping

上面的大多數演算法通常都是與Fitness Shaping法結合在一起的,比如基於rank的Fitness Shaping方法。Fitness Shaping使我們能夠避免群體出現的異常值,從而避免了前面提到的近似梯度計算的影響。

MNIST

儘管ES可能是搜索更為新穎的解的一種方法,而這種解是用基於梯度的方法難以找到的,但是在許多可以計算高質量梯度的上,它的性能仍然要遠遠低於基於梯度的方法。例如,只有傻瓜才會嘗試使用遺傳演算法進行圖像分類,但世界上確實有這樣的人存在。所以有時候這些探索也是會有成果的!

由於所有機器學習演算法都應該在MNIST上進行測試,所以我也嘗試使用這些不同的ES演算法來尋找一個較小的、簡單的2層卷積神經網路的權重,用來對MNIST進行分類,而這只是為了看一下相較於SGD,我們所處的位置。卷積大約只有11000個參數,所以我們可以應用較慢的CMA-ES演算法。代碼和實驗都在這裡。(https://github.com/hardmaru/pytorch_notebooks/tree/master/mnist_es)

以下是各種ES方法的訓練結果。我們對在每輪結束時在整個訓練集上表現最好的模型參數進行追蹤,並在300輪之後在測試集上對該模型進行評估。有趣的是,測試集的準確性比那些得分較低的模型的訓練集要高。

我們應該對此結果保持一種質疑態度,因為它們基於單次運行,而不是5—10次的平均運行。 基於單次運行的結果似乎表明,CMA-ES在MNIST任務中是最好的,但是PEPG演算法沒有那麼大的影響。這兩種演算法都能達到98%的測試準確度,比SGD / ADAM基線低1%。也許動態地改變其協方差矩陣以及每一代的標準偏差參數的能力,使得它相較於OpenAI的更為簡單的變體而言,能夠更好地調整其權重。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷克世界 的精彩文章:

對抗攻擊最新研究:僅修改「一個像素」即可騙過神經網路!
如何使用Keras函數式API進行深度學習?
李國傑院士:AI創業公司如何擺脫被收購的命運「附雷克世界專訪」
機器學習時代,企業如何應對?你需要克服這「三座大山」!
Google公布OpenFermion:量子計算機的開源軟體包

TAG:雷克世界 |