主頁 >  其他 > ?機器學習?交替方向乘數法(Alternating Direction Method of Multipliers,ADMM)

?機器學習?交替方向乘數法(Alternating Direction Method of Multipliers,ADMM)

2021-09-16 08:12:20 其他

最近研究二次判別分析(Quadratic Discriminant Analysis,QDA),發現運用到了交替方向乘數法(ADMM),就很迷,(關鍵是太菜

很多博主都是直接翻譯或者搬運的,搜羅且了解了很多相關知識,那就來個大總結及其一些自己的想法吧!

內力有限,僅供學習交流)

確實很難,理論性很強,沒有虛的,閱讀完內容需要有“勇氣”!



ADMM

背景

咱們先來了解了解,ADMM到底是個什么東西?

交替方向乘數法(Alternating Direction Method of Multipliers),從字面意思上理解,交替方向?是不是很迷?交替計算?交替求解?,,,難道是對偶問題?對偶求解?

先不管了,再看后半句,乘數法?咦~是不是感覺有點熟悉,

la.la.la…Lagrange乘數法???

(沒錯,就是Lagrange,直接干起來,等等,這里只說對了一半,具體咱們下面慢慢道來~)

ADMM是一個不算是太新的演算法,其實就是一種求解優化問題計算框架, 適用于求解分布式凸優化問題,特別是統計學習問題, ADMM 通過分解協調(Decomposition-Coordination)程序,將大的全域問題分解為多個較小較容易求解的區域子問題,并通過協調子問題的解而得到大的全域問題的解,

簡單的理解就是,整個演算法只是整合許多不少經典優化思路,然后結合現代統計學習所遇到的問題,提出了一個比較一般的比較好實施的分布式計算框架,

而他的歷史可以追溯到看下面:

ADMM 最早分別由 Glowinski & Marrocco 及 Gabay & Mercier 于 1975 年和 1976年提出,并被 Boyd 等人于 2011 年重新綜述并證明其適用于大規模分布式優化問題,由于 ADMM的提出早于大規模分布式計算系統和大規模優化問題的出現,所以在 2011 年以前,這種方法并不廣為人知,

作為搞自動化、控制、優化、診斷…的本菜來說,當然是奔著優化求解去學習的,

先來看看一個大佬對目前大資料及其優化的見解,簡直是一針見血,說出來我的心聲:

業界一直在談論大資料,對于統計而言,大資料其實意味著要不是樣本量增加 n → ∞ n\rightarrow \infty n,要不就是維度的增加 p → ∞ p \rightarrow \infty p,亦或者兩者同時增加,并且維度與樣本量的增長速度呈線性或者指數型增長,在稀疏性的假設條件下,再加上一些正則性方法,統計學家可以證明各種加penalty的模型所給出的引數估計具有良好的統計性質,收斂速度也有保證,同時還會給出一些比較好的迭代演算法,但是,他們并沒有考慮真實環境下的所消耗的計算時間,雖然統計學家也希望盡量尋求迭代數目比較少的演算法(比如one-step估計),但是面對真實的Gb級別以上的資料,很多時候我們還是無法直接用這些演算法,原因是一般的硬體都無法支撐直接對所有資料進行運算的要求,如果想減少抽樣誤差,不想抽樣,又想提高估計的精度,那么還是需要尋求其他思路,結合已有的模型思想來解決這些問題,在目前條件下,并行化、分布式計算是一種比較好的解決思路,利用多核和多機器的優勢,這些好演算法便可以大規模應用,處理大資料優勢便體現出來了,對于統計而言,資料量越大當然資訊越可能充分(假設冗余成分不是特別多),因為大樣本性質本身就希望樣本越多越好嘛,—源自此處

