张量网络与机器学习#
Timo Felser
13
张量网络在经典计算机上模拟复杂量子系统取得了突破性成就,但其应用早已超越学科边界。事实上,这些数值工具已在多个领域得到应用,从应用数学中的复杂优化问题,到量子化学和材料科学中的数值分析。在这些激动人心的跨学科应用中,本章聚焦的领域是张量网络在机器学习中的运用。
在最近的突破性进展中,张量网络已成为监督式和无监督式机器学习任务中的强大工具,在 MNIST [222, 611] 等标准数据集上展现出与最先进神经网络相媲美的性能。值得注意的是,考虑到张量网络在机器学习中的应用相对年轻,这一成就更显难能可贵。基于张量网络的机器学习具有实时预测的独特优势,例如在欧洲核子研究中心(CERN)大型强子对撞机数据加速分析和分类中的应用 [227]。
在详细探讨张量网络如何执行机器学习任务之前,我们将首先简要总结机器学习的概念。随后,介绍利用张量网络作为分类器及其与量子多体物理的关联。最后,展示基于张量网络的机器学习应用的最新成果与比较。
13.1 机器学习简介#
在标准软件开发中,程序员用某种编程语言编写具体规则,程序在运行时遵循这些规则。因此,软件行为方式由所写编程规则和程序员代码的逻辑决定(只要没有意外错误)。而在机器学习中,计算机应从代表待解决问题(如图13.1所示)的数据中自行推导出决策规则。机器学习的核心概念是识别数据中的拟合模式,并据此对新数据进行预测。因此,我们使用学习方法或算法从现有数据中推导统计规律,这些规律可以表示为数值模型。利用学习到的模式,这些模型可以对新数据进行预测,从而构建基于算法的系统——一方面支持决策,另一方面可用于自主系统。

图13.1 机器学习与标准软件开发的比较:(上)在标准软件开发中,程序员编写程序执行的规则。(下)在机器学习中,计算机基于代表问题的给定数据,在学习过程中推导决策规则(即决策函数f(x))。随后,推导出的决策规则(即学习到的模式)用于对新数据进行预测

