【机器学习论文阅读笔记】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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python使用pymysql操作数据库

大家好,当涉及到与数据库进行交互和操作时,Python的pymysql库是一个常用且功能强大的选择。pymysql提供了与MySQL数据库的连接、查询、插入、更新和删除等操作的方法,使得在Python中进行数据库操作变得简单而高效。 1、安装 pymysql 库 在开…

Python3 笔记:部分专有名词解释

1、python 英 /ˈpaɪθən/ 这个词在英文中的意思是蟒蛇。但据说Python的创始人Guido van Rossum(吉多范罗苏姆)选择Python这个名字的原因与蟒蛇毫无关系,只是因为他是“蒙提派森飞行马戏团(Monty Python's Flying Ci…

【静态分析】在springboot使用太阿(Tai-e)01

参考:使用太阿(Tai-e)进行静态代码安全分析(spring-boot篇一) - 先知社区 ---------------------------------------------------------------------- 由于spring-boot实现了控制反转与面向切面编程的设计思想&#x…

OpenHarmony轻松玩转GIF数据渲染

OpenAtom OpenHarmony(以下简称“OpenHarmony”)提供了Image组件支持GIF动图的播放,但是缺乏扩展能力,不支持播放控制等。今天介绍一款三方库——ohos-gif-drawable三方组件,带大家一起玩转GIF的数据渲染,搞…

二手车经营效率罗盘,用经营效率罗盘玩转二手车生意

课程下载:https://download.csdn.net/download/m0_66047725/89292198 更多资源下载:关注我。 带你了解不一样的二手车圈让二手车经营更高效 课程介绍 随着时代不断发展,二手车行业迎来了快速变革期。二手车有着一车一况、一车一价非标和价…

无人机+飞行服务:无人机飞防服务(打药+施肥+播种)技术详解

无人机飞防服务,结合了先进的无人机技术与农业实践,为现代农业提供了高效、精准的打药、施肥和播种解决方案。以下是对这些技术的详细解析: 一、无人机打药技术 无人机打药技术利用无人机搭载喷雾设备,对农田进行精准施药。通过…

【Crypto】看我回旋踢

文章目录 一、看我回旋踢二、知识点什么是ROT13?工作原理分析字符串格式 解题感悟 一、看我回旋踢 关键词回旋,盲猜ROT13 因为以 synt{ 开头,并以 } 结束,基本可以判断是ROT13 小小flag,拿下! 二、知识点 …

抖音极速版:抖音轻量精简版本,新人享大福利

和快手一样,抖音也有自己的极速版,可视作抖音的轻量精简版,更专注于刷视频看广告赚钱,收益比抖音要高,可玩性更佳。 抖音极速版简介 抖音极速版是一个提供短视频创业和收益任务的平台,用户可以通过观看广…

【机器学习聚类算法实战-5】机器学习聚类算法之DBSCAN聚类、K均值聚类算法、分层聚类和不同度量的聚集聚类实例分析

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

保障餐饮场所安全:定期送检可燃气体报警器

在餐饮行业,火灾隐患一直备受关注。餐厅、茶饮店等场所常常使用燃气设备,而这些设备带来了潜在的安全隐患。 为了及时发现并预防可燃气体泄漏,可燃气体报警器的定期送检显得尤为重要。那么,为什么可燃气体报警器需要定期送检呢&a…

【Linux】从零开始认识进程间通信 —— 管道

送给大家一句话: 人要成长,必有原因,背后的努力与积累一定数倍于普通人。所以,关键还在于自己。 – 杨绛 从零开始认识进程间通信 1 为什么要进程间通信2 进程如何通信3 进程通信的常见方式4 管道4.1 什么是管道4.2 管道通信的系…

交叉编译程序,提示 incomplete type “struct sigaction“ is not allowed

问题描述 incomplete type "struct sigaction" is not allowed解决办法 在代码的最顶端添加如下代码即可 #define _XOPEN_SOURCE此定义不是简单的宏定义,是使程序符合系统环境的不可缺少的部分 _XOPEN_SOURCE为了实现XPG:The X/Open Porta…

零一万物Yi-1.5开源,34B/9B/6B多尺寸,34B超Qwen1.5-72B

前言 近年来,大型语言模型(LLM)在各个领域展现出惊人的能力,为人们的生活和工作带来了巨大的改变。然而,大多数开源 LLM 的性能仍然无法与闭源模型相媲美,这限制了 LLM 在科研和商业领域的进一步应用。为了…

element-plus表格的表单校验如何实现,重点在model和prop

文章目录 vue&#xff1a;3.x element-plus&#xff1a;2.7.3 重点&#xff1a; 1) tableData放到form对象里 2) form-item的prop要写成tableData.序号.属性 <!--table-表单校验--> <template><el-form ref"forms" :model"form"><e…

安装mpi4py与dlio_profiler_py的总结

安装mpi4py mpi4py是一个Python库&#xff0c;它提供了与MPI&#xff08;Message Passing Interface&#xff09;兼容的接口&#xff0c;使得Python程序能够利用MPI实现并行计算。mpi4py 的核心是基于MPI标准的C/C实现&#xff0c;它能够在高性能计算环境下进行高效的并行处理…

软考之信息系统管理知识点(3)

流水线&#xff1a;是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的&#xff0c;它们可同时为多条指令的不同部分进行工作&#xff0c;以提高各部件的利用率和指令的平均执行速度。 编译得过程 关系数据库是表的集合 …

【全网最全】2024电工杯数学建模A题前两问完整解答+21页初步参考论文+py代码+保奖思路等(后续会更新成品论文)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片链接&#xff0c;那是获取资料的入口&#xff01; 【全网最全】2024电工杯数学建模A题前两问完整解答21页初步参考论文py代码保奖思路等&#xff08;后续会更新成品论文&#xff09;「首先来看看目前已有…

力扣:92. 反转链表 II(Java)

目录 题目描述&#xff1a;示例 1&#xff1a;示例 2&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的…

网络采集受限?如何解决指纹识别、IP封禁、验证码、账号多登等问题

网页采集是什么 网页采集&#xff0c;也常被称作网络采集、网络数据抓取&#xff0c;是一种通过自动化工具从网站上获取信息的技术。这些技术通过访问网页&#xff0c;解析页面上的内容&#xff0c;并提取出有价值的数据&#xff0c;如文本、图片、链接等。 网页采集通常用于…

Python 调整PDF文件的页面大小

在处理PDF文件时&#xff0c;我们可能会遇到这样的情况&#xff1a;原始PDF文档不符合我们的阅读习惯&#xff0c;或者需要适配不同显示设备等。这时&#xff0c;我们就需要及时调整PDF文档中的页面尺寸&#xff0c;以满足不同应用场景的需求。 利用Python语言的高效性和灵活性…