try ai
科普
编辑
分享
反馈
  • 张量列

张量列

SciencePedia玻尔百科
核心要点
  • 张量列 (TT) 分解将一个庞大的高维张量表示为一系列更小的、相互连接的核心组成的链,从而克服了维度灾难。
  • TT 秩决定了压缩效率,它衡量了张量维度不同划分之间的相关性或纠缠。
  • TT-SVD 算法通过顺序应用奇异值分解,为构建给定张量的张量列表示提供了一种准最优方法。
  • TT 格式通过直接对压缩表示进行操作,实现了求解偏微分方程、模拟量子系统和分析大型数据集的高效计算。

引言

从量子物理到数据科学,科学家和工程师们经常遇到异常复杂的问题。一个主要障碍是“维度灾难”,即描述一个系统所需的数据量随其组元数量呈指数级增长,即使是最强大的超级计算机也很快不堪重负。当一个拥有数十个粒子的量子系统或一个包含数百个变量的数据集,仅仅是存储问题本身都变得不可能时,我们该如何进行分析呢?答案在于揭示并利用这些复杂对象内部隐藏的结构。

本文介绍张量列(TT)分解,这是一种强大的数学技术,它通过将海量张量重新构想为由相互连接的较小部分组成的简单链状结构,而非单块数据,从而驯服了这种指数级的复杂性。它为高维数据的压缩和计算提供了一个革命性的框架。本次探索分为两个关键部分。首先,在“原理与机制”中,我们将深入探讨张量列的剖析,理解其结构揭示了数据的哪些信息,并学习优雅的 TT-SVD 算法如何构建这种表示。随后,“应用与跨学科联系”将展示该框架如何应用于解决量子力学、微分方程和机器学习中的艰巨问题,将看似不可能的任务转变为计算上可行的任务。

原理与机制

想象一下,你试图描述一个复杂系统的状态。不是像单个台球那样简单的东西,而是具有许多相互作用部分的东西——比如说,一条由 50 个微小的量子磁体组成的链,每个磁体可以处于 50 种不同状态中的一种。要指定这个系统的完整状态,你需要为所有磁体的每一种可能构型都写下一个数字。总构型数为 50×50×⋯×5050 \times 50 \times \dots \times 5050×50×⋯×50(50 个 50 相乘),也就是 505050^{50}5050。这个数字大得惊人,远超已知宇宙中的原子数量。如果你试图将这些信息存储在计算机上,即使每个数字只用一个字节,你需要的存储空间也比地球上所有硬盘的总和还要多。这种指数级的复杂性爆炸就是科学家所说的​​维度灾难​​。这是一个根本性的障碍,似乎使直接模拟或分析大型高维系统成为一个不可能实现的梦想。

我们如何才能取得进展呢?秘诀在于一个优美而深刻的认识:大多数物理系统的状态以及许多复杂的数据集,并不仅仅是数字的随机集合。它们拥有潜在的结构。它们是高度组织化的,而这种组织性正是我们得救的关键。张量列(TT)分解是一种巧妙利用这种结构的数学工具,它驯服了指数级的猛兽,将一个不可能的问题变成了一个可管理的问题。

张量列的剖析

张量列分解的核心思想是,将一个高维数组——即​​张量​​——重新想象为一个由相互连接的较小部分组成的链,而不是一个单块数据。可以把它想象成一列火车,每节车厢本身就是一个小张量,并与其相邻车厢相连。

让我们考虑一个三维张量 T\mathcal{T}T,其元素表示为 Tijk\mathcal{T}_{ijk}Tijk​。TT 格式并不直接存储每个 Tijk\mathcal{T}_{ijk}Tijk​ 的值,而是将该元素表示为三个矩阵的乘积,每个索引对应一个矩阵:

Tijk=G1[i]G2[j]G3[k]\mathcal{T}_{ijk} = \mathbf{G}_1[i] \mathbf{G}_2[j] \mathbf{G}_3[k]Tijk​=G1​[i]G2​[j]G3​[k]

