[Machine Learning] 稀疏编码和矩阵分解

文章目录

  • 字典学习 (Dictionary Learning)
  • 主成分分析 (Principal Components Analysis, PCA)
  • K-means
  • 非负矩阵分解 (Non-negative Matrix Factorisation, NMF)


字典学习 (Dictionary Learning)

字典学习是一种表示学习方法,旨在将高维数据(如图像、音频等)用低维、稀疏的方式表示,同时尽量保留原始数据的关键信息。稀疏性意味着大部分系数都是零,只有少数几个系数是非零的。这样的表示可以更加高效,同时可以捕捉到数据中的关键信息,滤除噪声。此外,当我们有一个适当的字典时,稀疏表示也可以用于压缩、去噪和其他任务。

考虑一个数据点 x x x,我们希望通过一个“字典” D D D(它是一个矩阵,其中的每一列都是一个基)和一个稀疏系数向量 α \alpha α 来近似地表示这个数据点。数学上,我们可以描述为 x ≈ D α x \approx D \alpha xDα.

重建误差是实际数据点 x x x 和使用字典及其对应的稀疏系数向量重建的数据之间的差异。数学上,这个误差可以表示为 ∥ x − D α ∥ 2 \| x - D \alpha \|^2 xDα2

我们的目标是找到一个系数向量 α \alpha α 来最小化这个误差,即:
α ∗ = arg min ⁡ α ∥ x − D α ∥ 2 \alpha^* = \argmin\limits_{\alpha} \|x - D \alpha\|^2 α=αargminxDα2

对于多个数据点 x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1,x2,,xn,我们可以同样地定义一个全局的重建误差,目标是找到一个公共的字典 D D D 和每个数据点的稀疏表示。我们可以将所有的数据点堆叠成一个矩阵 X X X,所有的表示堆叠成一个矩阵 R R R,然后整体最小化误差:

arg min ⁡ D ∈ D , R ∈ R ∥ X − D R ∥ F 2 \argmin\limits_{D \in \mathcal{D}, R \in \mathcal{R}}\|X - D R\|_F^2 DD,RRargminXDRF2

其中, D \mathcal{D} D R \mathcal{R} R 是字典和表示的约束空间。例如, D \mathcal{D} D 可能包括所有单位范数的列向量,而 R \mathcal{R} R 可能包括所有具有稀疏性约束的系数向量。

∥ ⋅ ∥ F \| \cdot \|_F F 是 Frobenius 范数,它度量了两个矩阵之间的差异。对于任意矩阵 A A A,其Frobenius范数定义为:

∥ A ∥ F = ∑ i = 1 m ∑ j = 1 n ∣ a i j ∣ 2 \| A \|_F = \sqrt{\sum_{i=1}^{m}\sum_{j=1}^{n} |a_{ij}|^2} AF=i=1mj=1naij2

字典学习的目标是找到一个过完备的字典 D 和一个稀疏的表示 R ,以便最小化重建误差。

过完备字典 D 意味着它的列数多于它的行数,也就是说,字典 D 包含的原子(或基)数目超过了数据的维度。这意味着它有多个基础元素可供选择,以近似表示输入数据 X 。R 的稀疏性确保了 R 中的大多数元素都是零或接近零。这意味着,虽然 D 提供了很多可能的基础元素,但在任何特定的表示中,只有少数的基础元素会被激活或使用。这不仅使得表示更加简洁和计算效率,而且有助于避免过度拟合,并使得解释性更强。

为了引入稀疏性,我们可以修改优化问题,添加一个正则化项:

arg min ⁡ D ∈ D , R ∈ R ∥ X − D R ∥ F 2 + λ ∥ R ∥ p p \argmin\limits_{D \in \mathcal{D}, R \in \mathcal{R}}\|X - D R\|_F^2 + \lambda \|R\|_p^p DD,RRargminXDRF2+λRpp

这里, λ \lambda λ 是一个正则化参数,它决定了稀疏性的重要性。当 p = 1 时,我们得到 ℓ 1 \ell_1 1 范数,这是用于鼓励稀疏性的最常见范数:

∥ R ∥ 1 = ∑ i , j ∣ R i j ∣ \|R\|_1 = \sum_{i,j} |R_{ij}| R1=i,jRij

其中, R i j R_{ij} Rij 表示矩阵 R 的元素,位于第 i 行和第 j 列。

