當前位置:
首頁 > 新聞 > 「糟糕」的策略梯度

「糟糕」的策略梯度

雷鋒網 AI 科技評論按:強化學習(reinforcement learning)是機器學習界近幾年的一大研究熱點,無需先驗知識、在環境中反覆摸索嘗試獲得高反饋(reward)進行學習的根本思維符合人類的直覺,DeepMind 的 AlphaGo 系列更是強化學習成功案例的正面典型。不過,強化學習訓練極為不穩定、樣本利用率非常低、泛化性不好等問題也一直困擾著研究人員們,自蒙特卡洛、策略梯度以來大家也繼續找到了 Actor-Critic、Deep-Q Learning 等演算法嘗試獲得更好的表現。

UC 伯克利大學電子工程和計算機系副教授、《Machine Learning Research》雜誌編委 Ben Recht 近期就在自己的個人博客上撰寫了一系列強化學習的入門介紹文章,從各個角度剖析講解強化學習領域的重要知識和概念。其中有一篇《The Policy of Truth》(真正的策略)詳細聊了聊強化學習中廣泛使用的策略梯度為什麼是個不好的演算法,並將其喻為「偽裝在數學符號和數學黑話里的隨機搜索」。雷鋒網 AI 科技評論把這篇文章編譯如下。

「糟糕」的策略梯度

對於各種強化學習問題,人們第一個想到的通用解決方案就是策略梯度(Policy Gradient)。不過讓我震驚的是 1993 年的時候人們並沒有把策略梯度看作一個糟糕的方法並且棄之不用。策略梯度確實有相當的吸引力,因為它看起來可以用來精細調節一個程序,無需任何領域內知識就可以解決任意問題。任何這樣誇下海口的都肯定是為了吹捧自己,實際上當你仔細去研究的時候,你就會發現策略梯度其實就是偽裝在數學符號和數學黑話里的隨機搜索,僅此而已

我有必要提前說聲抱歉,因為這篇文章接下來會有不少公式。策略梯度中需要用到如此之多的公式,讓我們誤以為其中彷彿真的有什麼嚴肅深入的東西。我猜策略梯度之所以一直還是活躍的研究課題的原因就是人們並不會嘗試實現它,以及這些數學公式單獨看來還是很有吸引力的。這其實會迷惑我們的雙眼,讓我們忽視了真正把方法寫成代碼之後可能發生的事情。跟我來一起看看那些需要鋼鐵般信念的關頭吧。

不斷增加更多的抽象,直到問題解決

我們就從人們用策略梯度解決的最通用的問題開始。在這裡我們把動態系統生成的一系列狀態 xk和控制動作 uk合稱為軌跡(trajectory) τ

策略(policy)就是函數 π,它的輸入是一個軌跡,然後輸出一個新的控制動作。我們的目標就是找到一個能讓 L 個時間步驟後的反饋最大化的策略。

在策略梯度中,我們只關注參數化的、隨機化的策略。策略 π 中有一系列參數 ? 需要調節。以及,相比於輸出某一個具體的控制動作,我們通常假設 π 是一個多種控制動作上的概率分布;在實際操作中,按照每個時間步驟對 π 的分布進行採樣,然後得出一個控制動作。你可能要問了,為什麼要有採樣的這一步?這個問題很棒,不過我們先暫且放下這個無比合理的問題,過一會兒再說。

為了體現出策略 π 對參數 ? 的依賴,我們把它寫作 π?。由於 π?是一個概率分布,把 π?作為策略就引入了一個基於軌跡的概率分布:

進一步地,我們可以再增加幾個符號,把軌跡的反饋定義為:

那麼,這個強化學習優化問題就變成了看起來很整齊的:

如果我們繼續做如下定義的話還可以再簡潔一點:

這樣,我們的強化學習目標就終於可以寫成簡短的:

策略梯度

用簡潔的公式表述了這個問題之後,策略梯度就可以用下面這樣的技巧推導得到:

「糟糕」的策略梯度

這個式子表明了 J 相對於 ? 的梯度是下面這個式子的預期值

這樣,當我們執行策略 π?對軌跡 τ 採樣的時候,我們就可以計算 G(τ,?) ,從而得到對 J 的梯度的無偏差估計值。沿著這個方向下去我們就可以對 J 做隨機梯度下降。

更神奇的是,計算 G(τ,?) 時可以無需知道整個動態系統的運轉規律方程。我們觀察到

