本站内容由 AI 生成,可能存在错误。如发现问题,欢迎到 GitHub Issues 反馈。

NMF:非负约束下的 Parts-Based 分解

NMF:非负约束下的 Parts-Based 分解

更新于 2026-04-23

上一篇矩阵补全展示了如何从部分观测恢复低秩矩阵。本篇回到一个更基本的问题:当数据矩阵的元素天然非负(如像素灰度、词频、评分),分解出来的因子也应该非负——这个简单的约束会带来什么?

答案是深刻的:非负约束迫使分解只能用加法组合来重建数据,不允许减法抵消。 这自然导致了”parts-based”表示——分解出的基向量对应数据的局部部件,而不是 PCA 那样的全局模式。Lee 和 Seung 在 1999 年的 Nature 论文中用人脸分解生动展示了这一点:PCA 给出鬼影般的”特征脸”(eigenfaces),每张都是全脸模式;NMF 给出眉毛、眼睛、鼻子、嘴巴等可解释的局部部件(见 Lee & Seung, 1999, Figure 1)。

NMF(Non-negative Matrix Factorization,非负矩阵分解) 是 Part 1 “拆” 应用阶段的核心方法之一。它与 SVD(Art. 3 SVD)的关系不是”特例”而是”另一条路”——SVD 追求正交性和全局最优,NMF 追求非负性和可解释性。两者回答不同的问题:SVD 问”最优低秩近似是什么”,NMF 问”数据由哪些部件叠加而成”。

问题定义:非负约束的深层含义

形式化

给定非负矩阵 AR0m×nA \in \mathbb{R}_{\geq 0}^{m \times n}(所有元素 aij0a_{ij} \geq 0),NMF 寻找两个非负矩阵:

AWH,WR0m×k,HR0k×nA \approx WH, \quad W \in \mathbb{R}_{\geq 0}^{m \times k}, \quad H \in \mathbb{R}_{\geq 0}^{k \times n}

其中 kmin(m,n)k \ll \min(m, n) 是分解秩。

逐项理解:

  • AR0m×nA \in \mathbb{R}_{\geq 0}^{m \times n}:原始数据矩阵,mm 个样本 ×\times nn 个特征,所有元素非负
  • WR0m×kW \in \mathbb{R}_{\geq 0}^{m \times k}系数矩阵(也叫”混合矩阵”)——第 iiwiR0k\mathbf{w}_i \in \mathbb{R}_{\geq 0}^{k} 表示第 ii 个样本由 kk 个基的加权组合
  • HR0k×nH \in \mathbb{R}_{\geq 0}^{k \times n}基矩阵——第 aahaR0n\mathbf{h}_a \in \mathbb{R}_{\geq 0}^{n} 是第 aa 个”部件”的特征模式
  • kk:分解秩,决定部件的数量

每个数据点(AA 的第 ii 行)被近似表示为:

aiTa=1kwiahaT\mathbf{a}_i^T \approx \sum_{a=1}^k w_{ia} \, \mathbf{h}_a^T

由于 wia0w_{ia} \geq 0ha0\mathbf{h}_a \geq \mathbf{0},每个数据点是基向量的非负加权叠加

非负约束 → 只允许加法 → Parts-Based

PCA vs NMF:全局模式 vs 局部部件
蓝色 = 正值,红色 = 负值;NMF 只有正值(蓝),自然产生局部部件
PCA / SVD全局模式(holistic)特征脸 1(全脸正负混合)正负可抵消→ 全局编码NMF局部部件(parts-based)部件 1: 眼睛区域部件 2: 嘴巴区域+只有正值 → 只能叠加 → 稀疏且局部PCA: x ≈ Σcⱼwⱼ(cⱼ 可正可负) NMF: a ≈ Σwᵢₐhₐ(全部 ≥ 0)

这是 NMF 最核心的洞察,值得仔细展开。

对比 PCA/SVD:在 PCA 中,数据的近似表示为 x~j=1kcjwj\tilde{\mathbf{x}} \approx \sum_{j=1}^k c_j \mathbf{w}_j,其中系数 cjc_j 和基向量 wj\mathbf{w}_j 的分量都可以是正的或负的。这意味着不同基向量可以互相抵消——一个基向量添加的特征,另一个可以减去。结果是每个基向量必须编码全局信息(它需要”知道”其他基向量会添加或减去什么),产生的是全局模式(holistic representation)。

