西瓜书第十一章-特征选择与稀疏学习
一、子集搜索与评价
- 将属性称为 “特征”(feature) ,对当前学习任务有用的属性称为 “相关特征”(relevant feature)、没什么用的属性称为 “无关特征”(irrelevant feature)。从给定的特征集合中选择出相关特征子集的过程,称为 “特征选择”(feature selection)
- 特征选择是一个重要的 “数据预处理”(data preprocessing) 过程
为什么进行特征选择?
- 现实任务中经常会遇到维度灾难问题,这是由于属性过多而造成的,若能从中选择出重要的特征,使得后续学习过程仅需一部分特征上构建模型,则维度灾难问题会大为减轻
- 去除不相关特征往往会降低学习任务的难度,这就像侦探破案一样,若将纷繁复杂的因素抽丝剥茧,只留下关键因素,则真相往往更容易看清
需注意的是,特征选择过程必须确保不丢失重要特征,否则后续学习过程会因为重要信息的缺失而无法获得好的性能。给定数据集,若学习任务不同,则相关特征很可能不同,因此,特征选择中所谓的“无关特征”是指与当前学习任务无关。有一类特征称为 “冗余特征”(redundant feature),它们所包含的信息能从其他特征中推演出来。冗余特征很多时候不起作用,去除它们会减轻学习过程的负担。但有时冗余特征会降低学习任务的难度;更确切地说,若某个冗余特征恰好对应了完成学习任务所需的“中间概念”,则该冗余特征是有益的。为简化讨论,本章暂且假定数据中不涉及冗余特征,并且假定初始特征集合包含了所有的重要信息
遍历所有可能的子集会遭遇组合爆炸,可行的做法是产生一个“候选子集”,评价它的好坏,基于评价结果产生下一个候选子集,再对其进行评价,这个过程持续进行下去,直至无法找到更好的候选子集为止。这里涉及两个关键环节:如何根据评价结果获取下一个候选子集?如何评价候选特征子集的好坏?
第一个环节是 “子集搜索”(subset search) 问题。给定特征集合
{
a
1
,
a
2
,
⋯
,
a
d
}
\{a_1,a_2,\cdots,a_d\}
{a1,a2,⋯,ad},我们将每个特征看作一个候选子集,对这d个候选单特征子集进行评价,假定
{
a
2
}
\{a_2\}
{a2}最优,于是将
{
a
2
}
\{a_2\}
{a2}作为第一轮选定集;然后,在上一轮的选定集中加入一个特征,构成包含两个特征的候选子集,假定在这d-1个候选两特征子集中
{
a
2
,
a
4
}
\{a_2,a_4\}
{a2,a4}最优,且优于
{
a
2
}
\{a_2\}
{a2},于是将
{
a
2
,
a
4
}
\{a_2,a_4\}
{a2,a4}作为本轮的选定集;
⋯
⋯
\cdots\cdots
⋯⋯假定在第k+1轮时,最优的候选(k+1)特征子集不如上一轮的选定集,则停止生成候选子集,并将上一轮选定的k特征集合作为特征选择的结果,这样逐渐增加相关特征的策略称为 “前向”(forward)搜索。类似的,若我们从完整的特征集合开始,每次尝试去掉一个无关特征,这样逐渐减少特征的策略称为 “后向”(backward)搜索。还可将前向与后向搜索搜索结合起来,每一轮逐渐增加选定相关特征(这些特征在后续轮中将确定不会被去除)、同时减少无关特征,这样的策略称为 “双向”(bidirectional)搜索
显然,上述策略都是贪心的,因为它们仅考虑了使本轮选定集最优
第二个环节是 “子集评价”(subset evaluation) 问题。给定数据集D,假定D中第i类样本所占的比例为
p
i
(
i
=
1
,
2
,
⋯
,
∣
Y
∣
)
p_i(i=1,2,\cdots,|\mathcal {Y}|)
pi(i=1,2,⋯,∣Y∣)。为了便于讨论,假定样本属性均为离散型。对属性子集A,假定根据其取值将D分成了V个子集
{
D
1
,
D
2
,
⋯
,
D
V
}
\{D^1,D^2,\cdots,D^V\}
{D1,D2,⋯,DV},每个子集中的样本在A上取值相同,于是可计算属性子集A的信息增益
G
a
i
n
(
A
)
=
E
n
t
(
D
)
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
Gain(A) = Ent(D)-\sum_{v=1}^V \frac{|D^v|}{|D|}Ent(D^v)
Gain(A)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
其中信息熵定义为
E
n
t
(
D
)
=
−
∑
i
=
1
∣
Y
∣
p
k
log
2
p
k
Ent(D) = - \sum_{i=1}^{|\mathcal Y|}p_k\operatorname{log}_2 p_k
Ent(D)=−i=1∑∣Y∣pklog2pk
信息增益Gain(A)越大,意味着特征子集A包含的有助于分类的信息越多。于是,对每个候选特征子集,可基于训练数据D来计算其信息增益,以此作为评价准则
更一般的,特征子集A实际上确定了对数据集D的一个划分,每个划分区域对应着A上的一个取值,而样本标记信息Y则对应着对D的真实划分,通过估算这两个划分的差异,就能对A进行评价。与Y对应的划分的差异越小,则说明A越好。信息熵仅是判断这个差异的一种途径,其他能判断两个划分差异的机制都能用于特征子集评价。
将特征子集搜索机制与子集评价机制结合,即可得到特征选择方法。例如将前向搜索与信息熵相结合,这显然与决策树算法非常相似。事实上,决策树可用于特征选择,树结点的划分属性所组成的集合就是选择出的特征子集。其他特征选择方法未必像决策树特征选择这么明显,但它们在本质上都是显式或隐式地结合了某种(或多种)子集搜索机制和子集评价机制。
常见的特征选择方法大致可分为三类:过滤式(filter)、包裹式(wrapper)和嵌入式(embedding)
二、过滤式选择
过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关。这相当于先用特征选择过程对初始特征进行“过滤”,再用过滤后的特征来训练模型。
Relief(Relevant Features) 是一种著名的过滤式特征选择方法,该方法设计了一个“相关统计量”来度量特征的重要性。该统计量是一个向量,其每个分量分别对应于一个初始特征,而特征子集的重要性则是由子集中每个特征所对应的相关统计量分量之和来决定。于是,最终只需要指定一个阈值
τ
\tau
τ,然后选择比
τ
\tau
τ大的相关统计量分量所对应的特征即可;也可指定欲选择的特征个数k,然后选择相关统计量分量最大的k个特征。
显然,Relief的关键是如何确定相关统计量。给定训练集
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
m
,
y
m
)
}
\{(\pmb x_1,y_1),(\pmb x_2,y_2),\cdots,(\pmb x_m,y_m)\}
{(xxx1,y1),(xxx2,y2),⋯,(xxxm,ym)},对每个示例
x
i
\pmb x_i
xxxi,Relief先在
x
i
\pmb x_i
xxxi的同类样本中寻找其最近邻
x
i
,
n
h
\pmb x_{i,nh}
xxxi,nh称为 “猜中近邻”(near-hit),再从
x
i
\pmb x_i
xxxi的异类样本中寻找其最近邻
x
i
,
n
m
\pmb x_{i,nm}
xxxi,nm称为“猜错近邻”(near-miss),然后,相关统计量对应于属性
j
j
j的分量为
δ
j
=
∑
i
−
diff
(
x
i
j
,
x
i
,
n
h
j
)
2
+
diff
(
x
i
j
,
x
i
,
n
m
j
)
2
\delta^j = \sum_{i}-\operatorname{diff}(x_i^j,x_{i,nh}^j)^2 + \operatorname{diff}(x_i^j,x_{i,nm}^j)^2
δj=i∑−diff(xij,xi,nhj)2+diff(xij,xi,nmj)2
其中
x
a
j
x_a^j
xaj表示样本
x
a
\pmb x_a
xxxa在属性
j
j
j上的取值,
diff
(
x
a
j
,
x
b
j
)
\operatorname{diff}(x_a^j,x_{b}^j)
diff(xaj,xbj)取决于属性
j
j
j的类型。若属性
j
j
j为离散型,则
x
a
j
=
x
b
j
x_a^j=x_{b}^j
xaj=xbj时,
diff
(
x
a
j
,
x
b
j
)
=
0
\operatorname{diff}(x_a^j,x_{b}^j)=0
diff(xaj,xbj)=0,否则为1;若属性
j
j
j为连续型,则
diff
(
x
a
j
,
x
b
j
)
=
∣
x
a
j
−
x
b
j
∣
\operatorname{diff}(x_a^j,x_{b}^j)=|x_a^j-x_{b}^j|
diff(xaj,xbj)=∣xaj−xbj∣,注意
x
a
j
,
x
b
j
x_a^j,x_{b}^j
xaj,xbj已规范化到[0,1]区间
从上式中看出,若
x
i
\pmb x_i
xxxi与其猜中近邻
x
i
,
n
h
j
x_{i,nh}^j
xi,nhj在属性
j
j
j上的距离小于
x
i
\pmb x_i
xxxi与其猜错近邻
x
i
,
n
m
j
x_{i,nm}^j
xi,nmj的距离,则说明属性
j
j
j对区分同类与异类样本是有益的,于是增大属性
j
j
j所对应的统计量分量;反之,则说明属性
j
j
j起负面作用,于是减小属性
j
j
j所对应的统计分量。最后,对基于不同样本得到的估计结果进行平均,就得到各属性的相关统计量分量,分量值越大,则对应属性的分类能力就越强
上式中的i指出了用于平均的样本下标。实际上Relief只需在数据集的采样上而不必在整个数据集上估计相关统计量。显然,Relief的时间开销随采样次数以及原始特征数线性增长,因此是一个运行效率很高的过滤式特征选择算法。
Relief是为二分类问题设计的,其扩展变体Relief-F能处理多分类问题。假定数据集D中的样本来自
∣
Y
∣
|\mathcal Y|
∣Y∣个类别。对示例
x
i
\pmb x_i
xxxi,若它属于第k类(
k
∈
{
1
,
2
,
⋯
,
∣
Y
∣
}
k\in\{1,2,\cdots,|\mathcal Y|\}
k∈{1,2,⋯,∣Y∣},则Relief-F相关统计量可表示为
δ
j
=
∑
i
−
diff
(
x
i
j
,
x
i
,
n
h
j
)
2
+
∑
l
≠
k
diff
(
p
l
×
(
x
i
j
,
x
i
,
l
,
n
m
j
)
2
)
\delta^j = \sum_{i}-\operatorname{diff}(x_i^j,x_{i,nh}^j)^2 + \sum_{l\ne k}\operatorname{diff}\bigg(p_l\times (x_i^j,x_{i,l,nm}^j)^2\bigg)
δj=i∑−diff(xij,xi,nhj)2+l=k∑diff(pl×(xij,xi,l,nmj)2)
其中
p
l
p_l
pl为第
l
l
l类样本在数据集D中所占的比例
三、包裹式选择
与过滤式特征选择不考虑后续学习器不同,包裹式特征选择直接将最终将要使用的学习器性能作为特征子集的评价准则。换言之,包裹式特征选择的目的就是为给定学习器选择最有利于其性能、“量身定做”的特征子集。
一般而言,由于包裹式特征选择方法直接针对给定学习器进行优化,因此,最终学习器性能来看,包裹式特征选择比过滤式特征选择更好,但另一方面,由于在特征选择过程中需多次训练学习器,因此包裹式特征选择的计算开销通常比过滤式特征选择大很多
- LVW(Las Vegas Wrapper) 是一种典型的包裹式特征选择方法。它在拉斯维加斯方法(Las Vegas method)框架下使用随机策略来进行子集搜索,并以最终分类器的误差为特征子集评价准则
图中算法第8行是通过在数据集D上,使用交叉验证法来估计学习器的误差,注意这个误差是仅考虑特征子集A’时得到的,即特征子集A‘上的误差,若它比当前的特征子集A上的误差更小,或误差相当但A’中包含的特征更少,则将A’保留下来
需注意的是,由于LVW算法中特征子集搜索采用了随机策略,而每次特征子集评价都需训练学习器,计算开销很大,因此算法设置了停止条件控制参数T。然而,整个LVW算法是基于拉斯维加斯方法框架,若初始特征数很多(即|A|很大)、T设置较大,则算法可能运行很长时间都达不到停止条件。换言之,有运行时间限制,则有可能给不出解
四、嵌入式选择与 L 1 L_1 L1正则化
在过滤式和包裹式特征选择方法中,特征选择过程与学习器训练过程有明显的分别;与此不同,嵌入式特征选择是将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择
给定的数据集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
m
,
y
m
)
}
D=\{(\pmb x_1,y_1),(\pmb x_2,y_2),\cdots,(\pmb x_m,y_m)\}
D={(xxx1,y1),(xxx2,y2),⋯,(xxxm,ym)},其中
x
∈
R
d
,
y
∈
R
\pmb x\in \mathbb R^d,y\in \mathbb R
xxx∈Rd,y∈R。考虑最简单的线性回归模型,以平方误差为损失函数,则优化目标为
min
w
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
\underset{w}{\operatorname{min}}\sum_{i=1}^m (y_i - \pmb w^T\pmb x_i)^2
wmini=1∑m(yi−wwwTxxxi)2
当样本特征很多,而样本数相对较少时,上式很容易陷入过拟合。为了缓解过拟合问题,可对上式引入正则化项。若使用
L
2
L_2
L2范数正则化,则有
min
w
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
+
λ
∣
∣
w
∣
∣
2
2
\underset{w}{\operatorname{min}}\sum_{i=1}^m (y_i - \pmb w^T\pmb x_i)^2 + \lambda||\pmb w||_2^2
wmini=1∑m(yi−wwwTxxxi)2+λ∣∣www∣∣22
其中正则化参数
λ
>
0
\lambda>0
λ>0。上式称为“岭回归”(ridge regression),通过引入
L
2
L_2
L2范数正则化,确能显著降低过拟合风险。
可将
L
2
L_2
L2范数替换为
L
p
L_p
Lp范数,若令
p
=
1
p=1
p=1,即采用
L
1
L_1
L1范数,则有
min
w
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
+
λ
∣
∣
w
∣
∣
1
\underset{w}{\operatorname{min}}\sum_{i=1}^m (y_i - \pmb w^T\pmb x_i)^2 + \lambda||\pmb w||_1
wmini=1∑m(yi−wwwTxxxi)2+λ∣∣www∣∣1
其中正则化参数
λ
>
0
\lambda>0
λ>0。上式称为LASSO(Least Absolute Shrinkage and Selection Operator)
L
1
L_1
L1范数和
L
2
L_2
L2范数正则化都有助于降低过拟合风险,但前者还会带来一个额外的好处,它比后者更容易获得“稀疏”(sparse)解,即它求得的
w
\pmb w
www会有更少的非零分量
注意到
w
\pmb w
www取得稀疏解意味着初始的d个特征中仅有对应着
w
\pmb w
www的非零向量的特征才会出现在最终模型中,于是,求解
L
1
L_1
L1范数正则化的结果是得到了仅采用一部分初始特征的模型;换言之,基于
L
1
L_1
L1正则化的学习方法就是一种嵌入式特征选择方法,其特征选择过程与学习器训练过程融为一体,同时完成。
L
1
L_1
L1正则化问题的求解可使用近端梯度下降(Proximal Gradient Descent,简称PGD)。具体来说,令
∇
\nabla
∇表示微分算子,对优化目标
min
x
f
(
x
)
+
λ
∣
∣
x
∣
∣
1
\underset{x}{\operatorname{min}}f(\pmb x)+\lambda||\pmb x||_1
xminf(xxx)+λ∣∣xxx∣∣1
若
f
(
x
)
f(\pmb x)
f(xxx)可导,且
∇
f
\nabla f
∇f满足L-Lipschitz条件,即存在常数
L
>
0
L>0
L>0使得
∣
∣
∇
f
(
x
′
)
−
∇
f
(
x
)
∣
∣
2
2
≤
L
∣
∣
x
′
−
x
∣
∣
2
2
(
∀
x
,
x
′
)
||\nabla f(\pmb x') - \nabla f(\pmb x)||_2^2\le L||\pmb x' - \pmb x||_2^2 \quad (\forall\pmb x,\pmb x')
∣∣∇f(xxx′)−∇f(xxx)∣∣22≤L∣∣xxx′−xxx∣∣22(∀xxx,xxx′)
则在
x
k
\pmb x_k
xxxk附近可将
f
(
x
)
f(\pmb x)
f(xxx)通过二阶泰勒展开式近似为
f
^
(
x
)
≃
f
(
x
k
)
+
⟨
∇
f
(
x
k
)
,
x
−
x
k
⟩
+
L
2
∣
∣
x
−
x
k
∣
∣
2
=
L
2
∣
∣
x
−
(
x
k
−
1
L
∇
f
(
x
k
)
)
∣
∣
2
2
+
const
\begin{aligned} \hat f(\pmb x) & \simeq f(\pmb x_k) + \langle \nabla f(\pmb x_k),\pmb x - \pmb x_k\rangle + \frac{L}{2}||\pmb x - \pmb x_k||^2\\ & = \frac{L}{2} \bigg| \bigg|\pmb x - \bigg( \pmb x_k - \frac{1}{L}\nabla f(\pmb x_k)\bigg)\bigg|\bigg|_2^2 + \operatorname{const} \end{aligned}
f^(xxx)≃f(xxxk)+⟨∇f(xxxk),xxx−xxxk⟩+2L∣∣xxx−xxxk∣∣2=2L∣∣∣∣∣∣∣∣xxx−(xxxk−L1∇f(xxxk))∣∣∣∣∣∣∣∣22+const
其中const是与
x
\pmb x
xxx无关的常数,
⟨
⋅
,
⋅
⟩
\langle\cdot,\cdot\rangle
⟨⋅,⋅⟩表示内积。显然,上式得最小值在如下
x
k
+
1
\pmb x_{k+1}
xxxk+1获得:
x
k
+
1
=
x
k
−
1
L
∇
f
(
x
k
)
\pmb x_{k+1} = x_k - \frac{1}{L}\nabla f(\pmb x_k)
xxxk+1=xk−L1∇f(xxxk)
于是,若通过梯度下降法对
f
(
x
)
f(\pmb x)
f(xxx)进行最小化,则每一步梯度下降迭代实际上等价于最小化二次函数
f
^
(
x
)
\hat f(\pmb x)
f^(xxx)。将这个思想推广到优化目标,则能类似地得到其每一步迭代应为
x
k
+
1
=
arg min
x
L
2
∣
∣
x
−
(
x
k
−
1
L
∇
f
(
x
k
)
)
∣
∣
2
2
+
λ
∣
∣
x
∣
∣
1
\pmb x_{k+1} = \underset{x}{\operatorname{arg \ min}}\frac{L}{2} \bigg| \bigg|\pmb x - \bigg( \pmb x_k - \frac{1}{L}\nabla f(\pmb x_k)\bigg)\bigg|\bigg|_2^2 + \lambda||\pmb x||_1
xxxk+1=xarg min2L∣∣∣∣∣∣∣∣xxx−(xxxk−L1∇f(xxxk))∣∣∣∣∣∣∣∣22+λ∣∣xxx∣∣1
即在每一步对
f
(
x
)
f(\pmb x)
f(xxx)进行梯度下降迭代的同时考虑
L
1
L_1
L1范数最小化
对于上式,可先计算
z
=
x
k
−
1
L
∇
f
(
x
k
)
\pmb z =\pmb x_k - \frac{1}{L}\nabla f(\pmb x_k)
zzz=xxxk−L1∇f(xxxk),然后求解
x
k
+
1
=
arg min
x
L
2
g
∣
∣
x
−
z
∣
∣
2
2
+
λ
∣
∣
x
∣
∣
1
\pmb x_{k+1} = \underset{x}{\operatorname{arg \ min}}\frac{L}{2}g| |\pmb x - \pmb z||_2^2 + \lambda||\pmb x||_1
xxxk+1=xarg min2Lg∣∣xxx−zzz∣∣22+λ∣∣xxx∣∣1
令
x
i
\pmb x^i
xxxi表示
x
\pmb x
xxx的第i个分量,将上式按分量展开,其中不存在
x
i
x
j
(
i
≠
j
)
x^ix^j(i\ne j)
xixj(i=j)这样的项,即
x
\pmb x
xxx的各分量互不影响,于是上式有闭式解
x
k
+
1
i
=
{
z
i
−
λ
/
L
,
λ
/
L
<
z
i
;
0
,
∣
z
i
∣
≤
λ
/
L
z
i
+
λ
/
L
,
z
i
<
−
λ
/
L
x_{k+1}^i = \begin{cases} z^i - \lambda/L, \ \lambda/L<z^i;\\ 0, \quad |z^i|\le \lambda/L\\ z^i + \lambda/L,\ z^i < -\lambda/L \end{cases}
xk+1i=⎩⎪⎨⎪⎧zi−λ/L, λ/L<zi;0,∣zi∣≤λ/Lzi+λ/L, zi<−λ/L
其中
x
k
+
1
i
x_{k+1}^i
xk+1i与
z
i
z^i
zi分别是
x
k
+
1
\pmb x_{k+1}
xxxk+1与
z
\pmb z
zzz的第i个分量。因此,通过PGD能使LASSO和其他基于
L
1
L_1
L1范数最小的方法得以快速求解。
五、稀疏表示与字典学习
不妨把数据集D考虑成一个矩阵,其每行对应于一个样本,每列对应于一个特征。特征选择所考虑的问题是特征具有“稀疏性”,即矩阵中的许多列与当前学习任务无关,通过特征选择去除这些列,则学习器训练过程仅需在较小的矩阵上进行,学习任务的难度可能有所降低,涉及的计算和存储开销会减少,学得模型的可解释性也会提高。
现在考虑另一种稀疏性:D所对应的矩阵中存在很多零元素,但这些零元素并不是整列,整行形式存在的。在不少现实应用中会遇到这样的情形,例如在文档分类任务中,通常将每个文档看作一个样本,每个字(词)作为一个特征,字(词)在文档中出现的频率或次数作为特征的取值;换言之,D所对应的矩阵的每行是一个文档,每列是一个字(词),行、列交汇处就是某字(词)在某文档中出现的频率或次数。
当样本具有这样的系数表达形式时,对学习任务来说会有不少好处,例如线性支持向量机之所以能在文本数据上有很好的性能,恰是由于文本数据在使用上述的自频表示后具有高度的稀疏性,使大多数问题变得线性可分。同时,稀疏样本并不会造成存储上的巨大负担,因为稀疏矩阵已有很多高效的存储方法。
那么,给定数据集D是稠密的,即普通非稀疏数据,能否将其转化为 “稀疏表示”(sparse representation) 形式,从而享有稀疏性所带来的好处呢?需注意的是,所希望的稀疏表示是“恰当稀疏”,而不是“过度稀疏”。
显然,在一般的学习任务中(例如图像分类)并没有《现代汉语常用字典》可用,我们需学习出这样一个“字典”。为普通稠密表达的样本找到合适的字典,将样本转化为合适的稀疏表示形式,从而使学习任务得以简化,模型复杂度得以降低,通常称为“字典学习”(dictionary learning),亦称“稀疏编码”(sparse coding).这两个称谓有差别,“字典学习”更侧重于学习字典过程,而“稀疏编码”则更侧重于对样本进行稀疏表达的过程。由于两者通常是在同一个优化求解过程中完成,以下笼统称为字典学习。
给定数据集
{
x
1
,
x
2
,
⋯
,
x
m
}
\{\pmb x_1,\pmb x_2,\cdots,\pmb x_m\}
{xxx1,xxx2,⋯,xxxm},字典学习最简单的形式为
min
B
,
α
i
∑
i
=
1
m
∣
∣
x
i
−
B
α
i
∣
∣
2
2
+
λ
∑
i
=
1
m
∣
∣
α
i
∣
∣
1
\underset{B,\alpha_i}{\operatorname{min}}\sum_{i=1}^m ||\pmb x_i - \pmb B \pmb \alpha_i||_2^2 + \lambda\sum_{i=1}^m ||\pmb \alpha_i||_1
B,αimini=1∑m∣∣xxxi−BBBαααi∣∣22+λi=1∑m∣∣αααi∣∣1
其中
B
∈
R
d
×
k
\pmb B\in \mathbb R^{d\times k}
BBB∈Rd×k为字典矩阵,k称为字典的词汇量,通常由用户指定,
α
i
∈
R
k
\pmb \alpha_i \in \mathbb R^k
αααi∈Rk,则是样本
x
i
∈
R
d
\pmb x_i \in \mathbb R^d
xxxi∈Rd的稀疏表示。显然,上式中的第一项是希望由
α
i
\pmb \alpha_i
αααi能很好的重构
x
i
\pmb x_i
xxxi
,
第
二
项
则
是
希
望
,第二项则是希望
,第二项则是希望\pmb \alpha_i$尽量稀疏。
与LASSO相比,上式显然麻烦得多,因为除了
α
i
\pmb \alpha_i
αααi,还需要学习字典矩阵
B
\pmb B
BBB。不过,受LASSO的启发,可采用变量交替优化的策略来求解上式。
首先在第一步,固定住字典
B
\pmb B
BBB,若将上式按分量展开,可看出其中不涉及
α
i
u
α
i
v
\alpha_i^u\alpha_i^v
αiuαiv这样的交叉项,于是可参照LASSO的解法求解下式,从而为每个样本
x
i
\pmb x_i
xxxi找到相应的
α
i
\pmb \alpha_i
αααi:
min
α
i
∣
∣
x
i
−
B
α
i
∣
∣
2
2
+
λ
∣
∣
α
i
∣
∣
1
\underset{\alpha_i}{\operatorname{min}} ||\pmb x_i - \pmb B \pmb \alpha_i||_2^2 + \lambda ||\pmb \alpha_i||_1
αimin∣∣xxxi−BBBαααi∣∣22+λ∣∣αααi∣∣1
在第二步,我们固定住
α
i
\pmb \alpha_i
αααi来更新字典
B
\pmb B
BBB,此时:
min
B
∣
∣
X
−
B
A
∣
∣
F
2
\underset{B}{\operatorname{min}} ||\pmb X - \pmb B\pmb A||_F^2
Bmin∣∣XXX−BBBAAA∣∣F2
其中
X
=
(
x
1
,
x
2
,
⋯
,
x
m
)
∈
R
d
×
m
,
A
=
(
α
1
,
α
2
,
⋯
,
α
m
)
∈
R
k
×
m
,
∣
∣
⋅
∣
∣
F
\pmb X = (\pmb x_1,\pmb x_2,\cdots,\pmb x_m)\in \mathbb R^{d\times m},\pmb A = (\pmb \alpha_1,\pmb \alpha_2,\cdots,\pmb \alpha_m)\in \mathbb R^{k\times m},||\cdot||_F
XXX=(xxx1,xxx2,⋯,xxxm)∈Rd×m,AAA=(ααα1,ααα2,⋯,αααm)∈Rk×m,∣∣⋅∣∣F是矩阵的Frobenius范数。上式有多种求解方法,常用的有基于逐列更新策略的KSVD。令
b
i
\pmb b_i
bbbi表示字典矩阵
B
\pmb B
BBB的第i列,
α
i
\pmb \alpha^i
αααi表示稀疏矩阵
A
\pmb A
AAA的第i行,上式可重写为
min
B
∣
∣
X
−
B
A
∣
∣
F
2
=
min
b
i
∣
∣
X
−
∑
j
=
1
k
b
j
α
j
∣
∣
=
min
b
i
∣
∣
(
X
−
∑
j
≠
i
b
j
α
j
)
−
b
i
α
i
∣
∣
F
2
=
min
b
i
∣
∣
E
i
−
b
i
α
i
∣
∣
F
2
\begin{aligned} \underset{B}{\operatorname{min}} ||\pmb X - \pmb B\pmb A||_F^2 & = \underset{b_i}{\operatorname{min}}\Bigg|\Bigg|\pmb X - \sum_{j=1}^k\pmb b_j\alpha^j\Bigg|\Bigg|\\ &=\underset{b_i}{\operatorname{min}}\Bigg|\Bigg|\Bigg(\pmb X - \sum_{j\ne i} \pmb b_j\pmb \alpha^j\Bigg)-\pmb b_i\pmb \alpha^i\Bigg|\Bigg|_F^2\\ & = \underset{b_i}{\operatorname{min}}||\pmb E_i - \pmb b_i \pmb \alpha^i||_F^2 \end{aligned}
Bmin∣∣XXX−BBBAAA∣∣F2=bimin∣∣∣∣∣∣∣∣∣∣XXX−j=1∑kbbbjαj∣∣∣∣∣∣∣∣∣∣=bimin∣∣∣∣∣∣∣∣∣∣(XXX−j=i∑bbbjαααj)−bbbiαααi∣∣∣∣∣∣∣∣∣∣F2=bimin∣∣EEEi−bbbiαααi∣∣F2
在更新字典的第i列时,其他各列都是固定的,因此
E
i
=
∑
j
≠
i
b
j
α
j
\pmb E_i = \sum_{j\ne i}\pmb b_j \pmb \alpha^j
EEEi=∑j=ibbbjαααj是固定的,于是最小化上式原则上只需对
E
i
\pmb E_i
EEEi进行奇异值分解以取得最大奇异值所对应的正交向量。然而,直接对
E
i
\pmb E_i
EEEi进行奇异值分解会同时修改
b
i
\pmb b_i
bbbi和
α
i
\pmb \alpha^i
αααi,从而可能破坏
A
\pmb A
AAA的稀疏性。为了避免发生这种情况,KSVD对
E
i
\pmb E_i
EEEi和
α
i
\pmb \alpha^i
αααi进行专门处理:
α
i
\pmb \alpha^i
αααi仅保留非零元素,
E
i
\pmb E_i
EEEi则仅保留
b
i
\pmb b_i
bbbi与
α
i
\pmb \alpha^i
αααi的非零元素的乘积项,然后再进行奇异值分解,这样就保持了第一步得到的稀疏性。
初始化后字典矩阵
B
\pmb B
BBB之后反复迭代上述两步,最终即可求得字典
B
\pmb B
BBB和样本
x
i
\pmb x_i
xxxi的稀疏表示
α
i
\pmb \alpha_i
αααi。用户能通过设置词汇量k的大小来控制字典的规模,从而影响稀疏程度。
六、压缩感知
在现实任务中,常希望根据部分信息来恢复全部信息。例如在数据通讯中要将模拟信号转换为数字信号,根据奈奎斯特(Nyquist)采样原理,令采样频率达到模拟信号最高频率的两倍,则采样后的数字信号就保留了模拟信号的全部信息;换言之,由此获得的数字信号能精确重构原模拟信号。然而,为了便于传输、存储,在实践中人们通常对采样的数字信号进行压缩,这有可能损失一些信息,而在信号传输过程中,由于信道出现丢包等问题,又可能损失部分信息。那么,接收方基于收到的信号,能否精确地重构出原信号呢?压缩感知(compressed sensing) 为解决此问题的新思路。
假定有长度为m的离散信号
x
\pmb x
xxx,不妨假定以远小于奈奎斯特采样定理要求的采样率进行采样,得到长度为n的采样后信号
y
,
n
≪
m
\pmb y,n\ll m
yyy,n≪m
,即
y
=
Φ
x
\pmb y = \pmb \Phi \pmb x
yyy=ΦΦΦxxx
其中
Φ
∈
R
n
×
m
\pmb \Phi \in \mathbb R^{n\times m}
ΦΦΦ∈Rn×m是对信号
x
\pmb x
xxx的测量矩阵,它确定了以什么频率进行采样以及如何将采样样本组成采样后的信号。
在已知离散信号
x
\pmb x
xxx和测量矩阵
Φ
\pmb \Phi
ΦΦΦ时要得到测量值
y
\pmb y
yyy很容易,然而,若将测量值和测量矩阵传输出去,接收方能还原出原始信号
x
\pmb x
xxx吗?一般来说,答案是否定的,这是由于n远小于m,因此
y
,
x
,
Φ
\pmb y,\pmb x,\pmb \Phi
yyy,xxx,ΦΦΦ组成的上式是一个欠定方程,无法轻易求出数值解。
现在不妨假定存在某个线性变化
Ψ
∈
R
m
×
m
\pmb \Psi\in \mathbb R^{m\times m}
ΨΨΨ∈Rm×m,使得
x
\pmb x
xxx可表示为
Ψ
s
\pmb \Psi\pmb s
ΨΨΨsss,于是
y
=
Φ
Ψ
s
=
A
s
\pmb y = \pmb \Phi \pmb \Psi \pmb s = \pmb A\pmb s
yyy=ΦΦΦΨΨΨsss=AAAsss
其中
A
=
Φ
Ψ
∈
R
n
×
m
\pmb A = \pmb \Phi \pmb \Psi \in \mathbb R^{n\times m}
AAA=ΦΦΦΨΨΨ∈Rn×m。于是,若能根据
y
\pmb y
yyy恢复出
s
\pmb s
sss,则可通过
x
=
Ψ
s
\pmb x = \pmb \Psi \pmb s
xxx=ΨΨΨsss来恢复出信号
x
\pmb x
xxx。
粗看上式没有解决任何问题,因为上式中恢复信号
s
\pmb s
sss这个逆问题仍是欠定的。然而有趣的是,若
s
\pmb s
sss具有稀疏性,则这个问题竟能很好地得以解决,这是因为稀疏性使得未知因素的影响大为减少。上式中
Ψ
\pmb \Psi
ΨΨΨ称为稀疏基,而
A
\pmb A
AAA的作用则类似于字典,能将信号转换为稀疏表示。
事实上,在很多应用中均可获得具有稀疏性的
s
\pmb s
sss,例如图像或声音的数字信号通常在时域上不具有稀疏性,但经过傅里叶变换、余弦变换、小波变换等处理后却会转化为频域上的稀疏信号。
显然,与特征选择、稀疏表示不同,压缩感知关注的是如何利用信号本身所具有的稀疏性,从部分观测样本中恢复原信号。通常认为,压缩感知分为“感知预测”和“重估恢复”两个阶段。“感知测量”关注如何对原始信号进行处理以获得稀疏样本表示,这方面的内容涉及傅里叶变换、小波变换以及字典学习、稀疏编码等,不少技术在压缩感知提出之前就已在信号处理等领域有很多研究;“重构恢复”关注的是如何基于稀疏性从少量观测中恢复原信号,这是压缩感知的精髓,当淡到压缩感知时,通常是指该部分。
压缩感知的相关理论比较复杂,下面介绍一种“限定等距性”(Restricted Isometry Property,简称RIP)
对大小为
n
×
m
(
n
≪
m
)
n\times m(n\ll m)
n×m(n≪m)的矩阵
A
\pmb A
AAA,若存在常数
δ
k
∈
(
0
,
1
)
\delta_k \in (0,1)
δk∈(0,1)使得对于任意向量
s
\pmb s
sss和
A
\pmb A
AAA的所有子矩阵
A
k
∈
R
n
×
k
\pmb A_k \in \mathbb R^{n\times k}
AAAk∈Rn×k有
(
1
−
δ
k
)
∣
∣
s
∣
∣
2
2
≤
∣
∣
A
k
s
∣
∣
2
2
≤
(
1
+
δ
k
)
∣
∣
s
∣
∣
2
2
(1-\delta_k)||\pmb s||_2^2\le||\pmb A_k \pmb s||_2^2 \le (1+\delta_k)||\pmb s||_2^2
(1−δk)∣∣sss∣∣22≤∣∣AAAksss∣∣22≤(1+δk)∣∣sss∣∣22
则称
A
\pmb A
AAA满足k限定等距性(k-RIP)。此时可通过下面的优化问题近乎完美地从
y
\pmb y
yyy中恢复出稀疏信号
s
\pmb s
sss,进而恢复出
x
\pmb x
xxx:
min
s
∣
∣
s
∣
∣
0
s
.
t
.
y
=
A
s
\begin{aligned} &\underset{s}{\operatorname{min}}||\pmb s||_0\\ & s.t. \quad \pmb y = \pmb A\pmb s \end{aligned}
smin∣∣sss∣∣0s.t.yyy=AAAsss
这样,压缩感知问题就可通过
L
1
L_1
L1范数最小化问题求解,例如上式可转化为LASSO的等价形式再通过近端梯度下降法求解,即使用“基寻踪去噪”(Basis Pursuit De-Noising)
基于部分信息来恢复全部信息的技术在许多现实任务中有重要应用。
矩阵补全(matrix completion)技术可用于解决这个问题,其形式为
min
X
rank
(
X
)
s
.
t
.
(
X
)
i
j
=
(
A
)
i
j
,
(
i
,
j
)
∈
Ω
,
\begin{aligned} &\underset{X}{\operatorname{min}} \ \operatorname{rank}(\pmb X)\\ & s.t.\quad (\pmb X)_{ij} = (\pmb A)_{ij} ,\quad(i,j) \in \Omega, \end{aligned}
Xmin rank(XXX)s.t.(XXX)ij=(AAA)ij,(i,j)∈Ω,
其中,
X
\pmb X
XXX表示需要恢复的稀疏信号;
rank
(
X
)
\operatorname{rank}(\pmb X)
rank(XXX)表示矩阵
X
\pmb X
XXX的秩;
A
\pmb A
AAA是如上表读者评分矩阵这样的已观测信号;
Ω
\Omega
Ω是
A
\pmb A
AAA中非"?"元素
A
i
j
\pmb A_{ij}
AAAij的下标(i,j)的集合。上式中的约束项明确指出,恢复出的矩阵中
(
X
)
i
j
(\pmb X)_{ij}
(XXX)ij应当与已观测到的对应元素相同。
上式是一个NP难问题。注意到
rank
(
X
)
\operatorname{rank}(\pmb X)
rank(XXX)在集合
{
X
∈
R
m
×
n
:
∣
∣
X
∣
∣
F
2
≤
1
}
\{\pmb X\in \mathbb R^{m\times n}:||\pmb X||_F^2\le 1\}
{XXX∈Rm×n:∣∣XXX∣∣F2≤1}上的凸包是
X
\pmb X
XXX的“核范数”(nuclear norm)
∣
∣
X
∣
∣
∗
=
∑
j
=
1
min
{
m
,
n
}
σ
j
(
X
)
||\pmb X||_* = \sum_{j=1}^{\operatorname{min}\{m,n\}}\sigma_j(\pmb X)
∣∣XXX∣∣∗=j=1∑min{m,n}σj(XXX)
其中
σ
j
(
X
)
\sigma_j(\pmb X)
σj(XXX)表示
X
\pmb X
XXX的奇异值,即矩阵的核范数为矩阵的奇异值之和,于是通过最小化矩阵核范数近似求解
min
X
∣
∣
X
∣
∣
∗
s
.
t
.
(
X
)
i
j
=
(
A
)
i
j
,
(
i
,
j
)
∈
Ω
,
\begin{aligned} &\underset{X}{\operatorname{min}} \ ||\pmb X||_*\\ & s.t.\quad (\pmb X)_{ij} = (\pmb A)_{ij} ,\quad(i,j) \in \Omega, \end{aligned}
Xmin ∣∣XXX∣∣∗s.t.(XXX)ij=(AAA)ij,(i,j)∈Ω,
上式是一个凸优化问题,可通过半正定规划(Semi-Definite Programming,简称SDP)求解。理论研究表明,在满足一定条件时,若
A
\pmb A
AAA的秩为
r
,
n
≪
m
r,n\ll m
r,n≪m,则只需观察到
O
(
m
r
l
o
g
2
m
)
O(mr log^2m)
O(mrlog2m)个元素就能完美恢复出
A
\pmb A
AAA