強化學習 (11)隨機近似

計算均值的新方法

有兩種方法。第一種方法很直接,即收集所有樣本后計算平均值;但這種方法的缺點是,若樣本是在一段時間內逐個收集的,我們必須等到所有樣本都收集完畢。第二種方法可避免此缺點,因為它以增量迭代的方式計算平均值,來幾個就計算幾個,不需要等了。

步驟

假設

由此可得

則有

最終推導出?增量更新公式

一般性替換

此算法是一種特殊的?SA 算法(隨機近似算法),也是一種特殊的?隨機梯度下降算法

Robbins-Monro 算法?

隨機梯度下降算法是 RM 算法的特殊形式

RM算法的目的是在不知道方程表達式、只進行采樣的前提下求方程的解

為了求解g(\omega)=0的解,我們采用\omega_{k+1}=\omega_k-a_k\widetilde{g}(\omega_k,\eta_k)(*),其中\widetilde{g}(\omega_k,\eta_k)是第k次帶噪聲的觀測

具體的實現步驟是,輸入一個\omega_1,我們可以得到一個帶噪聲的觀測值\widetilde{g_1},通過(*)式可以得到\omega_2,又可以據此我們可以得到一個帶噪聲的觀測值\widetilde{g_2},由\widetilde{g_2}通過(*)式可以得到\omega_3......

如果我們能證明這樣的序列\omega_k,k=1,2,3\dots會收斂于g(\omega)=0的解\omega^*,那這樣的一個算法就是可行的

下面我們引入Robbins-Monro定理來證明這個序列\omega_k,k=1,2,3\dots收斂于g(\omega)=0的解\omega^*

Robbins-Monro定理

若有

滿足\sum_{k = 1}^{\infty} a_k = \infty, \sum_{k = 1}^{\infty} a_k^2 < \infty的一個典型序列是\frac{1}{k},其無窮級數發散,其無窮平方和=\frac{\pi^2}{6},實際常把a_k選為足夠小的常數,這雖然違反條件,但是可以避免\frac{1}{k}帶來的后端序列權重過低的問題

是一種特殊的RM算法

隨機梯度下降

Stochastic Gradient Descent (SGD)

隨機梯度下降算法是為了解決一個優化問題?\begin{aligned} \min_{w} J(w) = \mathbb{E}[f(w, X)] \end{aligned}

我們要優化\omega來使J(\omega)的值最小

X是隨機變量,f\omegaX的函數;X這個隨機變量的概率分布已經給定但是暫時是未知的,\begin{aligned} \mathbb{E}[f(w, X)] \end{aligned}\begin{aligned} \mathbb{E} \end{aligned}就是對X求期望;\omegaX既可以是向量也可以是標量,f的值是標量

方法一:梯度下降GD

\begin{aligned} w_{k+1} = w_k - \alpha_k \nabla_{w} \mathbb{E}[f(w_k, X)] = w_k - \alpha_k \mathbb{E}[\nabla_{w} f(w_k, X)] \end{aligned}

隨機梯度下降通過在每次迭代中,沿著目標函數期望梯度的負方向來更新參數 \omega ,逐步逼近目標函數的最小值點。實際應用中,由于計算整個數據集上目標函數的期望梯度(全量梯度)計算量過大,通常會采用小批量數據或者單個數據來近似計算期望梯度,從而實現高效的參數更新。

方法二:批量梯度下降BGD

\begin{aligned} \mathbb{E}[\nabla_{w} f(w_k, X)] \approx \frac{1}{n} \sum_{i = 1}^{n} \nabla_{w} f(w_k, x_i) \quad w_{k + 1} = w_k - \alpha_k \frac{1}{n} \sum_{i = 1}^{n} \nabla_{w} f(w_k, x_i). \end{aligned}

當?n = 1時,就是每次只用一個樣本進行梯度更新,即SGD;當?n?為整個數據集樣本數時,就退化為批量梯度下降。 這種基于樣本近似計算梯度的方式,在大規模數據場景下極大地降低了計算復雜度,使得優化算法能夠高效運行

方法三:隨機梯度下降SGD

\begin{aligned} w_{k + 1} = w_k - \alpha_k \nabla_{w} f(w_k, x_k) \end{aligned}

式子等號右邊,原來的X變成了對X的隨機采樣x_k;true gradient\begin{aligned} \mathbb{E}[\nabla_{w} f(w_k, X)] \end{aligned}變成了stochastic gradient\begin{aligned} \nabla_{w} f(w_k, x_k) \end{aligned}。這就是BGD里令n=1的情況