图13.2 机器学习的训练过程类型示意图:监督学习(左)旨在从已知输入$x_{i} ~ \in ~ X$到已知输出$y_{i} ~ \in ~ Y$(标签)找到最佳映射,需要相应标注的数据。无监督学习(中)旨在找到已知输入$x_{i} ~ \in ~ X$的最佳分组,即定义标签Y。强化学习(右)旨在仅知道特定目标$y_{t a r g e t}$的情况下找到最佳动作,无需输入数据,而是拥有可执行动作和所处状态的映射图
数学上,我们的机器学习任务是逼近目标决策函数
$$ f : X \to Y , y = f ( x )\tag{13.1} $$我们并不确切知道或过于复杂而无法精确计算。现在,为了训练我们的模型,即为 $f$ 找到一个良好的近似,根据数据集和具体的数据问题,我们有不同类型的训练过程(对比图13.2):
监督学习(supervised learning):在这种情况下,数据集中有若干数据样本 i,我们知道其输入 $x_{i} \in \ X$ 以及决策函数(decision function)$f ( x_{i} )$ 对应的输出 $y_{i} ~ \in ~ Y$,即标签。因此,目标是找到正确的模式——即正确的函数 f——使其能从给定样本产生相应的标签。具体而言,若标签是离散值,则此任务为分类;若标签空间是连续的,则为回归。我们将在第13.1.1节详细描述监督学习。
无监督学习(unsupervised learning):如果数据集中的样本只有已知输入 $x_{i}$,但输出 $y_{i}$ 未知(即无标签数据),则称为无监督学习。此情形下的目标可以是双重的:若目标是离散的标签空间,则我们希望对具有相似模式的数据样本进行分组,区分不同模式的数据。这一过程也称为聚类(clustering),因为我们要将样本划分到代表不同分布的各个簇中,每个簇内的数据点服从该簇的分布。此外,我们也可能对学习数据集背后的通用分布函数感兴趣,例如可用于生成式人工智能,创建与已知数据集具有相同模式的新数据。
强化学习(reinforcement learning):在这种情况下,既没有已知的数据输入 $x_{i}$,也没有输出 $y_{i}$。我们只有一个特定目标 $y_{target}$,必须在动态环境中即时创建输入 $x_{i}$。因此,输入可能依赖于环境或学习过程中采取的行动。这种学习最著名的应用是玩电子游戏的人工智能。基于奖励函数,经过数千或数百万次尝试,它们逐渐掌握游戏背后的规律,最终甚至能轻松击败最优秀的人类玩家。
为完整起见,需要说明的是,这三种机器学习类型在实践中可以根据数据可用性和具体问题混合使用。例如,当有少量标签数据和大量无标签数据时,可以进行半监督学习(semi-supervised learning),将监督学习和无监督学习的流程合并到一个模型中。
接下来,我们将更详细地描述监督学习过程。我们将用这种学习类型来介绍机器学习中其他重要部分,如训练、测试和验证,这些都是执行机器学习任务时的良好实践。
13.1.1 监督学习#
如上所述,在监督学习中,我们有一个由输入样本 $x_{i} ~ \in ~ X$ 和对应标签 $y_{i} ~ \in ~ Y$ 组成的数据集。利用这些数据,我们旨在优化决策函数 $f$,该函数将输入空间 X 映射到标签空间 Y,如公式 (13.1) 所示。正如我们将在第13.2节中看到的,这个决策函数可以用张量网络建模。举例来说,我们可以考虑 MNIST 数据集 [613],它由手写数字构成(见图13.3)。此时,$x_{i}$ 是数据集中的第 i 张图片——更具体地说,是图片的向量表示;$y_{i}$ 则是它代表的数字。明确的任务是找到一个能够区分不同数字的分类器,即一个决策函数 $f ( x )$,它能将所有可用图片正确映射到对应的输出。因此,我们有两个基本步骤:训练和测试过程,下面将详细解释。在此之前,值得注意的一点是,在分类任务中,预测结果未必就是决策函数 $f ( x )$ 本身。在这种情况下,分类的决策函数为:
$$ f ( x ) = \left( \begin{array} {c} {{f_{0} ( x )}} \\ {{f_{1} ( x )}} \\ {{\vdots}} \\ {{f_{L - 1} ( x )}} \end{array} \right)\tag{13.2} $$$$ \begin{array} {r l} {\texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{0} \texttt{- \mathrm{Class}}^{\boldsymbol{\mathrm{u}}} \texttt{0}^{\boldsymbol{u}}} \\ {\texttt{1} \texttt{1} \texttt{1} \texttt{7} \texttt{1} \texttt{7} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{7} \texttt{1} \texttt{7} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{1} \texttt{7} \ \texttt{\long} \prod} \\ {\texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2} \texttt{2}} \\ {\texttt{5} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3} \texttt{3}} \\ \texttt{4} \texttt{4} \texttt{9} \texttt{4} \texttt{9} \texttt{4} \texttt{9} \texttt{4} \texttt{4} \texttt{9} \texttt{4} \texttt{9} \texttt{4} \texttt{9} \texttt{4} \texttt{4} \texttt{9} \texttt 4 \end{array} $$图13.3 分类数据集示例:MNIST数据集包含以灰度图像表示的手写数字[612, 613]。数据集中的每幅图像都是机器学习任务的样本$x_{i} \in X$,并且附有正确类别的标签$y_{i} \in Y$
变成一个向量,其中条目$f_{\ell} ( x )$表示$L$个不同类别中每个类别的置信度(或概率)。因此,对MNIST数据集的预测可能如下所示:
$$ f ( x ) = \left( \begin{array} {l} {0.0671829} \\ {0.403097} \\ {0.0223943} \\ {0.11971} \\ {0.179154} \\ {0.0447886} \\ {0.134366} \\ {0.873378} \\ {0.0223943} \\ {0.0671829} \end{array} \right)\tag{13.3} $$注意,在这种情况下,预测的类别将是$\ell = 7$,置信度约为87.34%。因此,如果数字被相应地标注,这幅图像将被预测为"7"。
13.1.2 训练模型#
现在假设针对目标决策函数$f ( x )$,我们有一个模型$f ( x , \theta )$。注意,我们为模型引入了$\theta$:这表明模型中的可调参数,例如神经网络中的权重,或者——稍后我们将看到——张量网络情况下的张量元素。在训练过程中,我们优化这些参数,从而优化决策函数的模型$f ( x , \theta )$。因此,我们定义一个要最小化的代价函数(cost function)$C ( \theta )$,例如:
$$ C ( \theta ) = \frac{1} {2} \frac{1} {N_{T}} \sum_{i = 1}^{N_{T}} \sum_{\ell = 1}^{L} \left( f^{\ell} ( x_{i} , \theta ) - y_{i}^{\ell} \right)^{2} .\tag{13.4} $$表13.1 监督学习中最常用代价函数概览:平均绝对误差、均方误差和交叉熵。交叉熵以二分类为例展示,但也可推广至多分类。
| 名称 | $C ( \theta )$ | $N T \partial_{\theta} C ( \theta )$ |
| 平均绝对误差(或称L1误差) | $\begin{array} {r} {\frac{1} {N_{T}} \sum_{i = 1}^{N_{T}} \sum_{\ell = 1}^{L} \left| f^{\ell} ( x_{i} , \theta ) - y_{i}^{\ell} \right|} \end{array}$ | $\begin{array} {r} {\sum_{i = 1}^{N_{T}} \sum_{\ell = 1}^{L} \partial_{\theta} f^{\ell} ( x_{i} , \theta ) , \mathrm{i f ~} f^{\ell} ( x_{i} , \theta ) > y_{i}^{\ell}} \end{array}$ $\begin{array} {r} {\sum_{i = 1}^{N_{T}} \sum_{\ell = 1}^{L} - \partial_{\theta} f^{\ell} ( x_{i} , \theta ) , \mathrm{if} \ f^{\ell} ( x_{i} , \theta ) < y_{i}^{\ell}} \end{array}$ |
| 均方误差(或称L2误差) | $\begin{array} {r} {\frac{1} {2 N_{T}} \sum_{i = 1}^{N_{T}} \sum_{\ell = 1}^{L} \left( f^{\ell} ( x_{i} , \theta ) - y_{i}^{\ell} \right)^{2}} \end{array}$ | $\begin{array} {r} {\sum_{i = 1}^{N_{T}} \sum_{\ell = 1}^{L} \left( f^{\ell} ( x_{i} , \theta ) - y_{i}^{\ell} \right) \partial_{\theta} f^{\ell} ( x_{i} , \theta )} \end{array}$ |
| 交叉熵(二分类) | $\begin{array} {r} {\frac{1} {N_{T}} \sum_{i = 1}^{N_{T}} y_{i} \log{( f ( x_{i} , \theta ) )}} \end{array}$ | $\begin{array} {r} {\sum_{i = 1}^{N_{T}} \frac{f ( x_{i} , \theta ) - y_{i}} {f ( x_{i} , \theta ) ( 1 - f ( x_{i} , \theta ) )} \partial_{\theta} f^{\ell} ( x_{i} , \theta )} \end{array}$ $+ \left( 1 - y_{i} \right) \log \left( 1 - f ( x_{i} , \theta ) \right)$ |
注意,外层求和中的 $i$ 遍历训练集所有 $N_{T}$ 个样本,内层求和则遍历所有可能的标签 $L$,即所有类别——在 MNIST 例子中对应所有可能的数字。因此,该代价函数将模型对每个样本 $i$ 的预测 $f ( x_{i} , \theta )$ 与所有类别的已知输出 $y_{i}^{\ell}$ 进行比较,以计算均方误差。通过调整模型的可调参数 $\theta$,我们可以使用各种梯度下降法(gradient descent methods)等优化技术[614]来最小化这个代价函数(即模型性能)。
$$ \operatorname*{min}_{\theta} C ( f ( \theta ) )\tag{13.5} $$针对给定数据集。为完整起见,我们强调,公式(13.4)中的代价函数并非机器学习中唯一可用的代价函数。表13.1中,我们提供了其他常用代价函数的部分示例。
请注意,我们将此训练过程中使用的数据称为训练集。实际上,在监督学习中,将可用数据划分为不同的数据集至关重要,接下来将解释这一点。
13.1.3 测试与验证#
上述数据划分的基本思路是:在一个数据集上训练模型(即优化 $f ( \theta )$),并在另一个模型未知的数据集上对其进行测试。此过程确保模型能够准确地对同类型的新数据(即之前未见过的数据)进行预测。这种保持良好预测性能的思想也被称为泛化(generalisation)。通常,在创建机器学习模型时,会将全部数据划分为训练集(training set)、验证集(validation set)和测试集(test set),如图13.4所示。对于大型数据集,经验法则如下:

图13.4 机器学习的数据划分原则:数据通常被划分为训练集、验证集和测试集。训练集用于训练AI模型。验证集用于验证训练好的AI模型。基于训练好的模型在验证集上的预测,我们可以评估其对模型未见数据的性能。根据此评估,我们可以判断模型学习到的模式是否能够很好地泛化到新数据,或者模型是否需要重新训练。经过充分的重新训练循环后,最终模型将在另一个数据集——测试集上进行基准测试,以进行最终评估
将所有数据分为三组:训练集(约占数据的60–80%,具体取决于问题)、验证集(约占10–25%)和测试集(约占5–20%)。1
根据第13.1.2节进行训练(即优化)一个或多个模型。可以(同时)训练多个模型,例如使用不同的优化技术或不同的初始模型。
训练后,评估每个模型在验证数据集上的性能。
如果所有模型的性能均不令人满意,则仅保留性能最佳的模型,摒弃表现最差的模型,然后从步骤2重新开始。
如果存在一个在验证集上表现足够好的模型,则将这个最佳模型应用于测试数据以进行最终评估。
如上所述,此程序应视为针对足够大数据集的经验法则,而其他技术,如留一法交叉验证(leave one out cross validation),则适用于数据量较少的机器学习[615]。在整个过程中,重要的是要知道,在衡量模型性能时需要考虑多个性能指标。最直接的当然是公式(13.4)中的代价函数本身。另一个重要的性能指标出现在分类问题中,即查看所谓的混淆矩阵(confusion matrix)。在数据集上评估模型时,我们可以跟踪其预测正确和预测错误的次数。事实上,对于MNIST等分类问题,我们可以分析每个类别的决策,并且在决策错误的情况下,可以查看模型将数据样本混淆为了哪个其他标签。为简单起见,让我们先着眼于手写数字,目标是找到数据集中的“1”,即区分“1”和非“1”这两个不同类别。测试一个分类器,我们最终会遇到四种情况:
- 真正例(True positive):模型预测为“1”(正预测),而数据样本实际是“1”
- 假正例(False positive):模型预测为“1”(正预测),而数据样本实际不是“1”
- 假负例(False negative):模型预测为“非1”(负预测),而数据样本实际是“1”
- 真负例(True negative):模型预测为“非1”(负预测),而数据样本实际不是“1”
在评估过程中(使用大小为N的评估集)统计每种情况的数量,我们得到如表13.2所示的混淆矩阵。
利用这个表格,我们可以评估相关的性能指标,例如准确率(accuracy),即正确分类的样本数量,公式如下:
$$ A ( f ) = {\frac{T P + T N} {N}} .\tag{13.6} $$表13.2 混淆矩阵(confusion matrix)中二分类问题的表示
| 实际标签↓ | 预测结果 | |
| 预测为“1”的数量 | 预测为“非1”的数量 | |
| 实际为“1”的数量 | 真正例(TP)数量 | 假负例(FN)数量 |
| 实际为“非1”的数量 | 假正例(FP)数量 | 真负例(TN)数量 |
表13.3 评估机器学习分类器最常用的性能指标概览
| 名称 | 公式 | 说明 |
| 准确率 | TP+TN/N | |
| 精确率 | $\frac{TP} {TP + FP}$ | 在所有预测为“1”的样本中,正确检测出的比例 |
| 召回率、灵敏度或命中率 | $\frac{TP} {TP + FN}$ | 在所有实际为“1”的样本中,正确检测出的比例 |
| 平衡准确率 | $\begin{array} {r} {\frac{1}{2} \left( \frac{TP}{TP+FN} + \frac{TN}{TN+FP} \right)} \end{array}$ | 平衡不平衡数据集上的准确率 |
| F1分数 | $\frac{2TP}{2TP+FP+FN}$ | |
| 信息量 | $\begin{array} {r} {\left( \frac{TP}{TP+FN} + \frac{TN}{TN+FP} \right) - 1} \end{array}$ |
然而,根据数据集的不同,这个性能指标可能非常反直觉,正如我们例子中所示:在MNIST数据集中区分“1”和“非1”时,仅有10%的数据实际上是“1”,而90%的数据属于第二类“非1”。现在设想,我们有一个分类器,无论输入是什么,它总是预测为“非1”。采用这种策略,模型将达到90%的准确率,但完全无法解决任务。为了弥补这种影响,针对分类问题建立了不同的性能指标。表13.3列出了最著名的一些指标。请注意,所有这些性能指标都可以推广到多于两个类别的分类问题。
13.2 基于张量网络的机器学习#
了解了上一节中介绍的机器学习基本概念后,我们现在来展示如何将张量网络用作机器学习中的模型。事实上,使用张量网络的概念在应用数学领域正得到越来越多的研究[616-619]。例如,矩阵乘积态(Matrix Product States)在该领域被重新发现为张量列(Tensor Trains)[183]。后来,研究显示张量网络,特别是MPS,可以作为机器学习的一种新工具[227, 611]。我们稍后将看到,张量网络在机器学习中的首次应用已经在标准化数据集上进行监督学习时取得了令人瞩目的成果[222, 611, 620],甚至超越了这一范围[227,228]。在阐述这些应用之前,我们接下来展示基于张量网络的机器学习是如何工作的。
13.2.1 张量网络预测器#
机器学习中的一种特殊方法是所谓的核学习方法(kernel learning)[621],其理念是将输入数据 $x \in X$ 映射到更高维度。这一思想是支持向量机(SVM)取得成功的核心基础之一:通过在另一种更具表达力的基中“审视”复杂的非线性数据,数据可以变得线性可分,从而易于分类。例如,在图13.5中,我们通过 $\Phi ( x ) = x^{2}$ 对数据进行变换后,使用一个线性边界就能完美地将两种不同的数据点分开。利用这种核技巧,我们可以将式(13.1)中的决策函数描述为
$$ f ( x ) = W \times \Phi ( x )\tag{13.7} $$其中 x 是输入(或特征)向量,$\Phi ( x )$ 是选定的特征映射,而 $W$ 是所谓的权重向量,原则上它可以是指数级大小甚至无穷维。事实上,我们可以将这个权重向量视为等价于第5章中介绍的表示量子多体系统的向量。接下来,我们将展示——正如量子力学中的情况一样——我们可以通过一个 N 阶张量来呈现用于机器学习预测的这样一个权重向量。然后,通过将该张量表示为张量网络(正如我们对量子力学中多体波函数的处理方式),我们可以引入用于机器学习的张量网络概念。为了使这一想法成立,我们需要选择 $\Phi ( x )$ 作为可分离的特征映射(separable feature map),例如
$$ \Phi ( {\bf x} ) = \phi_{1} ( x_{1} ) \otimes \phi_{2} ( x_{2} ) \otimes . . . \otimes \phi_{n} ( x_{n} )\tag{13.8} $$其中我们将整个特征映射根据数据集中不同的输入特征进行分离。我们将 $\Phi_{k}$ 称为局部特征映射(local feature map)。现在每个样本变成一个向量乘积——或者用量子多体物理的语言来说,是一个乘积态。通过简单地将整个网络与映射后的输入 $\Phi ( x )$ 进行缩并,我们可以做出张量网络预测,稍后我们将更详细地看到这一点。我们还将看到,这种特征映射导致了这种机器学习方法与量子力学之间更深刻的类比。事实上,这种可分离核已有研究[622, 623],并表明它们对于在训练前我们未假设或不知道输入向量中特征之间任何特定关系的数据尤其具有价值。