NMF 的情况:非负约束 wia0w_{ia} \geq 0, haj0h_{aj} \geq 0 意味着基向量只能被加上去,不能被减去。如果第 aa 个基在第 jj 个特征上 haj>0h_{aj} > 0,那这个基被使用时(wia>0w_{ia} > 0只会增加jj 个特征的值,永远不会减少。

这个”只加不减”的约束有一个深刻的后果:每个基向量倾向于只在数据的一个局部区域激活。为什么?如果一个基在不相关的区域也有大的正值,而数据在那个区域的值很小,那叠加后会产生不必要的正值偏差——没有其他基能通过”减法”来补偿。因此,NMF 学到的基天然倾向于稀疏且局部

用人脸的例子说:

  • PCA 的第一个特征脸(PC1)可能在眼睛区域为正、在嘴巴区域为负——它编码的是”眼睛亮则嘴暗”这样的全局相关模式
  • NMF 的一个基向量更可能只在”鼻子区域”为正、其他区域接近零——它就是”鼻子部件”

目标函数

NMF 最常用的目标函数是 Frobenius 范数平方下的重建误差(也叫欧氏距离目标):

minW0,H0AWHF2=minW0,H0i=1mj=1n(aij[WH]ij)2\min_{W \geq 0, \, H \geq 0} \|A - WH\|_F^2 = \min_{W \geq 0, \, H \geq 0} \sum_{i=1}^m \sum_{j=1}^n (a_{ij} - [WH]_{ij})^2

其中 [WH]ij=a=1kwiahaj[WH]_{ij} = \sum_{a=1}^k w_{ia} h_{aj}

另一个常用目标是 KL 散度(Kullback-Leibler divergence,也叫广义 KL 散度或 I-散度):

DKL(AWH)=i,j(aijlogaij[WH]ijaij+[WH]ij)D_{KL}(A \| WH) = \sum_{i,j} \left( a_{ij} \log \frac{a_{ij}}{[WH]_{ij}} - a_{ij} + [WH]_{ij} \right)

KL 散度目标在处理计数数据(如词频)时更自然,因为它对应泊松噪声模型。本文主要聚焦 Frobenius 范数目标。

非凸性:与 SVD 不同,NMF 的优化问题是非凸的——没有封闭解,也不保证找到全局最优。固定 WW 优化 HH 是凸的(非负最小二乘),固定 HH 优化 WW 也是凸的,但同时优化 WWHH 是非凸的。这是 NMF 付出的代价:换来了可解释性,失去了全局最优的保证。

乘法更新规则:Lee & Seung 的核心贡献

乘法更新 = 元素级自适应步长的梯度下降1. 标准梯度下降H ← H − η · (−2WᵀA + 2WᵀWH)问题:不保证非负!2. 选择自适应步长ηₐⱼ = Hₐⱼ / (2·(WᵀWH)ₐⱼ)每个元素有自己的步长!3. 得到乘法更新规则Hₐⱼ ← Hₐⱼ · (WᵀA)ₐⱼ / (WᵀWH)ₐⱼ直觉:每个元素按「数据说应该多大」/「当前重建认为多大」的比值缩放比值 > 1 → 增大 | 比值 < 1 → 缩小 | 比值 = 1 → 不变 | 始终非负 ✓

Lee 和 Seung 在 NeurIPS 2000 提出了 NMF 最著名的求解算法——乘法更新规则(multiplicative update rules)。它的优雅之处在于:更新规则自动保持非负性,不需要额外的投影步骤。

更新公式

HajHaj(WTA)aj(WTWH)aj\boxed{H_{aj} \leftarrow H_{aj} \frac{(W^T A)_{aj}}{(W^T W H)_{aj}}}

WiaWia(AHT)ia(WHHT)ia\boxed{W_{ia} \leftarrow W_{ia} \frac{(A H^T)_{ia}}{(W H H^T)_{ia}}}

这两个规则交替应用:先固定 WW 更新 HH,再固定 HH 更新 WW,重复直到收敛。

关键性质:如果 WWHH 初始化为正值,那么乘法更新永远保持非负性——因为每次更新都是”当前值 × 正数 / 正数 = 正数”。

从梯度下降推导乘法更新

乘法更新不是凭空出现的,它可以从标准梯度下降自然推导出来。下面给出完整推导。

第一步:计算目标函数对 HH 的梯度。

目标函数 L=AWHF2\mathcal{L} = \|A - WH\|_F^2。展开:

L=tr[(AWH)T(AWH)]=tr(ATA)2tr(ATWH)+tr(HTWTWH)\mathcal{L} = \text{tr}\left[(A - WH)^T(A - WH)\right] = \text{tr}(A^TA) - 2\text{tr}(A^TWH) + \text{tr}(H^TW^TWH)

HH 求矩阵导数(利用矩阵微积分的结果):

LH=2WTA+2WTWH\frac{\partial \mathcal{L}}{\partial H} = -2W^TA + 2W^TWH

逐项理解:

  • 2WTA-2W^TA“好”的部分,把 AA 中的信息拉向 HH(梯度为负 → 增大 HH 会减小误差)
  • +2WTWH+2W^TWH“坏”的部分,当前重建 WHWHHH 的惩罚(梯度为正 → 增大 HH 会增大误差)

第二步:标准梯度下降。

标准梯度下降更新 HH

HHηLH=Hη(2WTA+2WTWH)H \leftarrow H - \eta \cdot \frac{\partial \mathcal{L}}{\partial H} = H - \eta \cdot (-2W^TA + 2W^TWH)

即:

HH+2η(WTAWTWH)H \leftarrow H + 2\eta (W^TA - W^TWH)

问题:这个更新不保证非负性。即使 HH 当前非负,减去一个正数后可能变负。

第三步:元素级自适应步长。

Lee 和 Seung 的关键洞察是:选择一个元素级的(element-wise)步长,而不是全局标量步长 η\eta。具体地,令步长为:

ηaj=Haj2(WTWH)aj\eta_{aj} = \frac{H_{aj}}{2(W^TWH)_{aj}}

注意 Haj0H_{aj} \geq 0(WTWH)aj0(W^TWH)_{aj} \geq 0(因为所有因子非负),所以 ηaj0\eta_{aj} \geq 0

代入梯度下降公式:

HajHaj+2Haj2(WTWH)aj[(WTA)aj(WTWH)aj]H_{aj} \leftarrow H_{aj} + 2 \cdot \frac{H_{aj}}{2(W^TWH)_{aj}} \cdot \left[(W^TA)_{aj} - (W^TWH)_{aj}\right]

=Haj+Haj(WTWH)aj(WTA)ajHaj(WTWH)aj(WTWH)aj= H_{aj} + \frac{H_{aj}}{(W^TWH)_{aj}} \cdot (W^TA)_{aj} - \frac{H_{aj}}{(W^TWH)_{aj}} \cdot (W^TWH)_{aj}

=Haj+Haj(WTA)aj(WTWH)ajHaj= H_{aj} + H_{aj} \frac{(W^TA)_{aj}}{(W^TWH)_{aj}} - H_{aj}

=Haj(WTA)aj(WTWH)aj= H_{aj} \frac{(W^TA)_{aj}}{(W^TWH)_{aj}}

这就是乘法更新规则!它不过是步长为 ηaj=Haj2(WTWH)aj\eta_{aj} = \frac{H_{aj}}{2(W^TWH)_{aj}} 的元素级梯度下降

WW 的更新完全对称。目标函数对 WW 的梯度是:

LW=2AHT+2WHHT\frac{\partial \mathcal{L}}{\partial W} = -2AH^T + 2WHH^T

选择元素级步长 ηia=Wia2(WHHT)ia\eta_{ia} = \frac{W_{ia}}{2(WHH^T)_{ia}},同样的推导给出:

WiaWia(AHT)ia(WHHT)iaW_{ia} \leftarrow W_{ia} \frac{(AH^T)_{ia}}{(WHH^T)_{ia}}

收敛性保证

乘法更新的收敛保证‖A−WH‖²迭代次数驻点(不一定全局最优)全局最优收敛性质目标函数单调不增 ✓收敛到驻点(非凸)不保证全局最优 ✗实践:多次随机初始化选最终误差最小的结果

Lee 和 Seung 证明了以下性质(见 Lee & Seung, 2000, Theorem 1):

定理:在乘法更新规则下,目标函数 AWHF2\|A - WH\|_F^2单调不增的。即每次更新后,重建误差要么减小,要么不变。

证明的核心工具是辅助函数(auxiliary function)方法——构造一个目标函数的上界,证明乘法更新恰好是最小化这个上界的步骤。这与 EM 算法的思路类似。

注意:单调不增保证的是收敛到驻点(stationary point),不是全局最优。由于问题非凸,不同的初始化可能导致不同的局部最优解。实践中通常多次随机初始化,选择最终误差最小的结果。

直觉总结

乘法更新的直觉可以概括为:

每个元素按照”应该有多大”与”实际有多大”的比值来缩放。

  • 如果 (WTA)aj>(WTWH)aj(W^TA)_{aj} > (W^TWH)_{aj}——“数据说这里应该更大”大于”当前重建认为的值”——比值 > 1,HajH_{aj} 增大
  • 如果 (WTA)aj<(WTWH)aj(W^TA)_{aj} < (W^TWH)_{aj}——“当前重建偏大”——比值 < 1,HajH_{aj} 缩小
  • 如果两者相等——已经匹配了——比值 = 1,HajH_{aj} 不变

数值例子:3×4 矩阵的 NMF

为了把乘法更新规则落地,我们对一个小矩阵做手算 NMF。

数据矩阵(3 个样本 × 4 个特征):

A=[530140011105]A = \begin{bmatrix} 5 & 3 & 0 & 1 \\ 4 & 0 & 0 & 1 \\ 1 & 1 & 0 & 5 \end{bmatrix}

直觉上,前两行的特征 1-2 较大(“部件 A”),第三行的特征 4 较大(“部件 B”),特征 3 全为零。

目标k=2k = 2,即 AWHA \approx WHWR03×2W \in \mathbb{R}^{3 \times 2}_{\geq 0}HR02×4H \in \mathbb{R}^{2 \times 4}_{\geq 0}

初始化

随机初始化(取简单正值):

W(0)=[111111],H(0)=[11111111]W^{(0)} = \begin{bmatrix} 1 & 1 \\ 1 & 1 \\ 1 & 1 \end{bmatrix}, \quad H^{(0)} = \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \end{bmatrix}

第一轮迭代

更新 HHHHWTAWTWHH \leftarrow H \odot \frac{W^T A}{W^T W H}\odot 表示逐元素乘法,分数表示逐元素除法)