这看起来很简单,但细节至关重要。在这里,G1\mathbf{G}_1G1​、G2\mathbf{G}_2G2​ 和 G3\mathbf{G}_3G3​ 是“核心”张量,也就是我们火车的车厢。对于物理指标 i,j,ki, j, ki,j,k 的每个特定值,这些核心都会提供一个矩阵。为了使乘积有意义并得到一个单一的数字(标量),这些矩阵的“内部”维度必须完美匹配。G1[i]\mathbf{G}_1[i]G1​[i] 是一个行向量(一个 1×r11 \times r_11×r1​ 矩阵),G2[j]\mathbf{G}_2[j]G2​[j] 是一个完整的矩阵(大小为 r1×r2r_1 \times r_2r1​×r2​),而 G3[k]\mathbf{G}_3[k]G3​[k] 是一个列向量(一个 r2×1r_2 \times 1r2​×1 矩阵)。数字 r1r_1r1​ 和 r2r_2r2​ 是 ​​TT 秩​​,或称​​键维度​​;它们定义了火车车厢之间连接的“大小”。按照惯例,张量列最开始和最末尾的秩 r0r_0r0​ 和 rdr_drd​ 总是 1,以确保最终乘积是一个 1×11 \times 11×1 的矩阵——即一个单一的数字。

让我们看看这是如何运作的。假设我们有一个以 TT 格式给出的 2×3×22 \times 3 \times 22×3×2 张量,其秩为 (2,2)(2,2)(2,2),我们想找到元素 T2,3,1\mathcal{T}_{2,3,1}T2,3,1​。公式告诉我们,从第一个核心中取出第 2 个向量,乘以第二个核心中的第 3 个矩阵,然后将结果乘以第三个核心中的第 1 个向量。这一连串的矩阵乘法是一个简单而快速的操作,它能按需给出该特定张量元素的值。我们用一个计算它的过程,取代了存储该元素的需要。

这个思想可以推广到任意数量的维度 ddd。一个元素 T(i1,i2,…,id)\mathcal{T}(i_1, i_2, \dots, i_d)T(i1​,i2​,…,id​) 由一长串矩阵乘法给出:

T(i1,i2,…,id)=G1[i1]G2[i2]⋯Gd[id]\mathcal{T}(i_1, i_2, \dots, i_d) = \mathbf{G}_1[i_1] \mathbf{G}_2[i_2] \cdots \mathbf{G}_d[i_d]T(i1​,i2​,…,id​)=G1​[i1​]G2​[i2​]⋯Gd​[id​]

其中 Gk[ik]\mathbf{G}_k[i_k]Gk​[ik​] 是一个 rk−1×rkr_{k-1} \times r_krk−1​×rk​ 矩阵。对于给定的维度 kkk,所有这些矩阵的集合构成了核心张量 Gk\mathcal{G}_kGk​,其形状为 rk−1×nk×rkr_{k-1} \times n_k \times r_krk−1​×nk​×rk​,其中 nkn_knk​ 是第 kkk 个维度的大小。

压缩的秘密:秩与相关性

为什么这是一个好主意?魔力在于秩。如果 TT 秩 rkr_krk​ 很小,那么我们需要存储的总数据量——即构成所有核心的数字——可能远小于原始张量的大小。TT 格式的存储成本不是指数级的 O(nd)O(n^d)O(nd),而是按 O(d⋅n⋅r2)O(d \cdot n \cdot r^2)O(d⋅n⋅r2) 增长,其中 rrr 是最大秩。这是从指数级增长到随维度 ddd 线性增长的飞跃——这是一个打破维度灾难的巨大差异。

对于我们之前想象的 50 个磁体的系统,如果我们能用一个 TT 秩为 10 的张量列来表示其状态,那么存储量将从不可能的 505050^{50}5050 字节下降到区区几兆字节——这是你可以存储在手机上的大小。这不仅仅是一个理论上的幻想;对于物理学中的许多系统和科学计算中遇到的许多函数,良好近似所需的秩确实小得惊人。

但是这些秩是由什么决定的呢?它们在物理上意味着什么?TT 秩 rkr_krk​ 有一个优美而深刻的解释。想象一下,将你的 ddd 维张量“展开”或“扁平化”成一个巨大的二维矩阵。你可以通过将前 kkk 个维度组合成行,将剩余的 d−kd-kd−k 个维度组合成列来做到这一点。第 kkk 个 TT 秩 rkr_krk​,恰好是这个巨大矩阵的数学​​秩​​。