图13.5 使用核技巧分离两类不同数据点(分别用蓝色菱形和绿色圆圈标记)的示例。通过 $\Phi ( x ) = x^{2}$ 对左侧的线性数据进行变换后,在右侧的核空间中,这些数据点可以很容易地被一个线性函数分开
为完整起见,我们提到,对于分类问题,式(13.7)中的权重向量 W 实际上是一个 $m \times L$ 的权重矩阵,其中 L 是不同类别的数量。在进行预测时,分类器给出每个类别 $l \in \{1 , \ldots , L \}$ 的置信度
$$ \mathcal{P}_{l} ( \mathbf{x} ) = W_{l} \cdot \Phi ( \mathbf{x} )\tag{13.9} $$其中我们有了额外的下标 l,如第13.1.1节所介绍。
13.2.2 将数据映射到量子自旋#
张量网络作为机器学习分类器的首批应用之一来自文献[611],其思想是将数据映射到量子自旋中。为此,我们可以再次审视第13.1.1节中介绍的手写数字 MNIST 数据集。如图13.3和图13.6所示,该数据集由具有 n 个像素的灰度图像组成,其中每个样本的每个像素都是黑白编码的,即由从0.0(白色像素)到1.0(黑色像素)范围的值表示。通过将式(13.8)中引入的局部特征映射选为
$$ \Phi^{[ i ]} ( x_{i} ) = \Big [ \cos \Big ( \frac{\pi x_{i}} {2} \Big ) , \sin \Big ( \frac{\pi x_{i}} {2} \Big ) \Big ]\tag{13.10} $$我们可以将每个特征 $x_{i}$ 映射到一个量子自旋。在这种图像中,白色像素变为自旋向上,黑色像素变为自旋向下,而灰色像素则变为它们之间的叠加态,其大小取决于像素的灰度,如图13.6和下文所示:
$$ x_{i} = 0.0 \longrightarrow \Phi^{[ i ]} ( x_{i} ) = {\binom{1} {0}} ;\tag{13.11} $$$$ x_{j} = 1.0 \longrightarrow \Phi^{[ j ]} ( x_{j} ) = {\binom{0} {1}} ;\tag{13.12} $$$$ x_{k} = 0.5 \longrightarrow \Phi^{[ k ]} ( x_{k} ) = {\frac{1} {\sqrt{2}}} {\binom{1} {1}} \ .\tag{13.13} $$事实上,量子自旋的概念是一个有用的类比,有助于进一步研究张量网络在机器学习中与量子物理的联系,反之亦然。

