news 2026/10/22 5:33:35

张量网络入门:从SVD到MPS/PEPS/MERA的量子机器学习实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
张量网络入门:从SVD到MPS/PEPS/MERA的量子机器学习实战

研究张量这些年,我一度觉得SVD、CP分解这些工具已经够用了,直到某次模拟项目X里要处理一个50比特的量子态。名字好听,但50比特意味着2^50个复数振幅,用双精度存储就是18 PB——别说内存,磁盘都放不下。那一刻我意识到,量子机器学习要想真正落地,躲不开一个东西:张量网络。

这一章把我这几年折腾张量网络的经验整体捋一遍:为什么它和量子机器学习绑得这么死、三种主流结构该怎么选、纠缠和键维怎么控制误差、以及它到底能用在哪些真实任务上。适合已经看过前几章、熟悉张量基本运算但还没系统接触张量网络的读者。看完这篇文章,你应该能回答一个问题:手头一个量子学习任务,该用哪种网络、键维开多大、怎么判断结果靠不靠谱。

1. 为什么量子机器学习绕不开张量网络

1.1 指数维度的墙:量子态不是普通数据

前面章节我们处理过图像、文本、评分矩阵,这些数据再大,维度也是显式的、可控的。量子态完全不是一回事。一个n比特的量子系统,基态张成2^n维希尔伯特空间,一个任意量子态就是这2^n个复数振幅的集合。

我算过一笔账:30比特是10亿个振幅,用complex128存储需要16 GB;40比特直接到16 TB;50比特就是18 PB。就算未来存储技术再翻几番,这条路也走不通。而量子计算真正有价值的场景,恰恰都落在30比特以上的区间。

更麻烦的是,量子机器学习过程里,这个指数维度会出现在各个层面:量子态制备、量子电路演化、测量结果的概率分布、特征映射后的数据点。传统的"把向量塞进矩阵"的思路,在这里从工具层面就失效了。

1.2 张量网络是量子态的"结构化压缩"

幸运的是,物理世界不会随便扔给你一个任意量子态。量子比特之间通常只存在局域的相互作用,由局域哈密顿量演化和制备出来的态,只占据整个希尔伯特空间里一个非常小的流形。这个流形上的态,纠缠结构是受限的。

张量网络做的事情,就是把一个指数维度的张量,拆成一组小张量的乘积和收缩。每个小张量只描述"局部"的结构,全局的关联靠张量之间的公共指标(边)来传递。这很像MP3之于音频:不是逐样本记录波形,而是用少量参数描述声学结构;也像一张JPEG图之于原始位图:视觉效果接近,体积小几个数量级。

一个n比特的MPS(矩阵乘积态)只有O(n d χ²)个参数,其中d是局部维度(比特为2),χ是键维。n=100时,2^100个振幅被压到约20万个参数。省下来的不是一点点,是天文数字。机器学习里我们总说"归纳偏置",张量网络的归纳偏置非常明确:低纠缠、局域关联、沿图结构传播。

1.3 前几章的分解工具在这里只是起点

如果你认真学过前面的SVD、QR分解,会发现张量网络没有引入全新的数学,它只是把SVD用在了"图结构"这个舞台上。

MPS的构造过程就是不断对高维张量做SVD:把第一个物理指标分离出来,剩下的大张量按键维截断,再对下一个指标重复。经过n-1次SVD,一个大张量变成一串三阶张量的乘积。PEPS、MERA只是改变了SVD的切法,把"线性链"换成"平面网格"或"层级树"。理解了这一层,张量网络的很多操作(规范化、截断、收缩)你都能从SVD的性质推导出来。

工具没变,变的是组装方式。这也是为什么我建议读者别急着学一堆新算法,先把SVD的几何直觉吃透:奇异值谱就是纠缠谱,奇异值衰减速度就是可压缩性的度量,截断掉的小奇异值就是你要付出的误差。

2. 三种核心张量网络结构的选型逻辑:MPS、PEPS、MERA

2.1 MPS(矩阵乘积态):一维系统的默认答案

MPS的数学形式很优雅。对n个张量节点A_1, A_2, ..., A_n,每个节点A_i有三个指标:左键维指标α_{i-1}、右键维指标α_i、物理指标s_i。整个量子态写作:

|ψ⟩ = Σ_{s_1...s_n} Σ_{α_1...α_{n-1}} A_1^{s_1}[α_0, α_1] A_2^{s_2}[α_1, α_2] ... A_n^{s_n}[α_{n-1}, α_n] |s_1 s_2 ... s_n⟩

两端边界维度取1,中间节点形状是χ×d×χ。键维χ直接决定了这个网络能表达多少纠缠——严格说,是每个二分切口上最多能保留多少个Schmidt系数。

MPS最著名的算法是DMRG(密度矩阵重正化群)的现代解释:把MPS当作变分拟设,通过逐点优化每个A_i来逼近基态能量。这个过程交替进行"左扫""右扫",每扫一次相当于一次坐标下降法的高效版本,复杂度O(n χ³ d³)量级。

选型判断:只要你的问题本质上是一维链式结构,或者二维数据可以被蛇形遍历映射到一维,MPS就是首选。实现简单、数值稳定、可控性强。我做过不少二维图像分类实验,把像素行优先展成一维后用MPS,效果虽然比不过同规模的卷积网络,但作为量子启发的基线模型非常有价值。

2.2 PEPS:二维系统的代价与收益

PEPS把MPS的链式拓扑换成二维网格。每个节点是五阶张量:一个物理指标加上上下左右四个键维指标。二维面积律纠缠(纠缠熵随系统边界线性增长)天然适配PEPS,理论上比MPS更贴近真实的二维量子系统。

代价立刻来了:MPS可以精确规范化、精确算期望值,PEPS不行。它的收缩是个#P-难问题,实际操作中要用边界MPS方法去近似收缩——把PEPS的二维结构逐行"投影"成一条MPS链,再做传统的一维收缩。这一步的复杂度大致是O(n χ_{PEPS}^4 χ_{boundary}^2),键维上去之后非常肉疼。

我在实际项目里对PEPS的感受是:它适合图结构数据、网格数据这类真正二维关联强的场景。如果你只是拿网格像素强行用PEPS,收益大概率抵不过收缩开销。记住PEPS的绰号——"高性能也是高维护"。

结构节点秩键维成本适用系统收缩复杂度
MPS3O(χ²)一维链、准一维系统可精确收缩
PEPS5O(χ⁴)二维格点系统近似收缩,#P-难
MERA3-4(分层)O(χ³)-O(χ⁴)临界系统、标度不变系统逐层收缩,成本高于MPS

2.3 MERA(多层纠缠重正化):层次结构是它的王牌

MERA的名字很长,思路其实一句话:逐层"去纠缠"。每一层由两类等距张量组成——纠缠消除器(disentangler)负责消除小尺度纠缠,等距投影(isometry)负责粗粒化,把尺度不断放大。最终形成的网络是树状+横向缠结。

为什么MERA值得单独留一个位置?因为它能表示量子临界系统,这类系统的纠缠熵不是常数而是随系统尺寸对数增长(对数修正面积律)。MPS在临界点需要χ随系统尺寸多项式增长,MERA则只需要很小的χ就能覆盖多尺度结构。

量子机器学习对MERA的兴趣主要来自它的层级结构:先局部后全局的抽象过程,和卷积神经网络的特征金字塔非常像。一个想法是把MERA当作一种"物理先验的神经网络架构",用分层纠缠来拟合具有尺度不变性的数据分布。代价是MERA的张量数量多、收缩路径复杂,优化起来比MPS慢一个量级。

我的建议是:数据具有明显的层次结构(比如分子表征、自然语言句法树、多尺度图像),值得试MERA;数据只是普通高维向量,别凑这个热闹,MPS加一个非线性映射往往更划算。

3. 纠缠结构与键维:决定网络成败的两个关键开关

3.1 Schmidt分解:张量网络的元操作

想要理解键维和误差,必须回到Schmidt分解。把一个量子态按某个二分切口分成A、B两部分,态矢可以写成:

|ψ⟩ = Σ_{k=1}^{r} λ_k |φ_k⟩_A ⊗ |χ_k⟩_B

这里λ_k是非负的Schmidt系数,r是Schmidt秩。r=1的态是可分态,没有纠缠;r越大纠缠越强。注意,r正是这条切口上MPS键维的最小值。切一刀,等于做一次SVD,键维就是保留的奇异值个数。