计算分子 WTAW^T A2×42 \times 4):

W(0)TA=[111111][530140011105]=[1040710407]W^{(0)T} A = \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} \begin{bmatrix} 5 & 3 & 0 & 1 \\ 4 & 0 & 0 & 1 \\ 1 & 1 & 0 & 5 \end{bmatrix} = \begin{bmatrix} 10 & 4 & 0 & 7 \\ 10 & 4 & 0 & 7 \end{bmatrix}

计算分母 WTWHW^T W H:先算 WTWW^T W2×22 \times 2):

W(0)TW(0)=[3333]W^{(0)T} W^{(0)} = \begin{bmatrix} 3 & 3 \\ 3 & 3 \end{bmatrix}

再算 WTWH(0)W^T W \cdot H^{(0)}2×42 \times 4):

[3333][11111111]=[66666666]\begin{bmatrix} 3 & 3 \\ 3 & 3 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \end{bmatrix} = \begin{bmatrix} 6 & 6 & 6 & 6 \\ 6 & 6 & 6 & 6 \end{bmatrix}

逐元素更新:

H(1)=H(0)WTAWTWH(0)=[11111111][10/64/60/67/610/64/60/67/6]H^{(1)} = H^{(0)} \odot \frac{W^TA}{W^TWH^{(0)}} = \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \end{bmatrix} \odot \begin{bmatrix} 10/6 & 4/6 & 0/6 & 7/6 \\ 10/6 & 4/6 & 0/6 & 7/6 \end{bmatrix}