還需要知道的一點,我們都知道搞優化會遇到很多問題,無非是資料量上和維度的變化,關鍵詞大都為:降維,收斂,迭代等等,而這里的ADMM演算法不同于那些梯度下降法或其他改進的SGDM、RMSProp、Adam等等更多高級演算法,應用的大多為以GB級別的資料量的資料集,如果與SGDM、Adam這些演算法在同樣的低維資料(這里指的是較GB級別低的)進行比較,收斂速度絕壁沒它們好,很慢,實際的收斂速度往往比那些演算法慢得多,ADMM的主要應用,主要是在解空間規模非常大的情況下(比如XY 都是存盤空間上GB的超大規模矩陣),這個時候很多傳統的方法不好用,強制需要分塊求解,而且對解的絕對精度往往要求也沒那么高,所以我覺得這是,需要提前知道的一點,

確實,這個演算法很難理解,公式也很難,不敢保證,我能將其解釋清楚,抱著互相學習的態度寫這篇Blog!(望各位大佬批評指正)

具體結構,從ADMM需要用到的背景知識ADMM原理具體應用這幾塊進行解釋,

下面咱們從基本框架結構入手吧~

背景知識

《Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers》文章中提到了一些預備知識,學過最優化或最優估計等優化課程的童鞋應該能夠很快能夠理解,對偶問題若很陌生的小伙伴,可以補充補充相關的知識,

先來了解一些基本演算法思想吧~

對偶上升

對于凸函式的優化問題,對偶上升法核心思想就是引入一個對偶變數,然后利用交替優化的思路,使得兩者同時達到optimal

讀到這里,讓我們想起咱們的主題,“交替方向”,是不是有點感覺了,
對于凸函式,我們只需要知道,凸優化問題有一個良好的性質即:區域最優解便是全域最優解
對凸函式有不解的地方,可看這位大佬的博客,

一個凸函式的對偶函式其實就是原凸函式的一個下界,因此可以證明一個較好的性質:在強對偶性假設下,即最小化原凸函式(primal)等價于最大化對偶函式(dual),兩者會同時達到optimal,這種轉化可以將原來很多的引數約束條件變得少了很多,以利于做優化,具體表述如下:
min ? f ( x ) s . t . A x = b \begin{array}{l} \min \quad f(x) \\s.t.\quad A x=b \end{array} minf(x)s.t.Ax=b?

其中的s.t.約束項,有些地方可能寫成“ A x + B z = C Ax+Bz=C Ax+Bz=C”的形式,原理都是一樣的,只是多了一個變數而已,不用過于擔心,理解到整個演算法的思路就好,(先不透露為什么會出現這個公式,哈哈哈哈)

對于對偶問題有所不解的,可以簡單理解成為原函式是Y關于X的函式,那么對偶的函式則為X關于Y的函式,這樣理解是不是更容易一點呢,

其中 f ( x ) f(x) f(x)為目標函式也即是凸函式,然后拉格朗日干起來,則為:
L ( x , y ) = f ( x ) + y T ( A x ? b ) L(x, y)=f(x)+y^{T}(A x-b) L(x,y)=f(x)+yT(Ax?b)
其中 y T y^{T} yT為拉格朗日乘子,對偶的 L ( x , y ) L(x,y) L(x,y)函式為:
g ( y ) = inf ? x L ( x , y ) = ? f ? ( ? A T y ) ? b T y g(y)=\inf _{x} L(x, y)=-f^{*}(-A^{T}y)-b^{T}y g(y)=xinf?L(x,y)=?f?(?ATy)?bTy
對于上式, inf ? \inf inf 代表的是一個下界,之所以用下確界而不是用min,可能是因為有些函式沒有極值(定義域取不到),但有一個下確界,

