稀疏优化L1范数最小化问题求解之基追踪准则(Basis Pursuit)——原理及其Python实现
Posted Z.Q.Feng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了稀疏优化L1范数最小化问题求解之基追踪准则(Basis Pursuit)——原理及其Python实现相关的知识,希望对你有一定的参考价值。
文章目录
- 一、前言
- 二、问题重述
- 三、构造 ℓ 1 \\ell_1 ℓ1 范数
- 四、 ℓ 1 \\ell_1 ℓ1 范数最小化问题转换为线性规划问题
- 五、基于linprog的基追踪Python代码
- 六、运行测试
- 七、总结
一、前言
本文针对压缩重构感知中的稀疏优化问题,实现了对其 L1 范数最小化问题
的求解,文章内容较长,请耐心看完,代码部分在本文第五章。
二、问题重述
考虑线性方程组求解问题:
A x = b (1) Ax = b \\tag1 Ax=b(1)
其中向量
x
∈
R
n
×
1
,
b
∈
R
m
×
1
x \\in R^n\\times 1,\\ b \\in R^m\\times 1
x∈Rn×1, b∈Rm×1,矩阵
A
∈
R
m
×
n
A \\in R^m\\times n
A∈Rm×n,且向量
b
b
b 的维数远小于向量
x
x
x 的维数,即
m
≪
n
m \\ll n
m≪n。由于
m
≪
n
m \\ll n
m≪n,方程组 (1) 是欠定的,因此存在无穷多个解,但是真正有用的解是所谓的“稀疏解”
,即原始信号中有较多的零元素。
x = [ 0 , 0 , 1 , 0 , . . . , 1 , 0 , 0 ] (2) x = [0, 0, 1, 0, ..., 1, 0, 0] \\tag2 x=[0,0,1,0,...,1,0,0](2)
如果加上稀疏性这一先验信息,且矩阵
A
A
A 以及原问题的解
u
u
u 满足某些条件,那么我们可以通过求解稀疏优化问题把
u
u
u 与方程组 (1) 的其他解区别开。这类技术广泛应用于压缩感知(compressive sensing)
,即通过部分信息恢复全部信息的解决方案。
三、构造 ℓ 1 \\ell_1 ℓ1 范数
举一个具体的例子(在 Python 环境里构造 A , u A, u A,u 和 b b b)1:
import numpy as np
m, n = 128, 256
# 128x256矩阵,每个元素服从Gauss随机分布
A = np.random.randn(m, n)
# 精确解 u 只有 10% 元素非零,每一个非零元素也服从高斯分布
# 可保证 u 是方程组唯一的非零元素最少的解
u = sprase_rand(n, 1, 0.1)
b = A * u
在这个例子中,我们构造了一个
128
×
256
128 \\times 256
128×256 矩阵
A
A
A,它的每个元素都服从高斯 (Gauss) 随机分布
(参照我的这篇博客:在Python中创建、生成稀疏矩阵(均匀分布、高斯分布))。
精确解
u
u
u 只有 10% 的元素非零,每一个非零元素也服从高斯分布。这些特征可以在理论上保证
u
u
u 是方程组 (1) 唯一的非零元素最少的解
,即
u
u
u 是如下
ℓ
0
\\ell_0
ℓ0 范数问题的最优解:
min ∥ x ∥ 0 , s . t . A x = b . (3) \\min \\left\\|x\\right\\|_0,\\ s.t.\\ Ax = b. \\tag3 min∥x∥0, s.t. Ax=b.(3)
其中
∥
x
∥
0
\\left\\|x\\right\\|_0
∥x∥0是指
x
x
x 中非零元素的个数.由于
∥
x
∥
0
\\left\\|x\\right\\|_0
∥x∥0 是不连续的函数,且取值只可能是整数,问题 (3) 实际上是 NP(non-deterministic polynomial)
难的,求解起来非常困难。
若定义 ℓ 1 \\ell_1 ℓ1 范数: ∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \\left\\|x\\right\\|_1 = \\sum_i=1^n \\left|x_i\\right| ∥x∥1=∑i=1n∣xi∣,并替换到问题 (3) 中,我们得到了另一个形式上非常相似的问题(又称 ℓ 1 \\ell_1 ℓ1 范数优化问题,基追踪问题):
min ∥ x ∥ 1 , s . t . A x = b . (4) \\min \\left\\|x\\right\\|_1,\\ s.t.\\ Ax = b. \\tag4 min∥x∥1, s.t. Ax=b.(4)
可以从理论上证明:若 A , b A, b A,b 满足一定的条件2(例如使用前面随机产生的 A A A 和 b b b),向量 u u u 也是 ℓ 1 \\ell_1 ℓ1 范数优化问题 (4) 的唯一最优解。
四、 ℓ 1 \\ell_1 ℓ1 范数最小化问题转换为线性规划问题
在文献3中,给出了将问题 (4) 即
ℓ
1
\\ell_1
ℓ1 范数最小化问题转换为标准的线性规划问题
的一种方法,首先对于如下问题:
min ∥ α ∥ 1 , s . t . Φ α = s . (P) \\min \\left\\|\\alpha\\right\\|_1,\\ s.t.\\ \\Phi\\alpha = s. \\tagP min∥α∥1, s.t. Φα=s.(P)
利用基追踪 (Basis Pursuit) 的定义,我们尝试将问题 P 与线性规划 (LP) 问题连接起来。首先,式 P 中变量 α \\alpha α 没有非负约束,在此我们将 α \\alpha α 定义为两个非负变量的差:
α = u − v , u , v ≥ 0 (5) \\alpha\\ =\\ u - v,\\ u, v \\ge 0 \\tag5 α = u−v, u,v≥0(5)
由于 u u u 可以大于也可以小于 v v v,所以 a a a 可以是正的也可以是负的4。接着约束条件 Φ α = s \\Phi\\alpha = s Φα=s 重写为 Φ ( u − v ) = s \\Phi(u - v) = s Φ(u−v)=s,也可改写为如下形式:
[ Φ , − Φ ] [ u v ] = s (6) \\beginbmatrix \\Phi,-\\Phi \\endbmatrix \\beginbmatrix u\\\\v \\endbmatrix\\ =\\ s \\tag6 [Φ,−Φ][uv] = s(6)
然后,根据范数的定义,目标函数改写为:
∥ α ∥ 1 = ∑ i = 1 n ∣ α i ∣ = ∑ i = 1 n ∣ u i − v i ∣ (7) \\left\\|\\alpha\\right\\|_1\\ =\\ \\sum_i=1^n\\left|\\alpha_i\\right|\\ =\\ \\sum_i=1^n\\left|u_i-v_i\\right| \\tag7 ∥α∥1 = i=1∑n∣αi∣ = i=1∑n∣ui−vi∣(7)
目标函数中包含绝对值,采用网页5中的证明,对于有限维度的向量 ℓ 1 \\ell_1 ℓ1以上是关于稀疏优化L1范数最小化问题求解之基追踪准则(Basis Pursuit)——原理及其Python实现的主要内容,如果未能解决你的问题,请参考以下文章