本文将围绕矩阵补全 (matrix completion) 中常见的奇异值软阈值 (Singular Value Thresholding, SVT) 算法进行展开,内容包括: 1) 如何用python实现一个简单的matrix completion? 2) matrix completion在图片修复中的简单应用。
1 matrix completion和奇异值软阈值算法
令矩阵
为部分观测的矩阵,将被观测元素 (observed entries) 的索引集合记作
,为严谨起见,再令
表示一个作用于
的正交映射 (orthogonal projection),其定义为
怎么理解呢?
如果是一个部分观测的矩阵,且集合用于标记观测到的元素,则.
若假设部分观测的矩阵
可以被假定为一个低秩矩阵 (low-rank matrix),则可以将matrix completion问题描述为
其中,
表示复原矩阵 (recovered matrix).
就公式 (1) 而言,比较遗憾的是,这个优化问题既抽象也不好算,因此,以公式 (1) 为matrix completion 原型,人们逐渐提出了一系列的等价模型,在这其中,最为经典的low-rank matrix completion (LRMC) 莫过于用核范数 (nuclear norm) 替换rank function,其优化问题如下:
为了求解公式 (2) 中的优化问题,不妨引入一个中间变量
,即
对于这个优化问题,我们可以很容易地写出整个优化问题的增广拉格朗日函数:</