张量的背景
张量,是向量与矩阵的推广(这里与黎曼几何里的张量有区别)。向量可以看做是一阶张量,矩阵是二阶张量。张量的阶数某种意义上代表着数据的“丰富程度”,一个矩阵代表了二维信息,一个三阶张量往往蕴含着三维的空间信息。
为什么要用张量这种新的数学工具?矩阵计算难道还不够用吗?在回答这两个问题之前,我们先回顾下当前计算机处理问题的方式。那就是,数据往往以矩阵的方式出现。比如一张用户-商品表可以表征为用户-商品矩阵。一张灰度图也可以用矩阵表示,信息在计算机里的存储以及表示方式都是矩阵的形式,后续的建模跟计算毫无疑问都是基于矩阵。换而言之,计算机处理数学问题基本上是在数值代数(矩阵计算,方程的数值解)的框架下进行的。但是,有的时候我们获取的数据并不是天然的就具有“矩阵”这类形式,比如,RGB图像它是一个三维数组。用户-商品表也往往不是单独出现,因为社交媒体的存在,真正的那张表应该是用户-用户-商品这个三维数组,类似的例子还有很多。那么,问题来了:是否可以建立如同矩阵计算(分解)那样的底层运算,为当前的数据形式(多维数组)提供更有内蕴的计算框架跟工具?
为了回答以上问题,张量计算与分解应运而生。
张量的定义跟基本运算
张量就是一个多维数组,它的元素可以被一个多重指标索引。下图是一个三阶张量
张量的模式坍缩(unfolding)
张量可以在某个阶上坍缩(unfolding)成一个矩阵,这里取名为张量的模式坍缩(取自量子力学的波函数坍缩这个词)。比如一个7×8×9的张量,它可以沿着第二阶坍缩成一个8×63的矩阵,也可以沿着第一阶坍缩成一个7×72的矩阵。“横看成岭侧成峰”,张量的模式坍缩可以从矩阵角度观察张量的潜在数据结构,并且张量的模式坍缩使我们可以回到一个“舒适”的位置,因为我们对矩阵已经非常熟悉。张量的模式坍缩类似于“降维打击”(三体里二向箔把太阳系拍成一个二维平面)。从高维到低维,当然丢失了信息,从低维看高维,也会看不清楚一些本质的东西,但是很多个来源于同一个高维母体(原始张量)的低维结构(不同的模式坍缩矩阵),却潜在保留了高维数据的结构信息。
张量与矩阵的模式乘积
为了使高维张量与张量模式坍缩后的矩阵能够发生某种相互作用,我们需要定义一些新的运算,这些运算当然是要自恰(就如同相对论之于牛顿力学,在物质运动速度远小于光速时,相对论退化成牛顿力学)。给定张量
和矩阵
张量与矩阵的模式乘积的结果是一个这样子
的一个张量,它的具体运算如下
基于这个定义,高维世界跟低维世界就可以愉快的”玩耍“了。
张量的范数
给定一个集合,我们适当的定义一些概念在这个集合上,就”堂而皇之“的可以叫它为XX空间了。没有距离概念的叫拓扑空间,引入内积再由内积诱导范数从而可以定义一个距离空间。为了之后更愉快的探索一些张量的其他问题,如各种张量分解(CP,Tucker,TT),张量填充(tensor completion,本质上是求解一个核范数极小的优化问题)等等,我们需要引入范数这个强有力的工具。
张量空间里内积定义:
张量的范数由内积诱导
秩一张量(rank-one tensor)
这里先给出秩一张量的概念,因为后面的张量分解(tensor decomposition)需要反复提及这个秩概念。(张量的秩留待后续介绍)
秩一张量如同量子力学里的量子一样鬼魅。它鬼魅在:张量一般的低秩(秩大于1)逼近有可能并不存在【1】,即便存在也有可能找不到(优化手段找不到全局最优)。但秩一逼近却存在,并且使用一般的手段(high order power method)就能找到最优解。
参考文献
【1】Kolda, Tamara G., and Brett W. Bader. "Tensor decompositions and applications." SIAM review 51.3 (2009): 455-500.
原文链接:https://blog.csdn.net/weixin_30356433/article/details/112701061