• 学习笔记258—张量的背景


    张量的背景

    张量,是向量与矩阵的推广(这里与黎曼几何里的张量有区别)。向量可以看做是一阶张量,矩阵是二阶张量。张量的阶数某种意义上代表着数据的“丰富程度”,一个矩阵代表了二维信息,一个三阶张量往往蕴含着三维的空间信息。


    为什么要用张量这种新的数学工具?矩阵计算难道还不够用吗?在回答这两个问题之前,我们先回顾下当前计算机处理问题的方式。那就是,数据往往以矩阵的方式出现。比如一张用户-商品表可以表征为用户-商品矩阵。一张灰度图也可以用矩阵表示,信息在计算机里的存储以及表示方式都是矩阵的形式,后续的建模跟计算毫无疑问都是基于矩阵。换而言之,计算机处理数学问题基本上是在数值代数(矩阵计算,方程的数值解)的框架下进行的。但是,有的时候我们获取的数据并不是天然的就具有“矩阵”这类形式,比如,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

  • 相关阅读:
    树链剖分总结
    主席树总结
    BZOJ1053:反素数(数学)
    CH3101 阶乘分解
    2018-2019 ACM-ICPC ECfinal I. Misunderstood … Missing
    洛谷P3201 [HNOI2009]梦幻布丁(链表 + 启发式合并)
    Codeforces Round #552 (Div. 3) 题解
    线段树合并 总结
    生成器
    Python中input()和raw_input()的区别
  • 原文地址:https://www.cnblogs.com/hechangchun/p/16307428.html
Copyright © 2020-2023  润新知