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


字典学习 (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

首先,我们先定义 ℓ 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 的值时,此范数将强调向量的不同特性。

ℓ 0 \ell_0 0范数直接计算非零元素的数量,但是,使用 ℓ 0 \ell_0 0范数的优化问题是 NP-hard。因此,实际上,我们很少直接优化 ℓ 0 \ell_0 0范数。 ℓ 1 \ell_1 1范数是 ℓ 0 \ell_0 0范数的最佳凸逼近,并且在优化问题中更容易处理。

当 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 范数为向量的绝对值和。

考虑 ℓ 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, 单位球会有更多的角。这些角位于坐标轴上或坐标平面上,因此在角上的解会在一个或多个维度上有零值,导致解的稀疏性。

因此,通过添加 ∥ R ∥ 1 = ∑ i , j ∣ R i j ∣ \|R\|_1 = \sum_{i,j} |R_{ij}| R1=i,jRij 正则项到我们的优化问题中,我们可以鼓励 R 的稀疏性,使得它在许多维度上的值为零,其中 R i j R_{ij} Rij 表示矩阵 R 的元素,位于第 i 行和第 j 列。

正则化和算法稳定性

稳定性是指,当你在训练数据中进行微小的修改(例如更改或删除一个样本)时,学习算法的输出变化是多少。稳定性是泛化性能的一个重要指标,因为如果算法对于微小的数据变化非常敏感,那么它可能就容易过拟合。

为了形式化这个概念,考虑两个训练样本集合 S S S S i S^i Si ,其中 S i S^i Si S S S 的一个微小变体,只有第 i 个样本有所不同。如果算法在这两个训练集上产生的输出之间的差异很小,那么我们说这个算法是稳定的。

数学上,稳定性可以定义为:

∣ ℓ ( X , Y , h S ) − ℓ ( X , Y , h S i ) ∣ ≤ ϵ ( n ) |\ell(X, Y, h_S) - \ell(X, Y, h_{S^i})| \leq \epsilon(n) (X,Y,hS)(X,Y,hSi)ϵ(n)

其中, ℓ \ell 是损失函数, h S h_S hS h S i h_{S^i} hSi是算法在两个数据集上的输出。如果随着训练样本数量 n 的增加,差异 ϵ ( n ) \epsilon(n) ϵ(n)趋近于零,那么算法是均匀稳定的。

泛化误差描述了模型在未见过的数据上的预期误差。更具体地说,它是模型在整个数据分布上的平均误差和在训练数据上的误差之间的差异。

泛化误差的一个常用界限是:

R ( h S ) − R ( h ∗ ) ≤ 2 sup ⁡ h ∈ H ∣ R ( h ) − R S ( h ) ∣ R(h_S) - R(h^*) \leq 2 \sup_{h \in H} |R(h) - R_S(h)| R(hS)R(h)2hHsupR(h)RS(h)

其中, R R R 是整个数据分布上的期望误差,而 R S R_S RS 是训练数据上的平均误差。 h ∗ h^* h 是最佳可能的模型,而 H H H 是所有可能模型的假设空间。


Sparse algorithms are not stable

A learning algorithm is said to be stable if slight perturbations in the training data result in small changes in the output of the algorithm, and these changes vanish as the data set grows bigger and bigger.

Algorithmic Stability

We have two different training samples

S = { ( X 1 , Y 1 ) , . . . , ( X i − 1 , Y i − 1 ) , ( X i , Y i ) , ( X i + 1 , Y i + 1 ) , . . . , ( X n , Y n ) } S = \{(X_1, Y_1), ..., (X_{i-1}, Y_{i-1}), (X_i, Y_i), (X_{i+1}, Y_{i+1}), ..., (X_n, Y_n)\} S={(X1,Y1),...,(Xi1,Yi1),(Xi,Yi),(Xi+1,Yi+1),...,(Xn,Yn)}

S i = { ( X 1 , Y 1 ) , . . . , ( X i − 1 , Y i − 1 ) , ( X i ′ , Y i ′ ) , ( X i + 1 , Y i + 1 ) , . . . , ( X n , Y n ) } S^i = \{(X_1, Y_1), ..., (X_{i-1}, Y_{i-1}), (X_i', Y_i'), (X_{i+1}, Y_{i+1}), ..., (X_n, Y_n)\} Si={(X1,Y1),...,(Xi1,Yi1),(Xi,Yi),(Xi+1,Yi+1),...,(Xn,Yn)}

They are different because of only one training example.

An algorithm is uniformly stable if for any example ( X , Y ) (X, Y) (X,Y)

∣ ℓ ( X , Y , h S ) − ℓ ( X , Y , h S i ) ≤ ϵ ( n ) ∣ |\ell(X, Y, h_S) - \ell(X, Y, h_{S^i}) \leq \epsilon(n)| (X,Y,hS)(X,Y,hSi)ϵ(n)

Note that ϵ ( n ) \epsilon(n) ϵ(n) will vanish as n goes to infinity.

Generalisation Error

R ( h S ) − min ⁡ h ∈ H R ( h ) = R ( h S ) − R ( h ∗ ) = 2 sup ⁡ h ∈ H ∣ R ( h ) − R S ( h ) ∣ R(h_S) - \min\limits_{h \in H} R(h) = R(h_S) - R(h^*) = 2 \sup\limits_{h \in H} |R(h) - R_S(h)| R(hS)hHminR(h)=R(hS)R(h)=2hHsupR(h)RS(h)


考虑 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 ∗ 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)代表图像的一个部分或特征,而不是整个图像的模糊组合。

猜你喜欢

转载自blog.csdn.net/weixin_45427144/article/details/132676029