有效地解决低阶矩阵完全问题(对矩阵的ky-norm做惩罚)

Solving Low-Rank Matrix Completion Problems Efficiently

Donald Goldfarb   Shiqian Ma(马士谦,香港中文大学)   Zaiwen Wen(文再文,北京大学)

摘要:我们提出(present)几个求解低秩矩阵完全问题的一阶算法,通过最小化核范数(nuclear norm)代替矩阵的秩得到的它的最紧凸松弛(tightest convex relaxation)。我们的第一个算法是一个不动点延拓算法(fixed point continuation algorithm),它整合了一个近似奇异值分解过程(FPCA, approximate singular value decomposition procedure)。FPCA可以有效地解决大型矩阵完全问题,并达到高水平的可恢复性(recoverability)。例如,FPCA可以在大约3分钟内恢复秩为50的$1000\times 1000$矩阵,相对误差为$10^{-5}$,仅仅需要对$20\%$的元素进行抽样。我们知道没有其他的方法能够达到这么良好的可恢复性。我们的第二个算法是求解核范数矩阵完全问题的半定规划重写(semidefinite programming reformulation)的逐行法(row by row method)。这种方法能够高效地产生相当大的核范数矩阵完全问题的高精度解(highly accurate solutions)。最后,我们介绍一种基于增广拉格朗日框架(augmented Lagrangian framework)的交替方向方法。

1 介绍

本文中,我们对求解矩阵完全问题的方法感兴趣。

\begin{align*}&\min &&\rank (X)\\

&s.t. &&X_{ij}=M_{ij},\quad \forall (i,j)\in \Omega,

\end{align*}

其中$X$和$M$都是$p\times q$矩阵和$\Omega$是指标对$(i,j)$的子集.此问题是仿射约束矩阵秩最小化问题(affinely constrained matrix rank minimization problem)

\begin{align*}&\min &&\rank (X)\\

&s.t. &&\mathcal{A}(X)=b,

\end{align*}

的特殊情形,其中$X\in \mathbb{R}^{p\times q}$为决策变量,而线性映射$\mathcal{A}: \mathbb{R}^{p\times q}\to \mathbb{R}^m$且向量$b\in \mathbb{R}^m$是给定的.

所谓的协同过滤问题(collaborative filtering problem) [17]可以被视为(be cast as)一个矩阵完全问题.假设用户在一个在线调查提供一些电影的评分.这产生一个以用户为行和电影为列的矩阵$M$,它的$(i,j)$项$M_{ ij}$是第$i$位用户对第$j$部电影给出的评分.因为大多数用户只对一小部分的电影评分,我们通常只知道矩阵所包含项的一个小的子集$\{M_{ij}|(i,j)\in \Omega\}$.根据某个用户的已知评分,我们想要预测用户对那些他没评过分的电影的评分;也就是,我们要填写矩阵的那些空白项.通常认为,只有少量因素影响一个人对电影的品味或偏好.因此评分矩阵$M$可能从数值上看是低秩的,在此意义上,相对较少的大奇异值占(account for)所有的奇异值的总和的很大一部分。找到这样一个低秩矩阵$M$对应于解决矩阵完全问题(I.1).

矩阵的秩是其正奇异值的个数.矩阵秩最小化问题(I.2)一般是NP难的,这是由函数$\rank (\cdot)$的组合性质导致的。为了得到一个便于计算的近似(I.2),我们可以用它的凸包来代替$\rank (X)$,也就是核范数$\|X\|_\ast$,它被定义为矩阵$X$所有奇异值的总和 [8].由此产生了以下核范数最小化问题,这是(I.2)的最紧凸松弛:

\begin{align*}&\min &&\|X\|_\ast\\

&s.t. &&\mathcal{A}(X)=b.

\end{align*}

如果$b$被噪声污染(contaminated by)了,约束(constraint) $\mathcal{A}(X)=b$应该被放宽,也就产生了另一个问题

\begin{align*}&\min &&\|X\|_\ast\\

&s.t. &&\|\mathcal{A}(X)-b\|_2\leq \theta.

\end{align*}

