本文主要是介绍张量学习:张量补全(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的秩的界限。表示随机取样操作,定义为:
1.1 基于CP分解
以CP分解的秩代替张量补全中的秩,原优化问题转化为:
该问题可通过交替最小二乘法(ALS)解决,即每轮迭代通过其他固定变量去更新单个变量。但是,这个模型是非凸的,会受到局部最小值的影响,需要良好的初始化才能得到比较好的效果。此外一些最新的方法比如CPWOPT、geomCG也被提出去解决这些问题。
1.2 基于Tucker分解
以Tucker分解的秩代替张量补全的秩,原优化问题转化为:
其中g为核心张量,B为因子矩阵。该问题同样可通过ALS解决,并通过高阶正交迭代(HOOI)加速运行,迭代计算正交因子矩阵一列对应的主导奇异向量。
此外,一种推广的张量补全模型十分流行,它拥有一种预定义的Tucker秩,优化问题如下:
其中t是观测数据,P是线性操作符。这个问题可通过张量迭代硬阈值(TIHT)解决,该方法采用截断的高阶奇异值分解作为阈值算子,得到最优的低阶张量逼近。
1.3 基于张量链分解
以张量链分解的秩代替张量补全的秩,原优化问题转化为:
这个问题是非凸的,并且存在拟最优逼近解,可以通过使用非线性块高斯-塞德尔迭代进行计算。对于每个小块,都可以采用最小二乘拟合的方法进行求解,从而加快收敛速度。此外,在张量链秩固定的情况下,可以在黎曼优化框架内使用非线性共轭梯度方案来解决该问题,该方案可以使复杂度随维数的变化呈线性变化。
1.4 基于张量环分解
低秩张量环补全是唯一一个有着固定张量环秩的张量补全方法。优化问题如下:
其中意思是,。张量链的秩表示大多中间因子的分布和少部分边界因子的分布。张量环分解可以有效解决张量链分解的缺陷。在初始点选择良好的情况下,用ALS法可以解决此优化问题。
1.5 基于t-SVD分解
使用t-SVD分解的管秩代替张量补全的秩,原优化问题转化为:
该问题可通过将目标张量分解为两个低管秩张量的循环卷积来解决。因此,优化问题可进一步改进为:
其中,,该低管秩张量补全模型可通过交替最小化算法解决。
2 秩最小化模型
在实际中,张量秩界可能在一些应用中是不可用的。当观测值很少时,高秩界的选择可能会导致过拟合。为了避免这种情况发生,另一种方法是直接最小化张量的秩。其优化问题如下:
其中意思是,均属于观测值索引。rank(X)表示张量秩,可以有多种定义,如CP分解的秩,Tucker分解的秩等。根据不同张量秩的定义,存在多种张量补全问题的优化模型。然而,由于rank是一个非凸函数,因此优化问题变成了一个NP难问题。大多数现有的方法都是使用核范数(迹范数)替代非凸的秩函数。但是,CP分解的张量核范数是不可解的且张量环的核范数未曾迁移到张量补全的问题中,因此下面对这两种模型不予讨论。
2.1 Tucker秩最小化模型
基于最小化Tucker秩的张量补全优化模型如下:
其中,表示的展开矩阵的秩。基于Tucker秩的定义,优化问题可进一步转化为:
实际上,矩阵秩函数在优化问题中是非凸的,但可以转化为矩阵核范数近似。于是优化问题进一步转化为:
该问题可用简单的低秩张量补全(SiLRTC)来解决,也可通过增加一个方程约束,用高精度的低秩张量补全(HaLRTC)来严格解决。
2.2 张量链秩最小化模型
基于最小化张量链秩的张量补全优化模型如下:
其中,表示的展开矩阵的秩。因此,原优化问题可进一步转化为:
该优化问题可通过矩阵核范数近似,进一步转化为:
该问题可通过简单的低秩张量补全,借助张量链(SiLRTC-TT)来解决。
2.3 管秩最小化模型
基于最小化张量管秩的张量补全优化模型如下:
其中,张量管道秩定义为J的非零奇异管道数量,J来源于t-SVD分解,。原优化问题可进一步改进为:
是X的核范数,等价于的核范数。最新的一些模型为了更好地估计张量管秩,提出了一些新的凸包络,如张量截断核范数(T-TNN)和加权张量核范数(W-TNN)来代替传统的TNN。
本文转自:
https://blog.csdn.net/wwb44444/article/details/108956789 CSDN博主「瑶琴遇知音」
https://blog.csdn.net/Mlooker/article/details/80492932 CSDN博主「贪心科技」
这篇关于张量学习:张量补全(tensor completion)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!