本文讲解 奇异值分解 (Singular Value Decomposition,SVD)的原理和应用。标题后半截与我们后面的应用例子有关,另外主要也是为了把你们吸引进来。进入正题前,还是先上广告:
现实中,常见类似下面的表格:
《黑客帝国》 | 《银翼杀手》 | 《沙丘》 | …… | 《侏罗纪公园》 | |
---|---|---|---|---|---|
赵阿法 | 5 | 4 | 4 | …… | 5 |
钱贝塔 | 4 | 4 | 3 | …… | 4 |
孙伽马 | 4 | 5 | 2 | …… | 4 |
…… | …… | …… | …… | …… | …… |
李德塔 | 5 | 3 | 2 | …… | 3 |
显然,这是众多用户对若干电影的评分表格。共有 位用户和 部电影。评分表格是一个 矩阵,记为 。 的转置与自己相乘得到 。这是一个 的对称矩阵,因为:
( 下段中的结论本文不证明 )
对称矩阵有 个实特征值,属于不同特征值的特征向量彼此正交。特征值的“代数重数”,即它作为特征多项式的根的重数,等于它的“几何重数”,即特征空间的维数。也就是说,如果 是对称矩阵的 重特征值,则它的特征空间是 维。能找到 个彼此正交的单位特征向量(模为 1),它们张成 的特征空间。所以,记 的 个(有重)特征值从大到小排列是:
(可重复)
能够找到 个彼此正交的标准特征向量,分属于每一个特征值:
其中 , 是克罗内克符号: 。特征值有可能重复(多重根),比如: 。对于对称矩阵来说,这个三重特征值 的特征空间是三维,也就是说能找到 的三个彼此正交(于是线性独立)的单位特征值 。我们可以说 是 的, 是 的, 是 的(其实它们都是 的)。
的特征值都不为负。因为假如特征值 , 是它的特征向量,有 ,这是不可能的。假如 的 个非负特征值中有 个(有重)大于零,剩下的 个等于零。这 个大于零的特征值的平方根:
称作矩阵 的 个奇异值(Singular Value)。注意, 个特征值是 的,其中 个大于零的特征值的 平方根 是 的奇异值。现在我们用 的 个标准正交的特征向量以及 的 个奇异值构造三个矩阵。头一个是 矩阵,记为 。它有 个列,每个列是一个 维向量,它们是:
是 矩阵,它乘以 维的特征向量,得到的是 维向量。对每一个 维向量再除以相应的奇异值得到 的列。第二个矩阵 是 矩阵。它的前 列是一个 的对角矩阵,对角线元素是按顺序排列的 的奇异值,后面的 列都是 0 :
和 的乘积是 :
它的前 列是 个 维向量,分别是 乘以 个奇异值对应的特征向量。后面 列都是零。最后一个(第三个)矩阵是 的方阵 。它的列是 的 个正交标准的特征向量:
对于后 个特征向量中的某一个 来说,它对应的特征值是零,于是有:
说明 是零向量。所以用 乘以 得到:
这正好就是 ,所以 。 的列是正交标准向量,于是它是正交矩阵: , 是单位矩阵。所以有:
这就是矩阵 的奇异值分解。这仅仅是在数学上一番倒腾,这个分解有什幺含义呢?
回到本文开始的表格。它的第 2 行是用户“钱贝塔”对全部电影的评分。 矩阵的第 行是第 位用户对全部电影的评分。表格的第 3 列是电影《沙丘》获得的全体用户的评分。 矩阵的第 列是第 部电影获得的全体用户的评分。如果我们用全体用户的评分来表示一部电影,那幺 的每一列就是一部电影的“评分向量”。
方阵 的第 行第 列元素 是 的第 列与第 列的内积,也就是第 部电影与第 部电影的“评分向量”的内积,或者说它们之间的“余弦相似度”。严格来讲,余弦相似度是两个向量之间夹角的余弦。只有当两个向量的长度都为 1 时夹角余弦才等于它们的内积。不过在这里我们忽略这一点。于是对称矩阵 的各个元素就是各部电影两两之间的评分相似度(以后简称相似度)。这个相似度的依据或说信息来源,就是全体用户对它们的评价,也就是“协同”或者说“集体智慧”(Collaborative)。
现在我们用 One-Hot 编码向量来表示一部电影。 维向量 的第 个分量是 1 ,其余分量是 0 。用它表示第 部电影。 是 的第 行第 列元素 ,即第 部电影与第 部电影的相似度。如果有一个并非“One-Hot”的向量,比如 ,我们可以把它看作第 部电影和第 部电影的某种“混合”。 和 是实数,分别是第 部电影和第 部电影在混合电影 中的“权重”。假如现在有两部混合电影, 与 ,我们将计算电影相似度的方法施加于这两部混合电影:
它是四个相似度: 与 , 与 , 与 , 与 的加权和,权重是两部混合电影在这四部电影上各自的权重。把这个值作为两部混合电影的相似度是满合理的。好了,现在不限于 One-Hot 向量了,对于任意两个 维向量,我们都可以把它们视作混合电影,从而计算它们之间的相似度。有这幺一组( 个)特殊的混合电影,它们就是 的 个标准正交特征向量,我们称它们为 特征电影 。它们特殊在哪儿?我们来看其中第 部特征电影与第 部特征电影的相似度:
是克罗内克符号。我们看到,不同特征电影之间相似度为 0 。同一部特征电影与自己的相似度是它对应的特征值。相似度反应的是人群喜好,这些特征电影在人群喜好的意义上 完全不相似 。比如,我们编一个极端的例子:有一部特征电影混合了《第一滴血》、《现代启示录》、《黑鹰坠落》等等。另一部特征电影混合了《西雅图夜未眠》……(抱歉,作者作为老直男想不出来别的了,读者脑补一下)。假如所有男性用户给那些战争暴力题材的电影都打了 5 分,给爱情片都打了 0 分。所有女性用户给《西雅图夜未眠》以及其他全打了 5 分,给那些战争片全打零分(相当政治不正确了,大家原谅)。这两个特征电影之间的相似度就会是 0 。两部特征电影代表了两种题材或类型。其他特征电影又都以不同权重混合了各部电影,从而代表了其他类型。现在我们看:
矩阵 的第 列 是一个 维向量,它的第 个分量是:
是第 位用户对第 部电影的评分。 是第 部特征电影中第 部电影的权重。这个加权求和的合理解释是第 位用户对第 部特征电影的评分。 维向量 的每个分量就是每位用户对第 部电影的评分。 的第 行就是第 位用户对所有特征电影的评分。注意,对排序 的特征电影,每位用户对它们的评分都是 0 ,这暗示着它们不被所有人喜爱,是一些无用的电影类型。回到奇异值分解:
的第 行第 列元素是 的第 行与 的第 列的内积:
注意 是第 部特征电影中第 部电影的权重,它是 的第 行第 列(即 的第 行第 列)。这个加权求和把第 位用户对各个特征电影的评分乘上第 部电影在各个特征电影上的权重,它应该是第 为用户对第 部电影的评分。没错,这正是 。还有一个需要注意的,加和符号的上限我们写的是 而不是 ,因为矩阵 的后 列是零。因为对应的特征值为 0 ,被排除在奇异值之外,后 个特征向量(特征电影)被自动抛弃掉了。
我们也可以主动抛弃掉一些虽不为零但却很小的奇异值(特征值),只取前 个奇异值。将矩阵 的后 列去掉,得到 矩阵 。相应地,将矩阵 的下 行去掉,得到 矩阵 。有:
由于抛弃的奇异值非常小,我们可以认为这个约等号是成立的。这个动作相当于在用户喜好的意义上将各个电影分解为特征电影,去掉一些不重要的特征电影,再组合回用户对各个电影的评分。我们认为原先的评分里边搀杂了噪声,不真。现在我们去除了噪声,进行了精粹,提取了本质。我们可以用如此计算出来的用户对电影的评分来为用户推荐电影。 中每位用户都给每部电影评了分。你也可以想象不是如此,用某个特殊值(比如 -1)代表用户没有为某部电影打分。然后用计算出来的 中的评分来给用户推荐他/她没看过却“评分”较高的电影。这样的电影他/她应该喜欢,他必须喜欢,大数据说他喜欢。
早先,我们用 One-Hot 向量表示一部电影,现在我们可以用向量 来表示第 部电影。它就是 的第 列。它的每个分量是每部特征电影中第 部电影的权重,或者说第 部电影在每个特征电影(电影类型)上的权重。它也许是这样:0.28 的恐怖,0.33 的暴力,0.06 的爱情 ……
但是我们知道,后 个特征电影作为特征向量对应的特征值为零。前 个特征电影中也有 个我们认为不重要(奇异值/特征值很小),可以抛弃。于是我们抛弃 的下 行,得到 矩阵 。用 乘以 得到 维向量 。它的 个分量是第 部电影在 个最重要的特征电影(电影类型)上的权重。 是第 部电影的一个低维( 维)表示,或者说低维嵌入(Embedding)。
最后点一下题,什幺叫“薛定谔电影”。在量子力学中,物理系统用量子态(state)描述。量子态是希尔伯特空间(Hilbert Space)中的向量。可观测的物理量用希尔伯特空间上的厄米算符(Hermite Operator)描述。在有限维希尔伯特空间中,厄米算符可被表示为厄米矩阵(Hermitian Matrix)。实向量空间上的厄米矩阵就是对称矩阵。
有限维希尔伯特空间中的厄米算符的特征向量(本征态,Eigenstate)是空间的一组基,任何量子态都可以由这组基线性表出,表出系数是复数。测量厄米算符代表的物理量时,量子态随机塌缩到某一个本征态上,测量到的物理量的值是这个本征态对应的特征值。厄米算符的特征值都是实数,所以它们是合法的物理量取值。量子态塌缩到某个本征态的概率是该量子态在这个本征态上的系数(复数)的模的平方。
在我们的电影例子中,对称矩阵 代表一个厄米算符。它的特征向量(特征电影/电影类型)就是该厄米算符的本征态。每部电影都是本征态的叠加,也就是特征电影/电影类型的叠加。它们都是“薛定谔的电影”。当你观察 时,叠加态电影随机塌缩为某一个电影类型。比如电影《红楼梦》:经学家看见《易》,道学家看见淫,才子看见缠绵,革命家看见排满,流言家看见宫闱秘事。哈哈,玩笑了。
Be First to Comment