或者是拉格朗日函数的说法(version)

\[\min \mu\|X\|_\ast+\frac12\|\mathcal{A}(X)-b\|_2^2,\]

其中$\theta$和$\mu$是参数.

一个重要的问题是:核范数最小化问题(I.3)的最优解啥时候能给出矩阵秩最小化问题(I.2)的最优解.针对这一问题,Recht等人[15]证明了:若$A$ ($A$为线性算子$\mathcal{A}$的矩阵说法,也就是$\mathcal{A}(X)=A\mathrm{vec} (X)$)的各项是适当随机的(suitably random), 例如,独立同分布的正态分布,那么只要$m\geq Cr (p+q)$,大部分秩为$r$的$p\times q$矩阵均可被复原为求解核范数最小化问题(I.3),其中$C$为正常数.

对于矩阵完全问题(I.1),相应的核范数优化问题为

\begin{align*}&\min &&\|X\|_\ast\\

&s.t. &&X_{ij}=M_{ij},\forall (i,j)\in \Omega.

\end{align*}

Candès和Tao在[6]证明了在某些无序条件下(under certain incoherence conditions),低秩矩阵完全可以以高概率复原为核范数最小化问题(I.5),如果样本数$m$的阶为$O(nr\mathrm{polylog}(n))$,其中$n=\max (p,q)$.

在本文的其余部分,我们提出一些高效的方法来求解(I.1), (I.2), (I.3), (I.4)和 (I.5).

II 不动点迭代算法

我们求解(I.4)的不动点迭代算法是如下简单的两行算法

\[

\begin{cases}

Y^k=X^k-\tau g(X^k)\\

X^{k+1}=S_{\tau \mu}(Y^k),

\end{cases}

\]

其中$g(X^k)=\mathcal{A}^\ast (\mathcal{A}(X^k)-b)$, $\mathcal{A}^\ast$为$\mathcal{A}$的伴随算子,且$S_\nu (\cdot)$为矩阵收缩算子(matrix shrinkage operator),定义为

\[S_\nu (Y)=U\mathrm{Diag}(\bar\sigma)V^T,\quad \bar\sigma=\max\{\sigma-\nu,0\},\]

其中$ U\mathrm{Diag}(\bar\sigma)V^T$是矩阵$Y\in \mathbb{R}^{p\times q}$的奇异值分解(SVD).

我们的算法(II.1)灵感来源于[12]提出的不动点迭代算法。因为(I.4)中的目标函数(objective function)是凸的,$X^\ast$是(I.4)的最优解(optimal solution)当且仅当

\[0\in \mu\partial\|X^\ast\|_\ast+g(X^\ast).\]

注意到如果$X$的SVD为$X=U\Sigma V^T$,则(见[3])

$$

\partial \lVert X \rVert _{\ast}=\left\{ UV^T+W\left| U^TW=0,WV=0,\lVert W \rVert _2\leq 1 \right. \right\},

$$

其中范数$\|W\|_2$定义为$W$的最大奇异值.

基于最优条件(II.3),我们可以通过采用算子分解技巧(an operator splitting technique)开发出一种求解(I.4)的不动点迭代方法.注意到(II.3)等价于对任意$\tau>0$,均有

\[0\in \tau\mu\partial \|X^\ast\|_\ast+X^\ast-( X^\ast-\tau g (X^\ast)).\]

若令\[Y^\ast=X^\ast-\tau g(X^\ast),\]则(II.4)变为

\[0\in \tau\mu\partial \|X^\ast\|_\ast+X^\ast-Y^\ast,\]

即$X^\ast$是

\[\min \tau\mu \|X^\ast\|_\ast +\frac12 \left\|X -Y^\ast\right\|_\mathrm{F}^2. \]

我们知道应用于$Y^\ast$的矩阵收缩算子,也就是$S_{\tau\mu}(Y^\ast)$,给出了(II.7)的最优解.(见[13])

基于以上结论我们得到本节一开始提到的求解问题(I.4)的不动点迭代算法(II.1).而且,我们有以下定理:

定理2.1. $X^\ast$是问题(I.4)的最优解当且仅当$X^\ast=S_{\tau\mu}(h(X^\ast))$,其中$h(\cdot)=I(\cdot)-\tau g(\cdot)$.

  1. 收敛性结果

我们现在分析不动点迭代算法的收敛性(证明见[13]).

引理2.2. 收缩算子$S_\nu$是非扩张的(nonexpansive),也就是对任何$Y_1$和$Y_2\in \mathbb{R}^{p\times q},\nu>0$,均有

\[\left\|S_\nu (Y_1)-S_\nu (Y_2)\right\|_{\mathrm{F}}\leq \| Y_1- Y_2\right\|_{\mathrm{F}}.\]

而且,

$$

\lVert Y_1-Y_2 \rVert _F=\lVert S_{\nu}\left( Y_1 \right) -S_{\nu}\left( Y_2 \right) \rVert _F\Leftrightarrow Y_1-Y_2=S_{\nu}\left( Y_1 \right) -S_{\nu}\left( Y_2 \right) .

$$

我们现在说明不动点迭代(II.1)收敛到问题(I.4)的最优解.

定理2.3. 由不动点迭代算法(II.1)生成的数列$\left\{ X^k \right\}$收敛到某些$X^\ast \in\mathcal{X}^\ast$,其中$\mathcal{X}^\ast$是问题(I.4)最优解集,而$\tau\in (0,2/\lambda_\max (\mathcal{A}^\ast\mathcal{A}))$.

  1. 延拓性(Continuation)

受Hale [12]工作的启发,我们首先描述一个延拓(同伦)(continuation (homotopy))技巧,以加快不动点迭代(II.1)的收敛.我们求解(I.4)的不动点延拓(FPC, fixed point continuation)迭代算法如下所示:

  1. 基于FPC算法的一种近似SVD:FPCA

计算奇异值分解是算法1的主要计算代价.因此,为了取代在每次迭代中计算矩阵$Y$的完整SVD,我们执行了算法FPC的一个变体,这样的话我们只计算秩为$k_s$的$Y$的近似(见下文),其中$k_s$是一个在算法过程中调整的参数.我们称其为变体FPCA.

这种方法大大降低了算法所需的计算量.具体地说,我们通过快速蒙特卡罗算法(fast Monte Carlo algorithm)计算一个近似的SVD:Drineas等[7]所开发的线性时间SVD算法.对于一个给定的矩阵$A\in \mathbb{R}^{p\times q}$,和参数$c_s,k_s\in\mathbb{Z}^+$,其中$1\leq k_s\leq c_s\leq q$且$\{p_i\}_{i=1}^q,p_i\geq 0,\sum_{i=1}^q p_i=1$,该算法在线性$O (p+q)$时间内返回一个矩阵$A$的最大$k_s$奇异值和相应的左奇异向量的近似.

下面概述了线性时间SVD算法.

转载于:https://www.cnblogs.com/Eufisky/p/7804253.html

