UA MATH567 高维统计专题1 稀疏信号及其恢复4 Basis Pursuit的算法 Projected Gradient Descent
UA MATH567 高維統(tǒng)計(jì)專題1 稀疏信號(hào)及其恢復(fù)4 Basis Pursuit的算法 Projected Gradient Descent
前三講完成了對(duì)sparse signal recovery的modelling(即L0L_0L0?-minimization建模,但考慮到它很難用于實(shí)際計(jì)算,再用L1L_1L1?-minimization作為L0L_0L0?-minimization的convex relaxation,并且討論了二者full recovery的性質(zhì)),這一講介紹能實(shí)際用于求解L1L_1L1?-minimization
min?∥x∥1s.t.y=Ax\min \ \ \left\| x\right\|_1 \\ s.t. \ \ y = Axmin??∥x∥1?s.t.??y=Ax也就是basis pursuit問(wèn)題的算法。
首先考慮凸優(yōu)化中最常用的Gradient descent:要求解min?xf(x)\min_xf(x)minx?f(x),只需要按下面的規(guī)則update即可
xk+1=xk?tk?f(xk)x_{k+1}=x_k-t_k\nabla f(x_k)xk+1?=xk??tk??f(xk?)
其中tk↓0t_k \downarrow 0tk?↓0,表示每一次update的步長(zhǎng);但對(duì)于basis pursuit問(wèn)題,它的形式要更復(fù)雜一點(diǎn):
于是,我們先處理第一個(gè)難點(diǎn),等式約束y=Axy=Axy=Ax,定義一個(gè)線性流形
L={x∈Rn:y=Ax}L=\{x \in \mathbb{R}^n:y=Ax\}L={x∈Rn:y=Ax}
然后為了保證每一次update之后的xk+1x_{k+1}xk+1?滿足等式約束,我們可以取xk?tk?f(xk)x_k-t_k\nabla f(x_k)xk??tk??f(xk?)在LLL上的投影作為xk+1x_{k+1}xk+1?;
然后處理第二個(gè)難點(diǎn),在角點(diǎn)處不可微,我們可以用次梯度(subgradient)替代梯度。次梯度的定義是
f:S→Rf:S \to \mathbb{R}f:S→R is concave where SSS is a nonempty convex set. Then ξ\xiξ is called subgradient of fff at xˉ\bar xxˉ if
f(x)≤f(xˉ)+ξT(x?xˉ),?x∈Sf(x) \le f(\bar x)+\xi^T(x-\bar x),\forall x \in Sf(x)≤f(xˉ)+ξT(x?xˉ),?x∈S
f:S→Rf:S \to \mathbb{R}f:S→R is convex where SSS is a nonempty convex set. Then ξ\xiξ is called subgradient of fff at xˉ\bar xxˉ if
f(x)≥f(xˉ)+ξT(x?xˉ),?x∈Sf(x) \ge f(\bar x)+\xi^T(x-\bar x),\forall x \in Sf(x)≥f(xˉ)+ξT(x?xˉ),?x∈S
不清楚次梯度的計(jì)算和意義的同學(xué)可以看一下這個(gè)例題。
與梯度相比,雖然次梯度無(wú)法提供一個(gè)最速的“下降”方向(只能提供一種正確的下降方向),但它對(duì)目標(biāo)函數(shù)的可微性沒(méi)有要求,所以在basis pursuit中用次梯度代替梯度是非常合理的。
根據(jù)以上兩條推理,我們可以修正Gradient decent算法,使之適用于basis pursuit,修正后的這個(gè)算法一般被稱為projected gradient decent。
下面是這個(gè)算法的偽代碼以及用R寫的一個(gè)代碼示例:
在上面的偽代碼中,有一些值得注意的細(xì)節(jié)。x~=A?y\tilde x=A^{\dag}yx~=A?y中,AAA本身是不可逆的,但是我們希望x~∈L\tilde x \in Lx~∈L,所以取了AAA的pseudo-inverse A?A^{\dag}A?,可以驗(yàn)證
Ax~=AA?y=AA?(AA?)?1y=yA \tilde x =AA^{\dag}y=AA^*(AA^*)^{-1}y=yAx~=AA?y=AA?(AA?)?1y=y
也就是x~∈L\tilde x \in Lx~∈L,其中A?A^*A?表示AAA的共軛轉(zhuǎn)置;Γ\GammaΓ矩陣是一個(gè)投影矩陣,作用是把一個(gè)向量投影到AAA的核空間;在while循環(huán)中,
xt=x~+Γ(xt?1?sign(xt?1)t)x_t=\tilde x+\Gamma(x_{t-1}-\frac{sign(x_{t-1})}{t})xt?=x~+Γ(xt?1??tsign(xt?1?)?)
這里其實(shí)是把可行解分為了兩部分。因?yàn)閷?duì)于y=Axy=Axy=Ax的解集L={x:y=Ax}L=\{x:y=Ax\}L={x:y=Ax}而言,它可以表示為特解x~\tilde xx~和AAA的核空間Null(A)={x:0=Ax}Null(A)=\{x:0=Ax\}Null(A)={x:0=Ax}構(gòu)成的線性流形
L=x~+Null(A)L=\tilde x+Null(A)L=x~+Null(A)
因此固定了一個(gè)特解x~\tilde xx~之后,要得到使得目標(biāo)函數(shù)∥x∥1\left\| x \right\|_1∥x∥1?最小的解,我們只需要在Null(A)Null(A)Null(A)中進(jìn)行下降即可,這就是Γ(xt?1?sign(xt?1)t)\Gamma(x_{t-1}-\frac{sign(x_{t-1})}{t})Γ(xt?1??tsign(xt?1?)?)這部分的作用,其中Γ\GammaΓ的作用是將(xt?1?sign(xt?1)t)(x_{t-1}-\frac{sign(x_{t-1})}{t})(xt?1??tsign(xt?1?)?)投影到Null(A)Null(A)Null(A)中,如果不做投影,那么第ttt次update就是xt?1?sign(xt?1)tx_{t-1}-\frac{sign(x_{t-1})}{t}xt?1??tsign(xt?1?)?,其中1/t1/t1/t是步長(zhǎng),sign(xt?1)sign(x_{t-1})sign(xt?1?)就是次梯度。
PS <- function(A,y,max_iter = 1000){m = nrow(A); n = ncol(A)A1 = t(A)%*%solve(A%*%t(A))Gamma = diag(n)-A1%*%Ax_tilde = A1%*%yx0 = rep(0,n); t = 0while(t<max_iter){t = t+1x1 = x_tilde + Gamma%*%(x0 - (1/t)*sign(x0))x0 = x1}return(x0) }需要注意的是這個(gè)R代碼示例只是簡(jiǎn)單翻譯了偽代碼,還有很多可以優(yōu)化的地方,比如矩陣求逆的計(jì)算、初始值的選取、while循環(huán)的stopping criteria等;另外,想更詳細(xì)的了解這個(gè)算法的同學(xué)可以去看Wright and Ma (2020)那本高維數(shù)據(jù)分析的section 2.3.3;另外,在這本書上的算法都可以找到對(duì)應(yīng)的matlab code,想學(xué)習(xí)一下怎么把一個(gè)用偽代碼描述的算法變成一個(gè)完整的優(yōu)化過(guò)的算法的同學(xué)可以自己去找一下。
總結(jié)
以上是生活随笔為你收集整理的UA MATH567 高维统计专题1 稀疏信号及其恢复4 Basis Pursuit的算法 Projected Gradient Descent的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: UA MATH567 高维统计专题1 稀
- 下一篇: 物理光学8 多波束干涉