=[1.6670.66701.1671.6670.66701.167]= \begin{bmatrix} 1.667 & 0.667 & 0 & 1.167 \\ 1.667 & 0.667 & 0 & 1.167 \end{bmatrix}

注意特征 3 的值直接变为 0——因为 AA 中该列全为 0,分子 (WTA)3=0(W^TA)_{\cdot 3} = 0。乘法更新自动处理了零元素。

更新 WWWWAHTWHHTW \leftarrow W \odot \frac{AH^T}{WHH^T}

计算分子 AH(1)TAH^{(1)T}3×23 \times 2):

AH(1)T=[530140011105][1.6671.6670.6670.667001.1671.167]=[11.50211.5027.8357.8358.1698.169]AH^{(1)T} = \begin{bmatrix} 5 & 3 & 0 & 1 \\ 4 & 0 & 0 & 1 \\ 1 & 1 & 0 & 5 \end{bmatrix} \begin{bmatrix} 1.667 & 1.667 \\ 0.667 & 0.667 \\ 0 & 0 \\ 1.167 & 1.167 \end{bmatrix} = \begin{bmatrix} 11.502 & 11.502 \\ 7.835 & 7.835 \\ 8.169 & 8.169 \end{bmatrix}

计算分母 W(0)H(1)H(1)TW^{(0)} H^{(1)} H^{(1)T}:先算 H(1)H(1)TH^{(1)} H^{(1)T}2×22 \times 2):

