注:字典学习也是一种数据降维的方法,这里我用到SVD的知识,对SVD不太理解的地方,可以看看这篇博客:《SVD(奇异值分解)小结 》。
1、字典学习思想
字典学习的思想应该源来实际生活中的字典的概念。字典是前辈们学习总结的精华,当我们需要学习新的知识的时候,不必与先辈们一样去学习先辈们所有学习过的知识,我们可以参考先辈们给我们总结的字典,通过查阅这些字典,我们可以大致学会到这些知识。
为了将上述过程用准确的数学语言描述出来,我们需要将“总结字典”、“查阅字典”做出一个更为准确的描述。就从我们的常识出发:
- 我们通常会要求的我们的字典尽可能全面,也就是说总结出的字典不能漏下关键的知识点。
- 查字典的时候,我们想要我们查字典的过程尽可能简洁,迅速,准确。即,查字典要快、准、狠。
- 查到的结果,要尽可能地还原出原来知识。当然,如果要完全还原出来,那么这个字典和查字典的方法会变得非常复杂,所以我们只需要尽可能地还原出原知识点即可。
注: 以上内容,完全是自己的理解,如有不当之处,欢迎各位拍砖。
下面,我们要讨论的就是如何将上述问题抽象成一个数学问题,并解决这个问题。
2、字典学习数学模型
2.1 数学描述
我们将上面的所提到的关键点用几个数学符号表示一下:
- “以前的知识”,更专业一点,我们称之为原始样本,用矩阵表示;
- “字典”,我们称之为字典矩阵,用表示,“字典”中的词条,我们称之为原子(atom),用列向量表示;
- “查字典的方法”,我们称为稀疏矩阵,用;
- “查字典的过程”,我们可以用矩阵的乘法来表示,即。
用数学语言描述,字典学习的主要思想是,利用包含个原子的字典矩阵,稀疏线性表示原始样本(其中表示样本数,表示样本的属性),即有(这只是我们理想的情况),其中为稀疏矩阵,可以将上述问题用数学语言描述为如下优化问题
\[ \min_{\mathbf{D,\ X}}{\