【高级机器学习】5. Dictionary learning and Non-negative matrix factorisation
字典学习(Dictionary Learning)
一、基本概念
在自然语言中,字典是由若干“词条”组成的集合。而在机器学习中,我们希望找到一组通用的“词”(基向量),让每个样本都能由这些基的线性组合来表示。
换言之,我们在问:是否存在一组常见的元素,可以用来表示或近似所有数据样本?
二、线性组合的例子
假设有如下两个基向量:
[1 1 1 1],[2 1 2 1] \begin{bmatrix} 1 \ 1 \ 1 \ 1 \end{bmatrix}, \quad \begin{bmatrix} 2 \ 1 \ 2 \ 1 \end{bmatrix} [1 1 1 1],[2 1 2 1]
一个样本可以表示为:
[1 1 1 1]a+[2 1 2 1]b \begin{bmatrix} 1 \ 1 \ 1 \ 1 \end{bmatrix} a + \begin{bmatrix} 2 \ 1 \ 2 \ 1 \end{bmatrix} b [1 1 1 1]a+[2 1 2 1]b
即:
x=Dα
x = D \alpha
x=Dα
其中,DDD 为字典矩阵,α\alphaα 为该样本的系数向量。
三、数学形式
设样本 x∈Rdx \in \mathbb{R}^dx∈Rd,字典矩阵 D∈Rd×kD \in \mathbb{R}^{d\times k}D∈Rd×k。
我们希望找到一个最优系数 α∗\alpha^*α∗ 来最小化重构误差:
α∗=argminα∈Rk∣x−Dα∣2 \alpha^* = \arg \min_{\alpha \in \mathbb{R}^k} |x - D\alpha|^2 α∗=argα∈Rkmin∣x−Dα∣2
其中,∣x∣=x⊤x|x| = \sqrt{x^\top x}∣x∣=x⊤x 为 ℓ2\ell_2ℓ2 范数。
对于多个样本 x1,x2,…,xn∈Rdx_1, x_2, \dots, x_n \in \mathbb{R}^dx1,x2,…,xn∈Rd,目标变为:
D∗,α1∗,…,αn∗=argminD∈Rd×k,αi∈Rk1n∑i=1n∣xi−Dαi∣2 {D^*, \alpha_1^*, \dots, \alpha_n^*} = \arg \min_{D \in \mathbb{R}^{d\times k}, \alpha_i \in \mathbb{R}^k} \frac{1}{n} \sum_{i=1}^n |x_i - D\alpha_i|^2 D∗,α1∗,…,αn∗=argD∈Rd×k,αi∈Rkminn1i=1∑n∣xi−Dαi∣2
四、矩阵形式与Frobenius范数
将所有样本组合成矩阵:
X=[x1,x2,…,xn]∈Rd×n X = [x_1, x_2, \dots, x_n] \in \mathbb{R}^{d\times n} X=[x1,x2,…,xn]∈Rd×n
将所有系数组合成:
R=[α1,α2,…,αn]∈Rk×n R = [\alpha_1, \alpha_2, \dots, \alpha_n] \in \mathbb{R}^{k\times n} R=[α1,α2,…,αn]∈Rk×n
则整体优化目标可写为:
1n∑i=1n∣xi−Dαi∣2=1n∣X−DR∣F2 \frac{1}{n}\sum_{i=1}^n |x_i - D\alpha_i|^2 = \frac{1}{n}|X - DR|_F^2 n1i=1∑n∣xi−Dαi∣2=n1∣X−DR∣F2
其中,Frobenius 范数定义为:
∣∣X∣∣F=trace(X⊤X)=∑i=1d∑j=1nXi,j2 ||X||_F = \sqrt{\text{trace}(X^\top X)} = \sqrt{\sum_{i=1}^d \sum_{j=1}^n X_{i,j}^2} ∣∣X∣∣F=trace(X⊤X)=i=1∑dj=1∑nXi,j2
五、一般形式
进一步简写为:
minD∈D,,R∈R∣X−DR∣F2 \min_{D \in \mathcal{D},, R \in \mathcal{R}} |X - DR|_F^2 D∈D,,R∈Rmin∣X−DR∣F2
其中 D\mathcal{D}D 和 R\mathcal{R}R 分别为 DDD 与 RRR 的约束域(例如列归一化、稀疏性、非负性等)。
六、优化特性
该目标函数在固定 DDD 或固定 RRR 时是凸的,但对二者同时并不凸。
因此常用交替最小化(Alternating Minimization)策略:
-
固定 RRR,求 DDD:
minD∈D∣X−DR∣F2 \min_{D\in\mathcal{D}} |X - DR|_F^2 D∈Dmin∣X−DR∣F2 -
固定 DDD,求 RRR:
minR∈R∣X−DR∣F2 \min_{R\in\mathcal{R}} |X - DR|_F^2 R∈Rmin∣X−DR∣F2
若 (D∗,R∗)(D^*, R^*)(D∗,R∗) 为局部极小解,则存在可逆矩阵 AAA 满足:
X≈D∗R∗=(D∗A)(A−1R∗) X \approx D^* R^* = (D^*A)(A^{-1}R^*) X≈D∗R∗=(D∗A)(A−1R∗)
表明这种分解不是唯一的。
可选的归一化步骤为:
D:,i←D:,i∣∣D:,i∣∣ D_{:,i} \leftarrow \frac{D_{:,i}}{||D_{:,i}||} D:,i←∣∣D:,i∣∣D:,i
七、与经典方法的关系
1. 奇异值分解(SVD)
SVD 将矩阵表示为:
X=UΣV⊤ X = U\Sigma V^\top X=UΣV⊤
这也是一种特殊的字典学习形式。
其中:
- 字典:D=UD = UD=U
- 系数:R=ΣV⊤R = \Sigma V^\topR=ΣV⊤
它给出在 ∣X−DR∣F2|X - DR|_F^2∣X−DR∣F2 意义下的最优低秩近似。
2. 主成分分析(PCA)
PCA 可写作:
A=UΛU⊤ A = U\Lambda U^\top A=UΛU⊤
同样可以视为:
D=[u1,u2,…,uk],R=Λ[u1⊤,u2⊤,…,uk⊤] D = [u_1, u_2, \dots, u_k], \quad R = \Lambda [u_1^\top, u_2^\top, \dots, u_k^\top] D=[u1,u2,…,uk],R=Λ[u1⊤,u2⊤,…,uk⊤]
要求:
D⊤D=I D^\top D = I D⊤D=I
即字典的列向量两两正交。
3. K-means 聚类
K-means 也可写为:
minD∈D,,R∈R∣X−DR∣F2 \min_{D\in\mathcal{D},, R\in\mathcal{R}} |X - DR|_F^2 D∈D,,R∈Rmin∣X−DR∣F2
特殊约束是:
每一列的系数 R:,iR_{:,i}R:,i 中只有一个元素为1,其余为0。
此时字典 DDD 的列就是各簇的质心。
八、总结
字典学习的核心思想是:
通过学习一个字典 DDD 和表示矩阵 RRR,让 X≈DRX \approx DRX≈DR,并通过对 DDD 与 RRR 的不同约束形式,统一了多种经典方法(SVD、PCA、K-means)在同一框架下的理解。
minD∈D,,R∈R∣X−DR∣F2 \min_{D\in\mathcal{D},, R\in\mathcal{R}} |X - DR|_F^2 D∈D,,R∈Rmin∣X−DR∣F2
九、非负矩阵分解(Non-negative Matrix Factorisation, NMF)
1. 为什么数据常常是非负的?
在许多实际任务中,数据本身就具有非负性。例如:
- 图像像素强度(Image intensities)
- 电影评分(Movie ratings)
- 文本词频(Document-term counts)
- 基因表达或芯片数据(Microarray data)
- 股票市场价格(Stock market values)
这些特征都不能为负,因此在模型中引入非负约束是符合数据性质的。
2. NMF 的基本形式
非负矩阵分解的目标与字典学习一致,都是希望通过两个矩阵的乘积来近似原始数据矩阵 XXX。
其优化目标为:
minD∈D,R∈R∣X−DR∣F2 \min_{D \in \mathcal{D}, R \in \mathcal{R}} |X - DR|_F^2 D∈D,R∈Rmin∣X−DR∣F2
特殊约束条件为:
D=R∗+d×k,R=R∗+k×n \mathcal{D} = \mathbb{R}*+^{d\times k}, \quad \mathcal{R} = \mathbb{R}*+^{k\times n} D=R∗+d×k,R=R∗+k×n
即 DDD 与 RRR 中的所有元素都要求非负。
3. 几何解释:非负约束的意义
非负性约束意味着系数的组合只能是加性(additive),不能相互抵消。
例如,若我们有两个基向量 xxx 和 yyy,则它们的非负组合为:
θx+(1−θ)y,θ∈[0,1] \theta x + (1 - \theta) y, \quad \theta \in [0,1] θx+(1−θ)y,θ∈[0,1]
几何上,这样的组合位于连接 xxx 与 yyy 的线段上。
在更高维空间中,若字典矩阵 DDD 含有三列基向量 D:,1,D:,2,D:,3D_{:,1}, D_{:,2}, D_{:,3}D:,1,D:,2,D:,3,那么所有样本点 xix_ixi 将分布在由这三个基向量张成的**非负锥体(cone)或单纯形(simplex)**内。
D=R∗+d×k,R=R∗+k×n \mathcal{D} = \mathbb{R}*+^{d\times k}, \quad \mathcal{R} = \mathbb{R}*+^{k\times n} D=R∗+d×k,R=R∗+k×n
4. 非负约束带来的“部件式表示”
由于非负性只允许加法而禁止减法,NMF 所学到的表示是一种部件式(parts-based)表示。
在视觉上,这意味着模型倾向于把整体拆分成若干有意义的部分(例如人脸的眼睛、鼻子、嘴等),而不是全局正负叠加的线性组合。
因此 NMF 常用于模式分解、图像理解和主题分析等场景。
5. NMF 的重构过程示例
对单一样本 xxx:
α∗=argminα∈R+k∣x−Dα∣2 \alpha^* = \arg\min_{\alpha \in \mathbb{R}^k_+} |x - D\alpha|^2 α∗=argα∈R+kmin∣x−Dα∣2
在图像任务中,DDD 表示若干“局部特征基”(如眼睛、嘴巴等),α\alphaα 表示它们在该图像中的权重。
X≈DRX \approx DRX≈DR 的分解结果相当于把整体图像用若干“非负基块”加起来重构。
6. NMF 的优化:乘法更新规则(Multiplicative Update Rules, MUR)
目标函数为:
minD∈D,R∈R∣X−DR∣F2 \min_{D \in \mathcal{D}, R \in \mathcal{R}} |X - DR|_F^2 D∈D,R∈Rmin∣X−DR∣F2
固定 DDD,对 RRR 求偏导:
∂∣X−DR∣F2∂R=−2D⊤X+2D⊤DR \frac{\partial |X - DR|_F^2}{\partial R} = -2D^\top X + 2D^\top DR ∂R∂∣X−DR∣F2=−2D⊤X+2D⊤DR
7. 乘法更新规则推导
当固定 DkD^kDk 时,更新 Rk+1R^{k+1}Rk+1:
Ri,jk+1=Ri,jk(Dk⊤X)∗i,j(Dk⊤DkRk)∗i,j R_{i,j}^{k+1} = R_{i,j}^k \frac{(D^{k\top} X)*{i,j}}{(D^{k\top} D^k R^k)*{i,j}} Ri,jk+1=Ri,jk(Dk⊤DkRk)∗i,j(Dk⊤X)∗i,j
再固定 Rk+1R^{k+1}Rk+1,更新 Dk+1D^{k+1}Dk+1:
Di,jk+1=Di,jk(XRk+1⊤)∗i,j(DkRk+1Rk+1⊤)∗i,j D_{i,j}^{k+1} = D_{i,j}^k \frac{(X R^{k+1\top})*{i,j}}{(D^k R^{k+1} R^{k+1\top})*{i,j}} Di,jk+1=Di,jk(DkRk+1Rk+1⊤)∗i,j(XRk+1⊤)∗i,j
8. 理论保证
定理:
以上乘法更新规则能保证目标函数 ∣X−DR∣F2|X - DR|_F^2∣X−DR∣F2 单调不增。
当且仅当 Dk+1D^{k+1}Dk+1 与 Rk+1R^{k+1}Rk+1 处于目标函数的驻点时,函数值保持不变。
9. NMF 的优缺点与拓展
Pros
- 结果具有极强的可解释性(部件式表示)。
- 特征分量往往对应可观测或语义上独立的“成分”。
Cons
- 分解结果不唯一(同一矩阵可由不同的 D,RD, RD,R 得到)。
- 基之间可能存在冗余(不同列可能表达相似的特征)。
NMF 的变体
- 结合不同的损失函数(除平方误差外,如 KL 散度、泊松似然等)。
- 通过正则化减少基向量冗余,提升泛化能力。
