当前位置:   article > 正文

高阶张量的分解与压缩

高阶张量

本次的博客也算是开启了自己张量网络部分的学习,大部分内容来自首都师范的张量网络暑期课,还有一部分来自博客。可能有些地方理解的有些问题,也欢迎大家指正。

首先,任意的二阶张量M可以通过奇异值分解写成U Λ \varLambda ΛV, Λ \varLambda Λ中的非零奇异值是该张量的奇异谱(非升序排列),极大化U第一个元素的实部,就可以实现唯一分解。

接着引入低秩近似的概念:
低秩近似在这里插入图片描述
低秩近似本质上是一个优化问题,给定一个小于R的秩R’,要求出一个矩阵M’使其和M之间的范数最小。

实际上,当我们得到M的奇异值分解后,这个问题就已经可解了,我们只要保留前R’个奇异值并保留他们的奇异向量 u,v,这样构成的矩阵M’就是秩为R’的所有矩阵中的最优解。

然而这只是二阶张量的结果。下面我们逐步给出高阶张量做低秩近似的结果(高阶我们暂时没办法直接做奇异值分解,所以我们并不是像二阶这样,先给出奇异值的分解结果,然后一劳永逸给出所有低秩近似的最优解。高阶部分,我们从单秩分解说起(就是秩为1的低秩近似))

二阶张量的单秩分解结果是由最大奇异值和其对应的两个奇异向量构成的。
抛开奇异值分解的方法,实际上我们可以采用迭代的方法(或者说幂级数的方法)来求最大的奇异值与相应的奇异向量(在张量网络里面,很多算法求最大本征值的方法也是这种幂级数的方法,而不是直接把方阵做本征值分解)。

首先,我们有一个恒等式:
在这里插入图片描述
将M的奇异值分解代入,这两个恒等式是显然的(左奇异向量乘上矩阵M等于奇异值乘上右奇异向量)。任意给定初始点(u0,v0),不断带入这两个恒等式进行迭代更新就能稳定收敛到最大的奇异值与奇异向量(稳定不动点)。

我们将上述的幂级数方法延拓到高阶:
在这里插入图片描述
拓展的方法如图所示,需要注意的是这里的运算是张量的缩并运算(前述二阶张量的乘法本质上就是缩并运算在二阶的特例)。

以上都是单秩分解,下面我们把完整的奇异值分解延拓到高阶:
在这里插入图片描述在这里插入图片描述
我们对上述的方法做几点说明:

  • 第二步的本征值分解是能够完成的,因为得到的键约化矩阵是实对称阵(如果张量T有复数,求键约化矩阵要做一个共轭)
  • 第三步中得到的核张量对应的键约化矩阵是一个非升序排列的半正定对角阵,满足tucker分解的要求。证明这一点的过程中注意I,J,K本身是T构成的键约化矩阵,而U,V,W是他们的特征向量构成的矩阵,注意到这一点,接下来直接把式子带进去疯狂缩并就完了
  • tucker 秩是I,J,K的秩构成的一组秩向量,也是张量T在各个纬度上的秩,也就是n-rank秩,具体的定义是rankn​(T)=rank(T(n)​),T(n)表示的是张量T切片构成的矩阵
  • 这里只说明了如何做高阶奇异值分解(对应的是低阶奇异值分解),至于低秩近似,道理是相同的,从I,J,K开始做秩的裁剪。但是这种近似的方法并不是很好,一种更优的方法是HOOI算法

这里我们初步讲完了张量分解的内容,还有一些概念性的东西,比如slice,fiber,超对角,超对称,高阶张量矩阵化(就是前面的T(n),稍微提一下,其他资料里面会看到张量缩并运算的矩阵化形式,那个矩阵化公式是好理解的,大家自己算一算就能明白)等等,这些概念大家可以去看上面的那个博客,大佬解释的很全面。

最后提一点关于cp分解的,cp分解是把一个张量写成多个单秩张量和的形式(cp秩的概念也可以由此得到),不过这个分解方法还有几个问题要解决,比如如何求cp秩,如何实现最优的低秩近似?这里不过多赘述。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/176396
推荐阅读
相关标签
  

闽ICP备14008679号