【機器學習】 關于外插修正隨機梯度方法的數值實驗

1. 隨機梯度下降(SGD)
  • 迭代格式
    x k + 1 = x k ? η k ? f i ( x k ) x_{k+1} = x_k - \eta_k \nabla f_i(x_k) xk+1?=xk??ηk??fi?(xk?)
    其中, η k \eta_k ηk? 為步長(可能遞減), ? f i ( x k ) \nabla f_i(x_k) ?fi?(xk?) 是隨機采樣樣本 i i i 的梯度估計。
  • 優點
  • 計算效率高,適合大規模數據集,每次迭代僅需單個樣本的梯度 。
  • 在強凸問題中收斂速度為 O ( 1 / t ) O(1/t) O(1/t),非凸問題中為 O ( 1 / log ? t ) O(1/\log t) O(1/logt)
  • 理論分析成熟,易于實現 。
  • 缺點
  • 收斂速度較慢,尤其在非凸問題中易陷入局部最優 。
  • 對步長敏感,需要精心調整參數以保證穩定性 。
2. 重球隨機梯度方法(SHB)
  • 迭代格式
    x k + 1 = x k ? η k ? f i ( x k ) + β ( x k ? x k ? 1 ) x_{k+1} = x_k - \eta_k \nabla f_i(x_k) + \beta (x_k - x_{k-1}) xk+1?=xk??ηk??fi?(xk?)+β(xk??xk?1?)
    其中, β ∈ ( 0 , 1 ) \beta \in (0,1) β(0,1) 為動量參數,通過歷史更新方向加速收斂。
  • 優點
    • 動量項可加速收斂,尤其在光滑強凸問題中表現優于固定步長的SGD 。
    • 對梯度噪聲具有一定魯棒性,通過歷史梯度平均降低方差 。
  • 缺點
    • 早期迭代可能表現不佳,收斂速度不一定始終優于SGD 。
    • 參數選擇(如 β \beta β η k \eta_k ηk?)需謹慎,否則可能導致震蕩或發散 。
    • 在有限和隨機設置中,缺乏嚴格的加速收斂證明 。
3. Nesterov隨機梯度方法(SNAG)
  • 迭代格式
    y k = x k + γ k ( x k ? x k ? 1 ) x k + 1 = y k ? η k ? f i ( y k ) y_k = x_k + \gamma_k (x_k - x_{k-1}) \\ x_{k+1} = y_k - \eta_k \nabla f_i(y_k) yk?=xk?+γk?(xk??xk?1?)xk+1?=yk??ηk??fi?(yk?)
    其中, γ k \gamma_k γk? 為動量系數,通常在Nesterov方法中設計為時變參數。
  • 優點
    • 在凸問題中理論收斂速度可達 O ( 1 / t 2 ) O(1/t^2) O(1/t2),顯著快于SGD 。
    • 通過“前瞻梯度”設計,減少震蕩并提高穩定性 。
    • 實驗顯示在分類和圖像任務中優于傳統動量方法 。
  • 缺點
    • 隨機環境下(如有限和設置)可能發散,需額外條件保證收斂 。
    • 實現復雜度較高,需同時維護多個變量(如 x k x_k xk? y k y_k yk?)。
  • 參數調節更復雜,尤其在非凸問題中收斂性理論尚不完善 。

以上段落來自 秘塔 AI 綜述的結果(先搜索后擴展選項, 文獻均來自中英文論文而非全網)。該完整版請移步至鏈接

https://metaso.cn/s/ThPU2bK

以下我們給出一組實驗來探討 Nesterov 加速方法的參數選擇, 收斂效果請大家自行驗證,這里放上一個數值結果圖作為代表
在這里插入圖片描述

其中一點比較尷尬的現象是確定問題中 θ k = k ? 1 k + 2 \theta_k=\frac{k-1}{k+2} θk?=k+2k?1? 類型的外插參數在隨機問題中的數值實驗中的表現并不好,有一子列不收斂到0,但是仍有大量文獻包括教材,論文仍然推薦使用這類策略。但是換成任何一個介于開區間 ( 0 , 1 ) (0,1) (0,1) 的常數,例如 0.9, 0.99 則有明顯的序列收斂至0的趨勢, 從本文給的算例來看是非常簡單的凸二次 x 0 2 + x 1 2 + 2 ξ 0 x 0 + 2 ξ 1 x 0 x_0^2+x_1^2+2\xi_0 x_0+2\xi_1x_0 x02?+x12?+2ξ0?x0?+2ξ1?x0?,其中 ξ i \xi_i ξi? 服從 N ( 0 , I ) N(0,I) N(0,I) 二維標準正態分布。為了壓縮噪聲影響,采用遞減步長 α k = 1 ( k + 2 ) γ \alpha_k=\frac{1}{(k+2)^\gamma} αk?=(k+2)γ1?

  1. 規模小:僅2維問題
  2. 強凸
  3. 可微,且隨機梯度關于自變量 x x x 是李普希茲連續的
  4. 隨機樣本噪聲期望存在,方差有界