例子

考慮一個優化問題\begin{aligned} \min_{w} J(w) = \mathbb{E}[f(w, X)] = \mathbb{E}\left[ \frac{1}{2} \| w - X \|^2 \right] \end{aligned}

其中\begin{aligned} f(w, X) = \frac{\| w - X \|^2}{2} \quad \nabla_{w} f(w, X) = w - X \end{aligned}

其最優解為\begin{aligned} w^* = \mathbb{E}[X] \end{aligned}

GD

\begin{aligned} w_{k + 1} &= w_k - \alpha_k \nabla_{w} J(w_k) &= w_k - \alpha_k \mathbb{E}[\nabla_{w} f(w_k, X)] &= w_k - \alpha_k \mathbb{E}[w_k - X]. \end{aligned}

SGD
\begin{aligned} w_{k+1} = w_k - \alpha_k \nabla_{w} f(w_k, x_k) = w_k - \alpha_k (w_k - x_k) \end{aligned}

收斂性

從GD到SGD:

\begin{aligned} w_{k + 1} &= w_k - \alpha_k \mathbb{E}[\nabla_{w} f(w_k, X)] \\ &\Downarrow \\ w_{k + 1} &= w_k - \alpha_k \nabla_{w} f(w_k, x_k) \end{aligned}

\begin{aligned} \nabla_{w} f(w_k, x_k) \end{aligned}可以看作是\begin{aligned} \mathbb{E}[\nabla_{w} f(w_k, X)] \end{aligned}的帶噪聲的觀測值:

\begin{aligned} \nabla_{w} f(w_k, x_k) = \mathbb{E}[\nabla_{w} f(w, X)] + \underbrace{\nabla_{w} f(w_k, x_k) - \mathbb{E}[\nabla_{w} f(w, X)]}_{\eta} \end{aligned}

下面我們證明SGD是一個特殊的RM算法,由此來證明SGD在滿足某些條件的情況下是收斂的

proof:

SGD是要解決一個優化問題:\begin{aligned} J(w) = \mathbb{E}[f(w, X)] \end{aligned},令J(w)最小。這樣的優化問題可以轉化為尋找\begin{aligned} \nabla_{w} J(w) = \mathbb{E}[\nabla_{w} f(w, X)] = 0 \end{aligned}的根,因為其梯度為0是取得極小值的必要條件。

下面即求\begin{aligned} g(w) = \nabla_{w} J(w) = \mathbb{E}[\nabla_{w} f(w, X)]=0 \end{aligned}的根

我們用RM算法來求g(w)=0的根

\begin{aligned} \tilde{g}(w, \eta) &= \nabla_{w} f(w, x) \\ &= \underbrace{\mathbb{E}[\nabla_{w} f(w, X)]}_{g(w)} + \underbrace{\nabla_{w} f(w, x) - \mathbb{E}[\nabla_{w} f(w, X)]}_{\eta} \end{aligned}

\begin{aligned} w_{k + 1} = w_k - a_k \tilde{g}(w_k, \eta_k) = w_k - a_k \nabla_{w} f(w_k, x_k) \end{aligned}?這實際上就是SGD算法

SGD算法的有趣性質

由于隨機梯度是隨機的,因此其近似并不精確,那么隨機梯度下降法(SGD)的收斂過程是緩慢的還是隨機的呢?

\begin{aligned} \delta_{k} \leq \frac{\left| \nabla_{w} f(w_k, x_k) - \mathbb{E}[\nabla_{w} f(w_k, X)] \right|}{c \left| w_k - w^* \right|} \end{aligned}

上述等式揭示了隨機梯度下降法(SGD)一種有趣的收斂模式:

BGD & MBGD & SGD

\begin{aligned} w_{k + 1} &= w_k - \alpha_k \frac{1}{n} \sum_{i = 1}^{n} \nabla_{w} f(w_k, x_i), & \text{(BGD)} \\ w_{k + 1} &= w_k - \alpha_k \frac{1}{m} \sum_{j \in \mathcal{I}_k} \nabla_{w} f(w_k, x_j), & \text{(MBGD)} \\ w_{k + 1} &= w_k - \alpha_k \nabla_{w} f(w_k, x_k). & \text{(SGD)} \end{aligned}

總結

參考文章

S. Zhao. Mathematical Foundations of Reinforcement Learning. Springer Nature Press, 2025. ?【【強化學習的數學原理】課程:從零開始到透徹理解(完結)】

