當前位置:首頁 » 操作系統 » 零梯度和演算法

零梯度和演算法

發布時間: 2023-07-13 06:34:54

1. 梯度下降的求解過程

顧名思義,梯度下降法的計算過程就是沿梯度下降的方向求解極小值(也可以沿梯度上升方向求解極大值)。
其迭代公式為 ,其中 代表梯度負方向, 表示梯度方向上的搜索步長。梯度方向我們可以通過對函數求導得到,步長的確定比較麻煩,太大了的話可能會發散,太小收斂速度又太慢。一般確定步長的方法是由線性搜索演算法來確定,即把下一個點的坐標ak+1看做是的函數,然後求滿足f(ak+1)的最小值的 即可。
因為一般情況下,梯度向量為0的話說明是到了一個極值點,此時梯度的幅值也為0.而採用梯度下降演算法進行最優化求解時,演算法迭代的終止條件是梯度向量的幅值接近0即可,可以設置個非常小的常數閾值。

2. 淺談策略梯度(PG)演算法

Policy Optimization(策略優化)是強化學習中的一大類演算法,其基本思路區別於Value-based的演算法。因此,很多教科書都將model-free RL分成兩大類,Policy Optimization和Value-based。本系列博客將會參考OpenAI發布的入門教程 Spinning Up [1] ,Spinning Up系列是入門Policy Optimization的非常好的教材,特別適合初學者。Policy Gradient(策略梯度,簡稱PG)演算法是策略優化中的核心概念,本章我們就將從最簡單的PG推導開始,一步步揭開策略優化演算法的神秘面紗。

如果用一句話來表達 策略梯度 的直觀解釋,那就是「如果動作使得最終回報變大,那麼增加這個動作出現的概率,反之,減少這個動作出現的概率」。這句話表達了兩個含義:

本節我們將一步步推導出策略梯度的基礎公式,這一小節非常重要,理解了推導過程,就基本上理解了策略梯度的核心思想。所以,一定要耐心的把這一小節的內容全部看懂,最好能夠達到自行推導的地步。

我們用參數化的神經網路表示我們的策略 ,那我們的目標,就可以表示為調整 ,使得 期望回報 最大,用公式表示:

在公式(1)中, 表示從開始到結束的一條完整路徑。通常,對於最大化問題,我們可以使用梯度上升演算法來找到最大值。

為了能夠一步步得到最優參數,我們需要得到 ,然後利用梯度上升演算法即可,核心思想就是這么簡單。

關鍵是求取最終的 回報函數 關於 的梯度,這個就是 策略梯度 (policy gradient),通過優化策略梯度來求解RL問題的演算法就叫做 策略梯度演算法 ,我們常見的PPO,TRPO都是屬於策略梯度演算法。下面我們的目標就是把公式(2)逐步展開,公式(2)中最核心的部分就是 ,這也是這篇博客最核心的地方。





在以上的推導中,用到了log求導技巧: 關於 的導數是 。因此,我們可以得到以下的公式:

所以,才有公式(5)到公式(6),接下來我們把公式(7)進一步展開,主要是把 展開。先來看看

加入log,化乘法為加法:

計算log函數的梯度,並且約去一些常量:


因此,結合公式(7)和公式(9),我們得到了最終的表達式

公式(10)就是PG演算法的核心表達式了,從這個公式中可以看出,我們要求取的策略梯度其實是一個期望,具體工程實現可以採用蒙特卡羅的思想來求取期望,也就是采樣求均值來近似表示期望。我們收集一系列的 ,其中每一條軌跡都是由agent採用策略 與環境交互采樣得到的,那策略梯度可以表示為:

其中, 表示采樣的軌跡的數量。現在,我們完成了詳細的策略梯度的推導過程,長舒一口氣,接下來的工作就比較輕鬆了,就是在公式(10)的基礎上修修改改了。

再進行簡單修改之前,我們再總結一下公式(10),畢竟這個公式是PG演算法最核心的公式:

我們繼續觀察公式(10),對於公式中的 ,表示整個軌跡的回報,其實並不合理。對於一條軌跡中的所有動作,均採用相同的回報,就相當於對於軌跡中的每一個動作都賦予相同的權重。顯然,動作序列中的動作有好有壞,都採取相同的回報,無法達到獎懲的目的,那我們該怎麼表示 「某個狀態下,執行某個動作」 的回報呢?