在线性代数中,矩阵的秩衡量其“复杂性”或其包含的线性无关行或列的数量。在我们的上下文中,这个秩衡量了前 kkk 个变量与其余变量之间的相关性或“纠缠”量。如果一个系统主要具有局域相互作用(就像我们的磁体链,其中每个磁体主要与其直接邻居相互作用),那么左侧的一块磁体与右侧的一块磁体之间的相关性是有限的。这意味着相应的展开矩阵将具有低秩。张量列结构非常适合捕捉这种有限的长程相关性特性。这就是为什么它起源于物理学中,作为一维量子系统的​​矩阵乘积态 (MPS)​​ 表示,并在此领域取得了惊人的成功。

寻找张量列:TT-SVD 算法

所以,一个低秩的 TT 表示是一种极其紧凑和高效的方式来描述一个结构化的张量。但我们如何找到它呢?给定一个庞大、稠密的张量,我们如何发现其底层的张量列结构?

答案是一种优雅而强大的算法,称为​​张量列奇异值分解 (TT-SVD)​​。它通过一个顺序过程逐个构建核心,就像解压缩文件一样。其思想如下:

  1. ​​第一个核心:​​ 我们从完整的张量开始。我们通过将第一个维度与所有其他维度分开,将其展开成一个矩阵。然后,我们对这个矩阵应用线性代数的利器——​​奇异值分解 (SVD)​​。SVD 将矩阵分解为三个部分,UΣV⊤U \Sigma V^\topUΣV⊤。UUU 部分为我们提供了第一个核心 G1\mathcal{G}_1G1​。SVD 还告诉我们用较低的秩来近似此矩阵的最佳方法。我们对其进行截断,只保留最重要的信息,我们造成的误差由我们丢弃的奇异值精确控制。

  2. ​​传播并重复:​​ SVD 的其余部分 ΣV⊤\Sigma V^\topΣV⊤ 在数学上是张量的“剩余部分”。我们将这个剩余部分重塑回一个张量(现在少了一个维度),并重复这个过程:通过分离下一个维度将其展开,应用 SVD,提取第二个核心 G2\mathcal{G}_2G2​,然后将新的剩余部分传递下去。

  3. ​​终点站:​​ 这个过程持续进行,一次提取一个核心,直到我们只剩下最后一块,它成为最后一个核心 Gd\mathcal{G}_dGd​。

TT-SVD 的美妙之处在于其准最优性。在每一步,SVD 都确保我们正在进行尽可能最佳的低秩近似。如果原始张量已经具有一个精确的低秩 TT 结构,只要我们允许足够的秩,TT-SVD 算法将完美地找到它,误差为零。最终近似的总误差由我们在每个 SVD 截断步骤中引入的小误差之和整齐地界定。

张量列上的生活:压缩通道中的计算

张量列格式不仅用于高效存储;它是一个功能齐全的计算框架。许多基本操作可以直接在压缩表示上执行,而无需重建那个庞大无比的完整张量。

例如,计算一个张量的整体大小,用其​​弗罗贝尼乌斯范数​​(Frobenius norm,所有元素平方和的平方根)来衡量,似乎需要对所有 ndn^dnd 个元素求和。然而,在 TT 格式中,这可以通过对核心进行巧妙的“扫描”来完成。我们可以从张量列的一端开始,逐个收缩核心,将信息累积在一个永远不会超过 r×rr \times rr×r 的小型中间矩阵中。这次扫描的最终结果,其成本仅为完整计算的一小部分,却能给我们精确的范数。对于 TT 张量的加法、与矩阵的乘法,甚至求解大型线性方程组,都存在类似的高效算法——所有这些都可以在“压缩通道”中完成。

一点提醒:顺序至关重要

在我们结束旅程之前,还有一个最后但至关重要的微妙之处。张量列,顾名思义,是一个一维链。这意味着我们必须首先为张量的维度确定一个顺序。哪个维度是 i1i_1i1​?哪个是 i2i_2i2​?事实证明,这个选择并非随意的;它可以极大地影响获得良好近似所需的秩。

