【高级机器学习】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 1a+2 1 2 1b \begin{bmatrix} 1 \ 1 \ 1 \ 1 \end{bmatrix} a + \begin{bmatrix} 2 \ 1 \ 2 \ 1 \end{bmatrix} b 1 1 1 1a+2 1 2 1b

即:
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^*α∗ 来最小化重构误差:

α∗=arg⁡min⁡α∈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∗=arg⁡min⁡D∈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


五、一般形式

进一步简写为:

min⁡D∈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:
    min⁡D∈D∣X−DR∣F2 \min_{D\in\mathcal{D}} |X - DR|_F^2 D∈Dmin∣X−DR∣F2

  • 固定 DDD,求 RRR:
    min⁡R∈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 也可写为:

min⁡D∈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)在同一框架下的理解。

min⁡D∈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。

其优化目标为:

min⁡D∈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:

α∗=arg⁡min⁡α∈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)

目标函数为:

min⁡D∈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 散度、泊松似然等)。
  • 通过正则化减少基向量冗余,提升泛化能力。
相关推荐
sell-cloud1 小时前
Prompt Engineering要凉了?Fable 5.5能“猜“意图,但银行正在封杀AI Agent——企业AI的真正护城河是什么
人工智能·prompt
Navicat中国3 小时前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI3 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区3 小时前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
XCDoris5 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy5 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V5 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI5 小时前
AI英语教培智能体的开发
人工智能
物联网软硬件开发-轨物科技6 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
海宇数据6 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化