所以MPS本质上是对一个量子态在所有分界线上同时做SVD,并要求每条分界线的奇异值个数都受同一个χ约束。MPS表达能力的天花板,被最坏切口的Schmidt秩卡死。做DMRG时如果发现某个键维始终不收敛,别急着加χ,先看是不是这条切口的纠缠谱太胖。

3.2 键维χ:精度旋钮和成本旋钮是同一个旋钮

键维χ决定了两件事:能描述的纠缠上限,以及所有运算的复杂度。MPS的存储是O(nχ²d),而单次张量收缩往往是O(χ³d³):χ从100加到200,存储涨4倍,运算涨8倍。这不是线性代价,是幂次爆炸。

但你不能为了省钱就把χ开得很小。物理量(比如能量、纠缠熵、关联函数)随χ增大单调收敛,而收敛速度完全取决于Schmidt谱的衰减。谱衰减快,χ=50就够;谱衰减慢,χ=5000也不一定收敛。实践中没有捷径,只能做χ扫描:把χ从32、64、128一路跑上去,看目标量的变化趋势。

有一种比能量本身更灵敏的判据:截断误差。每次SVD截断时,被丢掉的光费舍尔权重之和是ε = Σ_{k>χ} λ_k²。如果你每一步的ε都在10⁻⁸量级以下,结果基本可信;如果ε徘徊在10⁻³量级,说明这个χ远没吃饱,所有下游结论都要打个问号。我一向的做法是:记录每一步截断误差的最大值,并把它作为汇报结果的必要指标。不报截断误差的张量网络结果,就像不带置信区间的回归系数,参考价值有限。

3.3 面积律与体积律:先判断你的问题"配不配"用张量网络

张量网络不是万能的,它有明确的适用边界。物理里有一个基本分类:局域哈密顿量的基态满足面积律——纠缠熵正比于区域的边界面积;而随机量子态满足体积律——纠缠熵正比于区域的体积。一维链上,MPS能高效表示的是纠缠熵有界(满足面积律)的态;如果纠缠熵随系统尺寸线性增长,MPS需要的χ按指数增长,直接宣告失败。

量子机器学习里这个诊断同样重要。你的数据经过特征映射变成量子态之后,如果纠缠结构是面积律的,张量网络就高效;如果是体积律的(接近随机态),张量网络就完全失效。

我经常在项目开始前做一个"纠缠预检":训练一个小的MPS,看拟合测试集时需要的χ和截断误差。χ一直焦虑地上涨、误差降不下来,基本可以断定数据映射后的纠缠太强,应该换特征映射方式或者换模型。这个预检不需要多少时间,却能避免后面几周的无效劳动。

4. 张量网络在量子机器学习中的三个实际落点

4.1 量子态层析:用MPS做大规模量子态的"压缩感知重建"

量子机器学习要先知道系统是什么态,而量子态层析是出了名的指数级困难:完整层析需要O(4^n)次测量。但如果我们假设目标态可以用低键维MPS近似表示,问题就变成:用多项式多次的局域测量,去反演MPS参数。

具体做法大概是这样:测量一组局域泡利算符的期望值(或者做随机化测量得到经典阴影),然后构造一个关于MPS参数的似然函数,用梯度下降直接优化。因为MPS参数规模是多项式级的,优化过程在经典计算机上就能跑。最近几年这个方向进展很快,中等规模量子处理器上做部分层析已经不算新闻。

这里有个容易踩的坑:MPS重建容易收敛到局部最优,尤其是测量数目不足的时候。我的经验是,初始化非常关键。先用MPS对测量的频率直方图做一次"粗糙拟合"当初始点,再开始整体优化,成功率会高不少。

4.2 量子电路模拟:张量收缩比矩阵乘法更聪明

模拟量子电路的朴素方法是把每一层酉矩阵作用在态矢量上,本质是不断做2^n维矩阵乘法。张量网络提供了另一条路:把整个电路展开成一张大张量网络,每个门是一个小张量,量子比特连线是收缩指标,然后用收缩算法一次性算完。

