张量学习:张量补全(tensor completion)

目录

一、什么是张量(Tensor)?

二、张量补全(tensor completion)

1 基于张量分解的方法

1.1 基于CP分解 

1.2 基于Tucker分解

1.3 基于张量链分解 

1.4 基于张量环分解

1.5 基于t-SVD分解

2 秩最小化模型 

2.1 Tucker秩最小化模型

2.2 张量链秩最小化模型 

2.3 管秩最小化模型


一、什么是张量(Tensor)?

张量这个词英文叫Tensor。很多人有可能觉得比较陌生,但相信大部分人都听说过Tensorflow。其实Tensorflow里最基本的数据结构就是Tensor,跟本文讲的Tensor的概念是一样的,并不是物理学中的张量概念。

那具体什么是张量呢,张量是多维数组的泛概念。一维数组我们通常称之为向量,二维数组我们通常称之为矩阵,但其实这些都是张量的一种。以此类推,我们也会有三维张量、四维张量以及五维张量。那么零维张量是什么呢?其实零维张量就是一个数。

为了加深大家对张量概念的理解,再举一个简单例子。如用户对电影的评分可以用来一个二维矩阵来表示。但是如果我们把时间因素也考虑进去,就变成了一个三维数组,那么我们就称这一数组是一个三维张量。其实在某些方面,张量和多维度数据是对等的。张量非常适合去表示多维度的数据,张量通过多维度的数据,可将用户间的内在联系捕捉到。

张量通常是动态增长的,它的增长通常可以用三种形式来实现。

第一种是维度的增长。比如我们只考虑用户时间、电影和评分来进行张量建模,那么这个张量只有三个维度。但如果我们再把电影主题也加进去,那么就从一个三维张量增长成了四维张量,这是通过维度上的增长,

第二种增长是维度中数据的增长,如现在我们有用户、时间和电影这三个维度,但是还会有新的用户,也会有新的电影,时间也是逐渐增长的,所以每个维度也会自然增长,但是维数始终是固定的,这就是第二种增长。

最后一种增长是观测数据的增长,比如说维度的个数是固定的,三个维度——用户、时间、电影。那么每个维度上的数量也是固定的,但是呢,我们可能一开始只获取了部分数据,然后后面会获取越来越多的数据。这样就形成了一种观测数据的增长,所以这也是一种张量的增长方式。

二、张量补全(tensor completion)

现实情况下,往往由于采集数据工具(如采集交通数据的传感器)的故障以及其他异常情况导致数据中往往存在部分缺失值,对这些缺失值的修补称之为“补全”,张量领域的缺失值修复即张量补全。张量补全是根据已有数据对缺失值的影响和低秩假设实现缺失值补全,主要分为两类方法:

  • 一种是基于张量补全中给定的秩和更新因子
  • 一种是直接最小化张量秩并更新低秩张量

1 基于张量分解的方法

基于张量分解的张量补全可转化为如下优化问题(大多数的张量补全问题都可转化为对优化问题的求解):

其中,X是补全后的张量,J是原始存在缺失值的张量。不同张量分解方法对张量补全带来的差异主要集中于秩的定义,如CP分解,Tucker分解等。S是一个给定的低秩张量X的秩的界限。P_{o}表示随机取样操作,定义为: 

1.1 基于CP分解 

以CP分解的秩代替张量补全中的秩,原优化问题转化为:

该问题可通过交替最小二乘法(ALS)解决,即每轮迭代通过其他固定变量去更新单个变量。但是,这个模型是非凸的,会受到局部最小值的影响,需要良好的初始化才能得到比较好的效果。此外一些最新的方法比如CPWOPT、geomCG也被提出去解决这些问题。 

1.2 基于Tucker分解

以Tucker分解的秩代替张量补全的秩,原优化问题转化为:

其中g为核心张量,B为因子矩阵。该问题同样可通过ALS解决,并通过高阶正交迭代(HOOI)加速运行,迭代计算正交因子矩阵一列对应的主导奇异向量。