https://www.bilibili.com/video/BV1sd4y167NS/?? p=2&share_source=copy_web&vd_source=52164f68a5f27ac2e86f0e7963ea966c?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88774.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88774.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88774.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP `implode` 深度解析:從基礎到高階實戰指南

文章目錄一、基礎語法與底層原理執行過程解析&#xff1a;二、性能關鍵&#xff1a;避免隱含陷阱1. 類型轉換黑盒2. 大數組內存優化3. 關聯數組處理三、高階應用場景1. SQL語句安全構建2. CSV文件生成3. 模板引擎實現四、多維數組處理方案1. 遞歸降維2. JSON轉換橋接五、性能對…

開發語言中關于面向對象和面向過程的筆記

開發語言中關于面向對象和面向過程的筆記市面主流語言分類面向過程面向對象市面主流語言分類 面向過程編程&#xff08;Procedural Programming&#xff09;&#xff1a;C語言&#xff1b;面向對象編程語言&#xff08;Object-Oriented Programming, OOP&#xff09; &#xf…

AI產品經理面試寶典第3天:技術分層、邊界與市場全景系列面試題

面試指導 面試官:請從技術實現效果的角度,解釋AI技術分層。 你的回答: AI技術分為三層。 第一層是認知層:通過圖像處理、語音識別、自然語言理解等技術,讓機器感知環境。比如攝像頭識別行人動作,麥克風捕捉用戶指令。 第二層是預測層:基于行為數據預判下一步需求。例如…

Intel英特爾ICH7R/ICH8R/ICH9R/ICH10R系列下載地址--intel_msm_8961002 下載 Version 8.9.6.1002

Intel英特爾ICH7R/ICH8R/ICH9R/ICH10R系列下載地址intel_msm_8961002 下載 Version 8.9.6.1002https://xiazai.zol.com.cn/detail/66/653449.shtml通過網盤分享的文件&#xff1a;intel_msm_8961002.zip 鏈接: https://pan.baidu.com/s/13N9ZLXWkaWaEHQ5P90Jt0g?pwd3790 提取碼…

AI(學習筆記第五課) 使用langchain進行AI開發 load documents(web)

文章目錄AI(學習筆記第五課) 使用langchain進行AI開發 load documents(web)學習內容&#xff1a;1.load documents&#xff08;web&#xff09;1.1 學習url1.2 提前安裝python的package1.2 使用WebBaseLoader進行webpage的load1.3 使用BeautifulSoup4進行webpage的部分截取1.4 …

使用macvlan實現容器的跨主機通信

使用環境&#xff1a; 兩臺運行docker的服務器 A機器網段&#xff1a;192.168.86.61 B機器網段&#xff1a;192.168.86.62 運行的容器需裝有ping指令&#xff0c; 實驗參數解釋&#xff1a; -d macvlan 指定創建網絡驅動類型 --subnet 指定子網范圍 -gateway 指定網關地址 -o p…

深度學習_全連接神經網絡

1.什么是神經網絡神經網絡中信息只向一個方向移動&#xff0c;即從輸入節點向前移動&#xff0c;通過隱藏節點&#xff0c;再向輸出節點移 動&#xff0c;網絡中沒有循環或者環。其中的基本構件是&#xff1a; 輸入層&#xff1a;即輸入x的那一層 輸出層&#xff1a;即輸出y的那…

OpenLayers使用

初學ol&#xff0c;實現了高德地圖不同圖層的切換、交互性地圖飛行以及加載本地JSON數據。說一下不同圖層切換的想法&#xff1a;1.對于標準地圖和衛星地圖&#xff1a;二者最初便掛載到map上&#xff0c;兩個圖層是疊加顯示的&#xff1b;當點擊按鈕時&#xff0c;其實是使用 …

day4--上傳圖片、視頻

1. 分布式文件系統 1.1 什么是分布式文件系統 文件系統是負責管理和存儲文件的系統軟件&#xff0c;操作系統通過文件系統提供的接口去存取文件&#xff0c;用戶通過操作系統訪問磁盤上的文件。 下圖指示了文件系統所處的位置&#xff1a; 常見的文件系統&#xff1a;FAT16/FA…

極矢量與軸矢量

物理量分為標量和矢量&#xff0c;矢量又分為極矢量和軸矢量。 矢量是既有大小又有方向并按平行四邊形法則相加的量。矢量有極矢量和軸矢量兩種&#xff0c;其間的區別是在鏡像反射變換下遵循不同的變換規律,許多物理量都是矢量,同樣,其中也有極矢量和軸矢量的區分,在力學中,例…

