主頁 >  其他 > 08-ADMM演算法

08-ADMM演算法

2021-06-25 06:27:20 其他

08-ADMM演算法

目錄
  • 一、ADMM 演算法動機
  • 二、對偶問題
  • 三、對偶上升法
  • 四、對偶分割
  • 五、乘子法(增廣拉格朗日函式)
    • 5.1 步長為 $\rho$ 的好處
  • 六、ADMM演算法
    • 6.1 ADMM 的 scaled form 形式
  • 七、ADMM的收斂性證明思路
  • 八、寫在最后

凸優化從入門到放棄完整教程地址:https://www.cnblogs.com/nickchen121/p/14900036.html

ADMM最基本情形的推導還是比較經典的,這里介紹這份著名講義里的treatment:

Boyd S, Parikh N, Chu E, et al. Distributed optimization and statistical learning via the alternating direction method of multipliers[J]. Foundations and Trends? in Machine learning, 2011, 3(1): 1-122.


一、ADMM 演算法動機

這里簡單講個例子,在深度學習中,樣本的維度 \(d\) 是非常大的,如果我們直接對這種大維度的樣本構建目標函式 \(f(x)\),是不容易求解的,

因此我們可以考慮是否可以把 \(x\) 拆分成 \(x_1,x_2,\cdots,x_N\),也就是把目標函式分割成多個目標函式 \(f_{()x_1)},f_{(x_2)},\cdots,f_{(x_N)}\),然后我們先最小化 \(f_{(x_1)}\),之后在最小化 \(f_{(x_2)}\),甚至可以對這個多個目標函式進行分布式優化,

二、對偶問題

原問題:

\[\begin{align} \min \quad & f(x) \\ s.t. \quad & Ax=b \end{align} \]

拉格朗日函式:\(L(x,y) = f(x) + y^T(Ax-b)\)

對偶函式:\(g(y) = \inf_x L(x,y) \leq f(x)\)

對偶問題:\(\max_y g(y)\)

最優解:

\[\begin{align} & x^* = \underset{x}{argmin} \quad L(x,y^*) \\ & y^* = \underset{y}{argmax} \quad g(y) \end{align} \]

三、對偶上升法

對偶變數 \(y\) 迭代更新:\(y^{k+1} = y^k + \alpha^k \nabla g(y^k)\),其中

\[\begin{align} \nabla g(y^k) &= \nabla_y(L(\hat x,y^k)) \\ & = \nabla_y(f(\hat x) + (y^k)^T(A \hat x -b)) \\ & = A\hat x -b \end{align} \]

上述公式中 \(\hat x = \underset{x}{argmin} L(x,y^k)\)

變數和對偶變數更新的步驟:

  1. $x^{k+1} = \underset{x}{argmin} L(x,y^k)\quad \text{變數 \(x\)的更新}$
  2. $y^{k+1} = y^k + \alpha^k (Ax^{k+1}-b)\quad \text{對偶變數 \(y\) 的更新}$

注:如果 \(f(x)\) 是線性的,可以看到 \(L(x,y)\) 基本無下界,也就是說 \(x\) 的更新不可以求解,這是未來使用增廣拉格朗日函式的原因之一

四、對偶分割

對偶分割簡單點說,就是假設目標函式可分,則對偶函式同樣可分,這里給出簡單的證明,

假設 \(f\) 可分,也就是說目標函式 \(f(x) = \sum_{i=1}^N f_i(x_i)\),約束條件 \(Ax = [A_1,A_2,\cdots,A_N]x=A_1x,A_2x,\cdots,A_Nx\)

通過上述的假設,則對偶函式 \(L(x,y)\) 可以通過下式表達:

\[\begin{align} L(x,y) & = \sum_{i=1}^N f_i(x_i) + y^T (\sum_{i=1}^N A_ix_i-b) \\ & = \sum_{i=1}^N (f_i(x_i)+y^T A_ix_i) - y^Tb \\ & = \sum_{i=1}^N L_i(x,y) - y^Tb \end{align} \]

從上述推導可以看出,對偶函式 \(L(x,y)\) 同樣可分,

也就是說,在對 \(x\) 進行 \(argmin\) 的時候,可以分布式處理 \(x\)\(x_i^{k+1} = \underset{x_i}{argmin} \quad L_i(x_i,y^k)\)

五、乘子法(增廣拉格朗日函式)