此外,一种推广的张量补全模型十分流行,它拥有一种预定义的Tucker秩,优化问题如下:

其中t是观测数据,P是线性操作符。这个问题可通过张量迭代硬阈值(TIHT)解决,该方法采用截断的高阶奇异值分解作为阈值算子,得到最优的低阶张量逼近。

1.3 基于张量链分解 

以张量链分解的秩代替张量补全的秩,原优化问题转化为:

这个问题是非凸的,并且存在拟最优逼近解,可以通过使用非线性块高斯-塞德尔迭代进行计算。对于每个小块,都可以采用最小二乘拟合的方法进行求解,从而加快收敛速度。此外,在张量链秩固定的情况下,可以在黎曼优化框架内使用非线性共轭梯度方案来解决该问题,该方案可以使复杂度随维数的变化呈线性变化。

1.4 基于张量环分解

低秩张量环补全是唯一一个有着固定张量环秩的张量补全方法。优化问题如下:

其中X\in \mathbb{T}_{TR}\left ( S_{1},S_{2},\cdots ,S_{N} \right )意思是X\left ( i_{1},i_{2},\cdots ,i_{N} \right )=tr\left ( U_{1}\left ( :,i_{1},: \right )U_{2}\left ( :,i_{2},: \right )\cdots U_{N}\left ( :,i_{N},: \right ) \right )U_{n}\in \mathbb{R}^{S_{n}\times I_{n}\times S_{n+1}}。张量链的秩表示大多中间因子的分布和少部分边界因子的分布。张量环分解可以有效解决张量链分解的缺陷。在初始点选择良好的情况下,用ALS法可以解决此优化问题。 

1.5 基于t-SVD分解

 使用t-SVD分解的管秩代替张量补全的秩,原优化问题转化为:

该问题可通过将目标张量分解为两个低管秩张量的循环卷积来解决。因此,优化问题可进一步改进为:

 

其中A\in \mathbb{R}^{I_{1}\times S\times I_{3}}B\in \mathbb{R}^{I_{2}\times S\times I_{3}},该低管秩张量补全模型可通过交替最小化算法解决。

2 秩最小化模型 

在实际中,张量秩界可能在一些应用中是不可用的。当观测值很少时,高秩界的选择可能会导致过拟合。为了避免这种情况发生,另一种方法是直接最小化张量的秩。其优化问题如下:

其中意思是,均属于观测值索引。rank(X)表示张量秩,可以有多种定义,如CP分解的秩,Tucker分解的秩等。根据不同张量秩的定义,存在多种张量补全问题的优化模型。然而,由于rank是一个非凸函数,因此优化问题变成了一个NP难问题。大多数现有的方法都是使用核范数(迹范数)替代非凸的秩函数。但是,CP分解的张量核范数是不可解的且张量环的核范数未曾迁移到张量补全的问题中,因此下面对这两种模型不予讨论。

2.1 Tucker秩最小化模型

基于最小化Tucker秩的张量补全优化模型如下:

其中,rank\left ( X_{\left [ n \right ]} \right )表示X_{\left [ n \right ]}的展开矩阵的秩。基于Tucker秩的定义,优化问题可进一步转化为: 

实际上,矩阵秩函数在优化问题中是非凸的,但可以转化为矩阵核范数近似。于是优化问题进一步转化为:

 

该问题可用简单的低秩张量补全(SiLRTC)来解决,也可通过增加一个方程约束,用高精度的低秩张量补全(HaLRTC)来严格解决。

2.2 张量链秩最小化模型 

基于最小化张量链秩的张量补全优化模型如下:

其中rank_{TT}\left ( X \right )=\left ( rank\left ( X_{\left \langle 1 \right \rangle} \right ),rank\left ( X_{\left \langle 2 \right \rangle} \right ),\cdots ,rank\left ( X_{\left \langle N-1 \right \rangle} \right ) \right )rank\left ( X_{\left \langle n \right \rangle} \right )表示X_{\left \langle n \right \rangle}的展开矩阵的秩。因此,原优化问题可进一步转化为: 

