当前位置: 首页 > news >正文

【机器学习论文阅读笔记】Robust Recovery of Subspace Structures by Low-Rank Representation

前言

终于要轮到自己汇报了好崩溃。。盯着论文准备开始做汇报ppt感觉一头乱麻,决定还是写博客理清思路再说吧

参考资料:

论文原文:arxiv.org/pdf/1010.2955

RPCA参考文章:RPCA - 知乎 (zhihu.com)

谱聚类参考文章:谱聚类(spectral clustering)原理总结 - 刘建平Pinard - 博客园 (cnblogs.com)

一、问题描述

该篇论文提出了一种名为LRR(Low-Rank Representation)的目标函数,为了解决以下问题:

给定一组从多个子空间的并集中近似抽取的数据样本(向量),我们的目标是将样本聚类到它们各自的子空间中,并去除可能的异常值

Given a set of data samples (vectors) approximately drawn from a union of multiple subspaces, our goal is to cluster the samples into their respective subspaces and remove possible outliers as well.

什么叫数据样本是从多个子空间的并集中近似抽取的?

image.png

如图所示,当我们的每个数据点的特征数量为3时,样本空间就是三维的空间

左边的图就表示严格地从一个二维平面中和两条一维的直线上抽取数据点;右边的图则表示近似地从相同的这三个子空间中抽取数据点。

而典型的异常值有以下几种类型:

image.png

(a)为噪声,表示数据在子空间周围受到轻微扰动
(b)为随机损坏,表示有随机的部分数据被严重损坏
©为特定的损坏,表示有数据样本的一部分(即数据的列)远离子空间

二、子空间恢复

1. 低秩表示

首先关注怎么把子空间中的数据从误差中恢复出来

image.png

我们把原始的数据矩阵 X X X 表示为两个矩阵的加和:

X = X 0 + E 0 X = X_0 + E_0 X=X0+E0

其中, X 0 X_0 X0就是恢复后的矩阵, E 0 E_0 E0就是代表异常值的矩阵

我们看下这两个矩阵分别有什么特点,举一个比较简单的例子

image.png

像左侧这样一个被损坏的数据,我们可以将其分解为一个低秩(各列之间相关性较强)的矩阵,还有一个稀疏的矩阵

为了能够完成这一目标,我们定义优化目标如下:

m i n D , E r a n k ( D ) + λ ∣ ∣ E ∣ ∣ l s . t . X = D + E min_{D, E} \space rank(D) + \lambda ||E||_l \quad s.t. \quad X = D + E minD,E rank(D)+λ∣∣Els.t.X=D+E

其中, D D D表示恢复后的矩阵, ∣ ∣ E ∣ ∣ l ||E||_l ∣∣El表示特定的正则化项, l l l由异常的类型决定:

当异常值为一中提到的

(a) 噪声: ∣ ∣ E ∣ ∣ l ||E||_l ∣∣El ∣ ∣ E ∣ ∣ F ||E||_F ∣∣EF
(b) 随机损坏: ∣ ∣ E ∣ ∣ l ||E||_l ∣∣El ∣ ∣ E ∣ ∣ 0 ||E||_0 ∣∣E0
© 特定损坏: ∣ ∣ E ∣ ∣ l ||E||_l ∣∣El ∣ ∣ E ∣ ∣ 2 , 0 ||E||_{2,0} ∣∣E2,0

其实这上面的公式是被Robust PCA所采用的,而且这个公式隐式地假设了底层的数据是单一的低秩子空间的结构

当我们的数据是从多个子空间的并集 ∪ i = 1 k S i \cup_{i=1}^k S_i i=1kSi中提取出来的时,使用上述公式,就是把数据当作从一个单一的子空间 S = ∑ i = 1 k S i S = \sum_{i=1}^k S_i S=i=1kSi中采样

然而, ∑ i = 1 k S i \sum_{i=1}^k S_i i=1kSi是比 ∪ i = 1 k S i \cup_{i=1}^k S_i i=1kSi要大的多的,所以使用上述目标函数会不够精确,不能很好地考虑到单个子空间的细节

对此,我们使用以下优化目标代替:

m i n Z , E r a n k ( Z ) + λ ∣ ∣ E ∣ ∣ l s . t . X = A Z + E min_{Z, E} \space rank(Z) + \lambda ||E||_l \quad s.t. \quad X = AZ + E minZ,E rank(Z)+λ∣∣Els.t.X=AZ+E

其中, A A A是一个横跨数据空间的“字典”。我们将上述优化目标关于 Z Z Z的解 Z ∗ Z^* Z 称作 X X X在字典 A A A中的低最低秩表示(lowest rank representation)

在字典学习中,我们会利用一个字典 A A A,得到数据 X X X的稀疏表示 α \alpha α,从而提取出数据中最本质的特征,用更少的资源表示尽可能多的知识:

X = A α X = A \alpha X=Aα

