• [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 可能包括所有具有稀疏性约束的系数向量。

    ∥ X − D R ∥ F \| X - D R \|_F XDRF X − D R X - D R XDR 的 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\limits_{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)趋近于零,那么算法是均匀稳定的。

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

    考虑一个假设空间 H H H,我们想要比较:

    1. R ( h S ) R(h_S) R(hS):在真实数据分布上,由数据集 S S S 产生的假设 h S h_S hS 的期望误差。
    2. R S ( h S ) R_S(h_S) RS(hS):在训练数据集 S S S 上,由数据集 S S S 产生的假设 h S h_S hS 的平均误差。
    3. R ( h ∗ ) R(h^*) R(h):在真实数据分布上的最佳假设 h ∗ h^* h 的期望误差。
    4. R S ( h ∗ ) R_S(h^*) RS(h):在训练数据集 S S S 上的最佳假设 h ∗ h^* h 的平均误差。

    首先考虑从训练数据集 S S S 学到的假设 h S h_S hS 在真实数据分布上的期望误差和在假设类 H H H 中的最佳假设在真实数据分布上的期望误差之间的差异:

    R ( h S ) − min ⁡ h ∈ H R ( h ) = R ( h S ) − R ( h ∗ ) = [ R ( h S ) − R S ( h S ) ] + [ R S ( h S ) − R ( h ∗ ) ] ≤ ∣ R ( h S ) − R S ( h S ) ∣ + ∣ R S ( h S ) − R ( h ∗ ) ∣ ≤ ∣ R ( h S ) − R S ( h S ) ∣ + ∣ R ( h ∗ ) − R S ( h S ) ∣ R(hS)minhHR(h)=R(hS)R(h)=[R(hS)RS(hS)]+[RS(hS)R(h)]|R(hS)RS(hS)|+|RS(hS)R(h)||R(hS)RS(hS)|+|R(h)RS(hS)|

    R(hS)hHminR(h)=R(hS)R(h)=[R(hS)RS(hS)]+[RS(hS)R(h)]R(hS)RS(hS)+RS(hS)R(h)R(hS)RS(hS)+R(h)RS(hS)

    现在,注意到每一项的形式都与 ∣ R ( h ) − R S ( h ) ∣ |R(h) - R_S(h)| R(h)RS(h) 相似,其中 h h h 是假设空间 H H H 中的任意假设。因此,每一项的上界是 sup ⁡ h ∈ H ∣ R ( h ) − R S ( h ) ∣ \sup\limits_{h \in H} |R(h) - R_S(h)| hHsupR(h)RS(h)

    我们得到 ∣ 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)2suphHR(h)RS(h),这个不等式表示学到的模型的泛化误差是有上界的。这个上界是由假设空间 H H H 中所有可能假设 h h h 对应的期望风险 R ( h ) R(h) R(h) 和经验风险 R S ( h ) R_S(h) RS(h) 之间差异的最大绝对值(即 supremum)的两倍决定的。

    这个不等式给出了一个衡量模型泛化能力的方法,通过观察模型在训练集上的性能(经验风险)与其在整个数据分布上的性能(期望风险)之间的差异。如果这个差异小,那么模型的泛化能力就可能较强;反之,如果这个差异大,模型可能过拟合了训练数据,缺乏泛化能力。

    现在,我们考虑的是学习算法在真实数据分布上的期望误差 R ( h S ) R(h_S) R(hS) 与它在训练数据上的误差 R S ( h S ) R_S(h_S) RS(hS) 之间的差异。我们希望这个差异尽可能地小,这样学习算法就会有好的泛化能力。

    E S [ R ( h S ) − R S ( h S ) ] = E S , S ′ [ 1 n ∑ i = 1 n ( ℓ ( X i ′ , Y i ′ , h S ) − ℓ ( X i ′ , Y i ′ , h S i ) ) ] ≤ ϵ ′ ( n ) \mathbb{E}_S[R(h_S)-R_S(h_S)] = \mathbb{E}_{S,S'}[\frac{1}{n} \sum_{i = 1}^{n} (\ell(X'_i, Y'_i, h_S) - \ell(X'_i, Y'_i, h_{S^i}))] \leq \epsilon'(n) ES[R(hS)RS(hS)]=ES,S[n1i=1n((Xi,Yi,hS)(Xi,Yi,hSi))]ϵ(n)

    其中, S ′ = { ( X 1 ′ , Y 1 ′ ) , . . . , ( X n ′ , Y n ′ ) } S' = \{(X'_1, Y'_1), ..., (X'_n, Y'_n)\} S={(X1,Y1),...,(Xn,Yn)}

    稀疏算法,如 LASSO 或其他使用 ℓ 1 \ell_1 1正则化的方法,通过使某些权重为零来产生稀疏解。这意味着,即使是在输入数据中微小的变化,也可能导致模型中许多权重从零变为非零,或相反。因此,稀疏方法可能对输入数据的微小变化非常敏感,导致它们在某些情况下不是非常稳定。

    使用 ℓ 2 \ell_2 2范数正则化的算法更加稳定,尤其是当所使用的代理损失函数是凹 (convex) 的时候。这是因为 ℓ 2 \ell_2 2范数惩罚了模型的复杂度,从而使得模型不会对训练数据的微小变化过于敏感。

    h S = arg min ⁡ h ∈ H 1 n ∑ i = 1 n ℓ ( X i , Y i , h ) + λ ∥ h ∥ 2 2 h_S = \argmin_{h \in H} \frac{1}{n} \sum_{i = 1}^{n} \ell(X_i, Y_i, h) + \lambda \|h\|_2^2 hS=hHargminn1i=1n(Xi,Yi,h)+λh22

    假设我们的损失函数 ℓ \ell 是关于 h h h 的-Lipschitz连续的,并且我们知道输入数据 X X X ℓ 2 \ell_2 2 范数受到上界 B B B 的约束,即对于所有的输入 x ∈ X x \in X xX,我们都有 ∥ x ∥ 2 ≤ B \|x\|_2 \leq B x2B

    在这种情况下,我们可以证明,与不受正则化的算法相比,正则化的算法会有更好的稳定性。具体地说,对于给定的训练样本 S S S 和一个修改过的样本 S i S^i Si(其中只有一个样本 ( X i , Y i ) (X_i, Y_i) (Xi,Yi) ( X i ′ , Y i ′ ) (X_i', Y_i') (Xi,Yi) 替换),算法输出 h S h_S hS h S i h_{S^i} hSi 在新样本上的损失差异可以被上界为:

    ℓ ( X , Y , h S ) − ℓ ( X , Y , h S i ) ∣ ≤ ϵ ( n ) ≤ 2 L 2 B 2 λ n \ell(X, Y, h_S) - \ell(X, Y, h_{S^i})| \leq \epsilon(n) \leq \frac{2 L^2 B^2}{\lambda n} (X,Y,hS)(X,Y,hSi)ϵ(n)λn2L2B2

    这里, ϵ ( n ) \epsilon(n) ϵ(n) 是一个与样本大小 n n n 和其他参数相关的量,它随着 n n n 的增加而减小。

    优化问题

    考虑 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,直到目标函数的值变化很小或满足其他停止标准。

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

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

  • 相关阅读:
    Docker安装MySQL 8.0镜像,简易上手
    【Linux】使用ntpdate同步
    C#关于接口的常见面试问题
    “开启中文智能之旅:探秘超乎想象的 Llama2-Chinese 大模型世界”
    小黑子的java项目开发理解
    重载和重写的底层原理——虚拟机字节码执行引擎
    C# 类继承中的私有字段都去了哪里?
    【考研英语语法】祈使句
    驱动初级Day01_环境搭建
    力扣(LeetCode)算法_C++——替换后的最长重复字符
  • 原文地址:https://blog.csdn.net/weixin_45427144/article/details/132676029