前面講對偶上升法的時候講到,\(f(x)\) 線性時更新時可能無法求解,因此把拉格朗日函式變成增廣拉格朗日函式,即在拉格朗日函式的基礎上加上懲罰因子 \(\frac{\rho}{2} \|Ax-b\|_2^2\),讓拉格朗日函式更加光滑、穩定,并且解決 \(f(x)\) 線性無法求解的問題,也就是為了不需要 \(f(x)\) 一定要是嚴格凸的,

增廣拉格朗日函式:\(L(x,y) = f(x) + y^T(Ax-b) + \frac{\rho}{2}\|Ax-b\|_2^2\)

進而上述對偶上升法變數的更新將會變成:

\[x^{k+1} = \underset{x}{argmin}\quad L_\rho(x,y^k) \\ y^{k+1} = y^k + \rho(Ax^{k+1}-b) \]

5.1 步長為 \(\rho\) 的好處

這里通過簡單地公式推導證明下使用步長 \(\rho\) 的優點,

對于優化問題:

\[\begin{align} min & \quad f(x) \\ s.t. & \quad Ax=b \end{align} \]

它的 KKT 條件為:

\[\begin{align} & Ax^*-b = 0\\ & \nabla f(x^*) + A^Ty=0 \end{align} \]

現在我們更新變數 \(x\),即 \(\underset{argmin}{x} L_\rho (x^{k+1},y^k)\),有如下推導:

\[\begin{align} 0 & = \nabla_x L_\rho (x^{k+1},y^k) \\ & = \nabla_x f(x^{k+1}) + A^Ty^k + \rho A^T (Ax^{k+1}-b) \\ & = \nabla_x f(x^{k+1}) + A^T[y^k+\rho (Ax^{k+1}-b)] \\ & = \nabla_x f(x^{k+1}) + A^T y^{k+1} \end{align} \]

從上述推導,可以看出步長選擇 \(\rho\) ,在找 \(x^{k+1}\) 的時候,也就是 \((x^{k+1},y^{k+1})\) 自然而然的滿足了 KKT 條件,

注:使用了增廣拉格朗日函式后,雖然求解更加穩定,但是由于懲罰項中有交叉項,如 \(x_1×x_2\),導致拉增廣格朗日函式不可以對偶分割,因此無法做到分布式處理,因此有了 ADMM 演算法,結合了對偶上升法的變數和對偶變數的交叉迭代更新和增廣拉格朗日函式的穩定性

六、ADMM演算法

為了整合對偶上升法的可分解性與乘子法優秀的收斂性質,人們就又提出了改進形式的優化 ADMM,目的就是想能分解原函式和擴增函式,以便于在對 \(f\) 更一般的假設條件下并行優化,所以 ADMM 是又想引入新變數,然后又想通過交叉更換方向進而交替優化,

ADMM 演算法求解 2-block 的凸優化問題的形式如下(n-block 就是 n 個變數,但是 3-block 以上的問題性質會差很多):

\[\begin{align} \min ~ & f(x)+g(z)\\ s.t. ~ & Ax+Bz=C \end{align} \]

從上面 ADMM 演算法的形式可以看出,它的思想就是想把 primal 變數、目標函式拆分,但是不再像對偶上升方法那樣,將拆分開的 \(x_i\) 都看做是 \(x\) 的一部分,后面融合的時候還需要融合在一起,而是最先開始就將變數分別看做是不同的變數 \(x\)\(z\),同時約束條件也如此處理,這樣的好處就是后面不需要一起融合 \(x\)\(z\) ,保證了前面優化程序的可分解性(每次只優化不同的變數),

ADMM 演算法的增廣拉格朗日函式:\(L_{\rho}(x,z,y)=f(x)+g(z)+y^T(Ax+Bz-c)+(\rho/2)\|Ax+Bz-c\|_2^2\)

ADMM 演算法的變數更新:

\[\begin{align} x^{k+1}:=~ & \arg\min_{x} L_{\rho}(x,z^k,y^k)\\ z^{k+1}:=~ & \arg\min_{z} L_{\rho}(x^{k+1},z,y^k)\\ y^{k+1}:= ~ & y^k+\rho(Ax^{k+1}+Bz^{k+1}-c). \end{align} \]

6.1 ADMM 的 scaled form 形式

注:ADMM 的 scaled form 形式本質上就是對對偶變數做了處理,并且定義了殘差,通過殘差可以更易于判別 ADMM 演算法的收斂性

假設 \(r = Ax+Bz-C,\quad u=\frac{y}{\rho}\)