有效地解决低阶矩阵完全问题相关推荐

  1. 向量值函数在计算机工程与应用,拟Newton法在高阶矩阵中的应用-计算机工程与应用.PDF...

    Computer Engineering and Applications 计算机工程与应用 2012 ,48 (16) 33 ⦾研究.探讨⦾ 拟Newton 法在高阶矩阵中的应用 --求解最大特征值 ...

  2. java 计算矩阵行列式,【算法】递归算法之n阶矩阵行列式求解

    最近高等代数正好讲到这里,此篇文章正好对所学知识做一个具体程序实践. 设计算法时使用递归的思想是一个程序员的基本素质,递归可以把一个很庞大的问题转化为规模缩小了的同类问题的子问题,通过这一思想,我们编 ...

  3. 求5阶矩阵其对角线上所有元素之和

    1.代码如下: // test.cpp : Defines the entry point for the console application. // /* 输入一个5*5的矩阵,然后输出其对角线 ...

  4. java 多阶矩阵求逆_求N阶矩阵的逆矩阵 java

    求N阶矩阵的逆矩阵 java 别妄想泡我 911次浏览 2020年08月01日 16:49 最佳经验 本文由作者推荐 1毫升等于多少升-岂止的意思 import r; public class 求逆矩 ...

  5. 求n阶矩阵的逆矩阵(C语言实现)

    求n阶矩阵的逆矩阵 求行列式的值部分:https://blog.csdn.net/qq_30291317/article/details/114364893?ops_request_misc=& ...

  6. n阶矩阵乘以n阶矩阵的朴素做法

    n阶矩阵 * n阶矩阵 k: 1 to n c[i][j] = sum (a[i][k] * c[k][j]) for (int i = 0; i < n; ++i)for (int j = 0 ...

  7. C语言,练习8.9 n*n阶矩阵对角线元素之和

    首先,n*n阶矩阵需要用到二维数组. 然后矩阵得到了,需要找到对角线上的元素. 不难发现,主对角线上的元素下标是一样的,也就是i==j,其次副对角线上是元素角标相加等于n-1 所以,条件就是   if ...

  8. windows点阵字体转linux版,Deepin 20.1下安装和配置点阵字体,可解决低分屏字体模糊问题...

    本文介绍在Deepin 20.1系统下安装和配置点阵字体的方法,内容有安装字库(包含相关字体下载链接).修改字体配置文件及效果展示截图,处理过后可解决低分屏字体模糊及发虚的问题. 前言 Deepin ...

  9. 【C语言】编程实现输出矩阵上/下三角的数值。要求:输入一个正整数n和n阶矩阵的数值,打印输出矩阵、下三角和上三角的数值。

    [问题描述]编程实现输出矩阵上/下三角的数值.要求:输入一个正整数n和n阶矩阵的数值,打印输出矩阵.下三角和上三角的数值. [输入输出样例] [样例说明] 输入提示符中冒号为英文符号,后面无空格. 输 ...

最新文章

  1. mybatis一级缓存导致sql查询出现问题
  2. MySQL笔记5:如何创建和删除索引?
  3. python链表添加多个值_Python基础10之数据结构(下)
  4. 各种烧写文件格式简介-ELF Hex Bin axf
  5. 仿网易云音乐客户端的底部播放器的实现思路
  6. html奇淫技巧 2 教你如何进行图文环绕布局 原创
  7. python如何实时捕捉cmd显示_如何从Python脚本中捕获Python解释器和/或CMD.EXE的输出? -问答-阿里云开发者社区-阿里云...
  8. Linux内存管理--物理内存分配【转】
  9. ADN中国团队參加微软的Kinect全国大赛获得三等奖
  10. 利用VMware Infrastructure SDK编程控制虚拟机集群(2)
  11. Linux下硬盘分区的最佳方案
  12. 网络安全扫盲贴 史上最全网络安全问题解答
  13. 数字图像处理与Python实现-图像变换-Radon变换
  14. ViewBinding
  15. matlab自动打卡程序,MATLAB人脸考勤打卡签到系统[摄像头界面GUI]
  16. AD软件——设计总结(差分布线,蛇形布线)
  17. 问:平面布置图是什么?有什么作用?如何判断好的平面布置图方案?如何绘制?
  18. unrar file.rar 解压rar 问题,找不到unrar 命令。安装rar unrar流程及bug处理
  19. scorm标准平台有哪些是免费的?
  20. linux系统print命令,Linux系统命令大全

热门文章

  1. BUU-MISC-认真你就输了
  2. 北大青鸟 第7章 青岛迷你游戏平台
  3. C语言之回调函数(非常重要)附带回调函数版本实现整型的加减乘除四则运算
  4. 计算机丢失xmlLite.dll,电脑总是提醒应用程序错误或DLL C:windowssystem32xmllite.dll为无效的windows映像。。。这是为什么...
  5. Kivy Python的UI库
  6. [摄影]摄影入门系列索引
  7. EN 622-3 纤维板-规范第三部分:中密度板的要求
  8. rt-thread的moudle源码分析
  9. 安信可分享 | 分享一个基于airkiss协议的配网小程序,实现小程序一键配网安信可ESP32C3\ESP8266\ESP32\ESP32S2系列的模组。(附带源码)
  10. 微信小程序开发学习—Day3