这条路线的威力在于:对于纠缠增长受限的电路(浅层电路、低连通电路、带噪声电路),网络里可以压缩的冗余非常多。收缩复杂度与电路图的分割宽度(treewidth)紧密相关,而真实物理电路图通常具有低分割宽度特征。这也是为什么"量子计算优越性"的边界总在不断被经典模拟追赶——很多声称优越性的随机电路采样实验,最终都能被改进的张量收缩算法在经典计算机上逼近甚至超越。

实操里要注意收缩顺序。同一张网络,先收缩哪个节点、后收缩哪个节点,复杂度可以差几十倍。我个人的习惯是先用工具自动规划收缩路径,再手动检查关键节点;当网络里有大键维卡脖子时,考虑用"切片法"把一条边拆开求和,用并行把指数压力均摊到多核上。

4.3 张量网络本身就是可训练的机器学习模型

这是我最看好的落点:不把张量网络当作数值工具,而是直接当作模型骨架。MPS可以作为分类器:把输入数据映射成MPS,与标签张量做内积,输出类别概率。MPO(矩阵乘积算符)则可以把输入特征向量写成矩阵链,做非线性特征提取。

典型的训练框架是这样:把输入向量局部编码到一系列小张量上,与一个固定结构MPS(参数可训练)做收缩,得到一个标量输出或一组概率分布,再用交叉熵做反向传播。因为MPS的参数对输出是光滑的,自动微分完全走得通,训练过程和一个几层神经网络没有本质区别。

有一种特别有意思的形式叫张量网络生成模型(Born machine):训练一个MPS,使它的|振幅|²分布逼近数据分布,然后从MPS顺序采样生成新样本。这个模型天然满足归一化条件,采样过程就是沿着链做条件概率计算,风格上很像自回归生成模型。我拿它做小规模分子构象采样和图像块生成,稳定性出乎意料的好,尤其适合数据量小的场景——张量网络的参数少,过拟合风险天然低。

5. 从理论到代码:实操里的数值坑与收敛判断

5.1 收缩顺序:同一个网络能算出两种人生

张量收缩的核心操作是"合并两个张量的公共指标再SVD分解回去"。这个操作本身不难,但在一张复杂网络里,收缩顺序决定了中间张量的大小。

举个小例子:一条四节点的MPO链和四节点MPS做整体内积。按从左到右的顺序,每一步中间的临时张量维度最多是χ²d²,可控;如果先收缩中间两个节点,临时张量维度直接变χ³d³,计算量立刻上一个台阶。企业里我们经常遇到"代码差不多,就是跑得慢"的反馈,十有八九是收缩顺序不对。

我的工程建议是:写代码时把"收缩"封装成独立函数,输入输出都打印张量形状;一旦运算卡顿,先看是哪个张量形状爆炸了,再调顺序。还有一个省力原则——先收缩键维小的边,把物理指标尽可能晚地暴露出来。

5.2 规范化与规范自由度:MPS的"礼仪"

MPS有规范自由度:在任意键维上插入一个可逆矩阵及其逆矩阵,物理态不变。利用这个自由度可以让MPS进入规范形式——左规范或右规范,中间某个节点是"规范中心"。为什么要费劲做这件事?三个理由:

第一,数值稳定性。不做规范化的MPS经过多轮运算,张量元素的量级会漂移,出现NaN或者Inf是家常便饭。规范化之后,所有中间张量都是"等距的",量级被锁死。

第二,截断的正确性。SVD截断只在规范中心附近做才是最优的。在非规范位置直接截断,丢弃的奇异值并不是真实的Schmidt系数,误差会以无法预估的方式扩散。

第三,期望值计算的局部性。用规范形式的MPS,算任意局域算符期望值时,不需要重建整个态矢量,只需要把规范中心和该局域算符之间的一段收缩出来即可。这个"局部性"在DMRG扫描中是性能的核心。

5.3 收敛判据:不只是看损失函数

很多刚上手张量网络的读者会盯着"训练损失"看,但物理量收敛才更有说服力。我建议固守一套检查清单:

第一,观察Schmidt谱的衰减。在最大熵的切口上画出奇异值分布,如果它从10⁻¹到10⁻⁸平滑下降,说明态的低纠缠假设成立;如果在某个值上突然"悬崖式"截断后再下降,说明χ开小了。