通过 ℓ 1 \ell_1 1 范数,优化问题鼓励 R 中的许多元素为零或接近零,这使得表示 R 变得稀疏。在字典学习中,这种稀疏性是有益的,因为它使得表示更具有解释性和计算效率。


ℓ p \ell_p p 范数是定义在 R k \mathbb{R}^k Rk 上的一个范数,用于度量向量的"大小"或"长度"。具体的公式为:

∥ α ∥ p p = ∑ j = 1 k ∣ α j ∣ p \|\alpha\|_p^p = \sum_{j = 1}^k |\alpha_{j}|^p αpp=j=1kαjp

当我们调整 p 的值时,此范数将强调向量的不同特性。

p → 0 p \rightarrow 0 p0 时, ℓ p \ell_p p 范数趋于 ℓ 0 \ell_0 0 范数,它实际上计算了向量中非零元素的数量。所以,我们可以使用 ∥ α ∥ 0 \|\alpha\|_0 α0 来度量向量的稀疏性。但是, ℓ 0 \ell_0 0 最小化是一个NP困难的问题,因此在实践中不容易求解。

为了解决 ℓ 0 \ell_0 0 最小化的难题,我们转向 ℓ 1 \ell_1 1 范数作为稀疏性的近似度量。 ℓ 1 \ell_1 1 范数为向量中每个元素的绝对值之和,被证明是计算上可行的,并且经常在稀疏性方面给出良好的结果。


当我们提到"这种正则化"时,通常是指对 R 列(即数据点的表示)应用 ℓ 0 \ell_0 0 ℓ 1 \ell_1 1 范数约束。这两种范数都被广泛用于鼓励稀疏性。现在,我们将讨论为什么这样做可以促进稀疏性:

ℓ 0 \ell_0 0范数 定义为向量中非零元素的数量。使用此范数作为正则化项会直接鼓励稀疏性,因为优化过程将尝试最小化非零元素的数量。但是, ℓ 0 \ell_0 0 范数是非凸的,这使得基于它的优化变得计算上非常困难。

ℓ 1 \ell_1 1范数 定义为向量中元素的绝对值之和。 ℓ 1 \ell_1 1 范数在数学上是 ℓ 0 \ell_0 0 范数的最佳凸近似。使用 ℓ 1 \ell_1 1 范数作为正则化项可以鼓励稀疏性,并且与 ℓ 0 \ell_0 0 范数相比,基于 ℓ 1 \ell_1 1 范数的优化在计算上更为简便。事实上, ℓ 1 \ell_1 1 正则化会使某些系数恰好为0,从而产生稀疏的解。

正则化的直观解释是:对于每一个非零的特征或系数,模型必须"支付"一定的"代价"。因此,模型会倾向于只选择那些真正有助于预测的特征,并将其他不重要的特征设置为0,从而实现稀疏性。


首先,我们先定义 ℓ p \ell_p p范数。对于任意向量 v ∈ R n \mathbf{v} \in \mathbb{R}^n vRn, 其 ℓ p \ell_p p范数定义为:

∥ v ∥ p = ( ∑ i = 1 n ∣ v i ∣ p ) 1 p \| \mathbf{v} \|_p = \left( \sum_{i=1}^{n} |v_i|^p \right)^{\frac{1}{p}} vp=(i=1nvip)p1

这里, ∣ v i ∣ |v_i| vi表示向量中第 i 个元素的绝对值,而 p 是一个正实数。

当 p = 1 时,我们有:

∥ v ∥ 1 = ∑ i = 1 n ∣ v i ∣ \| \mathbf{v} \|_1 = \sum_{i=1}^{n} |v_i| v1=i=1nvi

这正好是向量 v \mathbf{v} v 中所有元素的绝对值之和。因此,我们称 ℓ 1 \ell_1 1 范数为向量的绝对值和。


数学上,对于一个向量 x ∈ R n \mathbf{x} \in \mathbb{R}^n xRn, 其 ℓ 1 \ell_1 1范数定义为:

∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \| \mathbf{x} \|_1 = \sum_{i=1}^n |x_i| x1=i=1nxi