H(1)H(1)T=[1.6672+0.6672+0+1.1672]=[4.5844.5844.5844.584]H^{(1)} H^{(1)T} = \begin{bmatrix} 1.667^2 + 0.667^2 + 0 + 1.167^2 & \cdots \\ \cdots & \cdots \end{bmatrix} = \begin{bmatrix} 4.584 & 4.584 \\ 4.584 & 4.584 \end{bmatrix}

W(0)H(1)H(1)T=[111111][4.5844.5844.5844.584]=[9.1689.1689.1689.1689.1689.168]W^{(0)} H^{(1)} H^{(1)T} = \begin{bmatrix} 1 & 1 \\ 1 & 1 \\ 1 & 1 \end{bmatrix} \begin{bmatrix} 4.584 & 4.584 \\ 4.584 & 4.584 \end{bmatrix} = \begin{bmatrix} 9.168 & 9.168 \\ 9.168 & 9.168 \\ 9.168 & 9.168 \end{bmatrix}

逐元素更新:

W(1)=W(0)AH(1)TW(0)H(1)H(1)T=[1.2551.2550.8550.8550.8910.891]W^{(1)} = W^{(0)} \odot \frac{AH^{(1)T}}{W^{(0)}H^{(1)}H^{(1)T}} = \begin{bmatrix} 1.255 & 1.255 \\ 0.855 & 0.855 \\ 0.891 & 0.891 \end{bmatrix}

第一轮后,WWHH 的两列/行仍然相同(因为初始化完全对称)。但随着迭代继续,微小的数值差异会打破对称性。实践中通常用随机不对称初始化来避免这个问题。

经过约 50-100 轮迭代,NMF 会收敛到类似以下形态(具体值取决于初始化):

W[1.70.11.30.20.01.4],H[2.91.700.20.70.603.5]W \approx \begin{bmatrix} 1.7 & 0.1 \\ 1.3 & 0.2 \\ 0.0 & 1.4 \end{bmatrix}, \quad H \approx \begin{bmatrix} 2.9 & 1.7 & 0 & 0.2 \\ 0.7 & 0.6 & 0 & 3.5 \end{bmatrix}

解读:

  • 基 1HH 第 1 行):特征 1、2 大,特征 3、4 小——对应”部件 A”
  • 基 2HH 第 2 行):特征 4 大,其他小——对应”部件 B”
  • 样本 1 和 2 主要由部件 A 构成(WW 对应行的第 1 列大)
  • 样本 3 主要由部件 B 构成(WW 第 3 行的第 2 列大)

NMF 成功发现了数据的”部件结构”!

NMF vs PCA/SVD:核心区别

下面的交互组件展示 NMF 和 PCA(截断 SVD)在分解同一个非负矩阵时的区别。左侧 NMF 的基和权重全是非负的(蓝色深浅表示大小),右侧 SVD 的基和权重有正有负(蓝色 = 正,红色 = 负)。拖动滑块改变分解秩 kk