不是參數組 ? 的函數,因此

只要 π?是可微的。以及你安裝了最新版的 autograd,這些導數就都是可以計算的。

總結一下,我們就這樣得到了下面這個非常美妙的方法,我們可以在不知道系統的任何動態特性的情況下用它優化一個最優化問題。

選擇一組初始的猜測值 ?0和步驟序列 ak。初始 k=0。

在模擬器中運行策略 π?k,採樣得到軌跡 τk

迭代 k=k+1,回到第 2 步

策略梯度吸引人的主要原因就是因為看起來很簡單。如果你可以從 π?高效地採樣,理論上你就可以用這個演算法解決任何問題。可以飛四旋翼,可以冷卻數據中心,也可以教機器人開門。那麼理所當然的下一個問題就是,能做到多好呢?下面我簡單提一下線性化法則(Linearization Principle),你馬上就會看清真實狀況,從此以後再也不會想要選策略梯度了。

為什麼我們又開始用概率策略了?

在聊線性模型之前,我們暫且退一步,考慮一個純優化問題。我們用一堆符號把強化學習變得公式化,以至於到了最後似乎我們只需要關注一個無限制函數的最大化問題。我們先把所有系統的動態特性撇開不談,考慮單步最優化問題。給定一個函數 R(u),我要找到讓函數值儘可能大的 u。也就是說我要解決這個優化問題

容我說幾句可能看起來有點離題的,任何這個形式的優化問題都等價於 u 的概率分布之上的優化問題

做這個等價變換的目標是:如果 u?是最優解,那麼當我們在 u?附近施加一個 Delta 函數的話也可以得到同樣的反饋。進一步地,如果 p 是一個概率分布,那麼就很明確,可期待的反饋值永遠都不會大於固定的 u 得到的最大反饋。所以我們要優化的要麼是 u,要麼是 u 的分布。

這裡,我們就來到了策略梯度中的第一個邏輯跳躍的地方了。相比於對所有可能的分布構成的空間做優化,我們優化的是一組參數的分布 p(u;?)。如果這組參數中含有所有的 Delta 函數,那麼得到的最優解就會和不含隨機的優化問題的解一樣。而如果參數中不含有 Delta 函數,我們就只能得到優化反饋的下界而已,不管我們找到的概率分布有多好;在這種情況下,如果從策略中採樣 u,可以期待得到的反饋肯定是次優的。

這種基於分布的優化範式有一個重大問題,就是我們需要給這一組參數平衡許多不同的要求。我們需要的概率分布應當:

  1. 足夠豐富,可以逼近 Delta 函數

  2. 不難通過基於梯度的方法搜索

  3. 易於採樣

這其實就對分布提出了很高的要求了,尤其是當你的模型輸出的控制動作是連續值的時候。對於連續動作,多數時候人們都會從各種高斯分布中找一個以便讓

在這裡,f 是某個非線性函數,gt是一個高斯隨機向量。像這樣的參數化形式里沒有哪個是帶有 Delta 函數的。並且做這樣的參數化動作的時候我們並不知道到底會損失多少,因為我們並沒有辦法對強化學習中發生的一切建模

現在就需要重新強調一件重要的事情,在我們研究的基本最優控制問題中並不需要隨機化的策略。簡單的 LQR (線性二次調節器)問題中當然也不需要。概率策略確實是一種建模的方法,但它永遠都不會比確定性策略更好。

非常通用的強化演算法

所以上面這樣的策略梯度演算法實際上是一個找到如下形式的式子的隨機梯度的通用方法

它的對數似然也具有完全的泛化性

「糟糕」的策略梯度

所以下面這個方法也就是一個完全通用化的方法,用來找到關於參數分布的最大化反饋

選擇某個初始猜測值 ?0和步驟序列 αk。初始 k=0。

從概率分布 p(u;?k) 中獨立同分布採樣 uk

迭代 k=k+1,回到第 2 步

這種形式的演算法就可以被稱為「強化」(reinforce)。它看起來很奇怪:我們得到的是一個隨機梯度,然而我們想要優化的函數 R 只能通過函數評估訪問。我們從來都不計算 R 自己的梯度。

那麼這個演算法有任何好處么?答案取決於你想要什麼。如果你想要的是一個能和梯度相提並論的演算法,那就一點也不好,是一個糟透了的演算法。而如果你想要的是能和 R 的有限差分近似相提並論,那麼…… 那麼它仍然是一個糟透了的演算法。只不過其中的數學計算還挺討人喜歡。

