张量网络在机器学习中的应用:从模型压缩到可解释性分析
1. 项目概述当张量网络遇见机器学习如果你关注过量子物理或者量子计算大概率听说过“张量网络”这个词。它最初是物理学家用来描述多体量子系统纠缠结构的数学工具听起来离我们日常的机器学习应用很远。但最近几年情况正在发生有趣的变化。越来越多的研究者发现这套源于物理的数学框架在处理高维数据、压缩模型、以及理解深度学习黑箱方面展现出惊人的潜力。这不再是两个平行宇宙的偶然交汇而是一种底层数学工具在解决复杂问题时的必然迁移。简单来说张量网络提供了一种高效、结构化的方式来表征和操作高维数据也就是张量。在机器学习中无论是图像高度×宽度×通道、文本序列长度×词向量维度还是推荐系统中的用户-物品交互矩阵本质上都是高维张量。传统方法如全连接神经网络在处理这些高维数据时参数数量会呈指数级爆炸这就是所谓的“维度灾难”。张量网络的核心思想就是利用特定的网络结构如矩阵乘积态、树张量网络等来近似表示这些高维张量从而将指数级的参数需求降为多项式级甚至线性级。这能解决什么实际问题想象一下你要训练一个超大规模的推荐模型用户和物品的交互矩阵巨大无比直接存储和计算几乎不可能。或者你想构建一个轻量级的图像分类模型部署在手机端但又不希望精度损失太多。再或者你试图理解一个深度神经网络内部究竟学到了什么为何如此有效。在这些场景下张量网络都可能提供一种全新的思路和工具。它不仅仅是压缩更是一种带有物理启发的、对数据内在结构和规律的显式建模。本文将从最基础的概念讲起拆解张量网络的核心思想并深入到它在机器学习中的几个前沿实践方向包括模型压缩、生成建模、以及用于可解释性分析希望能为你打开一扇交叉学科应用的新窗口。2. 张量网络基础超越矩阵的思维模式要理解张量网络在机器学习中的应用首先得抛开对“张量”就是多维数组的简单认知建立起一种“网络化”和“分解化”的思维。这是从工具使用者到设计者思维转变的关键一步。2.1 张量、图示与核心操作在数学和计算机科学中一个张量可以简单地理解为一个多维数组。它的“阶”由索引的数量决定。一个标量是0阶张量无索引一个向量是1阶张量1个索引一个矩阵是2阶张量2个索引一个三维数组就是3阶张量以此类推。每个索引对应的维度大小就是这个方向的“腿”的粗细。张量网络的核心魅力在于其“图示法”。我们可以用图形来表示张量一个几何形状如圆形、方形代表张量本身从它伸出的每一条线称为“腿”或“指标”代表一个索引。例如一个矩阵2阶张量就是一个有两条腿的节点。这种可视化方法让高维操作变得直观。两个最核心的操作是“张量缩并”和“张量分解”张量缩并这是张量网络中的基本运算相当于对共享的索引进行求和。在图示中它表现为将两个张量的某条“腿”连接起来。例如矩阵乘法C A·B就是一种缩并矩阵A的列索引与矩阵B的行索引缩并。在复杂网络中通过一系列的缩并最终可以得到一个输出张量。这构成了张量网络计算的基础。张量分解这是应对维度灾难的利器。其思想是将一个高阶张量近似表示为多个低阶张量通过特定网络结构如链状、树状连接后的缩并结果。这就好比用一组乐高积木低阶张量搭建出一个复杂结构高阶张量。不同的网络拓扑结构对应不同的分解方式也蕴含着对数据内在结构的不同假设。注意张量分解与传统的矩阵分解如SVD、PCA一脉相承但将其推广到了更高维度。选择哪种分解形式取决于你对数据结构的先验知识。例如链式结构矩阵乘积态适合具有一维顺序结构的数据如时间序列、文本而树状结构则可能更适合具有层次结构的数据如语法树、图像的多尺度特征。2.2 主流张量网络结构及其物理/数据内涵张量网络不是一种单一的结构而是一个家族。以下是几种在机器学习中受到较多关注的结构矩阵乘积态/张量链这是最经典的一维张量网络。它将一个高阶张量表示为一系列三阶张量每个张量有一条“物理腿”和两条“虚拟腿”首尾相连构成的链。虚拟腿的维度称为“键维数”控制了表示的精度和复杂度。MPS天然适合处理具有局部关联的一维数据在物理上它对应于一维量子系统的基态。机器学习启示对于像文本序列、时间序列、甚至展开成一维向量的图像MPS提供了一种捕获局部依赖关系的压缩表示。你可以将其视为一个极其特殊的循环神经网络或一维卷积网络但其参数化方式完全不同且通常具有更好的数学可解释性。树张量网络顾名思义其网络拓扑结构是一棵树。根节点和叶节点通常有特殊含义。TTN假设数据具有层次化的多尺度结构。在每一层信息通过虚拟腿在子节点间交互并汇聚到父节点。机器学习启示这与卷积神经网络中的池化操作、以及Transformer中的层次化特征提取有思想上的共鸣。TTN为设计具有明确多尺度归纳偏置的模型提供了数学框架特别适合图像、语音等具有尺度不变性或层次结构的数据。投影纠缠对态可以看作是二维的MPS是表示二维量子系统的重要工具。它由一组四阶张量排列在格点上构成每个张量连接其近邻。机器学习启示PEPS直接对应图像等二维网格数据。将图像像素视为格点PEPS可以建模像素间的二维空间关联。这为构建新型的、参数效率更高的图像处理模型提供了蓝图尽管其计算复杂度远高于MPS是当前研究的一个挑战和热点。理解这些结构关键不在于记住公式而是理解其背后的“结构先验”。选择一种张量网络结构本质上是在假设你的数据遵循某种特定的关联模式一维链、树、二维网格。这种显式的结构假设是张量网络方法与黑箱深度学习方法在哲学上的一个主要区别。3. 张量网络赋能机器学习三大核心应用场景理论的美妙需要实践的检验。张量网络如何具体地应用于机器学习任务以下三个场景是目前最具代表性和前景的方向。3.1 场景一模型压缩与参数高效学习这是张量网络最直接的应用。深度神经网络的全连接层权重矩阵参数量巨大。我们可以将这些权重矩阵重新解释为一个高阶张量例如将输入神经元和输出神经元的索引视为张量的不同维度然后用一个张量网络如MPS来近似表示它。实操步骤与背后的“为什么”目标层选择通常选择网络中参数量最大的全连接层开刀。因为其参数矩阵W ∈ R^(M×N)最大压缩收益最高。张量化将权重矩阵W重塑为一个高阶张量。例如如果M和N都可以分解为若干因子的乘积如 M m1m2, N n1n2那么可以将W重塑为T ∈ R^(m1×m2×n1×n2)的四阶张量。这一步的关键在于如何分解M和N这需要结合具体问题中输入输出的结构意义。如果找不到自然分解也可以采用填充或截断的方式。网络结构选择与近似选择一个张量网络结构如MPS来近似张量T。这意味着找到一组低阶张量{A_i}使得它们缩并后得到的张量T尽可能接近原始T。这通常通过优化算法如交替最小二乘法求解。替换与微调用张量网络{A_i}实现的计算模块替换掉原来的全连接层。由于{A_i}的参数总数远小于M×N模型大小得以压缩。替换后通常需要在目标任务上对整个网络进行端到端的微调以恢复因近似带来的精度损失。核心优势与注意事项优势压缩率高在某些情况下能达到10倍甚至100倍的压缩比前向计算可能更快因为缩并操作可以优化模型具有数学上的可解释性参数对应明确的网络节点。坑点结构选择依赖先验如果数据的内在结构与所选张量网络拓扑不匹配压缩效果会很差甚至需要更多参数才能达到原有效果。键维数选择是艺术键维数决定了表达能力和参数数量。太小则近似误差大太大则压缩效果弱。需要通过实验在模型大小和精度之间寻找帕累托最优。并非所有层都适合卷积层本身已经具有了参数共享的稀疏结构用张量网络压缩的收益可能不如全连接层明显。需要针对性分析。3.2 场景二生成建模与概率密度估计张量网络可以天然地表示概率分布。一个归一化的高阶张量如果其每个索引代表一个随机变量那么张量的每个元素就可以解释为该变量组取特定联合状态的概率或振幅。基于MPS/TTN的生成模型被称为“张量网络态”或“神经张量网络”。工作原理以MPS为例我们可以构建一个概率生成模型p(x1, x2, ..., xn)其中xi是第i个变量如图像的第i个像素。将这个联合概率分布用一个MPS来近似表示。MPS中的每个局部张量A_i的输出“物理腿”对应变量xi的取值。通过约束MPS满足归一化条件它就定义了一个有效的概率分布。训练与采样训练通过最大似然估计调整MPS中的张量{A_i}使得模型分配给训练数据的概率尽可能高。这通常涉及复杂的梯度计算或基于奇异值分解的算法。采样由于MPS的结构是链式的我们可以进行高效的精确采样或条件采样。从第一个变量开始根据边缘分布p(x1)采样x1然后根据条件分布p(x2|x1)采样x2依此类推。这个过程是序列化的但非常高效。与主流生成模型的对比vs 自回归模型MPS生成模型在形式上类似自回归模型但它显式地建模了所有变量间的全局关联通过虚拟腿而经典的自回归模型通常只依赖有限的过去窗口。MPS提供了更丰富的关联建模能力。vs 流模型两者都能计算精确的对数似然。流模型通过一系列可逆变换构建复杂分布而MPS通过低秩分解来直接参数化分布。MPS在采样序列数据时结构上更自然但处理极高维数据如高清图像时网络结构设计比流模型更复杂。优势可计算精确概率、可进行精确推理、数学可解释性强、在某些结构化的离散数据上表现优异。劣势对于连续变量处理需要离散化模型表达能力严重依赖于网络拓扑和键维数训练大规模模型的计算挑战依然存在。3.3 场景三可解释性与深度学习理论探针深度学习模型为何有效其内部表示究竟学到了什么张量网络可以作为一个强大的理论分析工具。思路将训练好的深度神经网络中的某一层尤其是宽全连接层的激活值在给定一批数据的情况下视为一个高阶张量样本索引也作为一个维度。然后对这个激活张量进行张量网络分解如MPS或TTN。我们能从分解中得到什么纠缠谱与信息瓶颈对分解过程中的虚拟腿进行奇异值分解得到的奇异值谱称为“纠缠谱”反映了信息在不同部分间的关联强度。谱的衰减速度可以量化该层表示的信息压缩程度。这与信息瓶颈理论建立了联系帮助我们理解网络在每一层是如何丢弃噪声、保留有用信息的。网络结构与数据结构的对应如果采用TTN对图像卷积网络的某一层激活进行分解分解得到的树状结构可能与图像的多尺度层次结构边、纹理、物体部件形成对应。虚拟腿的维度大小可以解释为该层次上特征的重要性。表征相似性分析比较不同网络或同一网络不同层激活张量经过张量网络压缩后的核心张量可以定量衡量它们学习到的内部表示的相似性这比传统的CCA或CKA方法在某些情况下更能揭示结构相似性。这更像是一种“事后分析”工具而不是设计工具。但它为理解黑箱模型提供了基于坚实数学的、可量化的视角。例如通过分析不同深度下纠缠谱的行为研究者们发现了一些网络表现优异的经验规律这些规律反过来又能指导更高效的网络结构设计。4. 前沿实践当张量网络遇见现代机器学习架构基础理论落地后研究者们开始尝试将张量网络与最主流的深度学习架构进行深度融合催生了一些前沿方向。4.1 张量网络化的TransformerTransformer的核心是自注意力机制其计算涉及巨大的Q, K, V矩阵。对于超长序列这些矩阵的存储和计算是瓶颈。张量网络提供了压缩思路。注意力矩阵的低秩近似将Q和K矩阵视为张量用MPS/TTN表示。这样QK^T的计算可以通过张量网络缩并高效实现本质上是在一个压缩的空间内计算注意力权重。这可以大幅减少长序列场景下的内存和计算开销。因子化嵌入层在NLP中词嵌入矩阵非常大。可以将其视为一个二阶张量词索引×嵌入维度并用张量分解如Tucker分解来表示。这相当于将每个词嵌入表示为几个更小向量的组合显著减少了嵌入参数。实践考量直接替换会破坏模型原有的优化动态。通常需要渐进式替换如先压缩嵌入层再压缩注意力层和精细的微调。此外需要设计专门的CUDA内核或利用现有的张量网络库来保证压缩后的计算效率真正优于原始实现。4.2 基于张量网络的图神经网络图数据天然具有不规则结构传统GNN的信息传递机制可以很自然地用张量网络来重新表述和泛化。将图视为张量网络图中的每个节点可以赋予一个张量每条边代表张量间的缩并。节点的特征更新就对应于其关联张量在接收到邻居信息通过边缩并传来后的局部优化。高阶交互建模传统GNN通常只聚合一阶邻居信息。通过引入“虚拟节点”或使用更高阶的张量网络结构如PEPS的变体可以在信息传递中隐式地建模多跳依赖或高阶子结构如三角形的信息从而增强模型的表达能力。优势与挑战这种方法为GNN提供了强大的理论框架并能统一处理同质图、异质图甚至超图。但最大的挑战在于计算复杂性。对于大规模稀疏图通用的张量网络缩并可能非常低效。需要针对图结构的稀疏性设计专用的、近似的缩并算法。4.3 量子启发的经典机器学习模型这是最“原教旨”也最前沿的方向。直接用量子物理中描述多体系统的张量网络态如MPS、PEPS作为机器学习模型的主干架构其参数张量元通过经典优化器如Adam在经典数据上进行训练。如何运作以图像分类为例将一张28x28的二值化MNIST图像展平成一个784位的二进制向量x。构建一个MPS其每个物理张量A_i的指标取值对应于x_i 0 或 1。这个MPS输出一个复数或实数ψ(x)。模型的预测可以基于|ψ(x)|^2类似于概率或者将MPS的边界指标连接到输出层。为什么有趣强大的表示能力理论上足够大键维数的MPS可以近似任意概率分布类似于万有逼近定理。内置的纠缠与关联虚拟腿和键维数天然地建模了像素间的长程关联这是许多经典模型需要深层网络才能捕获的。新的优化视角训练过程可以借鉴物理中的密度矩阵重整化群或时间演化算法有时能避免经典神经网络训练中的一些局部极小值问题。现状与瓶颈这类模型在小规模标准数据集如MNIST, Fashion-MNIST上已经展现出媲美简单神经网络的性能并且具有极少的参数。但其可扩展性是巨大挑战。处理RGB图像、更大尺寸图像或更复杂数据时网络结构设计、优化算法和计算开销都成为难题。目前这更多是一个活跃的研究领域展示了交叉学科的潜力但离大规模工业应用尚有距离。5. 实战入门用Python实现一个简单的MPS分类器理论说了这么多我们来点实际的。下面我将手把手带你用Python和NumPy实现一个基于MPS矩阵乘积态的简单分类器用于MNIST数据集。这个例子将串联起张量表示、前向传播和训练的基本概念。5.1 环境准备与数据预处理我们使用经典的环境和数据集。# 假设你已安装Python和pip pip install numpy torch torchvision matplotlibimport numpy as np import torch import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt # 1. 加载MNIST数据集 transform transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) trainset torchvision.datasets.MNIST(root./data, trainTrue, downloadTrue, transformtransform) trainloader torch.utils.data.DataLoader(trainset, batch_size64, shuffleTrue) testset torchvision.datasets.MNIST(root./data, trainFalse, downloadTrue, transformtransform) testloader torch.utils.data.DataLoader(testset, batch_size64, shuffleFalse) # 2. 数据预处理二值化并展平 # 为了简化我们将图像二值化0.5视为1否则为0并展平成一维向量 def preprocess(data_loader): images, labels [], [] for batch_imgs, batch_lbls in data_loader: # 二值化 binary_imgs (batch_imgs.view(batch_imgs.size(0), -1) 0).float() images.append(binary_imgs.numpy()) labels.append(batch_lbls.numpy()) return np.vstack(images), np.concatenate(labels) # 注意这里我们只预处理一小部分数据用于演示完整训练需处理全部数据 train_images, train_labels preprocess(trainloader) test_images, test_labels preprocess(testloader) print(fTraining data shape: {train_images.shape}) # (60000, 784) print(fTest data shape: {test_images.shape}) # (10000, 784)5.2 MPS模型的核心实现我们将实现一个最简单的MPS分类器。每个像素对应MPS中的一个物理张量MPS的左右边界连接到一个输出向量用于10分类。class SimpleMPSClassifier: def __init__(self, num_sites784, phys_dim2, bond_dim10, num_classes10): 初始化MPS分类器。 Args: num_sites: 站点数对应展平后的像素数这里为784。 phys_dim: 物理维度每个像素的取值数二值化后为2 (0或1)。 bond_dim: 键维数虚拟腿维度控制模型容量。 num_classes: 分类数MNIST为10。 self.num_sites num_sites self.phys_dim phys_dim self.bond_dim bond_dim self.num_classes num_classes # 初始化MPS张量列表。每个张量形状为 (bond_dim_left, phys_dim, bond_dim_right) # 对于边界张量其中一个bond_dim为1。 self.tensors [] for i in range(num_sites): if i 0: # 最左端张量 shape (1, phys_dim, bond_dim) elif i num_sites - 1: # 最右端张量 shape (bond_dim, phys_dim, num_classes) # 最右端连接到输出类别 else: # 中间张量 shape (bond_dim, phys_dim, bond_dim) # 用小的随机数初始化避免梯度爆炸/消失 tensor np.random.randn(*shape) * 0.01 self.tensors.append(tensor) # 为了简化我们使用一个简单的全连接层将MPS输出映射到logits # 实际上MPS最右端的bond_dim已经连接到num_classes这里我们直接使用。 # 但为了演示我们也可以额外加一个小的输出层。本例中我们直接使用最后一个张量的输出。 def forward(self, x): 前向传播。输入x是一个形状为 (batch_size, num_sites) 的二值向量。 返回logits形状为 (batch_size, num_classes)。 batch_size x.shape[0] # 将输入数据转换为one-hot编码以便与物理指标缩并 # x shape: (batch_size, num_sites), 取值0或1 x_one_hot np.eye(self.phys_dim)[x.astype(int)] # (batch_size, num_sites, phys_dim) # 从左到右进行缩并 # 初始化将最左边的张量与第一个站点的数据缩并 # self.tensors[0] shape: (1, phys_dim, bond_dim) # 对于每个样本选择对应的物理态进行缩并: einsum 表达式 aib,bi-ab # 但为了批处理我们做一点调整。 current np.einsum(aib,bi-ab, self.tensors[0], x_one_hot[:, 0, :]) # (batch_size, bond_dim) # 遍历中间站点 for i in range(1, self.num_sites - 1): # current shape: (batch_size, bond_dim_left) # tensor_i shape: (bond_dim_left, phys_dim, bond_dim_right) # 缩并: bl, lpr - bpr 再与数据缩并 bpr, bp - br temp np.einsum(bl,lpr-bpr, current, self.tensors[i]) # (batch_size, phys_dim, bond_dim_right) current np.einsum(bpr,bp-br, temp, x_one_hot[:, i, :]) # (batch_size, bond_dim_right) # 最后一个站点与输出类别连接 # current shape: (batch_size, bond_dim) # tensor_last shape: (bond_dim, phys_dim, num_classes) temp np.einsum(bl,lpc-bpc, current, self.tensors[-1]) # (batch_size, phys_dim, num_classes) logits np.einsum(bpc,bp-bc, temp, x_one_hot[:, -1, :]) # (batch_size, num_classes) return logits def predict(self, x): logits self.forward(x) return np.argmax(logits, axis1) # 注意为了简化这里省略了反向传播和训练循环的完整实现。 # 完整的训练需要定义损失函数如交叉熵并使用梯度下降法优化所有tensors。 # 由于涉及复杂的张量梯度计算通常使用自动微分框架如PyTorch、JAX会更方便。 # 下面提供一个概念性的训练步骤说明。5.3 训练逻辑与梯度更新说明由于纯NumPy实现自动微分较为复杂我们这里描述在PyTorch中实现训练的关键步骤将NumPy数组转换为PyTorch张量并设置requires_gradTrue。定义损失函数criterion torch.nn.CrossEntropyLoss()。前向传播实现上述forward函数的PyTorch版本利用torch.einsum。计算损失loss criterion(logits, labels)。反向传播loss.backward()。PyTorch会自动计算所有self.tensors的梯度。优化器更新optimizer.step()可以使用torch.optim.Adam。正则化与归一化在MPS训练中为了防止梯度不稳定通常需要在每次优化步骤后对MPS进行“规范形式”的调整例如将MPS转换为左正则或右正则形式。这是一个重要的技巧源于张量网络本身的数值稳定性要求在物理模拟中很常见但在机器学习应用中常被忽略。简单实现可以跳过但训练更深、更复杂的网络时至关重要。5.4 结果分析与局限性讨论运行上述模型需要完整实现训练循环在MNIST的一个子集上你可能获得一个远低于现代神经网络的准确率例如70%-85%。这揭示了几个关键点计算复杂度即使使用了MPS压缩对784个站点进行顺序缩并其计算量仍然是O(num_sites * bond_dim^3)。对于较大的bond_dim这非常昂贵。在实际研究中会采用并行化、使用GPU和更高效的收缩顺序来加速。结构假设的局限性将784个像素视为一维链完全破坏了图像的二维空间局部性。这是一个错误的结构先验。因此性能不佳是预期的。这正说明了张量网络结构必须与数据结构匹配的重要性。对于图像应该尝试TTN或PEPS或其近似。参数初始化与优化张量网络的优化曲面可能非常复杂需要谨慎的初始化和专门的优化技巧如DMRG启发的方法。演示价值这个简单实现的目的是教学它清晰地展示了张量网络作为函数逼近器的核心机制——通过一系列局部张量的缩并将高维输入映射到输出。它为你提供了一个可以修改和实验的起点。你可以尝试将其中的一维链MPS替换为树状结构或者应用到更适合一维结构的数据如文本分类上。6. 工具链、挑战与未来展望想要深入这个领域你需要合适的工具并清楚面临的挑战。6.1 现有工具与库通用数值计算NumPy,SciPy是基础。对于更复杂的张量操作einsum函数是你的好朋友。自动微分框架PyTorch,TensorFlow,JAX。它们内置了高效的张量运算和自动微分是实现可训练张量网络模型的首选。尤其是JAX其函数式变换特性与张量网络算法非常契合。专用张量网络库ITensor用C编写性能极高但接口相对底层更适合物理研究。TeNPy基于Python专注于强关联物理算法实现非常专业。QuimbPython库旨在桥接量子物理与机器学习提供了许多量子态和张量网络的操作并且与JAX有较好的集成。TensorNetwork由Google发布后端支持TensorFlow、PyTorch、JAX和NumPy目标是为机器学习应用提供张量网络原语是一个很好的起点。6.2 当前面临的主要挑战结构设计难题如何为特定任务和数据自动学习或设计最优的张量网络拓扑结构目前很大程度上依赖领域知识和试错。计算复杂度尽管压缩了参数但许多张量网络操作如最优缩并顺序寻找、高维网络收缩本身的计算复杂度很高尤其是在非一维结构上。如何开发高效的近似算法和硬件适配是关键。优化困难张量网络参数的优化空间通常是非凸的且存在大量的对称性规范自由度容易陷入局部最优或导致训练不稳定。需要借鉴物理中的优化算法如DMRG并与现代深度学习优化器结合。与现有生态集成如何将张量网络层无缝嵌入到PyTorch/TensorFlow生态中使其能够与卷积层、注意力层等标准模块共同训练是一个工程上的挑战。6.3 未来可能的方向神经-张量混合架构不追求完全替代深度学习而是将张量网络作为特定模块如超大线性层、特定先验的生成器插入现有架构发挥其参数高效和可解释的优势。自动化结构搜索结合神经网络架构搜索技术自动化地寻找针对特定数据集和任务的高性能张量网络结构。专用硬件加速张量网络的核心操作缩并、分解在存算一体硬件、光计算或未来的量子协处理器上可能有独特的加速优势。理论交叉深化进一步融合量子信息理论如纠缠熵、量子复杂度与机器学习理论如泛化界、表示学习为机器学习提供新的理论基础和分析工具。张量网络在机器学习中的应用是一场从物理世界借来的数学工具与数据世界复杂问题的碰撞。它目前还不是解决所有问题的银弹但其独特的思维方式——用结构化的、可解释的、低秩的分解来对抗维度灾难——为我们提供了超越堆叠黑箱层的另一种可能。对于研究者它是一个充满宝藏的交叉学科前沿对于工程师在模型压缩、特定结构数据建模等场景下它可能是一把尚未被充分使用的利器。最关键的是开始动手从一个简单的MPS或TTN实验开始亲自感受这种“网络化思维”处理数据的力量与局限这比阅读任何综述都来得直接。