很難相信這樣二維簡單的例子參數 θ k = k ? 1 k + 2 \theta_k=\frac{k-1}{k+2} θk?=k+2k?1? 都不收斂,其在大規模以及大數據問題中會具有較好的收斂效果,歡迎大家參與實驗與討論。

Python 代碼如下:

import numpy as np
import matplotlib.pyplot as plt
import numpy.linalg as la
iters=1000000
root=np.array([1.0,3.0])
vec1=root.copy()
vec2=root.copy()
dim=len(root)
path=np.zeros([iters,dim])
def gobj(x,xi):return(2*(x+xi))
gamma=1#  (k-1)/(k+2)  ===============================
np.random.seed(0)
for k in range(iters):    theta= (k-1)/(k+2)root=(1.0+theta)*vec2-theta*vec1a=1/(k+1)**gammaxi=np.random.randn(2)vec1=vec2.copy()vec2=root - a*gobj(root,xi)path[k,:]=root
V=np.zeros(iters)
for k in range(iters):V[k]=la.norm(path[k,:])
plt.loglog(V,'-.')
plt.grid(True)# 0.99    ===============================
iters=1000000
root=np.array([1.0,3.0])
vec1=root.copy()
vec2=root.copy()
dim=len(root)
path=np.zeros([iters,dim])
np.random.seed(0)
for k in range(iters):    theta= 0.99root=(1.0+theta)*vec2-theta*vec1a=1/(k+1)**gammaxi=np.random.randn(2)vec1=vec2.copy()vec2=root - a*gobj(root,xi)path[k,:]=root
V=np.zeros(iters)
for k in range(iters):V[k]=la.norm(path[k,:])
plt.loglog(V,'--')
plt.grid(True)# 0.9  ===============================
iters=1000000
root=np.array([1.0,3.0])
vec1=root.copy()
vec2=root.copy()
dim=len(root)
path=np.zeros([iters,dim])
np.random.seed(0)
for k in range(iters):    theta= 0root=(1.0+theta)*vec2-theta*vec1a=1/(k+1)**gammaxi=np.random.randn(2)vec1=vec2.copy()vec2=root - a*gobj(root,xi)path[k,:]=root
V=np.zeros(iters)
for k in range(iters):V[k]=la.norm(path[k,:])
plt.loglog(V,'.-')
plt.grid(True)plt.legend(['(k-1)/(k+2)',0.99,0.5,'2/(k+2)'])
plt.show()

Matlab 代碼如下

% (k-1)/(k+2)   ===============================
init=[1,3];
lth=length(init);
fobj=@(x,xi)(x*x'+2*xi*x');
gobj=@(x,xi)(2*x+2*xi);
iters=1000000;
path=ones(iters+1,length(init));
path(1,:)=init;
root=init;
randn('seed',1)
for k =1:itersif k<2xi=randn(1,lth);a=1/(k+2)^(2/3);root=root-a*gobj(root,xi);path(k+1,:)=root;elsexi=randn(1,lth);a=1/(k+2)^(2/3);v=root-a*gobj(root,xi);path(k+1,:)=v;theta=(k-1)/(k+2);th=theta;root=(1+th)*path(k+1,:)-theta*path(k,:);end
end
Vk=ones(iters+1,1);
for k=1:iters+1Vk(k)= path(k,:)*path(k,:)';
end
loglog(Vk,'--')
grid on;
hold on;% theta=0.99    ===============================
init=[1,3];
iters=1000000;
path=ones(iters+1,length(init));
path(1,:)=init;
root=init;
randn('seed',1)
for k =1:itersif k<2xi=randn(1,lth);a=1/(k+2)^(2/3);root=root-a*gobj(root,xi);path(k+1,:)=root;elsexi=randn(1,lth);a=1/(k+2)^(2/3);v=root-a*gobj(root,xi);path(k+1,:)=v;theta=0.99;th=theta;root=(1+th)*path(k+1,:)-theta*path(k,:);end
end
Vk=ones(iters+1,1);
for k=1:iters+1Vk(k)= path(k,:)*path(k,:)';
end
loglog(Vk,'--')
grid on;
hold on;% theta=0.9     ===============================
init=[1,3];
iters=1000000;
path=ones(iters+1,length(init));
path(1,:)=init;
root=init;
randn('seed',1)
for k =1:itersif k<2xi=randn(1,lth);a=1/(k+2)^(2/3);root=root-a*gobj(root,xi);path(k+1,:)=root;elsexi=randn(1,lth);a=1/(k+2)^(2/3);v=root-a*gobj(root,xi);path(k+1,:)=v;theta=0.9;th=theta;root=(1+th)*path(k+1,:)-theta*path(k,:);end
end
Vk=ones(iters+1,1);
for k=1:iters+1Vk(k)= path(k,:)*path(k,:)';
end
loglog(Vk,'--')
grid on;
hold on;% theta=0.9  ===================================================================
init=[1,3];iters=1000000;
path=ones(iters+1,length(init));
path(1,:)=init;
root=init;
randn('seed',1)
for k =1:itersif k<2xi=randn(1,lth)a=1/(k+2)^(2/3);root=root-a*gobj(root,xi);path(k+1,:)=root;elsexi=randn(1,lth);a=1/(k+2)^(2/3);v=root-a*gobj(root,xi);path(k+1,:)=v;theta=0.5;th=theta;root=(1+th)*path(k+1,:)-theta*path(k,:);end
end
Vk=ones(iters+1,1);
for k=1:iters+1Vk(k)= path(k,:)*path(k,:)';
end
loglog(Vk,'--')
grid on;
hold on;
legend('(k-1)/(k+2)','0.99','0.9','0.5')

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

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