图13.6 张量网络(TN)机器学习映射概念示例。这里,手写数字的MNIST数据(右上)被编码到量子自旋基中:图片的每个像素(特征)通过特征映射转换为自旋向上(黑色像素)、自旋向下(白色像素)或叠加态(灰色像素)(左上)。编码后的数据用于训练张量网络模型(左下)。模型通过将映射后的样本与张量网络分类器收缩得到预测结果,输出一个指示各类别概率的向量(右下)。在此例中,张量网络模型相当确信地预测数字"7",因为预测向量中第七个条目(索引从0开始)最大
13.2.3 矩阵乘积态作为分类模型#
接下来,我们描述针对机器学习问题的矩阵乘积态(MPS)模型的训练过程,即优化过程。我们将特别关注MNIST数据集的分类任务。
13.2.3.1 MPS模型与预测#
回顾式(13.7)和(13.2),使用MPS进行分类的决策函数为
$$ f_{\ell} ( x ) = W_{\ell} \times \Phi ( x ) = W_{\ell}^{\mathrm{[ M P S ]}} \times ( \phi_{1} ( x_{1} ) \otimes \phi_{2} ( x_{2} ) \otimes . . . \otimes \phi_{n} ( x_{n} ) )\tag{13.14} $$其中 $\ell$ 表示不同类别的标签,$W_{\ell}^{\mathrm{[ M P S ]}}$ 是如第13.2.1节所述的权重矩阵的MPS表示。注意,在张量网络术语中,标签索引表示张量网络中的一个外部链接。因此,整个MPS对于n个输入特征有一个输出链接,以及如图13.7a所示的标签链接。这个额外链接可以通过以下形式正式添加到式(7.7)引入的MPS表示中:
$$ W_{\ell}^{[ \mathrm{MPS} ]} = \sum_{\{i \}} A_{1}^{i_{1}} A_{i_{1} , 2}^{i_{2}} \cdot . . . A_{i_{j - 1} , j}^{\ell , i_{j}} \cdot . . . A_{i_{n - 2} , n - 1}^{n - 1} A_{i_{n} , n} \left( = \left| \psi_{\ell}^{\mathrm{MPS}} \right. \right)\tag{13.15} $$
图13.7 使用矩阵乘积态(MPS)进行机器学习(ML)分类的概念。与量子系统的MPS相比,用于分类的MPS $W_{\ell}^{\mathrm{[ M P S ]}}$ 为机器学习问题的不同类别增加了一个额外链接(a)。数据样本被编码为乘积态(b)。模型通过将样本与MPS分类器收缩(c)得到预测结果,输出一个指示各类别概率的向量(d)
其中链接现在连接到MPS中的第j个张量。左括号中我们指出,权重矩阵的MPS表示也可以解释为每个标签 $\ell$ 的一组波函数。现在,给定输入数据到类量子自旋链的映射 $\Phi ( x )$,如上述式(13.10)所示(另见图13.7b),我们可以通过将所有物理指标上的映射数据与MPS收缩,对我们的MPS分类器进行单次预测。实际上,当在式(13.14)中替换MPS表示时,我们得到收缩的方程:
$$ \begin{array} {l} {{f_{\ell} ( x ) = \displaystyle \sum_{\{i \}} A_{1}^{i_{1}} A_{i_{1} , 2}^{i_{2}} \cdot \cdot \cdot A_{i_{j - 1} , j}^{\ell , i_{j}} \cdot \cdot \cdot A_{i_{n - 2} , n - 1}^{n - 1} A_{i_{n} , n}}} \\ {{{}}} \\ {{{} \times \left( \phi_{1} ( x_{1} ) \otimes \phi_{2} ( x_{2} ) \otimes \ldots \otimes \phi_{n} ( x_{n} ) \right) ~ .}} \end{array}\tag{13.16} $$注意到在这个收缩之后唯一开放的链接是标签链接,这正符合分类任务的要求。事实上,通过使用这个自旋映射 $\Phi ( x )$,我们可以将每个数据样本(即 MNIST 示例中的每张图片)解释为具有波函数 $| \Phi \rangle = | \phi_{1} , \phi_{2} , . . . , \phi_{n} \rangle$ 的乘积态。在这种解释下,决策函数 $f^{\ell} ( x )$ 可以被视为计算 $\langle \psi_{\ell}^{\mathrm{MPS}} | \Phi \rangle$ 的重叠度,如图 13.7c 所示。因此,分类结果对应于与“量子化”数据样本具有最高重叠度的状态 $\psi_{\ell}^{\mathrm{{M P S}}}$。如第 13.1.1 节所示,我们最终得到向量化的决策函数,如式 (13.2) 所示,其向量索引遍历机器学习问题中的不同类别,即一个具有索引的单链接张量(见图 13.7d)。
13.2.3.2 训练一个 MPS 模型#
在介绍了利用 MPS 进行预测的概念之后,我们现在将注意力转向 MPS 的训练过程。在此过程中,我们调整模型的可调参数 $\theta$(对于 MPS,即其张量的各个元素),以最大化预测精度或最小化相对于给定数据集的代价函数 $C ( \theta )$,如第 13.1.2 节所述。为此,我们可以借鉴量子力学中用于张量网络的、类似 DMRG 的变分算法的核心思想:如第 7.1.3 节对 MPS 的介绍和第 8.1.4 节对 TTN 中基态搜索的详细说明,其思想是在网络中每个单独张量的层面上重新表述问题。通过扫描整个网络,逐个迭代地解决每个张量的局部问题,我们就能解决全局优化任务。因此,将张量网络变分算法背后的概念应用于待解决的机器学习问题所需数学步骤如下:
- 将全局优化问题重新表述为针对单个张量的局部问题。
- 针对局部问题优化单个张量。
- 在局部迭代优化网络的过程中控制全局收敛性。
1. 将全局优化重新表述为局部问题#
从第一步开始,我们将采用第 13.1.2 节中介绍的二次代价函数
$$ C ( \theta ) = \frac{1} {2} \frac{1} {N_{T}} \sum_{\tilde{n} = 1}^{N_{T}} \sum_{\ell = 1}^{L} \left( f^{\ell} ( x_{\tilde{n}} , \theta ) - y_{\tilde{n}}^{\ell} \right)^{2} .\tag{13.17} $$作为演示示例。我们将在过程中看到,以下过程很容易适用于任何可微的代价函数 $C ( \theta )$。实际上,当尝试优化张量网络中的局部张量,即张量 $A_{k}$ 的参数 $\theta_{k} ~ \in ~ \theta$ 时,我们计算代价函数对可变参数 $\theta_{k}$ 的导数,同时保持所有其他张量固定。从以下计算开始,
$$ \frac{\partial C ( \theta )} {\partial \theta_{k}} = \frac{1} {N_{T}} \sum_{\tilde{n} = 1}^{N_{T}} \sum_{\ell = 1}^{L} \left( f^{\ell} ( x_{\tilde{n}} , \theta ) - y_{\tilde{n}}^{\ell} \right) \frac{\partial f^{\ell} ( x_{\tilde{n}} , \theta )} {\partial \theta_{k}} ,\tag{13.18} $$我们必须计算决策函数 $f^{\ell} ( x_{\tilde{n}} , \theta ) = W_{\ell} ( \theta ) \times \Phi ( x_{\tilde{n}} )$ 的导数,我们已经在式 (13.14) 和 (13.16) 中对此进行了更详细的阐述。由于映射后的样本 $\Phi ( x_{\tilde{n}} )$ 独立于可调的 MPS 参数 $\theta$,我们只需根据第 5.3.1 节中介绍的方法,对 MPS 关于张量 $A_{k}$ 的可调参数 $\theta_{k}$ 进行微分。因此,决策函数的导数变为
$$ \begin{array} {l} {\displaystyle \frac{\partial f^{\ell} ( {x_{\tilde{n}}} , \theta )} {\partial \theta_{k}} = \frac{\partial W_{\ell} ( \theta )} {\partial \theta_{k}} \Phi ( {x_{\tilde{n}}} )} \\ {= \left( \frac{\partial} {\partial \theta_{k}} \sum_{\{i \}} A_{1}^{i_{1}} A_{i_{1} , 2}^{i_{2}} \cdot . . . A_{i_{j - 1} , j}^{\ell , i_{j}} \cdot . . . A_{i_{n - 2} , n - 1}^{n - 1} A_{i_{n} , n} \right) \Phi ( {x_{\tilde{n}}} )} \end{array}\tag{13.19} $$
图13.8:矩阵乘积态(MPS)的机器学习(ML)优化概念示意图。为了计算网络中第k个张量 $A_{k}$ 关于二次代价函数的梯度,我们需要求出MPS决策函数(a)的导数,该导数可以写成收缩形式(b)。一个表示已知(即真实)值与预测值之差的辅助张量(c)有助于说明计算过程。最后,可以通过对(d)所示收缩结果下的所有样本进行加权来计算梯度。
现在我们首先假设目标张量 $A_{k}$ 没有连接标签链接,即 $k \neq j$,如图13.8a所示。为了简化计算,我们可以为样本 $x_{\tilde{n}}$ 定义 $A_{k}$ 的环境(environment) $\tilde{\Phi}_{k} ( x_{\tilde{n}} )$,使得
$$ f^{\ell} ( x_{\tilde{n}} , \theta ) = \left( \sum_{\left\{i \right\}} A_{1}^{i_{1}} A_{i_{1} , 2}^{i_{2}} \ldots A_{i_{k - 1} , k}^{i_{k}} \ldots A_{i_{j - 1} , j}^{\ell , i_{j}} \ldots A_{i_{n - 2} , n - 1}^{n - 1} A_{i_{n} , n} \right) \Phi ( x_{\tilde{n}} )\tag{13.20} $$$$ \equiv \sum_{\{i \}} \tilde{\Phi}_{k} ( x_{\tilde{n}} )_{i_{k - 1}}^{\ell , i_{k}} A_{i_{k - 1} , k}^{i_{k}} .\tag{13.21} $$实际上,这个环境可以被高效地大部分收缩,如图13.8b所示。这样,公式(13.19)的导数等于
$$ \frac{\partial f^{\ell} ( x_{\tilde{n}} , \theta )} {\partial \theta_{k}} = \tilde{\Phi} ( x_{\tilde{n}} )\tag{13.22} $$并且代价函数的导数变为
$$ \frac{\partial C ( \theta )} {\partial \theta_{k}} = \frac{1} {N_{T}} \sum_{\tilde{n} = 1}^{N_{T}} \sum_{\ell = 1}^{L} \left( f^{\ell} ( x_{\tilde{n}} , \theta ) - y_{\tilde{n}}^{\ell} \right) \tilde{\Phi} ( x_{\tilde{n}} ) .\tag{13.23} $$2. 单一张量的优化#
在得到待优化张量 $A_{k}$ 的代价函数及其导数后,我们现在可以应用通用的梯度下降(gradient descent)方法来优化该张量的参数。因此,优化步骤为
$$ A_{k}^{\mathrm{[ n e w ]}} = A_{k} + \alpha \Delta A_{k} \ ,\tag{13.24} $$其中 $\alpha$ 表示步长,$\Delta A_{k}$ 是我们代价函数的梯度。在实际计算中,我们针对更新批次中的每个样本,计算已知(即真实)值与预测值 $f^{\bar{\ell}}$ 之间的差值,作为辅助步骤(见图13.8)。结果将用于计算总梯度,如图13.8所示。注意,在标签链接上的收缩取决于需要优化的张量 $A_{k}$:如果标签链接附着在张量A上,即 $A_{k} = A_{i_{k - 1} , k}^{\ell , i_{k}}$,那么该链接在公式(13.21)中仍保留在 $A_{k}$ 上,而不是其环境中。因此,在对标签链接张量进行优化时,维度会相应变化。
梯度下降法可以按第13.1.2节所述的方式执行。如本节前面所述,这种为单个张量推导梯度并利用梯度下降法更新的过程,可以直接应用于任何可微的代价函数和任何张量网络几何结构。
3. 迭代局部优化网络以实现全局收敛#
一旦我们具备了单独优化网络中每个张量的要素,我们就可以直接应用类似于 DMRG 优化的思想,通过扫描(sweeping)整个网络,逐个优化所有张量。当我们完成一个训练周期(epoch)并遍历整个网络后,可以根据需要迭代尽可能多的周期,直到全局收敛。
整体优化的计算复杂度为
$$ \zeta_{o p t} = O \left( N_{T} N m^{2} N_{L} d \right) ,\tag{13.25} $$其中 $m$ 表示 MPS 的键维度,$N$ 是张量数量,$N_{L}$ 是标签数量,$N_{T}$ 是训练样本数量,$d$ 是局部特征映射的维度。在实际场景中,影响总体成本的主要因素是大量训练输入 $(N_{T})$。因此,最小化这一成本具有重要意义。这可以通过利用随机梯度下降或以批次进行训练来实现。另一种有效优化计算速度的方法是并行化处理 $N_{T}$ 批次的计算。
最后值得一提的是,文献 [611] 提出了包含空间截断的类似优化算法,文献 [624] 则针对隐马尔可夫模型(hidden Markov model)提出了类似方法。
13.3 习题#
利用前面练习中开发的代码,将 MPS 对象扩展到机器学习应用,即在 MPS 的一个张量中加入标签链接,并添加编码数据及计算预测值的基本操作。
利用上述工具,编写一个基于 MPS 的张量网络机器学习算法,并将其应用于 MNIST 数据集 [613]。将测试集上的准确率与其他方法的结果进行比较。