第二,做χ-收敛扫描。至少跑χ=32、64、128三档,画出目标量(能量或损失)对χ的曲线,并做外推估计。如果外推得到的极限值和当前χ下结果差得远,就得继续加大χ,没有商量余地。

第三,报告截断误差。最终结果附带一句"最大截断误差为10⁻⁷"比任何花哨的可视化都更有说服力。这也是论文审稿人最看重的指标之一。

我见过太多结果漂亮的实验,最后因为没做这三步检查而被推翻。张量网络的拟合能力很强,低χ都能把训练目标拟合到很漂亮,但泛化能力只有靠这些物理收敛指标才能确认。把收敛诊断当作流程的一部分,而不是可选项。

5.4 工具链选型与调试经验

最后聊聊工程。现在开源张量网络工具已经不少,核心运算基本都是基于成熟数值库实现的,重点看三件事:是否支持自动微分、是否支持GPU批处理、SVD是否提供经济型分解(只需要前k个奇异值)。

实际调参时最有用的诊断手段,是把你训练好的MPS分别在几个不同位置上做Schmidt分解,打印完整奇异值谱。一次就能看出:哪些位置纠缠饱和、哪些位置冗余、χ是否分配合理。这比盯着损失曲线直观太多。

我还习惯保留每次训练的键维衰减曲线。张量网络模型有个特点:参数多但结构约束强,所以它既不会像深度神经网络那样"过拟合到离谱",也不会像线性模型那样欠拟合。这个中间地带正是它在小样本量子任务里好用的原因。如果你后续想扩展,把多个张量网络堆叠成深层结构,或者把键维当作剪枝维度来做模型压缩,都是很自然的方向——那又是另一篇文章了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 5:32:03

Linux下AI视频生成工具的SELinux与AppArmor权限排查指南

如果你在一台Linux服务器上部署过ANIMATEDIFF PRO这类AI视频生成工具,多半会撞上一种很折磨人的现象:依赖装完了、模型文件放好了、Python脚本也跑起来了,结果一启动就报Permission denied,或者Web服务刚刚起来就被莫名掐断。更邪…

作者头像 李华
网站建设 2026/10/22 5:31:42

CTF入门指南:六大题型全解析,从Web到Pwn的夺旗之路

很多新手问我,CTF到底该怎么入门,为什么别人一看题目就有思路,自己拿到题却不知道从哪下手。我自己的经历是:一开始到处翻题解,看到什么学什么,折腾三个月还是零散状态,后来才意识到&#xff0c…

作者头像 李华
网站建设 2026/10/22 5:31:40

力学量如何变成电信号:传感器、信号调理与数据采集全链路解析

力学出身的人,一旦进了试验室或者工程现场,很容易被一个问题卡住:传感器明明装好了,接上仪表也能读数,但怎么把这些数据显示到电脑上、保存下来、还要一边采集一边跟控制指令对齐?力、应变、位移、加速度这…

作者头像 李华
网站建设 2026/10/22 5:31:39

CUDA运行期独立架构解析:从链接报错到多版本部署的工程实践

1. 从一次编译报错说起:为什么CUDA不是“一个库”那么简单很多人第一次接触CUDA编程时,都会经历一个相似的困惑时刻。你写了一个看起来完全正确的.cu文件,里面调用了cudaMalloc、cudaMemcpy,核函数也写得像模像样,然后…

作者头像 李华
网站建设 2026/10/22 5:30:16

五步搭建专属AI测试平台:大模型驱动的智能测试助手实践

1. 为什么你需要一个专属AI测试平台先说个我自己的情况。我所在团队的测试代码量在过去一年里翻了将近一倍,但测试工程师的人数并没有相应增长。每迭代版本,光是把核心接口的自动化用例补全、把失败用例挨个排查原因、再把回归结果整理成报告&#xff0c…

作者头像 李华
网站建设 2026/10/22 5:30:08

强化学习动态规划法:策略迭代与价值迭代原理及Python实现

1. 从“查表”说起:动态规划法到底在强化学习里扮演什么角色很多人第一次接触强化学习,脑子里浮现的都是神经网络、梯度下降、各种花哨的策略网络。但如果你把时间倒回几十年前,强化学习最核心的那套数学骨架,其实是用动态规划搭起…

作者头像 李华