一種比較直觀思路是,當前的動作將會影響後續的狀態,並且獲得即時獎勵(reward),那麼我們只需要使用 折扣累計回報 來表示當前動作的回報就行了,用公式表示為:

這在spinning up中叫做reward to go,所以,公式(10)可以表示為:

當然,使用reward to go的權重分配還是相當初級,我們可以使用更加高級的權重分配方式,進一步減少回報分配的方差,限於篇幅原因,我們後續再聊。

本章我們花了大量的篇幅推導了策略梯度(PG)的核心公式,得到了關鍵表達式(10),理解該公式對於我們後續理解整個PG演算法族非常有幫助,希望大家能夠認真的理解這一公式推導過程。

我們是行者AI,我們在「AI+游戲」中不斷前行。

如果你也對游戲感興趣,對AI充滿好奇,就快來加入我們吧~

3. 梯度下降法原理和步驟

一、梯度法思想
梯度法思想的三要素:出發點、下降方向、下降步長。
機器學習中常用的權重更新表達式為
:,這里的λ就是學習率,本文從這個式子出發來把機器學習中的各種「梯度」下降法闡釋清楚。
機器學習目標函數,一般都是凸函數,什麼叫凸函數?限於篇幅,我們不做很深的展開,在這兒我們做一個形象的比喻,凸函數求解問題,可以把目標損失函數想像成一口鍋,來找到這個鍋的鍋底。非常直觀的想法就是,我們沿著初始某個點的函數的梯度方嚮往下走(即梯度下降)。在這兒,我們再作個形象的類比,如果把這個走法類比為力,那麼完整的三要素就是步長(走多少)、方向、出發點,這樣形象的比喻,讓我們對梯度問題的解決豁然開朗,出發點很重要,是初始化時重點要考慮的,而方向、步長就是關鍵。事實上不同梯度的不同就在於這兩點的不同!
梯度方向是

,步長設為常數Δ,這時就會發現,如果用在梯度較大的時候,離最優解比較遠,W的更新比較快;然而到了梯度較小的時候,也就是較靠近最優解的時候,W的更新竟然也保持著跟原來一樣的速率,這樣會導致W很容易更新過度反而遠離了最優解,進而出現在最優解附近來回震盪。所以,既然在遠離最優解的時候梯度大,在靠近最優解的時候梯度小,我們讓步長隨著這個律動,於是我我們就用λ|W|來代替Δ,最後得到了我們熟悉的式子:

所以說這時的λ是隨著坡度的陡緩而變化的,別看它是個常數。
二、全量梯度下降法(Batch gradient descent)
全量梯度下降法每次學習都使用整個訓練集,因此每次更新都會朝著正確的方向進行,最後能夠保證收斂於極值點,凸函數收斂於全局極值點,非凸函數可能會收斂於局部極值點,缺陷就是學習時間太長,消耗大量內存。
第二、隨機梯度下降法(Stochastic Gradient Descent)
SGD一輪迭代只用一條隨機選取的數據,盡管SGD的迭代次數比BGD大很多,但一次學習時間非常快。
SGD的缺點在於每次更新可能並不會按照正確的方向進行,參數更新具有高方差,從而導致損失函數劇烈波動。不過,如果目標函數有盆地區域,SGD會使優化的方向從當前的局部極小值點跳到另一個更好的局部極小值點,這樣對於非凸函數,可能最終收斂於一個較好的局部極值點,甚至全局極值點。
缺點是,出現損失函數波動,並且無法判斷是否收斂。

熱點內容
編程貓被盜 發布:2025-03-17 12:02:18 瀏覽:130
海關鎖密碼箱如何設置新密碼 發布:2025-03-17 11:53:50 瀏覽:559
農業卡號的密碼在哪裡改 發布:2025-03-17 11:48:57 瀏覽:965
楊瀾超級訪問 發布:2025-03-17 11:47:17 瀏覽:237
資料庫無損連接 發布:2025-03-17 11:47:16 瀏覽:13
memcachephp類 發布:2025-03-17 11:40:04 瀏覽:829
哈夫曼編碼演算法實現 發布:2025-03-17 11:23:31 瀏覽:385
錄音機可以存儲信息嗎 發布:2025-03-17 11:13:32 瀏覽:174
郵件伺服器php 發布:2025-03-17 11:09:42 瀏覽:479
心跳包源碼 發布:2025-03-17 11:03:29 瀏覽:799