指导原则与使 TT 生效的原则相同:相关性。为了保持 TT 秩较低,我们必须对维度进行排序,使得强相关的变量在张量列中彼此相邻。通过将相关变量分组在一起,我们确保了连续维度块之间的“切割”切断的是最弱的可能连接,从而导致低秩展开。对于物理问题,这可能意味着按顺序排列空间坐标。对于机器学习问题,这可能意味着进行初步分析以找出哪些特征最相关,并将它们并排排列。

最后这一点揭示了高级科学计算的真正精神。张量列不是一个神奇的黑箱。它是一个强大的透镜,但要充分发挥其潜力,需要将数学机制与对问题固有结构的真正理解相结合。通过这样做,我们可以窥探曾经完全无法触及的高维世界,将维度灾难转变为结构化表示的福祉。

应用与跨学科联系

在理解了张量列的原理——即将一个庞大、高维的对象重塑为一个由更小张量组成的简单一维链条的思想——之后,我们现在可以踏上征程,见证其在实践中的威力。拥有一个优雅的数学思想是一回事,而让它斩断现代科学与工程中的戈尔迪之结则是另一回事。我们会发现,这条“链”不仅仅是一种巧妙的压缩方案;它是一个新的透镜,通过它,我们可以洞察到一些最复杂问题中隐藏的简单性,从电子的量子之舞到天气系统的宏大芭蕾。

结构之美:从简单函数到普适算子

让我们从最简单的一条线索开始。如果我们的高维函数在某种意义上已经“很简单”了呢?想象一个完全可分离的函数,意味着它可以写成一维函数的乘积,比如 u(x1,x2,…,xd)=f1(x1)f2(x2)⋯fd(xd)u(x_1, x_2, \dots, x_d) = f_1(x_1) f_2(x_2) \cdots f_d(x_d)u(x1​,x2​,…,xd​)=f1​(x1​)f2​(x2​)⋯fd​(xd​)。这是一个简单高维对象的柏拉图式理想。当我们将此转化为张量列的语言时,我们发现了一些美妙之处:它的表示是一条具有最弱可能连接的链。它所有的 TT 秩都恰好为 1。这对于任何可分离函数都成立,包括那些在物理学和统计学中频繁出现的基本函数,如多维指数函数。这告诉我们,张量列表示能够正确识别并捕捉固有的简单性。

但这只是热身。真正的考验来自那些本质上不可分离的对象。考虑拉普拉斯算子 Δ\DeltaΔ,它是无数物理定律的数学核心,从引力、静电学到扩散和薛定谔方程。它描述了一个点上的值如何与其直接邻居相关联。这种局域的相互关联性似乎正是可分离性的对立面。人们可能会担心,将其表示为张量列算子——专家们称之为矩阵乘积算子(MPO)——会是一条由粗大、高秩链接组成的 monstruous 的链。

现实是一个小小的奇迹。在任意维度 ddd 下,离散拉普拉斯算子可以被一个最大秩仅为 2 的张量列精确表示。想一想这意味着什么:无论我们是在描述一个二维板上的热流,还是一个 100 维系统的量子场,描述局域相互作用的基本算子都具有同样微不足道的 TT 秩 2。复杂性并不会随着维度的数量而增长!TT 核心的结构可以直观地理解为链上每个链接处的一个微型两状态机:一个状态说“我仍在传递单位算子”,而另一个状态说“我现在已经应用了导数算子”。这种卓越的、与维度无关的紧凑性是张量列在求解偏微分方程(PDEs)方面如此有效的基石之一。

求解宇宙的方程

有了紧凑地写下基本算子的方法,我们现在可以着眼于求解那些支配宇宙的方程了。

探寻万物之形:求解偏微分方程

许多自然法则都以偏微分方程的形式出现,例如泊松方程 −Δu=f-\Delta u = f−Δu=f,它将势 uuu 与其源 fff 联系起来。利用我们的张量列工具包,我们可以问:如果我们知道源的结构,我们能对解的结构说些什么?结果表明,两者之间存在一种非常直接的关系。如果源项 fff 可以被描述为 rrr 个简单的、可分离的函数的和(这使其具有所谓的典范秩 rrr),那么解 uuu 就可以被一个秩至多为 rrr 的张量列高效地捕捉。这意味着我们解的复杂性不是由模拟网格中惊人数量的点决定的,而是由现象背后驱动力的内在复杂性决定的。这为我们何时可以期望基于 TT 的求解器成功提供了一个强大的指导原则。