文章發布易優CMS(Eyoucms)網站技巧

為了更快的上手數據采集及發布到易優CMS(eyoucms)網站&#xff0c;特地總結了些新手常常會遇到的操作問題與技巧&#xff0c;如下&#xff1a; 免費易優CMS采集發布插件下載&#xff0c;兼容火車頭、八爪魚、簡數采集等 目錄 1. 發布到易優CMS指定欄目 2. 發布文章到易優CM…

INA226 數據手冊解讀

INA226是一款數字電流檢測放大器&#xff0c;配備I2C和SMBus兼容接口。該器件可提供數字電流、電壓以及功率讀數&#xff0c;可靈活配置測量分辨率&#xff0c;并具備連續運行與觸發操作模式。該芯片通常由一個單獨的電源供電&#xff0c;電壓范圍為 2.7V 至 5.5V引腳說明??引…

Linux 中替換sed

以下是關于 sed&#xff08;Stream Editor&#xff09;的深度詳解和日常高頻使用場景&#xff0c;結合實用示例說明&#xff1a;一、sed 核心概念 流式編輯器&#xff1a;逐行處理文本&#xff0c;不直接修改源文件&#xff08;除非使用 -i 選項&#xff09;正則支持&#xff1…

ADB 調試日志全攻略:如何開啟與關閉 `ADB_TRACE` 日志

ADB 調試日志全攻略&#xff1a;如何開啟與關閉 ADB_TRACE 日志 ADB&#xff08;Android Debug Bridge&#xff09;是 Android 開發的核心工具&#xff0c;但在排查問題時&#xff0c;默認日志可能不夠詳細。通過設置環境變量 ADB_TRACE&#xff0c;可以開啟 全量調試日志&…

實現druid數據源密碼加密

生成加密密碼集成了druid鏈接池的&#xff0c;可以實現數據源密碼加密。加密方式如下構建單元測試&#xff0c;并輸入密碼即可生成加密密碼以及加密公鑰Test public void testPwd() throws Exception {String password "123456";String[] arr com.alibaba.druid.fi…

【TCP/IP】20. 因特網安全

20. 因特網安全20. 因特網安全20.1 安全威脅20.2 安全服務20.3 基本安全技術20.3.1 密碼技術20.3.2 報文鑒別技術20.3.3 身份認證技術20.3.4 數字簽名技術20.3.5 虛擬專用網&#xff08;VPN&#xff09;技術20.3.6 防火墻技術20.3.7 防病毒技術20.4 IP 層安全20.5 傳輸層安全20…

數據結構之位圖和布隆過濾器

系列文章目錄 數據結構之ArrayList_arraylist o(1) o(n)-CSDN博客 數據結構之LinkedList-CSDN博客 數據結構之棧_棧有什么方法-CSDN博客 數據結構之隊列-CSDN博客 數據結構之二叉樹-CSDN博客 數據結構之優先級隊列-CSDN博客 常見的排序方法-CSDN博客 數據結構之Map和Se…

Web攻防-PHP反序列化魔術方法觸發條件POP鏈構造變量屬性修改黑白盒角度

知識點&#xff1a; 1.WEB攻防-PHP反序列化-序列化和反序列化 2.WEB攻防-PHP反序列化-常見魔術方法觸發規則 3.WEB攻防-PHP反序列化-反序列化漏洞產生原因 4.WEB攻防-PHP反序列化-黑白盒&POP鏈構造 一、演示案例-WEB攻防-PHP反序列化-序列化和反序列化 什么是反序列化操作…

C# VB.NET多進程-管道通信,命名管道(Named Pipes)

要向已運行的進程發送特定命令&#xff08;如/exit&#xff09;&#xff0c;而不是啟動新進程&#xff0c;需要使用進程間通信&#xff08;IPC&#xff09;機制。以下是幾種常見的實現方法&#xff1a;一、使用命名管道&#xff08;Named Pipes&#xff09;如果ABC.EXE支持通過…

C++ 右值引用 (Rvalue References)

右值引用是C11引入的革命性特性&#xff0c;它徹底改變了C中資源管理和參數傳遞的方式。下面我將從多個維度深入講解右值引用。一、核心概念1. 值類別(Value Categories)lvalue (左值): 有標識符、可取地址的表達式int x 10; // x是左值 int* p &x; // 可以取地址rvalue…