A = I A = I A=I时,后面的公式就会返回前面的形式。所以LRR可以看作是RPCA泛化的版本,而RPCA使用标准基作为字典

2. 分析LRR问题

由于秩函数的离散性,优化问题难以解决。实际上,在秩最小化的问题中,人们常用 核范数(一个矩阵的奇异值之和) 代替:

m i n Z , E ∣ ∣ Z ∣ ∣ ∗ + λ ∣ ∣ E ∣ ∣ l s . t . X = A Z + E min_{Z, E} \space ||Z||_* + \lambda ||E||_l \quad s.t. \quad X = AZ + E minZ,E ∣∣Z+λ∣∣Els.t.X=AZ+E

由于 l 1 l_1 l1范数和 l 2 , 1 l_{2,1} l2,1范数分别是 l 0 l_0 l0范数和 l 2 , 0 l_{2,0} l2,0范数的良好松弛,将优化问题写作如下形式:

m i n Z , E ∣ ∣ Z ∣ ∣ ∗ + λ ∣ ∣ E ∣ ∣ 2 , 1 s . t . X = A Z + E min_{Z, E} \space ||Z||_* + \lambda ||E||_{2,1} \quad s.t. \quad X = AZ + E minZ,E ∣∣Z+λ∣∣E2,1s.t.X=AZ+E

将其转化为等价问题如下:

m i n Z , E , J ∣ ∣ J ∣ ∣ ∗ + λ ∣ ∣ E ∣ ∣ 2 , 1 s . t . X = A Z + E , J = Z min_{Z, E, J} \space ||J||_* + \lambda ||E||_{2,1} \quad s.t. \quad X = AZ + E, J = Z minZ,E,J ∣∣J+λ∣∣E2,1s.t.X=AZ+E,J=Z

我也不知道为什么要引入一个 J = Z J = Z J=Z,多这个变量有什么必要吗

利用增广拉格朗日乘子法(ALM),优化目标转化为最小化以下拉格朗日函数:

L = ∣ ∣ J ∣ ∣ ∗ + λ ∣ ∣ E ∣ ∣ 2 , 1 + t r ( Y 1 T ( X − A Z − E ) ) + t r ( Y 2 T ( J − Z ) ) + μ 2 ( ∣ ∣ X − A Z − E ∣ ∣ F 2 + ∣ ∣ J − Z ∣ ∣ F 2 ) \mathcal{L} = ||J||_* + \lambda ||E||_{2,1} + tr(Y_1^T (X - AZ - E)) + \\ \qquad tr(Y_2^T ( J - Z)) + \frac{\mu}{2} ( || X - AZ - E ||_F^2 + || J - Z ||_F^2 ) L=∣∣J+λ∣∣E2,1+tr(Y1T(XAZE))+tr(Y2T(JZ))+2μ(∣∣XAZEF2+∣∣JZF2)

算法如下:

image.png

其中,求解第一步利用的是某篇引用的方法:Singular Value Thresholding (SVT) operator

求解第二步过程如下:

由$\mathcal{L} = ||J||* + \lambda ||E||{2,1} + tr(Y_1^T (X - AZ - E)) + \ \qquad tr(Y_2^T ( J - Z)) + \frac{\mu}{2} ( || X - AZ - E ||_F^2 + || J - Z ||_F^2 ) $

∂ L ∂ Z = − A T Y 1 + Y 2 + μ 2 ( − 2 A T ( X − A Z − E ) + 2 Z ) = 0 \frac{\partial \mathcal{L}}{\partial Z} = -A^T Y_1 + Y_2 + \frac{\mu}{2} (-2A^T( X -AZ - E) + 2Z) =0 ZL=ATY1+Y2+2μ(2AT(XAZE)+2Z)=0

得到

( A T A + I ) Z − A T ( X − E ) = 1 μ ( A T Y 1 − Y 2 ) (A^TA + I)Z - A^T(X - E) = \frac{1}{\mu} (A^T Y_1 - Y_2) (ATA+I)ZAT(XE)=μ1(ATY1Y2)

Z = ( A T A + I ) − 1 ( A T ( X − E ) + 1 μ ( A T Y 1 − Y 2 ) ) Z = (A^TA + I)^{-1} (A^T(X - E) + \frac{1}{\mu} (A^T Y_1 - Y_2)) Z=(ATA+I)1(AT(XE)+μ1(ATY1Y2))

求解第三步利用的是以下引理:

image.png

当固定其他变量,对 E E E进行迭代时,问题如下:

a r g m i n E λ μ ∣ ∣ E ∣ ∣ 2 , 1 + 1 2 ∣ ∣ E − ( X − A Z − Y 1 μ ) ∣ ∣ F 2 argmin_E \frac{\lambda}{\mu} ||E||_{2,1} + \frac{1}{2}||E - (X - AZ - \frac{Y_1}{\mu})||_F^2 argminEμλ∣∣E2,1+21∣∣E(XAZμY1)F2