相關文章

每日c/c++題 備戰藍橋杯(洛谷P3382 三分法求極值詳解)

洛谷P3382 三分法求極值詳解 題目描述 P3382 三分法 要求在給定區間內尋找一個多項式函數的最大值點。題目保證函數在區間內先嚴格遞增后嚴格遞減&#xff08;單峰函數&#xff09;&#xff0c;適合使用三分法求解。 算法原理 三分法核心思想 對于單峰函數&#xff0c;在區…

[Windows] 一鍵實現重復工作自動化zTasker

zTasker&#xff0c;是一款定時&#xff5c;熱鍵&#xff5c;純粹的自動化任務神器。它支持超過100種任務類型&#xff0c;包括提醒、關機重啟、報時、擋屏休息、文件備份、音量調節、靜音等。用戶可以通過定時、CPU占用、文件夾監控、網速、快捷鍵等多種條件觸發任務。 簡單點…

Docker核心筆記

一、概述 1、架構 Docker容器基于鏡像運行,容器共享宿主機的內核,不會加載額外內核,通過Namespaces(環境隔離)和Cgroups(資源控制)實現隔離,Cgroups會限容器使用資源并控制優先級和統計數據。隔離后的容器僅包含應用所需的用戶態依賴 2、安裝 安裝先卸載再安裝,使用的yum…

2025年電工杯數學建模B題【垃圾運輸】原創論文分享

大家好呀&#xff0c;從發布賽題一直到現在&#xff0c;總算完成了2025年電工杯數學建模B題【垃圾運輸】完整的成品論文。 給大家看一下目錄吧&#xff1a; 目錄 摘 要&#xff1a; 一、問題重述 二&#xff0e;問題分析 2.1問題一 2.2問題二 2.3問題三 三、模型假設 …

[爬蟲知識] IP代理

相關實戰案例&#xff1a;[爬蟲實戰] 代理爬取&#xff1a;小白也能看懂怎么用代理 相關爬蟲專欄&#xff1a;JS逆向爬蟲實戰 爬蟲知識點合集 爬蟲實戰案例 引言&#xff1a;爬蟲與IP封鎖的攻防戰 對網絡爬蟲而言&#xff0c;遇到的一個較棘手的問題就是封IP&#xff1a;請…

計算機視覺---YOLOv1

YOLOv1深度解析&#xff1a;單階段目標檢測的開山之作 一、YOLOv1概述 提出背景&#xff1a; 2016年由Joseph Redmon等人提出&#xff0c;全稱"You Only Look Once"&#xff0c;首次將目標檢測視為回歸問題&#xff0c;開創單階段&#xff08;One-Stage&#xff09…

前端學習筆記element-Plus

【element-plus菜單】參數說明&#xff1a; active-text-color"#ffd04b"——激活顏色 background-color"#232323"——背景顏色&#xff08;29,160,176&#xff09; :default-active"$route.path"——配置默認高亮的菜單項 text-color"#f…

【Django DRF】一篇文章總結Django DRF框架

第一章 DRF框架基礎 1.1 DRF簡介 1.1.1 DRF定義與作用 1. 定義 DRF 即 Django REST framework&#xff0c;它是一個建立在 Django 基礎之上的強大且靈活的工具包&#xff0c;用于構建 Web API&#xff08;應用程序編程接口&#xff09;&#x1f60e;。簡單來說&#xff0c;…

如何解決 Python 項目安裝依賴報錯:ERROR: Failed to build installable wheels for some pyproject.toml based project