链中的量子世界

量子领域是张量列真正感到宾至如归的地方。量子力学的核心挑战是为多相互作用粒子系统求解薛定谔方程。寻找“基态”,即能量最低的状态,是一个天文数字大小的特征值问题。在这里,张量列找到了其历史上的搭档——密度矩阵重整化群(DMRG)算法,这是一种如此强大的方法,以至于它已成为研究量子系统最重要的工具之一。

那么观察一个量子系统随时间演化呢?这是量子动力学的领域。一个常见的误解是,像 TT 这样的压缩技术必须以某种方式丢弃问题中最具量子特性的部分:纠缠。事实恰恰相反。一个秩大于 1 的张量列本质上就是一个纠缠态。链条两部分之间的连接秩,比如说 rkr_krk​,是前 kkk 个粒子与其余粒子之间纠缠量的直接度量。TT 格式是一种为表达纠缠而构建的语言,模拟量子动力学的效率直接取决于系统随时间变得多纠缠,以及其哈密顿算符(能量算子)在 TT 格式中的复杂程度。

从物理到数据:驾驭高维信息

将结构表示为简单链条的力量远远超出了物理学的传统界限。近年来,这些思想已经彻底改变了我们对高维数据的看法。

透过噪声看信号:数据同化

考虑一下天气预报的挑战。气象学家使用集合卡尔曼滤波器(EnKF)来不断地将物理模型的预测与稀疏、嘈杂的真实世界观测数据融合。一个关键的瓶颈来自于使用有限数量的模型运行(即“集合”)。如果运行次数太少,随机的统计波动会产生“伪相关”——例如,模型可能会凭空捏造出巴黎的温度与东京的风速之间存在荒谬的联系。这些伪相关会破坏预报。

张量列提供了一个绝妙的解决方案。通过假设系统的真实统计协方差矩阵具有低秩 TT 结构,我们可以过滤我们嘈杂的、秩亏的样本协方差。投影到 TT 流形上的操作就像一个强大的正则化器,它保留了符合链结构的强长程相关性,同时消除了那些不符合的、嘈杂的伪相关。该方法为在地球上一些最复杂的数据同化系统中抑制噪声和改进预测提供了一种有物理动机的方法。

补全图像:从 Netflix 到科学数据

你是否曾好奇,流媒体服务是如何仅凭你屈指可数的几次评分就能向你推荐一部电影,似乎洞悉了你的品味?这是一个“矩阵补全”问题。张量补全是它的“大哥”。想象你有一个海量的科学数据集——比如说,在不同时间、不同地点、不同条件下对一个生物过程的测量——但你只对所有可能点中的一小部分进行了测量。你能填补这些空白吗?

如果你可以假设底层数据拥有一个简单的结构,答案是肯定的。低 TT 秩的假设正是这样一种结构性假说。问题于是变成了一个寻找与你已观察到的少数数据点相符的最简单(最低秩)张量链的问题。值得注意的是,一个坚实的数学理论支撑着这个过程,它告诉我们需要多少样本才能保证成功重建,这个数量取决于真实底层张量的秩和“非相干性”(衡量信息“分散”程度的指标)。这对实验设计、数据分析和机器学习具有深远的影响。

利用 TT 结构使计算易于处理的同样原理,也让我们能够处理巨大的优化问题。例如,在许多数据科学和机器学习任务中,需要计算二阶导数的海森矩阵。对于高维问题,这个矩阵太大,甚至无法写下来。然而,如果问题具有正确的结构,我们可以计算这个海森矩阵对一个向量的作用——这是许多优化算法中的关键一步——而无需构建矩阵本身,只需在小巧、可管理的 TT 核心上执行所有计算即可。

在所有这些例子中,一个共同的主题浮现出来。张量列分解提供的不仅仅是一种压缩手段。它提供了一种描述复杂、高维对象基本结构的语言。通过揭示隐藏其中的简单“链状”性质,它将问题从大得不可能转变为计算上可行,将不同领域统一在一个单一、优雅而强大的思想之下。