NMF vs PCA:分解方式对比
非负矩阵分解产生 parts-based 表示,PCA 产生全局模式
原始矩阵 A (8×8)NMF 重建SVD 重建Frobenius 误差: 3.081Frobenius 误差: 2.678NMF 分解:A ≈ WH所有值 ≥ 0,局部部件可相加1:W[:,1]xH[1,:]2:W[:,2]xH[2,:]3:W[:,3]xH[3,:]PCA 分解(截断 SVD)有正有负,全局模式可相消1:σ1=16.8 · u1xv1ᵀ2:σ2=14.4 · u2xv2ᵀ3:σ3=7.5 · u3xv3ᵀ正值负值零值
3
NMF
Frobenius 误差: 3.081
所有值 ≥ 0,局部部件可相加
SVD (PCA)
Frobenius 误差: 2.678
有正有负,全局模式可相消

观察几个关键差异:

  1. NMF 基向量是稀疏的、局部的:每个基只在矩阵的一个区域有较大的非负值,其他区域接近零。这就是”parts-based”表示——每个基代表一个”部件”。

  2. SVD 基向量是全局的、有正负的:每个奇异向量在整个矩阵范围内有正有负值。不同奇异向量之间通过正负抵消来精确重建,但单独一个奇异向量没有直观的”部件”含义。

  3. SVD 的重建误差更小:对于相同的 kk,SVD 截断(Eckart-Young 定理保证的最优性)总是给出 Frobenius 范数意义下的最小重建误差。NMF 由于非负约束的限制,重建误差一般更大——这是可解释性的代价。

  4. NMF 结果可加性解释:NMF 的重建是 Aa=1kwiahaTA \approx \sum_{a=1}^k w_{ia} \mathbf{h}_a^T,每一项都是非负的,可以解释为”加上部件 aa 的贡献”。SVD 的重建 Ai=1kσiuiviTA \approx \sum_{i=1}^k \sigma_i \mathbf{u}_i \mathbf{v}_i^T 中的各项有正有负,无法做这种加法解释。

应用:话题模型

NMF 最成功的应用之一是文档的话题发现(topic discovery),它可以被视为经典话题模型 LDA(Latent Dirichlet Allocation)的简化版。

文档-词矩阵的 NMF

NMF 话题模型:文档-词矩阵 ≈ 话题混合 × 话题词分布
A文档×词频doc1doc2doc3doc4mach.learn.netw.catdogpetW话题混合doc1doc2doc3doc4T1T2×H话题词分布T1T2mach.learn.netw.catdogpet话题 1: ML话题 2: 宠物全部元素 ≥ 0:词频非负、话题权重非负、话题内词分布非负

考虑一个文档-词矩阵(term-document matrix)AR0m×nA \in \mathbb{R}_{\geq 0}^{m \times n}

  • mm 个文档,nn 个词
  • aija_{ij} = 词 jj 在文档 ii 中的出现次数(或 TF-IDF 权重)
  • 所有元素天然非负

AA 做 NMF:AWHA \approx WH

Am×nWm×kHk×n\underbrace{A}_{m \times n} \approx \underbrace{W}_{m \times k} \cdot \underbrace{H}_{k \times n}

解读:

  • HH 的第 aahaR0n\mathbf{h}_a \in \mathbb{R}_{\geq 0}^naa 个话题的词分布——hajh_{aj} 大说明词 jj 在话题 aa 中重要
  • WW 的第 iiwiR0k\mathbf{w}_i \in \mathbb{R}_{\geq 0}^k文档 ii 的话题混合——wiaw_{ia} 大说明文档 ii 主要属于话题 aa
  • kk:话题数量(需要人工指定)

NMF 的非负性在这里完美对应语义:

  • 词频不能为负:一个词在一个话题中的重要性 0\geq 0
  • 话题贡献不能为负:一篇文档中某个话题的权重 0\geq 0
  • 加法组合:一篇文档 = 话题 1 的贡献 + 话题 2 的贡献 + …,没有”负话题”

与 LDA 的关系

LDA(Latent Dirichlet Allocation)是概率话题模型的标准方法,它假设:

  • 每个话题是词上的概率分布(非负且归一化)
  • 每篇文档是话题上的概率分布(非负且归一化)

NMF 的话题模型没有概率归一化约束,但在实践中,对 NMF 结果的行归一化可以得到类似的概率解释。实证研究表明,NMF 和 LDA 在许多话题发现任务上效果相当,而 NMF 的优势在于:

  1. 计算更简单:NMF 只需矩阵运算,不需要贝叶斯推断(变分推断或 MCMC)
  2. 确定性结果(给定初始化):不像 MCMC 采样那样有随机波动
  3. 容易添加正则化:如稀疏约束 W1\|W\|_1H1\|H\|_1