如何解決 Python 項目安裝依賴報錯&#xff1a;ERROR: Failed to build installable wheels for some pyproject.toml based projects 在使用 pip 安裝 Python 項目的依賴時&#xff0c;遇到類似如下的報錯信息&#xff1a; ERROR: Failed to build installable wheels for s…

使用f5-tts訓練自己的模型筆記

摘要 服務器都有了&#xff0c;這不得練練丹&#xff0c;有點說不過去啊。所以嘗試了從頭開始訓練一個模型&#xff0c;結果由于推理頁面好像有bug&#xff0c;不知道是不是失敗了&#xff0c;然后又嘗試微調一下模型。本篇文章主要記錄了三流調包俠嘗試煉丹過程中學習到的一些…

安全可控的AI底座:燈塔大模型應用開發平臺全面實現國產信創兼容適配認證

國產信創產品兼容適配認證是為了支持和推動國產信息技術產品和服務的發展而設立的一種質量標準和管理體系。適配認證旨在確保相關產品在安全性、可靠性、兼容性等方面達到一定的標準&#xff0c;以滿足政府和關鍵行業對信息安全和自主可控的需求。 北京中煙創新科技有限公司&a…

初識Vue【1】

1.什么是Vue&#xff1a; Vue (讀音 /vju?/&#xff0c;類似于 **view**) 是一套用于構建用戶界面的**漸進式框架**。與其它大型框架不同的是&#xff0c;Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注視圖層&#xff0c;不僅易于上手&#xff0c;還便于與第三方庫或…

Jest入門

快速入門 Jest中文文檔 | Jest中文網 1.下載&#xff1a;npm install --save-dev jest 2.創建 sum.js 文件&#xff1a; function sum(a, b) { return a b; } module.exports sum; 3.創建sum.test.js 的文件 const sum require(./sum); test(adds 1 2 to equal 3,…

Spring Boot企業級開發五大核心功能與高級擴展實戰

前言 在企業級應用開發中&#xff0c;Spring Boot已成為事實上的Java開發標準。本文將從企業實際需求出發&#xff0c;深入剖析Spring Boot五大必用核心功能&#xff0c;并擴展講解三項高級開發技能&#xff0c;幫助開發者掌握構建健壯、高效、易維護的企業級應用的必備技術。…

2025電工杯數學建模B題思路數模AI提示詞工程

我發布的智能體鏈接&#xff1a;數模AI扣子是新一代 AI 大模型智能體開發平臺。整合了插件、長短期記憶、工作流、卡片等豐富能力&#xff0c;扣子能幫你低門檻、快速搭建個性化或具備商業價值的智能體&#xff0c;并發布到豆包、飛書等各個平臺。https://www.coze.cn/search/n…

LabVIEW開發FPGA磁聲發射應力檢測系統

工業級磁聲發射應力檢測系統&#xff0c;針對傳統設備參數固定、靈活性不足的痛點&#xff0c;采用 Xilinx FPGA 與 LabVIEW 構建核心架構&#xff0c;實現激勵信號可調、多維度數據采集與實時分析。系統適用于鐵磁性材料應力檢測場景&#xff0c;具備高集成度、抗干擾性強、檢…

Java IO流學習指南:從小白到入門

Java的IO&#xff08;Input/Output&#xff09;流是處理數據輸入和輸出的基礎。無論是讀取文件、寫入文件&#xff0c;還是通過網絡傳輸數據&#xff0c;IO流都無處不在。對于剛接觸Java的新手&#xff0c;理解IO流可能會有些困惑&#xff0c;但別擔心&#xff0c;今天我們將一…

【后端高階面經:微服務篇】1、微服務架構核心:服務注冊與發現之AP vs CP選型全攻略

一、CAP理論在服務注冊與發現中的落地實踐 1.1 CAP三要素的技術權衡 要素AP模型實現CP模型實現一致性最終一致性&#xff08;Eureka通過異步復制實現&#xff09;強一致性&#xff08;ZooKeeper通過ZAB協議保證&#xff09;可用性服務節點可獨立響應&#xff08;支持分區存活…

QNAP NEXTCLOUD 域名訪問

我是用docker compose方式安裝的&#xff0c;雖然不知道是不是這么個叫法&#xff0c;廢話不多說。 背景&#xff1a;威聯通container station安裝了nextcloud和lucky&#xff0c;lucky進行的域名解析和反代 先在想安裝的路徑、數據存儲路徑、數據庫路徑等新建文件夾。再新建…

高級SQL技巧:窗口函數與復雜查詢優化實戰

高級SQL技巧&#xff1a;窗口函數與復雜查詢優化實戰 開篇&#xff1a;數據庫開發中的挑戰 在現代企業級應用中&#xff0c;數據庫不僅是存儲數據的核心組件&#xff0c;更是處理復雜業務邏輯的重要工具。然而&#xff0c;隨著數據量和并發請求的不斷增長&#xff0c;傳統的S…