進而可以得到新的增廣拉格朗日函式:

\[\begin{align} L_\rho & = f(x)+g(z)+y^(r)+\frac{\rho}{2}\|r\|_2^2 \\ & = f(x) + g(z) + \frac{\rho}{2}\|r+\frac{y}{\rho}\|_2^2 - \frac{1}{2\rho}\|y\|_2^2 \\ & = f(x) + g(z) + \frac{\rho}{2}\|r+u\|_2^2 - \frac{\rho}{2}\|u\|_2^2 \\ \end{align} \]

由此 ADMM 演算法將被改寫成:

\[\begin{align} x^{k+1}:=~ & \arg\min_{x} \left\{ f(x)+\frac{\rho}{2}\|Ax+Bz^k-c+u^k\|_2^2 \right\}\\ z^{k+1}:=~ & \arg\min_{z} \left\{ g(z)+\frac{\rho}{2}\|Ax^{k+1}+Bz-c+u^k\|_2^2 \right\}\\ u^{k+1}:= ~ & u^k+Ax^{k+1}+Bz^{k+1}-c \end{align} \]

上述這個形式就比前面那個更簡潔,我們一般叫前一種形式為ADMM的unscaled形式,而這種則是scaled形式了,并且很多ADMM分析都是基于這個scaled形式的,

上述\(u\) 為scaled scaled dual variable, \(r\) 可以理解為對偶變數 \(u\) 的每一步迭代的殘差,而 \(u^k = u^0 + \sum_{j=1}^k r^j\) 定義為殘差和,


七、ADMM的收斂性證明思路

在兩個不太強的假設前提下,本節給出ADMM基本形式的收斂性證明的思路,

假設1: 凸函式\(f,g\) 是closed和proper的,

假設2:(非增廣)拉格朗日函式 \(L_0\) 至少有一個鞍點(saddle point),

假設1等價于epigraph \(\{(x,t)\in \mathbb{R}^n\times\mathbb{R}:f(x)\leq t\}, \{(z,s)\in \mathbb{R}^m\times\mathbb{R}:g(z)\leq s\}\) 都是非空的閉凸集(closed nonempty convex set),也就是說 \(\arg\min_{x} L_{\rho}(x,z^k,y^k)\) , $ \arg\min_{z} L_{\rho}(x{k+1},z,yk)$ 的解一定是存在的,注意,這個假設仍然沒有限制 \(f,g\) 一定要是可微(differentiable)的,如果 \(f,g\)不可微,可以考慮使用次梯度,

假設2 可以這樣解釋鞍點的作用:假設 \((x^*,y^*,z^*)\) 為鞍點,則會有 \(L_0(x^*,z^*,y)\leq L_0(x^*,z^*,y^)* \leq L_0(x,z,y^*)\)毫無疑問,這個不等式是一定成立的,也就是說在 \((x^*,y^*,z^*)\) 這個點有一個方向更大,另一個方向更小,滿足鞍點的性質,進而推出 \(L_0\) 必有一個鞍點,從而說明了 ADMM 演算法是可解的,

基于這兩個假設,我們證明如下結果:

  • 目標函式值收斂,隨著 \(k\rightarrow\infty, ~ f(x^k)+g(z^k)\rightarrow p^*.\) 也就是說最終我們的目標函式值是最優的,
  • 對偶變數收斂,隨著 \(k\rightarrow\infty, ~ y^k\rightarrow y^*.\) 也就是最終對偶變數的值收斂到某個對偶變數的最優解,
  • 殘差收斂,隨著 \(k\rightarrow\infty, ~ r^k\rightarrow 0.\) 也就是說最終我們的解是可行(feasible)的,

八、寫在最后

事實上,實際當中你如果寫代碼跑ADMM會發現它不像那些梯度下降,牛頓法,很容易快速收斂到一個較高的誤差精度,ADMM實際的收斂速度往往比那些演算法慢得多,ADMM的主要應用,主要是在解空間規模非常大的情況下(比如 \(A,B\) 都是存盤空間上GB的矩陣),這個時候很多傳統的方法不好用,強制需要分塊求解,而且對解的絕對精度往往要求也沒那么高,當然,然后你還得祈禱在primal space上argmin那個迭代的形式比較簡單,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/288391.html

標籤:其他

上一篇:超清音質實時會議系統的背后 ,深入剖析 AliCloudDenoise 語音增強演算法

下一篇:使用「語雀」搭建個人博客

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more