具体例子

假设有 4 篇文档和 6 个词,文档-词矩阵为:

machinelearningnetworkcatdogpet
doc1543000
doc2454010
doc3000453
doc4010345

k=2k = 2 做 NMF,期望得到两个话题:

  • 话题 1(“机器学习”):h1(hmachine,hlearning,hnetwork,0,0,0)\mathbf{h}_1 \approx (h_{\text{machine}}, h_{\text{learning}}, h_{\text{network}}, 0, 0, 0),“machine”、“learning”、“network” 权重大
  • 话题 2(“宠物”):h2(0,0,0,hcat,hdog,hpet)\mathbf{h}_2 \approx (0, 0, 0, h_{\text{cat}}, h_{\text{dog}}, h_{\text{pet}}),“cat”、“dog”、“pet” 权重大

文档 1、2 的话题混合 wi\mathbf{w}_i 中话题 1 权重大;文档 3、4 中话题 2 权重大。doc2 和 doc4 可能有少量跨话题的词(如 doc2 中的 “dog”),NMF 会在话题混合中反映这一点。

NMF 的变体与正则化

稀疏 NMF

在基础 NMF 上添加 1\ell_1 正则化项,鼓励 WW 和/或 HH 更稀疏:

minW0,H0AWHF2+αW1+βH1\min_{W \geq 0, H \geq 0} \|A - WH\|_F^2 + \alpha \|W\|_1 + \beta \|H\|_1

其中 W1=iawia\|W\|_1 = \sum_{ia} w_{ia}H1=ajhaj\|H\|_1 = \sum_{aj} h_{aj}

稀疏正则化使得每个基更加局部(更多元素为零),话题模型中的话题更加”纯净”。

非唯一性问题

NMF 的分解结果不唯一:对于任何可逆的非负对角矩阵 DDW=WDW' = WDH=D1HH' = D^{-1}H 给出相同的乘积 WH=WHW'H' = WH。更一般地,对于非负可逆矩阵 CCW=WCW' = WCH=C1HH' = C^{-1}H 也可能保持非负性。

这意味着 NMF 的 WWHH 的绝对值没有唯一含义——只有它们的乘积 WHWH 是确定的。实践中通常对 HH 的行或 WW 的列做归一化来消除缩放歧义。

总结与展望

NMF 是 Part 1 “拆” 方法谱系中一个独特的分支——它放弃了 SVD 的正交性和全局最优性,换来了非负性和 parts-based 可解释性。

关键要点:

  • 非负约束 → 只加不减 → parts-based:NMF 的核心洞察。非负约束迫使基向量稀疏且局部,自然产生”部件”表示
  • 目标函数minW0,H0AWHF2\min_{W \geq 0, H \geq 0} \|A - WH\|_F^2,非凸优化,无封闭解
  • 乘法更新规则HHWTAWTWHH \leftarrow H \odot \frac{W^TA}{W^TWH}WWAHTWHHTW \leftarrow W \odot \frac{AH^T}{WHH^T}——本质是自适应步长的元素级梯度下降
  • Lee & Seung 的收敛保证:目标函数单调不增,收敛到驻点(但不保证全局最优)
  • 话题模型:文档-词矩阵的 NMF 自然产生话题的词分布和文档的话题混合,可视为 LDA 的简化版
  • 与 SVD/PCA 的互补:SVD 给最优近似但缺乏可解释性,NMF 给可解释的部件但近似质量稍差

方法谱系中的位置:

SVD(无约束最优)+正交PCA正交+非负NMF\text{SVD(无约束最优)} \xrightarrow{+\text{正交}} \text{PCA} \xrightarrow{-\text{正交}+\text{非负}} \text{NMF}

NMF “去掉正交、加上非负” 的思路揭示了一个普遍模式:不同的约束适合不同的数据结构。当数据天然非负且由部件叠加构成时,NMF 比 PCA 更合适;当数据分布在线性子空间上时,PCA 更合适。选择哪种分解,取决于你相信数据的生成机制。

下一篇我们转向推荐系统中的矩阵分解(MF)和 Factorization Machines(FM)——它们可以理解为 NMF 在预测任务中的扩展,允许偏置项和任意特征交叉。