该优化问题可通过矩阵核范数近似,进一步转化为:

 

该问题可通过简单的低秩张量补全,借助张量链(SiLRTC-TT)来解决。 

2.3 管秩最小化模型

基于最小化张量管秩的张量补全优化模型如下:

其中,张量管道秩定义为J的非零奇异管道数量,J来源于t-SVD分解,X=U\ast J\ast V^{T}。原优化问题可进一步改进为: 

 

\left \| X \right \|_{TNN}是X的核范数,等价于blkdiag\left ( \hat{X} \right )的核范数。最新的一些模型为了更好地估计张量管秩,提出了一些新的凸包络,如张量截断核范数(T-TNN)和加权张量核范数(W-TNN)来代替传统的TNN。 

本文转自:

https://blog.csdn.net/wwb44444/article/details/108956789  CSDN博主「瑶琴遇知音」

https://blog.csdn.net/Mlooker/article/details/80492932  CSDN博主「贪心科技」

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,我了解了你的问题。首先,我需要说明一下,我是一个自然语言处理模型,不能直接操作MATLAB。但是,我可以给你提供一些基本的概念和流程,希望能对你有所帮助。 SVD(奇异值分解)是一种常用的矩阵分解方法,它可以将一个矩阵分解为三个矩阵的乘积,即原矩阵 = 左奇异向量矩阵 × 奇异值矩阵 × 右奇异向量矩阵。其中,左奇异向量矩阵和右奇异向量矩阵是正交矩阵,奇异值矩阵是一个对角矩阵,对角线上的元素称为奇异值。SVD可以用于矩阵压缩和降维,因为奇异值通常是按照大小递减排列的,前面的奇异值对应的左右奇异向量可以表示原矩阵的主要结构,可以保留较高的信息量,而后面的奇异值对应的左右奇异向量可以表示噪声和细节,可以被舍弃。 对于灰度图像的压缩,可以将灰度矩阵进行奇异值分解,然后舍弃一些奇异值和对应的左右奇异向量,得到一个近似矩阵,从而实现压缩。具体的流程图可以按照以下步骤进行: 1. 将灰度图像转换为灰度矩阵。 2. 对灰度矩阵进行SVD分解,得到左奇异向量矩阵、奇异值矩阵和右奇异向量矩阵。 3. 分析奇异值大小分布,确定保留的奇异值数目。 4. 舍弃一些奇异值和对应的左右奇异向量,得到一个近似矩阵。 5. 将近似矩阵转换为灰度图像,得到压缩后的图像。 对于彩色图像的压缩,可以利用张量T-SVD实现。张量是一种多维数组,可以表示多维数据,例如彩色图像可以用三维张量表示。T-SVD是一种扩展的SVD方法,可以将一个张量分解为若干个小块的乘积,并通过舍弃一些小块的方式实现张量压缩。具体的流程图可以按照以下步骤进行: 1. 将彩色图像转换为三维张量。 2. 对张量进行T-SVD分解,得到若干个小块的乘积。 3. 分析小块的奇异值大小分布,确定保留的小块数目。 4. 舍弃一些小块,得到一个近似张量。 5. 将近似张量转换为彩色图像,得到压缩后的图像。 对于压缩结果的评价分析,可以采用以下指标进行评价: 1. 压缩比:压缩后的图像大小与原图像大小的比值。 2. 峰值信噪比(PSNR):衡量压缩后的图像与原图像之间的相似度,数值越大越好。 3. 结构相似性指标(SSIM):衡量压缩后的图像与原图像之间的结构相似度,数值越大越好。 以上是对于MATLAB实现利用矩阵SVD实现对灰度图像的压缩和利用矩阵SVD和张量T-SVD实现对彩色图像的压缩的基本流程和评价指标的介绍。希望对你有所帮助。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值