从几何上看, ℓ 1 \ell_1 1正则化对应于一个单位球在 R 2 \mathbb{R}^2 R2空间中的菱形(在更高维度中为多面体)的约束。当优化问题的解落在这个多面体的角上时,得到的解就是稀疏的。由于角的数目增长得非常快,这提高了得到稀疏解的可能性。

考虑 ℓ 1 \ell_1 1 范数的单位球在 R 2 \mathbb{R}^2 R2空间中的表现。它是一个菱形,其顶点位于坐标轴上。在 R 2 \mathbb{R}^2 R2中,这个菱形的顶点为 (1,0), (-1,0), (0,1), 和 (0,-1)。

现在,考虑一个最优化问题,其中我们希望最小化某个损失函数,受到 ℓ 1 \ell_1 1 范数的约束。假设损失函数的等高线是椭圆形的。我们的目标是找到损失函数等高线与 ℓ 1 \ell_1 1范数单位球相交的最小点。

由于 ℓ 1 \ell_1 1范数单位球的几何形状,它的尖锐的角使得与损失函数等高线的首次相交点很可能在这些角上。当解落在 R 2 \mathbb{R}^2 R2空间中的菱形的一个角上时,其中一个坐标会是零,因此解是稀疏的。

对于更高维度的空间 R n \mathbb{R}^n Rn, 单位球会有更多的角。这些角位于坐标轴上或坐标平面上,因此在角上的解会在一个或多个维度上有零值,导致解的稀疏性。


∥ α ∥ p p = ∑ j = 1 k ∣ α j ∣ p \|\alpha\|_p^p = \sum_{j = 1}^k |\alpha_{j}|^p αpp=j=1kαjp
As p → 0 p \rightarrow 0 p0 , we get a count of the non-zeros in the vector. So, we can employ |\alpha|_0 to measure sparsity.
However, the ℓ 0 \ell_0 0 minimisation is not easy.
Measure of Sparsity: ℓ 1 \ell_1 1 norm
2D example (compared with ℓ 2 \ell_2 2-norm)(画图解释,圆的相切)


考虑上述目标的局部最小值 D ∗ D^* D R ∗ R^* R,这意味着我们有 X ≊ D ∗ R ∗ X \approxeq D^*R^* XDR

但是我们还可以找到另一个矩阵对,比如 D ∗ A D^*A DA A − 1 R ∗ A^{-1}R^* A1R,它们也能够接近 X X X A A A 是一个可逆矩阵),因为 D ∗ R ∗ = ( D ∗ A ) ( A − 1 R ∗ ) D^*R^* = (D^*A) (A^{-1}R^*) DR=(DA)(A1R)

所以尽管 D ∗ D^* D R ∗ R^* R 是原问题的局部最小值,但我们可以通过乘以一个可逆矩阵 A A A 和它的逆 A − 1 A^{-1} A1 来找到不同的矩阵对,这些矩阵对会产生相同的乘积,也即相同的重建误差,这就是为什么这个问题是非凸的。

所以,对于字典学习的优化问题,通常采用交替优化方法,即固定一个变量优化另一个变量。这种方法也称为坐标下降方法:

  1. 初始化字典 D D D

  2. 固定 D D D,优化 R R R

    使用Lasso或其他稀疏编码方法解决以下问题:

    R ∗ = arg min ⁡ R ∥ X − D R ∥ F 2 + λ ∥ R ∥ 1 R^* = \argmin_R \|X - D R\|_F^2 + \lambda\|R\|_1 R=RargminXDRF2+λR1

    其中, λ λ λ 是正则化参数,确保 R R R 的稀疏性。

  3. 固定 R R R,优化 D D D

    这一步可能比较复杂,因为我们想要找到最小化重建误差的 D D D。一个常用的方法是采用基于梯度的方法优化 D D D,或者使用其他更复杂的优化技术。这个问题可以写为:

    D ∗ = arg min ⁡ D ∥ X − D R ∥ F 2 D^* = \argmin_D \|X - D R\|_F^2 D=DargminXDRF2

    并且可能还有约束条件,确保 D D D 的列是单位范数的。

  4. 重复步骤2和3,直到目标函数的值变化很小或满足其他停止标准。

这种交替优化方法能够在大多数实际应用中得到很好的结果,尽管它可能只能找到局部最优解,而不是全局最优解。但由于问题的非凸性质,找到全局最优解是非常困难的。


