1、字典学习思想#
字典学习的思想应该源来实际生活中的字典的概念。字典是前辈们学习总结的精华,当我们需要学习新的知识的时候,不必与先辈们一样去学习先辈们所有学习过的知识,我们可以参考先辈们给我们总结的字典,通过查阅这些字典,我们可以大致学会到这些知识。
为了将上述过程用准确的数学语言描述出来,我们需要将“总结字典”、“查阅字典”做出一个更为准确的描述。就从我们的常识出发:
我们通常会要求的我们的字典尽可能全面,也就是说总结出的字典不能漏下关键的知识点。
查字典的时候,我们想要我们查字典的过程尽可能简洁,迅速,准确。即,查字典要快、准、狠。
查到的结果,要尽可能地还原出原来知识。当然,如果要完全还原出来,那么这个字典和查字典的方法会变得非常复杂,所以我们只需要尽可能地还原出原知识点即可。
注: 以上内容,完全是自己的理解,如有不当之处,欢迎各位拍砖。
下面,我们要讨论的就是如何将上述问题抽象成一个数学问题,并解决这个问题。2、字典学习数学模型#
2.1 数学描述#
我们将上面的所提到的关键点用几个数学符号表示一下:
“以前的知识”,更专业一点,我们称之为原始样本,用矩阵Y表示;
“字典”,我们称之为字典矩阵,用D表示,“字典”中的词条,我们称之为原子(atom),用列向量dk表示;
“查字典的方法”,我们称为稀疏矩阵,用X;
“查字典的过程”,我们可以用矩阵的乘法来表示,即DX。
用数学语言描述,字典学习的主要思想是,利用包含K个原子dk的字典矩阵D∈Rm×K,稀疏线性表示原始样本Y∈Rm×n(其中m表示样本数,n表示样本的属性),即有Y=DX(这只是我们理想的情况),其中X∈RK×n为稀疏矩阵,可以将上述问题用数学语言描述为如下优化问题
minD, X∥Y−DX∥2F,s.t. ∀i, ∥xi∥0≤T0(2-1)
或者
minD, X∑i∥xi∥0,s.t. minD, X∥Y−DX∥2F≤ϵ,(2-2)
上式中X为稀疏编码的矩阵,xi (i=1,2,⋯,K)为该矩阵中的行向量,代表字典矩阵的系数。
注: ∥xi∥0表示零阶范数,它表示向量中不为0的数的个数。
2.2 求解问题#
式(2-1)的目标函数表示,我们要最小化查完的字典与原始样本的误差,即要尽可能还原出原始样本;它的限的制条件∥xi∥0≤T0,表示查字典的方式要尽可能简单,即X要尽可能稀疏。式(2-2)同理。
式(2-1)或式(2-2)是一个带有约束的优化问题,可以利用拉格朗日乘子法将其转化为无约束优化问题
minD, X∥Y−DX∥2F+λ∥xi∥1(2-3)
注: 我们将∥xi∥0用∥xi∥1代替,主要是∥xi∥1更加便于求解。
这里有两个优化变量D, X,为解决这个优化问题,一般是固定其中一个优化变量,优化另一个变量,如此交替进行。式(2-3)中的稀疏矩阵X可以利用已有经典算法求解,如Lasso(Least Absolute Shrinkage and Selection Operator)、OMP(Orthogonal Matching Pursuit),这里我重点讲述如何更新字典D,对更新X不多做讨论。
假设X是已知的,我们逐列更新字典。下面我们仅更新字典的第k列,记dk为字典D的第k列向量,记xkT为稀疏矩阵X的第k行向量,那么对式(2-1),我们有
∥Y−DX∥2F===∥∥∥∥Y−∑j=1KdjxjT∥∥∥∥2F∥∥∥∥(Y−∑j≠kdjxjT)−dkxkT∥∥∥∥2F∥∥Ek−dkxkT∥∥2F(2-4)
上式中残差Ek=Y−∑j≠kdjxjT,
此时优化问题可描述为
mindk, xkT∥∥Ek−dkxkT∥∥2F
因此我们需要求出最优的dk, xkT,这是一个最小二乘问题,可以利用最小二乘的方法求解,或者可以利用SVD进行求解,这里利用SVD的方式求解出两个优化变量。
但是,在这里我人需要注意的是,不能直接利用Ek进行求解,否则求得的新的xTk不稀疏。因此我们需要将Ek中对应的xkT不为0的位置提取出来,得到新的E′k,这个过程如图2-1所示,这样描述更加清晰。
本文介绍了字典学习的概念,将其比作实际生活中查阅字典的学习过程,然后通过数学模型详细阐述了字典学习的思想,包括原始样本、字典矩阵、稀疏矩阵和查字典的过程。文章提出了一种优化问题,旨在最小化原始样本与查字典结果的误差,并保持稀疏性。最后,讨论了解决这一优化问题的方法,特别是如何更新字典矩阵的列向量。
7577

被折叠的 条评论
为什么被折叠?