這裡要說明的是,線性化法則提醒我們幾乎是馬上就需要拋棄這個演算法。我們來看一個最平凡的線性二次調節器例子:R(u)=?||u?z||2。設 p(u;?) 為均值為 ?、方差為 σ2I 的多元高斯分布。那麼策略梯度能起到什麼作用呢?首先我們注意到

很顯然,此時此刻我們的最佳選擇是讓 ?=z。同時我們注意到預期反饋中含有減去 σ2d 的一項,不過起碼現在是一個對 u 的不錯的猜測值了。並且,J 作為 ? 的函數,明顯是的,以及需要知道的最重要的事是這樣的梯度的預期標準值控制著迭代次數。那麼現在,如果你從 ?=0 開始,那麼梯度就是

其中 ω 是一個正態分布的隨機向量,均值為 0,方差為 σ2I。然後這個隨機梯度的預期標準值是…… 哦算了吧,你要算一個 6 次的式子,這一點都不好玩。如果忽略一下不重要的細節,你會發現預期標準值大概和這個式子是同階的:

這個式子很大了!隨著維度變高,它的拓展問題也會讓人頭疼。

很多人都分析過這種方法的複雜性,當然一點都不理想,而且高度取決於搜索空間的維度數目大小。反饋的最大大小 B 也有影響。如果函數值里有很多雜訊,那麼即便對於凸函數,收斂速率也只是

,這還是在假定了演算法的各個參數都剛好設置恰當的情況下。對於非常凸的函數,你有可能能湊出一個

級別的函數解,但是這個結果對於參數的選擇將會非常敏感。最後,我們注意到僅僅給反饋加入一個負的常數項就會大大降低演算法的速度。如果你選擇的反饋函數的取值在 [0,1],然後你給每個反饋值都減去 106的話,這就會讓演算法的運行時間變長 106倍,即便每次的反饋值的大小關係是不變的。

我們還需要看到,當我們在動態系統中考慮這些因素的時候情況只會變得更糟糕。線性二次調節器的策略梯度更新里會含有非常多的雜訊,而且它的方差會隨著模擬步數 L 增大。更麻煩的是,如果要找一個簡單的靜態策略的話,搜索 ? 的過程顯然是非凸的。即便實際操作中能看到一些結果,我們面前如此之多的困難還是提醒著我們可能最好換一換別的方法。

為什麼這麼多人都說在強化學習中取得了巨大成功?

我們已經看到有許許多多的論文,把策略梯度用在各種各樣的問題上,然後得到各種各樣的好看的結果。但我希望我們現在都能看清他們其實只是把隨機搜索打扮得漂漂亮亮了而已。尤其當你看到另外一批論文里的基因演算法和你的演算法得到了近似的成果的時候,你需要明白這並不代表著基因演算法有了新的發展,它更可能是在告訴你,你的方法只不過是隨機搜索的一次糟糕的實現而已

畢竟,基因演算法和策略梯度需要的樣本數目都多到誇張。如果你已經準備好了在亞馬遜 AWS 上花上百萬美元訓練,並且根本不打算調節一個實體化的系統的話,想用其實也可以。但是我們肯定是有更好的辦法的。

策略梯度和強化學習並沒有什麼神奇的魔力,我想我已經強調得夠多了。不過我還是要繼續說,策略梯度和它的各種變體真的是糟糕得很合理的演算法。想讓它們順利運行得出結果需要很多的技巧。可是你冷靜想想,難以調試、難以復現,而且還不能勝過原原本本的基因演算法的演算法,真的可以算是很差的演算法了。

在這個系列文章中我還會多次談起這個觀點:任選一個策略梯度能得到好結果的問題,都能再找到一個簡單得多、魯棒得多的演算法,而且能匹敵或者超越策略梯度的表現。策略梯度從來就不是一個好點子,但我也許一輩子都弄不清為什麼它會如此流行。

下篇文章我會繼續講線性二次調節器,以及討論幾個可能會比策略梯度更成功的策略。

(完)

via argmin.net,雷鋒網 AI 科技評論編譯

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

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


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

美國逮捕加密貨幣交易所BitFunder創始人
亞馬遜聯手巴菲特及摩根大通,組建獨立醫療公司

TAG:雷鋒網 |