五、稀疏表示和字典学习

  1. 对于 五、稀疏表示和字典学习 - 图1 。构

    建矩阵 五、稀疏表示和字典学习 - 图2 ,其内容为:

    五、稀疏表示和字典学习 - 图3

    其中每一行对应一个样本,每一列对应一个特征。

  2. 特征选择所考虑的问题是:矩阵 五、稀疏表示和字典学习 - 图4 中的许多列与当前学习任务无关。

    通过特征选择去除这些列,则学习器训练过程仅需要在较小的矩阵上进行。这样学习任务的难度可能有所降低,涉及的计算和存储开销会减少,学得模型的可解释性也会提高。

  3. 考虑另一种情况: 五、稀疏表示和字典学习 - 图5 中有大量元素为 0 ,这称作稀疏矩阵。

    当数据集具有这样的稀疏表达形式时,对学习任务来讲会有不少好处:

    • 如果数据集具有高度的稀疏性,则该问题很可能是线性可分的。对于线性支持向量机,这种情况能取得更佳的性能。
    • 稀疏样本并不会造成存储上的巨大负担,因为稀疏矩阵已经有很多很高效的存储方法。
  4. 现在问题是:如果给定数据集 五、稀疏表示和字典学习 - 图6 是稠密的(即普通的、非稀疏的),则能否将它转化为稀疏的形式?

    这就是字典学习 dictionary learning和稀疏编码sparse coding的目标。

5.1 原理

  1. 字典学习:学习一个字典,通过该字典将样本转化为合适的稀疏表示形式。它侧重于学得字典的过程。

    稀疏编码:获取样本的稀疏表达,不一定需要通过字典。它侧重于对样本进行稀疏表达的过程。

    这两者通常是在同一个优化求解过程中完成的,因此这里不做区分,统称为字典学习。

  2. 给定数据集 五、稀疏表示和字典学习 - 图7 ,希望对样本 五、稀疏表示和字典学习 - 图8 学习到它的一个稀疏表示 五、稀疏表示和字典学习 - 图9 。其中 五、稀疏表示和字典学习 - 图10 是一个 五、稀疏表示和字典学习 - 图11 维列向量,且其中大量元素为 0 。

    一个自然的想法进行线性变换,即寻找一个矩阵 五、稀疏表示和字典学习 - 图12 使得 五、稀疏表示和字典学习 - 图13

  3. 现在的问题是:既不知道变换矩阵 五、稀疏表示和字典学习 - 图14 ,也不知道 五、稀疏表示和字典学习 - 图15 的稀疏表示 五、稀疏表示和字典学习 - 图16

    因此求解的目标是:

    • 根据 五、稀疏表示和字典学习 - 图17 能正确还原 五、稀疏表示和字典学习 - 图18,或者还原的误差最小。
    • 五、稀疏表示和字典学习 - 图19 尽量稀疏,即它的分量尽量为零。

    因此给出字典学习的最优化目标:

    五、稀疏表示和字典学习 - 图20

    其中 五、稀疏表示和字典学习 - 图21 称作字典矩阵。 五、稀疏表示和字典学习 - 图22 称作字典的词汇量,通常由用户指定来控制字典的规模,从而影响到稀疏程度。

    • 上式中第一项希望 五、稀疏表示和字典学习 - 图23 能够很好地重构 五、稀疏表示和字典学习 - 图24
    • 第二项则希望 五、稀疏表示和字典学习 - 图25 尽可能稀疏。

5.2 算法

  1. 求解该问题采用类似LASSO的解法,但是使用变量交替优化的策略:

    • 第一步:固定字典 五、稀疏表示和字典学习 - 图26, 为每一个样本 五、稀疏表示和字典学习 - 图27 找到相应的 五、稀疏表示和字典学习 - 图28

      五、稀疏表示和字典学习 - 图29

    • 第二步:根据下式,以 五、稀疏表示和字典学习 - 图30 为初值来更新字典 五、稀疏表示和字典学习 - 图31 ,即求解:五、稀疏表示和字典学习 - 图32

      其中 五、稀疏表示和字典学习 - 图33五、稀疏表示和字典学习 - 图34 。写成矩阵的形式为:

      五、稀疏表示和字典学习 - 图35

      这里 五、稀疏表示和字典学习 - 图36 为矩阵的 Frobenius范数(所有元素的平方和的平方根)。对于矩阵 五、稀疏表示和字典学习 - 图37 , 有 五、稀疏表示和字典学习 - 图38

    • 反复迭代上述两步,最终即可求得字典 五、稀疏表示和字典学习 - 图39 和样本 五、稀疏表示和字典学习 - 图40 的稀疏表示 五、稀疏表示和字典学习 - 图41

  2. 这里有个最优化问题:

    五、稀疏表示和字典学习 - 图42

    该问题有多种求解方法,常用的有基于逐列更新策略的KSVD算法。

    五、稀疏表示和字典学习 - 图43 为字典矩阵 五、稀疏表示和字典学习 - 图44 的第 五、稀疏表示和字典学习 - 图45 列, 五、稀疏表示和字典学习 - 图46 表示稀疏矩阵 五、稀疏表示和字典学习 - 图47 的第 五、稀疏表示和字典学习 - 图48 行。 固定 五、稀疏表示和字典学习 - 图49 其他列,仅考虑第 五、稀疏表示和字典学习 - 图50 列,则有:

    五、稀疏表示和字典学习 - 图51

    五、稀疏表示和字典学习 - 图52 ,它表示去掉 五、稀疏表示和字典学习 - 图53 的稀疏表示之后,样本集的稀疏表示与原样本集的误差矩阵。

    考虑到更新字典的第 五、稀疏表示和字典学习 - 图54五、稀疏表示和字典学习 - 图55 时,其他各列都是固定的,则 五、稀疏表示和字典学习 - 图56 是固定的。则最优化问题转换为:

    五、稀疏表示和字典学习 - 图57

    求解该最优化问题只需要对 五、稀疏表示和字典学习 - 图58 进行奇异值分解以取得最大奇异值所对应的正交向量。

  3. 直接对 五、稀疏表示和字典学习 - 图59 进行奇异值分解会同时修改 五、稀疏表示和字典学习 - 图60五、稀疏表示和字典学习 - 图61, 从而可能破坏 五、稀疏表示和字典学习 - 图62 的稀疏性。因为第二步 “以 五、稀疏表示和字典学习 - 图63 为初值来更新字典 五、稀疏表示和字典学习 - 图64 ” 中, 在更新 五、稀疏表示和字典学习 - 图65 前后 五、稀疏表示和字典学习 - 图66 的非零元所处的位置和非零元素的值很可能不一致。

    为避免发生这样的情况 KSVD五、稀疏表示和字典学习 - 图67五、稀疏表示和字典学习 - 图68 进行了专门处理:

    • 五、稀疏表示和字典学习 - 图69 仅保留非零元素。
    • 五、稀疏表示和字典学习 - 图70 仅保留 五、稀疏表示和字典学习 - 图71五、稀疏表示和字典学习 - 图72 的非零元素的乘积项,然后再进行奇异值分解,这样就保持了第一步得到的稀疏性。