三、子空间分割

X X X作为字典 A A A,即 A = X A = X A=X,上述优化目标可写作:

m i n Z , E ∣ ∣ Z ∣ ∣ ∗ + λ ∣ ∣ E ∣ ∣ 2 , 1 s . t . X = X Z + E min_{Z, E} \space ||Z||_* + \lambda ||E||_{2,1} \quad s.t. \quad X = XZ + E minZ,E ∣∣Z+λ∣∣E2,1s.t.X=XZ+E

由于当带有skinny SVD U 0 Σ 0 V 0 T U_0 \Sigma_0 V_0^T U0Σ0V0T X 0 X_0 X0是严格从多个子空间的并集中提取的数据样本的集合,子空间的隶属度由行空间决定,并且子空间相互独立时,有以下结论:

V 0 V 0 T V_0 V_0^T V0V0T是块对角矩阵,且当且仅当第i个样本和第j个样本来自同一子空间时, V 0 V 0 T V_0 V_0^T V0V0T ( i , j ) (i, j) (i,j)位置的元素非零

故可以利用 V 0 V 0 T V_0 V_0^T V0V0T做子空间分割

我们先获得对上述优化目标的解 ( Z ∗ , E ∗ ) (Z^*, E^*) (Z,E),令 Z ∗ = U ∗ Σ ∗ ( V ∗ ) T Z^* = U^* \Sigma^* (V^*)^T Z=UΣ(V)T

相对地,我们使用 U ∗ ( U ∗ ) T U^* (U^*)^T U(U)T从列空间入手做子空间分割,并定义亲和矩阵(affinity matrix)如下:

W i , j = ( [ U ~ ∗ ( U ~ ∗ ) T ] i , j ) 2 W_{i, j} = ([\tilde{U}^* (\tilde{U}^*)^T]_{i, j})^2 Wi,j=([U~(U~)T]i,j)2

其中, U ~ ∗ = U ∗ ( Σ ∗ ) 1 2 \tilde{U}^* = U^* (\Sigma^*)^{\frac{1}{2}} U~=U(Σ)21,原文说是为了对损坏数据有更好的性能,保证亲和矩阵的值都是正的(没理解)

最后再利用谱聚类算法比如NCut(Normalized Cuts)对 W W W做切图聚类

NCut的定义见前言中的参考文章

整体的算法流程如下:

04bb2c566869ead8cb66b40e9f6b304.png

由于执行NCut算法要先确定子空间数 k k k,可以通过计算 W W W的拉普拉斯矩阵 L L L,由 L L L的零奇异值个数得到 k k k

但是实际情况下亲和矩阵只是接近于块对角矩阵,因此论文中还提出了软阈值的方法确定 k k k

3bb312440e21f631df928b0fb3fca79.png

6d36a3d7c6784efd3dd0c71fb4d736b.png

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 嵌入式学习——3——域套接字UNIX
  • 如何在go语言中调用c语言代码
  • CTF-web-攻防世界-3
  • IT廉连看——UniApp——事件绑定
  • 使用FFmpeg推流实现在B站24小时点歌直播
  • 电路仿真软件:点亮教学新篇章,十大便利助力高效学习
  • -FIT5197
  • 基于Kafka的日志采集
  • ArcGIS提取含有计曲线的等高线
  • 设置环境变量,忽略yarn对node的版本检查
  • 行业分析---造车新势力之蔚来汽车
  • [力扣题解] 463. 岛屿的周长
  • 解释JAVA语言中关于方法的重载
  • JMeter正则表达式提取器和JSON提取器基础用法,小白必会!
  • [BT]小迪安全2023学习笔记(第29天:Web攻防-SQL注入)
  • “大数据应用场景”之隔壁老王(连载四)
  • angular2 简述
  • Git初体验
  • PHP变量
  • python_bomb----数据类型总结
  • session共享问题解决方案
  • 利用DataURL技术在网页上显示图片
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端面试总结(at, md)
  • 驱动程序原理
  • 数据仓库的几种建模方法
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 移动端唤起键盘时取消position:fixed定位
  • AI算硅基生命吗,为什么?
  • python最赚钱的4个方向,你最心动的是哪个?
  • 阿里云API、SDK和CLI应用实践方案
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (1)无线电失控保护(二)
  • (zt)最盛行的警世狂言(爆笑)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (一一四)第九章编程练习
  • .describe() python_Python-Win32com-Excel
  • .net 4.0发布后不能正常显示图片问题
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net 调用php,php 调用.net com组件 --
  • .net中我喜欢的两种验证码
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • /dev/sda2 is mounted; will not make a filesystem here!
  • @vue-office/excel 解决移动端预览excel文件触发软键盘
  • @软考考生,这份软考高分攻略你须知道
  • [10] CUDA程序性能的提升 与 流
  • [AIGC] Redis基础命令集详细介绍
  • [CDOJ 1343] 卿学姐失恋了