前言

最近接触到这个问题, 看了一些相关的资料,觉得维基百科的介绍是最为精炼详实的, 以这篇笔记翻译了一下, 也供自己查阅所用。

矩阵补全

顾名思义, 矩阵补全就是指将一个部分元素已知的矩阵的缺失值补全的问题。 这个问题的著名背景是美国的视频公司Netflix提出了这样的问题, 给出一个矩阵, 其每行代表一个用户, 每列则代表用户所看过的电影。 这样一个矩阵的维度是非常庞大的, 因此Netflix公司希望可以只储存其中的个别值,就能将矩阵进行补全, 算是一种信息的压缩。

如果没有任何其他的辅助限制的话, 这个问题其实有无数组解——除了被观测到的元素之外, 其他矩阵元素可以是任意值。 因此, 矩阵补全往往要求补全的矩阵的秩最小。 或者, 假设已知了原始矩阵的秩 r r r,我们就是补全一个秩为 r r r的矩阵。

在这里插入图片描述
上图展示了一个例子。 左边的是缺失的矩阵, 我们希望将其补全。 如果已知矩阵的秩为1,那么就能很轻松的知道, 每一行都必须和第三行是一样的(否则秩不为1)。

低秩矩阵补全

常见的矩阵补全问题可以表示如下:

min ⁡ X rank ⁡ ( X )  subject to  X i j = M i j ∀ i , j ∈ E \begin{array}{lc} \min _{X} & \operatorname{rank}(X) \\ \text { subject to } & X_{i j}=M_{i j} \forall i, j \in E \end{array} minX subject to rank(X)Xij=Miji,jE
求解这个问题的时候, 我们需要保证足够多的矩阵采样数(即已知元素的个数)来确保这个问题不是欠定的, 能求得一个唯一解。

均匀采样

为了使分析更为简便, 我们往往假设观测的元素是在 E E E中均匀采样所得。 一种更特殊的假设是考虑伯努利采样( Bernoulli sampling), 即每个矩阵元素都有 p p p的概率被观测到。 我们令 p = N m n p = \frac{N}{mn} p=mnN, 其中 N N N 为 总的期望采样元素数,m,n为矩阵的维度。

最少的观测数量

假设我们现在要恢复一个 秩为 r r r m × n m\times n m×n的矩阵 M M M【3】中证明了, 当 r ≤ n 2 r \le \frac{n}{2} r2n 时, 至少需要 4 n r − 4 r 2 4nr - 4r^2 4nr4r2个观测元素,可以确保该矩阵补全问题有唯一解。

同时, 每一行和每一列都必须要被采样到。
这个也很容易证明: 我们可以把矩阵M奇异值分解为: M = U Σ V H M = U\Sigma V^H M=UΣVH
比如 M M M的第一行没有被采样到, 由矩阵相乘我们可知, U U U的第一行只参与了构建 M M M的第一行,那么当 M M M的第一行是任意的时候, 我们可以任意的设置 U U U的第一行。 同理, 如果第一列没有被采样到, 我们可以任意的设置 V H V^H VH的第一列。 如果考虑伯努利采样的话, 已被证明 需要 O ( n log ⁡ n ) O(n \log n) O(nlogn)个元素被观测才能确保大概率每一行和每一列都被观测到了。

综合这两点考虑, 我们认为所需的观测元素数的下界为 n r l o g n nr \mathrm{log}n nrlogn

Incoherence

并不是所有的矩阵都能很好的补全。 事实上, 我们希望被补全的矩阵不要太 稀疏。 尽可能的在每个奇异值方向上都有分量的矩阵是较为容易补全的。 反例是 这样的一个矩阵 [ 1 0 ⋯ 0 ⋮ ⋮ 0 0 0 0 ] \left[\begin{array}{cccc}1 & 0 & \cdots & 0 \\ \vdots & & \vdots & \\ 0 & 0 & 0 & 0\end{array}\right] 1000000 几乎只能通过观测所有元素才能确定。

噪声情况下

在实际中, 我们的观测可能还存在噪声:

Y i j = M i j + Z i j , ( i , j ) ∈ Ω Y_{i j}=M_{i j}+Z_{i j},(i, j) \in \Omega Yij=Mij+Zij,(i,j)Ω

Z Z Z代表观测的噪声。 最后观测到的矩阵可以写为:
P Ω ( Y ) = P Ω ( M ) + P Ω ( Z ) P_{\Omega}(Y)=P_{\Omega}(M)+P_{\Omega}(Z) PΩ(Y)=PΩ(M)+PΩ(Z)
那么,我们可以把问题建模为:
min ⁡ X ∥ X ∥ ∗  subject to  ∥ P Ω ( X − Y ) ∥ F ≤ δ \begin{array}{lr} \min _{X} & \|X\|_{*} \\ \text { subject to } & \left\|P_{\Omega}(X-Y)\right\|_{F} \leq \delta \end{array} minX subject to XPΩ(XY)Fδ
∥ X ∥ ∗ \|X\|_{*} X代表 X X X的核范数, 等于奇异值之和。 可以近似的将最小化核范数看做最小化秩, 原理就和将 l 0 l_0 l0范数近似为 l 1 l_1 l1范数类似。

算法

凸优化

上面的最小化核函数的问题, 可以看做是一个凸松弛, 将一个NP-hard问题放松成了凸问题。 他可以改写为下式:
min ⁡ W 1 , W 2 trace ⁡ ( W 1 ) + trace ⁡ ( W 2 )  subject to  X i j = M i j ∀ i , j ∈ E [ W 1 X X T W 2 ] ⪰ 0 \begin{array}{ll} \min _{W_{1}, W_{2}} & \operatorname{trace}\left(W_{1}\right)+\operatorname{trace}\left(W_{2}\right) \\ \text { subject to } & X_{i j}=M_{i j} \forall i, j \in E \\ & {\left[\begin{array}{cc} W_{1} & X \\ X^{T} & W_{2} \end{array}\right] \succeq 0} \end{array} minW1,W2 subject to trace(W1)+trace(W2)Xij=Miji,jE[W1XTXW2]0
这个经典的半正定规划(SDP)问题。 可以用凸优化算法进行求解。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