Bregman距离
定义一个凸函数
E
E
E中点
u
u
u与点
v
v
v的Bregman距离为
D
E
p
(
u
,
v
)
=
E
(
u
)
−
E
(
v
)
−
<
p
,
u
−
v
>
D_{E}^{p}\left( u,v \right)=E\left( u \right)-E\left( v \right)-<p,u-v>
DEp(u,v)=E(u)−E(v)−<p,u−v>
其中,
p
p
p为
E
E
E在点
v
v
v的次梯度。显然,可以得到类似于距离的性质
非负性:
D
E
p
(
u
,
v
)
≥
0
D_{E}^{p}\left( u,v \right)\ge 0
DEp(u,v)≥0
当
u
≤
w
≤
v
u\le w\le v
u≤w≤v时,有
D
E
p
(
u
,
v
)
≥
D
E
p
(
w
,
v
)
D_{E}^{p}\left( u,v \right)\ge D_{E}^{p}\left( w,v \right)
DEp(u,v)≥DEp(w,v)
Bregman迭代
考虑如下约束的优化问题
min
u
E
(
u
)
+
λ
H
(
u
)
\underset{u}{\mathop{\min }}\,\ E\left( u \right)\text{+}\lambda H\left( u \right)
umin E(u)+λH(u)
其中,
E
E
E,
H
H
H均为凸函数,且
min
u
H
(
u
)
=
0
\underset{u}{\mathop{\min }}\,H\left( u \right)=0
uminH(u)=0
可以迭代求解上述问题
u
k
+
1
=
min
u
D
E
p
(
u
,
u
k
)
+
λ
H
(
u
)
=
min
u
E
(
u
)
−
<
p
k
,
u
−
u
k
>
+
λ
H
(
u
)
\begin{aligned} & {{u}^{k+1}}=\underset{u}{\mathop{\min }}\,\ D_{E}^{p}\left( u,{{u}^{k}} \right)\text{+}\lambda H\left( u \right) \\ & =\underset{u}{\mathop{\min }}\,E\left( u \right)-<{{p}^{k}},u-{{u}^{k}}>\text{+}\lambda H\left( u \right) \end{aligned}
uk+1=umin DEp(u,uk)+λH(u)=uminE(u)−<pk,u−uk>+λH(u)
假设
H
H
H可微,且
0
∈
∂
(
D
E
p
(
u
,
u
k
)
+
λ
H
(
u
)
)
0\in \partial \left( D_{E}^{p}\left( u,{{u}^{k}} \right)+\lambda H\left( u \right) \right)
0∈∂(DEp(u,uk)+λH(u))表示在
u
k
+
1
{{u}^{k+1}}
uk+1处的次梯度,由于
p
k
+
1
∈
∂
E
(
u
k
+
1
)
{{p}^{k+1}}\in \partial E\left( {{u}^{k+1}} \right)
pk+1∈∂E(uk+1),那么可以得到
p
k
+
1
=
p
k
−
∇
H
(
u
k
+
1
)
{{p}^{k+1}}={{p}^{k}}-\nabla H\left( {{u}^{k+1}} \right)
pk+1=pk−∇H(uk+1)
事实上,在一般条件的约束下,随着
k
k
k的增加,
H
(
u
k
)
H\left( {{u}^{k}} \right)
H(uk)是趋近于0的。当然在
E
E
E,
H
H
H均为凸函数且
H
H
H可微的条件下还能得到
H
(
u
)
H\left( u \right)
H(u)是单调递减且收敛的。
下面用该方法来解决实际的问题。对于以下约束问题
{
min
u
E
(
u
)
s
.
t
.
A
u
=
b
\left\{ \begin{aligned} & \underset{u}{\mathop{\min }}\,\ E\left( u \right) \\ & s.t.\ \ Au=b \\ \end{aligned} \right.
⎩⎨⎧umin E(u)s.t. Au=b
可以将其转化为
min
u
E
(
u
)
+
λ
2
∥
A
u
−
b
∥
2
2
\underset{u}{\mathop{\min }}\,\ E\left( u \right)\text{+}\frac{\lambda }{2}\left\| Au-b \right\|_{2}^{2}
umin E(u)+2λ∥Au−b∥22
利用Bregman迭代可以求解,迭代如下:
u
k
+
1
=
min
u
D
E
p
(
u
,
u
k
)
+
λ
2
∥
A
u
−
b
∥
2
2
=
min
u
E
(
u
)
−
<
p
k
,
u
−
u
k
>
+
λ
2
∥
A
u
−
b
∥
2
2
\begin{aligned} & {{u}^{k+1}}=\underset{u}{\mathop{\min }}\,\ D_{E}^{p}\left( u,{{u}^{k}} \right)\text{+}\frac{\lambda }{2}\left\| Au-b \right\|_{2}^{2} \\ & =\underset{u}{\mathop{\min }}\,E\left( u \right)-<{{p}^{k}},u-{{u}^{k}}>\text{+}\frac{\lambda }{2}\left\| Au-b \right\|_{2}^{2} \end{aligned}
uk+1=umin DEp(u,uk)+2λ∥Au−b∥22=uminE(u)−<pk,u−uk>+2λ∥Au−b∥22
P
k
+
1
=
p
k
−
λ
A
T
(
A
u
k
+
1
−
b
)
{{P}^{k+1}}={{p}^{k}}-\lambda {{A}^{T}}\left( A{{u}^{k+1}}-b \right)
Pk+1=pk−λAT(Auk+1−b)
其中关于
P
k
+
1
{{P}^{k+1}}
Pk+1的推导如下
∇
H
(
u
k
+
1
)
=
∇
λ
2
∥
A
u
k
+
1
−
b
∥
2
2
=
∇
λ
2
[
(
A
u
k
+
1
−
b
)
H
(
A
u
k
+
1
−
b
)
]
=
λ
2
∇
t
r
[
(
A
u
k
+
1
−
b
)
H
(
A
u
k
+
1
−
b
)
]
\begin{aligned} & \nabla H\left( {{u}^{k+1}} \right)\text{=}\nabla \frac{\lambda }{2}\left\| A{{u}^{k+1}}-b \right\|_{2}^{2} \\ & =\nabla \frac{\lambda }{2}\left[ {{\left( A{{u}^{k+1}}-b \right)}^{H}}\left( A{{u}^{k+1}}-b \right) \right] \\ & =\frac{\lambda }{2}\nabla tr\left[ {{\left( A{{u}^{k+1}}-b \right)}^{H}}\left( A{{u}^{k+1}}-b \right) \right] \\ \end{aligned}
∇H(uk+1)=∇2λ∥∥Auk+1−b∥∥22=∇2λ[(Auk+1−b)H(Auk+1−b)]=2λ∇tr[(Auk+1−b)H(Auk+1−b)]
而
d
t
r
[
(
A
u
k
+
1
−
b
)
H
(
A
u
k
+
1
−
b
)
]
=
t
r
[
(
A
d
u
k
+
1
)
H
(
A
u
k
+
1
−
b
)
+
(
A
u
k
+
1
−
b
)
H
A
d
u
k
+
1
]
=
t
r
[
2
(
A
u
k
+
1
−
b
)
H
A
d
u
k
+
1
]
\begin{aligned} & dtr\left[ {{\left( A{{u}^{k+1}}-b \right)}^{H}}\left( A{{u}^{k+1}}-b \right) \right]=tr\left[ {{\left( Ad{{u}^{k+1}} \right)}^{H}}\left( A{{u}^{k+1}}-b \right)+{{\left( A{{u}^{k+1}}-b \right)}^{H}}Ad{{u}^{k+1}} \right] \\ & =tr\left[ 2{{\left( A{{u}^{k+1}}-b \right)}^{H}}Ad{{u}^{k+1}} \right] \\ \end{aligned}
dtr[(Auk+1−b)H(Auk+1−b)]=tr[(Aduk+1)H(Auk+1−b)+(Auk+1−b)HAduk+1]=tr[2(Auk+1−b)HAduk+1]
因此
∇
[
(
A
u
k
+
1
−
b
)
H
(
A
u
k
+
1
−
b
)
]
=
2
A
T
(
A
u
k
+
1
−
b
)
\nabla \left[ {{\left( A{{u}^{k+1}}-b \right)}^{H}}\left( A{{u}^{k+1}}-b \right) \right]\text{=}2{{A}^{T}}\left( A{{u}^{k+1}}-b \right)
∇[(Auk+1−b)H(Auk+1−b)]=2AT(Auk+1−b)
即
P
k
+
1
=
p
k
−
λ
A
T
(
A
u
k
+
1
−
b
)
{{P}^{k+1}}={{p}^{k}}-\lambda {{A}^{T}}\left( A{{u}^{k+1}}-b \right)
Pk+1=pk−λAT(Auk+1−b)
当
A
A
A为线性时,上述的迭代过程可以简化为
{
u
k
+
1
=
min
u
E
(
u
)
+
λ
2
∥
A
u
−
b
k
∥
2
2
b
k
+
1
=
b
k
+
b
−
A
u
k
+
1
\left\{ \begin{aligned} & {{u}^{k+1}}=\underset{u}{\mathop{\min }}\,\ E\left( u \right)+\frac{\lambda }{2}\left\| Au-{{b}^{k}} \right\|_{2}^{2} \\ & {{b}^{k+1}}={{b}^{k}}+b-A{{u}^{k+1}} \\ \end{aligned} \right.
⎩⎨⎧uk+1=umin E(u)+2λ∥∥Au−bk∥∥22bk+1=bk+b−Auk+1
Bregman迭代有以下优点:
收敛速度比较快,尤其对于
E
(
u
)
E\left( u \right)
E(u)为
l
1
{{l}_{1}}
l1范数正则化。同时,相对于延拓法来说,Bregman迭代中的
λ
\lambda
λ是一常数,也就说可以选择合适的
λ
\lambda
λ的值使得迭代过程快速收敛。
Split Bregman迭代
考虑如下问题
{
min
u
,
d
∣
d
∣
+
H
(
u
)
s
.
t
.
d
=
Φ
(
u
)
\left\{ \begin{aligned} & \underset{u,d}{\mathop{\min }}\,\ \left| d \right|+H\left( u \right) \\ & s.t.\ \ d=\Phi \left( u \right) \\ \end{aligned} \right.
⎩⎨⎧u,dmin ∣d∣+H(u)s.t. d=Φ(u)
虽然看似
d
=
Φ
(
u
)
\ \ d=\Phi \left( u \right)
d=Φ(u)这一步是多余的,但是在实际中却能起到很重要的作用。
为了解决该问题,可以将其转化为
min
u
,
d
∣
d
∣
+
H
(
u
)
+
λ
2
∥
d
−
Φ
(
u
)
∥
2
2
\underset{u,d}{\mathop{\min }}\,\ \left| d \right|+H\left( u \right)\text{+}\frac{\lambda }{2}\left\| d-\Phi \left( u \right) \right\|_{2}^{2}
u,dmin ∣d∣+H(u)+2λ∥d−Φ(u)∥22
令
E
(
u
,
d
)
=
∣
d
∣
+
H
(
u
)
E\left( u,d \right)=\ \left| d \right|+H\left( u \right)
E(u,d)= ∣d∣+H(u),
H
(
u
,
d
)
=
d
−
Φ
(
u
)
H\left( u,d \right)=d-\Phi \left( u \right)
H(u,d)=d−Φ(u),那么该表达式就变成了之前介绍的Bregman迭代的更普遍的形式,可以得到
(
u
k
+
1
,
d
k
+
1
)
=
min
u
,
d
D
E
p
(
u
,
u
k
,
d
,
d
k
)
+
λ
2
∥
d
−
Φ
(
u
)
∥
2
2
=
min
u
,
d
E
(
u
,
d
)
−
<
p
u
k
,
u
−
u
k
>
−
<
p
d
k
,
d
−
d
k
>
+
λ
2
∥
d
−
Φ
(
u
)
∥
2
2
\begin{aligned} & \left( {{u}^{k+1}},{{d}^{k+1}} \right)=\underset{u,d}{\mathop{\min }}\,D_{E}^{p}\left( u,{{u}^{k}},d,{{d}^{k}} \right)+\frac{\lambda }{2}\left\| d-\Phi \left( u \right) \right\|_{2}^{2} \\ & =\underset{u,d}{\mathop{\min }}\,E\left( u,d \right)-<p_{u}^{k},u-{{u}^{k}}>-<p_{d}^{k},d-{{d}^{k}}>+\frac{\lambda }{2}\left\| d-\Phi \left( u \right) \right\|_{2}^{2} \end{aligned}
(uk+1,dk+1)=u,dminDEp(u,uk,d,dk)+2λ∥d−Φ(u)∥22=u,dminE(u,d)−<puk,u−uk>−<pdk,d−dk>+2λ∥d−Φ(u)∥22
p
u
k
+
1
=
p
u
k
−
λ
(
∇
Φ
)
T
(
Φ
u
k
+
1
−
d
k
+
1
)
p_{u}^{k+1}=p_{u}^{k}-\lambda {{\left( \nabla \Phi \right)}^{T}}\left( \Phi {{u}^{k+1}}-{{d}^{k+1}} \right)
puk+1=puk−λ(∇Φ)T(Φuk+1−dk+1)
p
d
k
+
1
=
p
d
k
−
λ
(
d
k
+
1
−
Φ
u
k
+
1
)
p_{d}^{k+1}=p_{d}^{k}-\lambda \left( {{d}^{k+1}}-\Phi {{u}^{k+1}} \right)
pdk+1=pdk−λ(dk+1−Φuk+1)
那么可以简化为
(
u
k
+
1
,
d
k
+
1
)
=
min
u
,
d
∣
d
∣
+
H
(
u
)
+
λ
2
∥
d
−
Φ
(
u
)
−
b
k
∥
2
2
\left( {{u}^{k+1}},{{d}^{k+1}} \right)\text{=}\underset{u,d}{\mathop{\min }}\,\ \left| d \right|+H\left( u \right)\text{+}\frac{\lambda }{2}\left\| d-\Phi \left( u \right)-{{b}^{k}} \right\|_{2}^{2}
(uk+1,dk+1)=u,dmin ∣d∣+H(u)+2λ∥∥d−Φ(u)−bk∥∥22
b
k
+
1
=
b
k
+
(
Φ
(
u
k
+
1
)
−
d
k
+
1
)
{{b}^{k+1}}={{b}^{k}}+\left( \Phi \left( {{u}^{k+1}} \right)-{{d}^{k+1}} \right)
bk+1=bk+(Φ(uk+1)−dk+1)
显然,为了实现上述迭代过程的计算,必须要解决
(
u
k
+
1
,
d
k
+
1
)
=
min
u
,
d
∣
d
∣
+
H
(
u
)
+
λ
2
∥
d
−
Φ
(
u
)
−
b
k
∥
2
2
\left( {{u}^{k+1}},{{d}^{k+1}} \right)\text{=}\underset{u,d}{\mathop{\min }}\,\ \left| d \right|+H\left( u \right)\text{+}\frac{\lambda }{2}\left\| d-\Phi \left( u \right)-{{b}^{k}} \right\|_{2}^{2}
(uk+1,dk+1)=u,dmin ∣d∣+H(u)+2λ∥∥d−Φ(u)−bk∥∥22
那么可以将其分为两步迭代(这也是为什么称其为Split Bregman迭代的原因)
第一步:
u
k
+
1
=
min
u
H
(
u
)
+
λ
2
∥
d
k
−
Φ
(
u
)
−
b
k
∥
2
2
{{u}^{k+1}}=\underset{u}{\mathop{\min }}\,H\left( u \right)+\frac{\lambda }{2}\left\| {{d}^{k}}-\Phi \left( u \right)-{{b}^{k}} \right\|_{2}^{2}
uk+1=uminH(u)+2λ∥∥dk−Φ(u)−bk∥∥22
第二步:
d
k
+
1
=
min
d
∣
d
∣
+
λ
2
∥
d
k
−
Φ
(
u
k
+
1
)
−
b
k
∥
2
2
{{d}^{k+1}}=\underset{d}{\mathop{\min }}\,\left| d \right|+\frac{\lambda }{2}\left\| {{d}^{k}}-\Phi \left( {{u}^{k+1}} \right)-{{b}^{k}} \right\|_{2}^{2}
dk+1=dmin∣d∣+2λ∥∥dk−Φ(uk+1)−bk∥∥22
在第二步中,可以利用收缩算子来进行简化并且提高运算的速度
d
k
+
1
=
s
h
r
i
n
k
(
Φ
(
u
)
+
b
k
,
1
/
λ
)
{{d}^{k+1}}=shrink\left( \Phi \left( u \right)+{{b}^{k}},1/\lambda \right)
dk+1=shrink(Φ(u)+bk,1/λ)
其中,
s
h
r
i
n
k
(
x
,
y
)
=
x
∣
x
∣
∗
max
(
∣
x
∣
−
y
,
0
)
shrink\left( x,y \right)=\frac{x}{\left| x \right|}*\max \left( \left| x \right|-y,0 \right)
shrink(x,y)=∣x∣x∗max(∣x∣−y,0)
Split Bregman迭代的具体过程为
While
∥
u
k
−
u
k
−
1
∥
2
2
>
t
h
r
e
s
h
o
l
d
\left\| {{u}^{k}}-{{u}^{k-1}} \right\|_{2}^{2}>threshold
∥∥uk−uk−1∥∥22>threshold
for
n
=
1
n=1
n=1 to
N
N
N
u
k
+
1
=
min
u
H
(
u
)
+
λ
2
∥
d
k
−
Φ
(
u
)
−
b
k
∥
2
2
{{u}^{k+1}}=\underset{u}{\mathop{\min }}\,H\left( u \right)+\frac{\lambda }{2}\left\| {{d}^{k}}-\Phi \left( u \right)-{{b}^{k}} \right\|_{2}^{2}
uk+1=uminH(u)+2λ∥∥dk−Φ(u)−bk∥∥22
d
k
+
1
=
min
d
∣
d
∣
+
λ
2
∥
d
k
−
Φ
(
u
k
+
1
)
−
b
k
∥
2
2
{{d}^{k+1}}=\underset{d}{\mathop{\min }}\,\left| d \right|+\frac{\lambda }{2}\left\| {{d}^{k}}-\Phi \left( {{u}^{k+1}} \right)-{{b}^{k}} \right\|_{2}^{2}
dk+1=dmin∣d∣+2λ∥∥dk−Φ(uk+1)−bk∥∥22
end
b
k
+
1
=
b
k
+
(
Φ
(
u
k
+
1
)
−
d
k
+
1
)
{{b}^{k+1}}={{b}^{k}}+\left( \Phi \left( {{u}^{k+1}} \right)-{{d}^{k+1}} \right)
bk+1=bk+(Φ(uk+1)−dk+1)
end
经验上
N
=
1
N=1
N=1可以使内循环收敛
Split Bregman稀疏信号重构
考虑信号
f
f
f是稀疏信号
u
u
u经过线性算子
A
A
A后得到的,那么可以通过利用
l
1
{{l}_{1}}
l1范数正则化从
f
f
f中恢复出信号
u
u
u,即
u
^
=
arg
min
∥
u
∥
1
+
μ
2
∥
A
u
−
f
∥
2
2
\hat{u}=\arg \min \ {{\left\| u \right\|}_{1}}+\frac{\mu }{2}\left\| Au-f \right\|_{2}^{2}
u^=argmin ∥u∥1+2μ∥Au−f∥22
令
Φ
=
I
\Phi =I
Φ=I,
H
(
u
)
=
μ
2
∥
A
u
−
f
∥
2
2
H\left( u \right)=\frac{\mu }{2}\left\| Au-f \right\|_{2}^{2}
H(u)=2μ∥Au−f∥22,那么可以使用Split Bregman迭代进行求解,迭代如下:
u
k
+
1
=
min
u
μ
2
∥
A
u
−
f
∥
2
2
+
λ
2
∥
d
k
−
u
−
b
k
∥
2
2
{{u}^{k+1}}=\underset{u}{\mathop{\min }}\,\frac{\mu }{2}\left\| Au-f \right\|_{2}^{2}+\frac{\lambda }{2}\left\| {{d}^{k}}-u-{{b}^{k}} \right\|_{2}^{2}
uk+1=umin2μ∥Au−f∥22+2λ∥∥dk−u−bk∥∥22
d
k
+
1
=
min
d
∥
d
∥
1
+
λ
2
∥
d
k
−
u
k
+
1
−
b
k
∥
2
2
{{d}^{k+1}}=\underset{d}{\mathop{\min }}\,{{\left\| d \right\|}_{1}}+\frac{\lambda }{2}\left\| {{d}^{k}}-{{u}^{k+1}}-{{b}^{k}} \right\|_{2}^{2}
dk+1=dmin∥d∥1+2λ∥∥dk−uk+1−bk∥∥22
b
k
+
1
=
b
k
+
u
k
+
1
−
d
k
+
1
{{b}^{k+1}}={{b}^{k}}+{{u}^{k+1}}-{{d}^{k+1}}
bk+1=bk+uk+1−dk+1
为了解决
u
k
+
1
{{u}^{k+1}}
uk+1,通过对其求导,令倒数为0,可以得到
∂
(
μ
2
∥
A
u
−
f
∥
2
2
+
λ
2
∥
d
k
−
u
−
b
k
∥
2
2
)
=
0
\partial \left( \frac{\mu }{2}\left\| Au-f \right\|_{2}^{2}+\frac{\lambda }{2}\left\| {{d}^{k}}-u-{{b}^{k}} \right\|_{2}^{2} \right)=0
∂(2μ∥Au−f∥22+2λ∥∥dk−u−bk∥∥22)=0
即
μ
A
∗
(
A
u
k
+
1
−
f
)
−
λ
(
d
k
−
u
k
+
1
−
b
k
)
=
0
\mu {{A}^{*}}\left( A{{u}^{k+1}}-f \right)-\lambda \left( {{d}^{k}}-{{u}^{k+1}}-{{b}^{k}} \right)=0
μA∗(Auk+1−f)−λ(dk−uk+1−bk)=0
因此
u
k
+
1
=
(
μ
A
∗
A
+
λ
I
)
−
1
(
μ
A
∗
f
+
λ
(
d
k
−
b
k
)
)
{{u}^{k+1}}={{\left( \mu {{A}^{*}}A+\lambda I \right)}^{-1}}\left( \mu {{A}^{*}}f+\lambda \left( {{d}^{k}}-{{b}^{k}} \right) \right)
uk+1=(μA∗A+λI)−1(μA∗f+λ(dk−bk))
而
d
k
+
1
{{d}^{k+1}}
dk+1可以通过收缩算子进行求解
d
k
+
1
=
s
h
r
i
n
k
(
u
k
+
1
+
b
k
,
1
/
λ
)
{{d}^{k+1}}=shrink\left( {{u}^{k+1}}+{{b}^{k}},1/\lambda \right)
dk+1=shrink(uk+1+bk,1/λ)
因此,利用Split Bregman进行稀疏信号重构的过程为
初始化:
d
0
=
b
0
=
0
{{d}^{0}}={{b}^{0}}=0
d0=b0=0
While
∥
u
k
−
u
k
−
1
∥
2
2
>
t
h
r
e
s
h
o
l
d
\left\| {{u}^{k}}-{{u}^{k-1}} \right\|_{2}^{2}>threshold
∥∥uk−uk−1∥∥22>threshold
u
k
+
1
=
(
μ
A
∗
A
+
λ
I
)
−
1
(
μ
A
∗
f
+
λ
(
d
k
−
b
k
)
)
{{u}^{k+1}}={{\left( \mu {{A}^{*}}A+\lambda I \right)}^{-1}}\left( \mu {{A}^{*}}f+\lambda \left( {{d}^{k}}-{{b}^{k}} \right) \right)
uk+1=(μA∗A+λI)−1(μA∗f+λ(dk−bk))
d
k
+
1
=
s
h
r
i
n
k
(
u
k
+
1
+
b
k
,
1
/
λ
)
{{d}^{k+1}}=shrink\left( {{u}^{k+1}}+{{b}^{k}},1/\lambda \right)
dk+1=shrink(uk+1+bk,1/λ)
b
k
+
1
=
b
k
+
u
k
+
1
−
d
k
+
1
{{b}^{k+1}}={{b}^{k}}+{{u}^{k+1}}-{{d}^{k+1}}
bk+1=bk+uk+1−dk+1
k
=
k
+
1
k=k+1
k=k+1
end
仿真参数
参数名称 | 参数值 |
---|---|
稀疏度 | 12 |
信号长度 | 256 |
λ \lambda λ | 1 |
μ \mu μ | 10 |
仿真结果
从图中可以看出,经过Split Bregman重构后的信号基本与原始稀疏信号一致,达到了较好的效果。同时也可以通过重构信号与原始信号之间的误差来评价该方法的性能。
代码如下:
主函数
clear;
close all;
clc;
M = 256; %观测值个数
N = 256; %信号x的长度
K = 12; %信号x的稀疏度
lambda=1; %正则化参数
mu=10;
x = zeros(N,1);
Index_K = randperm(N);
x(Index_K(1:K)) = 5*randn(K,1); %构造稀疏信号
A=randn(M,M); %观测矩阵
y=A*x;
x_re=L1_SplitBregmanIteration(y,A,mu,lambda); %利用Split Bregman进行稀疏信号重构
figure(1);
plot(x_re,'k.-');
hold on;
plot(x,'r');
legend('重构信号','原始信号')
L1_SplitBregmanIteration.m
function u=L1_SplitBregmanIteration(f,A,mu,lambda)
%======================================
%
% L1 Split Bregman Iteration
% This function compute the solution
% u = arg min |u|+0.5*mu||Au-f||_2^2
%
% by using the Split Bregman Iteration
%
% In this version we consider only
% the case where A is a square matrix
%
% f: measured data
% A: some linear operator in its matrix
% form
% mu: regularization coefficient
% lambda: "spliting" regularization
% coefficient
% Author: Jerome Gilles
% Institution: UCLA - Math Department
% email: jegilles@math.ucla.edu
%
% Note: typically mu=10, lambda=1,
% eps=0.01 work well
%======================================
N=size(f,1);
d=zeros(N,1);
b=zeros(N,1);
u=zeros(N,1);
Z=zeros(N,1);
Ft=mu*A'*f;
IV=inv(mu*A'*A+lambda*eye(N));
up=ones(N,1);
while ((u-up)'*(u-up))>eps
up=u; %store the previous iteration
u=IV*(Ft+lambda*(d-b)); %update u
tmp=u+b;
d=sign(tmp).*max(Z,abs(tmp)-1/lambda); %update d
b=tmp-d; %update b
end
参考文献
[1] Goldstein T, Osher S. The split Bregman method for L1-regularized problems[J]. SIAM journal on imaging sciences, 2009, 2(2): 323-343.
[2]Gilles J, Osher S. Bregman implementation of Meyer’s G-norm for cartoon+ textures decomposition[J]. UCLA Cam Report, 2011: 11-73.
[3] Bush J. Bregman algorithms[J]. Senior Thesis. University of California, Santa Barbara, 2011.
[4] Yin W, Osher S, Goldfarb D, et al. Bregman iterative algorithms for
ℓ
1
\ell_1
ℓ1-minimization with applications to compressed sensing[J]. SIAM Journal on Imaging sciences, 2008, 1(1): 143-168.