K-SVD
∥ R i ∥ 0 ≤ k ′ \| R_i \|_0 \leq k' Ri0k ,表示 R i R_i Ri 中的非零元素的数量小于或等于 k’ ,且 k ′ ≪ k k' \ll k kk


主成分分析 (Principal Components Analysis, PCA)

当我们仅关心重建误差时,字典学习的目标变为找到最佳的线性组合来表示数据。

在PCA中,字典 D 由前 k 个主成分组成,而表示系数 R 是数据在这些主成分上的投影。如果我们不强制 R 的稀疏性,并且允许 D 由数据的协方差矩阵的特征向量组成,那么PCA的重建就与字典学习的重建相同。因此,可以认为PCA是一个不考虑 R 稀疏性的特殊的字典学习案例,其中 D 是由主成分组成的。

PCA的目标是找到数据的正交基,这些基最大化数据的方差。它产生的是一个固定的基集,这意味着每个数据点的表示是线性的,并且是全局的。

K-means

在不考虑表示 R 的稀疏性时,字典学习的目标是找到字典 D 和系数 R ,以便用字典中的某些向量来近似重建数据。

如果我们限制 R 只能是一个向量的单位向量(即仅一个元素为1,其余元素为0),那么这意味着每个数据点只能用字典中的一个项进行表示。这可以通过以下条件来表示:

  • ∥ R i ∥ 0 = 1 \| R_i \|_0 = 1 Ri0=1 ,表示 R i R_i Ri 中只有一个非零元素。
  • ∥ R i ∥ 1 = 1 \| R_i \|_1 = 1 Ri1=1 ,表示 R i R_i Ri 的元素之和为1。

在K-means中,每个数据点都与一个最近的集群中心关联。这意味着数据点 x i x_i xi 可以完全由与其最近的集群中心表示,而其他集群中心的贡献为零。这种表示是一种极端形式的稀疏表示,其中只有一个非零元素(即最近的集群中心),而其他元素都是零。

当我们不强制稀疏性时,K-means的集群中心可以看作是字典学习中的字典项。对于给定的数据点 x i x_i xi ,其在K-means中与一个最近的集群中心关联,而在字典学习中,它可以看作是所有字典项的线性组合。但是,由于K-means的硬分配特性,这种线性组合变得非常稀疏,并且只有一个非零元素。

非负矩阵分解 (Non-negative Matrix Factorisation, NMF)

NMF是一个矩阵分解技术,其中我们约束因子矩阵的所有元素都是非负的。它为我们提供了一种方法,可以清晰地解释和可视化隐藏在数据中的结构。

当 W 被视为字典时,NMF可以被看作是字典学习的一个特例,其中字典和表示都是非负的。NMF 不直接追求稀疏性,但可以通过正则化来增加稀疏性约束。

考虑下列优化问题:

arg min ⁡ D , R ∥ X − D R ∥ F 2 \argmin_{D, R} \|X - D R\|_F^2 D,RargminXDRF2

其中,约束条件是 D ∈ R + d × k ,  R ∈ R + k × n D \in \mathbb{R^{d \times k}_{+}} \text{, }R \in \mathbb{R^{k \times n}_{+}} DR+d×kRR+k×n

我们希望找到两个矩阵 D 和 R,使得它们的乘积尽可能接近给定矩阵 X,同时满足 D 和 R 中的所有元素都是非负的。这意味着 D 和 R 的每一列的所有元素都是非负的。由于每一列都是非负的,这意味着它们都位于正交象限。如果我们考虑列空间,那么由于列中的每个元素都是非负的,这些列向量都位于正交象限。

对于 X 的每一个列,我们都可以将其看作是 D 的列(也叫做字典元素或基)的线性组合,而这些线性组合的系数来自 R。当我们从正交象限中取两个向量并对它们进行线性组合时,由于没有负的系数或元素,所以这些元素不会互相抵消。

这意味着它们只能通过加性组合捕捉数据中的模式。这意味着分解只能“加入”特征,而不能“减去”或否定特征。在应用于真实世界数据,如图像时,这通常意味着分解的特征表示数据的可辨识部分,而不是整体模式。这种基于部件的表示通常更具解释性,例如,在处理图像数据时,非负约束可以使每一个基底( D : 1 D_{:1} D:1)代表图像的一个部分或特征,而不是整个图像的模糊组合。

你可能感兴趣的:(机器学习,矩阵)