y y y 相對于原 L ( x , y ) L(x,y) L(x,y)函式來說,是拉格朗日乘子的對偶變數(這里表現為矩陣的轉置

現在我們來看我們的原問題(Primal)的對偶(Dual)函式:
max ? y g ( y ) \max_y \quad g(y) ymax?g(y)
強對偶的假設下,原問題和對偶問題的解都是一樣的,同時達到最優,

什么是強對偶性?就是指原問題的解與對偶問題的解是相同的,也即是: x ? = y ? x^{*}=y^{*} x?=y?

知道了原問題和對偶的解都是最優解,那么我們是不是可以從對偶問題入手,找到對偶問題的最優解 y ? y^{*} y?,這樣就能對應的求得原問題的解 x ? x^{*} x?,
x ? = arg ? min ? x L ( x , y ? ) x^{*}=\arg \min_{x} L(x, y^{*}) x?=argxmin?L(x,y?)

arg 是變元(即自變數argument)的英文縮寫,
arg min 就是使后面這個式子達到最小值時的變數的取值>
arg max 就是使后面這個式子達到最大值時的變數的取值

假如 g ( y ) g(y) g(y)可求其導數,那么利用梯度上升法交替更新引數,使得同時收斂到最優,迭代如下:
x k + 1 : = arg ? min ? x L ( x , y k ) ( x ? 最 小 化 步 ) y k + 1 : = y k + α k ? g ( y ) = y k + α k ( A x k + 1 ? b ) ( 對 偶 變 量 更 新 , α k 是 步 長 ) x^{k+1}:=\arg \min _{x} L\left(x, y^{k}\right) \quad(x -最小化步 ) \\ y^{k+1}:=y^{k}+\alpha^{k} \nabla g(y)=y^{k}+\alpha^{k}\left(A x^{k+1}-b\right) \quad (對偶變數更新, \alpha^{k} 是步長 ) xk+1:=argxmin?L(x,yk)(x?)yk+1:=yk+αk?g(y)=yk+αk(Axk+1?b)(,αk)

由于以上需要的 f ( x ) 、 α f(x)、\alpha f(x)α條件都非常的苛刻,難以滿足其要求,一般應用中都不會用到對偶上升法,

對偶分解

雖然對偶上升的方法有所缺陷,導致我們在實際操作中會遇到重重困難,

但是世界萬物都是存在著兩面,有其弊也有其利,就如下面的太極雙魚圖


那么,我們可以利用其優秀的一面,當目標函式 f f f可分的(separable)時候(引數亦或feature可分),整個問題可以拆解多個子引數問題,分塊優化后匯集起來整體更新,

這也就是快接近咱們的主題了,分布式凸優化問題,

我們可以分塊,然后并行化處理,

由此,我們可分離的目標函式為:
min ? f ( x ) = ∑ i = 1 N f i ( x i ) s . t . A x = ∑ i = 1 N A i x i = b \min \quad f(x)=\sum_{i=1}^{N} f_{i}\left(x_{i}\right) \\ s.t. \quad Ax=\sum_{i=1}^{N}A_ix_i=b minf(x)=i=1N?fi?(xi?)s.t.Ax=i=1N?Ai?xi?=b
其中,對 A A A矩陣按照列分開, x = ( x 1 , x 2 , . . . , x N ) , A x=(x_1,x_2,...,x_N),A x=(x1?,x2?,...,xN?)A 可分解為 A = ( A 1 , A 2 , . . . , A N ) A=(A_1,A_2,...,A_N) A=(A1?,A2?,...,AN?)

現在,拉格朗日干起來,得到了:
L ( x , y ) = ∑ i = 1 N L i ( x i , y ) = ∑ i = 1 N ( f i ( x i ) + y T A i x i ? ( 1 / N ) y T b ) L(x, y)=\sum_{i=1}^{N} L_{i}\left(x_{i}, y\right)=\sum_{i=1}^{N}\left(f_{i}\left(x_{i}\right)+y^{T} A_{i} x_{i}-(1 / N) y^{T} b\right) L(x,y)=i=1N?Li?(xi?,y)=i=1N?(fi?(xi?)+yTAi?xi??(1/N)yTb)
由此,可以得知,當程式迭代優化很多次的時候,其中 x x x最小化步長,可拆分為多個子問題來進行并行運算(注意這里的拆分并行和神經網路中批量化Batch_size不同,不會前后影響,如改變 W ^ \hat W W^后批量Normalization會改變 Z Z Z的值,在這里不會),同時也由于是強對偶關系,對偶變數更新不變這對于多特征任務時是很有用的,
x i k + 1 : = arg ? min ? x L i ( x i , y k ) ( 多 個 x i 并 行 最 小 化 步 ) y k + 1 : = y k + α k ? g ( y ) = y k + α k ( A x k + 1 ? b ) ( 匯 集 整 體 的 x , 然 后 對 偶 變 量 更 新 ) x_{i}^{k+1}:=\arg \min _{x} L_{i}\left(x_{i}, y^{k}\right) \quad\left(\right. 多個 x_{i} 并行最小化步) \\ y^{k+1}:=y^{k}+\alpha^{k} \nabla g(y)=y^{k}+\alpha^{k}\left(A x^{k+1}-b\right) \quad( 匯集整體的 x , 然后對偶變數更新 ) xik+1?:=argxmin?Li?(xi?,yk)(xi?)yk+1:=yk+αk?g(y)=yk+αk(Axk+1?b)(x,)

對偶分解是非常經典的優化方法,可追溯到1960年代,這種思想對后面的分布式優化方法影響較大,比如近期的graph-structure優化問題,(具體可自行查詢一下下)

增廣的拉格朗日乘數法

增廣的拉格朗日乘數法,說到這里,可就太熟悉了,無非就是加上各種懲罰項,L0、L1、L2正則化,lasso套索、嶺回歸等等,故,在我們上面的 L ( x , y ) L(x,y) L(x,y)拉格朗日項后面加上懲罰項,搞機器學習的都知道,增加懲罰項或正則化,目的是為了擴大我們的約束條件,讓一些噪聲或者不夠到約束的值能夠融入進去,SVM的軟間隔就是一個很好的例子,具體可自行了解,這里就不擴展開來了,

反正,記住一點即可:增加懲罰項,擴大約束條件的容納范圍,放松假設條件,

可使其收斂的更快,

那么,增加懲罰項的拉格朗日項為:
L ρ ( x , y ) = f ( x ) + y T ( A x ? b ) + ρ 2 ∥ A x ? b ∥ 2 2 L_{\rho}(x, y)=f(x)+y^{T}(A x-b)+\frac{\rho}{2}\|A x-b\|_{2}^{2} Lρ?(x,y)=f(x)+yT(Ax?b)+2ρ?Ax?b22?
其中,最后加了的L2正則化,二范數,也就是嶺回歸優化項就是懲罰項, ρ \rho ρ 則為我們的松弛因子(懲罰系數),用于更加精細的調節擴大的范圍邊界,

我們可以將其等價為優化的目標函式形式:
min ? f ( x ) + ρ 2 ∥ A x ? b ∥ 2 2 s.t. A x = b \begin{array}{lc} \min & f(x)+\frac{\rho}{2}\|A x-b\|_{2}^{2} \\ \text { s.t. } & A x=b \end{array} min s.t. ?f(x)+2ρ?Ax?b22?Ax=b?
我們增加的懲罰函式的好處是為了讓對偶函式
g ρ ( y ) = inf ? x L ρ ( x , y ) g_{\rho}(y)=\inf _{x} L_{\rho}(x, y) gρ?(y)=xinf?Lρ?(x,y)
更具有可導性,更新引數的計算程序和對偶上升的一致,除最小化 x x x的時候加上懲罰項:
x k + 1 = arg ? min ? x L ρ ( x , y k ) y k + 1 = y k + ρ ( A x k + 1 ? b ) \begin{aligned} x^{k+1} &=\arg \min _{x} L_{\rho}\left(x, y^{k}\right) \\ y^{k+1} &=y^{k}+\rho\left(A x^{k+1}-b\right) \end{aligned} xk+1yk+1?=argxmin?Lρ?(x,yk)=yk+ρ(Axk+1?b)?
由于我們更新的 x 、 y x、y xy引數中都包含有懲罰項,其中 y y y的更新引數中, α \alpha α步長則變為了懲罰項中的松弛因子 ρ \rho ρ,由此原函式 f ( x ) f(x) f(x)則不需要滿足嚴格凸函式的限制了,在此條件下其對偶函式和原函式也能同時達到最優求解,

解除嚴格凸函式的限制的任務已經完成了,但是同時又存在另外一個問題,當增加懲罰項后,其平方項寫成矩陣形式無法是用之前那種分塊形式的,因此,在更新 x x x最小化時,無法做到并行優化多個 x i x_i xi?引數,關于新的問題的解決辦法,ADMM則殺出重圍了!!!

ADMM演算法原理

在上述的層層遞進的方法中,你是否也發現了其中的奧秘,對偶上升法解決了可分解性問題,增廣乘子法解決了嚴格的凸函式限制條件,增強了收斂性,那么是否,我們可以將二者集合在一起,取其各自的優點呢?

答案當然是肯定的,那就是ADMM演算法,同時解決了將原函式進行分解和擴展函式的約束范圍問題,使得 f ( x ) f(x) f(x)能夠適應于更多的更廣泛的約束條件求解問題,

結合兩者的優點,就有了下式目標函式:
min ? f ( x ) + g ( z ) s . t . A x + B z = c \begin{array}{lc} \min & f(x)+g(z) \\ s . t . & A x+B z=c \end{array} mins.t.?f(x)+g(z)Ax+Bz=c?
從中,我們可以看出,優化后的目標函式增加了新的變數 g ( z ) g(z) g(z),約束條件則增加了 B z Bz Bz,可以看出,我們將原 X X X分解了,原始變數和目標函式都拆分開了,對于原論文中的解釋,感覺有一些蹊蹺,但簡單的理解就是將最初的原始變數就拆分為 x x x z z z兩個變數,這樣在后面的優化求解中,就不需要在融合到一起,最后求解出來也是兩個值,也即是從一開始就將其分解開來,保證了前面優化程序的可分解性,

緊接著,我們的增廣拉格朗日項:
L ρ ( x , z , y ) = f ( x ) + g ( z ) + y T ( A x + B z ? c ) + ( ρ / 2 ) ∥ A x + B z ? c ∥ 2 2 L_{\rho}(x, z, y)=f(x)+g(z)+y^{T}(A x+B z-c)+(\rho / 2)\|A x+B z-c\|_{2}^{2} Lρ?(x,z,y)=f(x)+g(z)+yT(Ax+Bz?c)+(ρ/2)Ax+Bz?c22?
和上面的增廣拉格朗日一樣,只不過增加了新的變數 z z z而已,

于是ADMM的優化就變成了如下序貫型迭代(這正是被稱作alternating direction交替方向的緣由):
x k + 1 = arg ? min ? x L ρ ( x , z k , y k ) z k + 1 = arg ? min ? z L ρ ( x k + 1 , z , y k ) y k + 1 = y k + ρ ( A x k + 1 + B z k + 1 ? c ) \begin{aligned} x^{k+1} &=\arg \min _{x} L_{\rho}\left(x, z^{k}, y^{k}\right) \\ z^{k+1} &=\arg \min _{z} L_{\rho}\left(x^{k+1}, z, y^{k}\right) \\ y^{k+1} &=y^{k}+\rho\left(A x^{k+1}+B z^{k+1}-c\right) \end{aligned} xk+1zk+1yk+1?=argxmin?Lρ?(x,zk,yk)=argzmin?Lρ?(xk+1,z,yk)=yk+ρ(Axk+1+Bzk+1?c)?

可以看出,每次迭代分為三步:

  1. 求解與 x x x 相關的最小化問題,更新變數 x x x
  2. 求解與 z z z 相關的最小化問題,更新變數 z z z
  3. 更新對偶變數 u u u

ADMM名稱中的“乘子法”是指這是一種使用增廣拉格朗日函式(帶有二次懲罰項)的對偶上升(Dual Ascent)方法,而“交替方向”是指變數 x 和 z 是交替更新的,兩變數的交替更新是在 f ( x ) f(x) f(x) g ( z ) g(z) g(z)可分時可以將優化問題分解的關鍵原因,

到此,通過以上的內容來理解“交替方向乘數法(ADMM)”是不是就豁然開朗了許多,開篇說很難,其實是不是并沒有那么的難,


其實,還有一個更為簡潔的縮放形式(Scaled form),令 u = ( 1 / ρ ) y u = (1/\rho)y u=(1/ρ)y,也就是對對偶變數做了縮放處理,對 A x + B z = c Ax+Bz=c Ax+Bz=c進行配方,得
x k + 1 = arg ? min ? x L ρ ( x , z k , y k ) = arg ? min ? ( f ( x ) + ( ρ / 2 ) ∥ A x + B z k ? c + u k ∥ 2 2 ) z k + 1 = arg ? min ? z L ρ ( x k + 1 , z , y k ) = arg ? min ? ( g ( z ) + ( ρ / 2 ) ∥ A x k + 1 + B z ? c + u k ∥ ) u k + 1 = u k + A x k + 1 + B z k + 1 ? c \begin{array}{l} x^{k+1}=\arg \min _{x} L_{\rho}\left(x, z^{k}, y^{k}\right)=\arg \min \left(f(x)+(\rho / 2)\left\|A x+B z^{k}-c+u^{k}\right\|_{2}^{2}\right) \\ z^{k+1}=\arg \min _{z} L_{\rho}\left(x^{k+1}, z, y^{k}\right)=\arg \min \left(g(z)+(\rho / 2)\left\|A x^{k+1}+B z-c+u^{k}\right\|\right) \\ u^{k+1}=u^{k}+A x^{k+1}+B z^{k+1}-c \end{array} xk+1=argminx?Lρ?(x,zk,yk)=argmin(f(x)+(ρ/2)?Ax+Bzk?c+uk?22?)zk+1=argminz?Lρ?(xk+1,z,yk)=argmin(g(z)+(ρ/2)?Axk+1+Bz?c+uk?)uk+1=uk+Axk+1+Bzk+1?c?

當然,寫成這種形式有利于后面簡化優化問題,也可不作任何的處理,

具體應用

大佬回答及點評

ADMM( Alternating Direction Method of Multipliers)演算法是機器學習中比較廣泛使用的約束問題最優化方法,它是ALM演算法的一種延伸,只不過將無約束優化的部分用塊坐標下降法(block coordinate descent,或叫做 alternating minimization)來分別優化,產生這種方法主要是為了彌補二次懲罰的缺點,
在一些問題當中,用二次懲罰來近似約束問題在最優點附近需要懲罰項的系數趨近于無窮,而這種要求會使得海森矩陣很大,因此近似的目標函式很不穩定,為了解決這個問題,引入了線性逼近的部分,通過線性項系數不斷的接近最優解(對偶上升),使得在二次懲罰項的系數很小的情況下,也能得到滿足要求精度的解,ADMM目前是比較成熟,比較受歡迎的約束問題最優化通用框架,(參考源自知乎大佬)

在這里,關于知乎大佬的回答,我說兩句,從上面的對偶上升,我們發現了可以解決分解性問題,通過交替更新 x 、 y x、y xy引數,但實際的 f ( x ) f(x) f(x)是很難滿足,故將加入新變數 g ( z ) g(z) g(z)來提前分解原始變數,這樣就解決了第一個問題;同時又引入了增廣的拉格朗日乘數法,也即增加懲罰項,來改進擴大其求解范圍,使得 f ( x ) f(x) f(x)的約束更小,適應性更好,

受約束的凸優化問題

一般的受約束的凸優化問題可以寫成如下形式:
min ? f ( x ) s.t x ∈ C \begin{array}{ll} \min & f(x) \\ \text { s.t } & x \in \mathcal{C} \end{array} min s.t ?f(x)xC?
可將此型別寫成ADMM形式,增加新變數,以分解原始變數:
min ? f ( x ) + g ( z ) s.t x ? z = 0 \begin{array}{l} \min \quad f(x)+g(z) \\ \text { s.t } \quad x-z=0 \end{array} minf(x)+g(z) s.t x?z=0?
相應的增廣拉格朗日項為:
L ρ ( x , z , u ) = f ( x ) + g ( z ) + ( ρ / 2 ) ∥ x ? z + u ∥ 2 2 L_{\rho}(x, z, u)=f(x)+g(z)+(\rho / 2)\|x-z+u\|_{2}^{2} Lρ?(x,z,u)=f(x)+g(z)+(ρ/2)x?z+u22?
其中的 g g g 函式即 C C C示性函式,上述是scaled形式,那么具體演算法就是:
x k + 1 = arg ? min ? ( f ( x ) + ( ρ / 2 ) ∥ x ? z k + u k ∥ 2 2 ) z k + 1 = Π C ( x k + 1 + u k ) u k + 1 = u k + x k + 1 ? z k + 1 \begin{aligned} x^{k+1} &=\arg \min \left(f(x)+(\rho / 2)\left\|x-z^{k}+u^{k}\right\|_{2}^{2}\right) \\ z^{k+1} &=\Pi_{\mathcal{C}}\left(x^{k+1}+u^{k}\right) \\ u^{k+1} &=u^{k}+x^{k+1}-z^{k+1} \end{aligned} xk+1zk+1uk+1?=argmin(f(x)+(ρ/2)?x?zk+uk?22?)=ΠC?(xk+1+uk)=uk+xk+1?zk+1?

示性函式,顧名思義,是表示自變數性態的一個函式,

統計學習中的應用

統計學習問題也是模型擬合問題(我們知道有擬合和過擬合),可表示為:
min ? l ( D , d , z ) + r ( z ) \min l(D,d,z)+r(z) minl(D,d,z)+r(z)

  • 其中, z ∈ R n z\in R^{n} zRn代表待學習的引數
  • D ∈ R m × m D\in R^{m\times m} DRm×m是模型的輸入資料集
  • d ∈ R m d\in R^{m} dRm是模型的輸出資料集
  • l : R m × n × R m × R n l:R^{m\times n}\times R^{m} \times R^{n} l:Rm×n×Rm×Rn是損失函式
  • r : R n → R r:R^{n}\rightarrow R r:RnR是正則化項
  • m m m代表的是資料的個數, n n n表示的是特征的個數
  1. 對于帶L1正則化項的線性回歸(Lasso),其平方損失函式為
    l ( D , d , z ) = ( 1 / 2 ) ∥ D z ? d ∥ 2 2 l(D, d, z)=(1 / 2)\|D z-d\|_{2}^{2} l(D,d,z)=(1/2)Dz?d22?
  2. 對于邏輯回歸(Logistic Regression),其極大似然損失函式為
    l ( D , d , z ) = 1 T ( log ? ( exp ? ( D z ) + 1 ) ? D z d T ) l(D, d, z)=\mathbf{1}^{T}\left(\log (\exp (D z)+\mathbf{1})-D z d^{T}\right) l(D,d,z)=1T(log(exp(Dz)+1)?DzdT)
  3. 對于線性支持向量機(Linear Support Vector Machine),其合頁(Hinge)損失函式為
    l ( D , d , z ) = 1 T ( 1 ? D z d T ) + l(D, d, z)=\mathbf{1}^{T}\left(\mathbf{1}-D z d^{T}\right)_{+} l(D,d,z)=1T(1?DzdT)+?

將訓練資料在其原始樣本M維度下將其劃分為N塊:
D = ( D 1 ? D N ) , d = ( d 1 ? d N ) D=\left(\begin{array}{c} D_{1} \\ \vdots \\ D_{N} \end{array}\right), d=\left(\begin{array}{c} d_{1} \\ \vdots \\ d_{N} \end{array}\right) D=????D1??DN??????,d=????d1??dN??????

由此我們可得到分塊的目標函式來實作分布式計算:
min ? ∑ i = 1 N l i ( D i , d i , x i ) + r ( z ) s . t . x i ? z = 0 ( i = 1 , 2 , . . . , N ) \min \quad \sum_{i=1}^{N} l_i(D_i,d_i,x_i)+r(z) \\ s.t. \quad x_i-z=0 \quad (i=1,2,...,N) mini=1N?li?(Di?,di?,xi?)+r(z)s.t.xi??z=0(i=1,2,...,N)

相應的簡潔迭代更新 D 、 d 、 x D、d、x Ddx的計算方式為:
x i k + 1 : = arg ? min ? x i ( l i ( D i , d i , x i ) + ( ρ / 2 ) ∥ x i ? z k + u i k ∥ 2 2 ) z k + 1 : = arg ? min ? z ( r ( z ) + ( N ρ / 2 ) ∥ z ? x ˉ k + 1 ? u ˉ k ∥ 2 2 ) u i k + 1 : = u i k + x i k + 1 ? z k + 1 \begin{array}{l} x_{i}^{k+1}:=\arg \min _{x_{i}}\left(l_{i}\left(D_{i}, d_{i}, x_{i}\right)+(\rho / 2)\left\|x_{i}-z^{k}+u_{i}^{k}\right\|_{2}^{2}\right) \\ z^{k+1}:=\arg \min _{z}\left(r(z)+(N \rho / 2)\left\|z-\bar{x}^{k+1}-\bar{u}^{k}\right\|_{2}^{2}\right) \\ u_{i}^{k+1}:=u_{i}^{k}+x_{i}^{k+1}-z^{k+1} \end{array} xik+1?:=argminxi??(li?(Di?,di?,xi?)+(ρ/2)?xi??zk+uik??22?)zk+1:=argminz?(r(z)+(Nρ/2)?z?xˉk+1?uˉk?22?)uik+1?:=uik?+xik+1??zk+1?

(完結撒花?)


個人見解

最后說兩句,雖然優化演算法千千萬,在不同時期,隨著科技的發展與進步,老的演算法暫時過時,新的演算法逐步崛起,但終歸要落實到實際應用當中才是真正的好演算法,并不是說一味的提高求解速度,提高精度,有些時候成本會很高,有些時候老的演算法會被拾起成為yyds,新的演算法未必就好,終究說來,希望能夠有更多更實際應用范圍更加廣泛的優化演算法逐步崛起吧~

Reference

  • http://maths.nju.edu.cn/~hebma/slides/20C.pdf
  • https://www.zhihu.com/question/36566112/answer/79535746
  • http://shijun.wang/2016/01/19/admm-for-distributed-statistical-learning/
  • http://www-scf.usc.edu/~yuhao/journal/SimpleParallel-SIOPT-2017.pdf
  • 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.
  • Eckstein J, Yao W. Understanding the convergence of the alternating direction method of multipliers: Theoretical and computational perspectives[J]. Pac. J. Optim., 2014.
  • Lusk E, Huss S, Saphir B, et al. MPI: A Message-Passing Interface Standard Version 3.1[J], 2015.
  • Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters[J]. Communications of the ACM, 2008, 51(1): 107-113.

?堅持讀Paper,堅持做筆記,堅持學習?!!!
?To Be No.1

??

學習DeepLearning堅持!30天計劃!!!

打卡5 /30 Day!!!


?創作不易?,過路能?關注收藏點個贊?三連就最好不過了

?( ′・?・` )

?


When you think your life sucks, just think to yourself about how many people have it worse.

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

標籤:AI

上一篇:【python種子專案ppc】一行代碼生成專案與開發詳細指導

下一篇:本科生學深度學習-史上最容易懂的RNN文章,小白也能看得懂,評論繼續送書

標籤雲
其他(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