{ "cells": [ { "cell_type": "markdown", "id": "chronic-tunisia", "metadata": {}, "source": [ "# 变分影子量子学习\n", "\n", " Copyright (c) 2021 Institute for Quantum Computing, Baidu Inc. All Rights Reserved. " ] }, { "cell_type": "markdown", "id": "metric-peace", "metadata": {}, "source": [ "## 概览\n", "\n", "本教程我们将讨论变分影子量子学习(variational shadow quantum learning, VSQL)[1] 的原理,以及如何使用 VSQL 来完成一个**二分类**任务。VSQL 是一个在监督学习框架下的量子–经典混合算法。它使用了参数化量子电路(parameterized quantum circuit, PQC)和经典影子(classical shadow),和通常使用的变分量子算法(variational quantum alogorithm, VQA)不同的是,VSQL 只从子空间获取局部特征,而不是从整个希尔伯特空间获取特征。\n", "\n", "### 背景\n", "\n", "我们考虑一个 $k$ 分类问题。输入是一个由 $N$ 个带标签的数据点组成的集合 $D=\\left\\{(\\mathbf{x}^i, \\mathbf{y}^i)\\right\\}_{i=1}^{N}$,这里的 $\\mathbf{x}^i\\in\\mathbb{R}^{m}$ 表示数据点,$\\mathbf{y}^i$ 是这个数据点的标签。**学习过程的目的在于训练一个能尽可能准确预测所有数据点标签的模型 $\\mathcal{F}$。** 我们需要注意,$\\mathbf{y}^i$ 是一个长度为 $k$ 的独热向量(one-hot vector),将标签值表示为独热向量是机器学习领域中的常规做法。我们举一个例子,当 $k=3$ 时,$\\mathbf{y}^{a}=[1, 0, 0]^\\text{T}$、$\\mathbf{y}^{b}=[0, 1, 0]^\\text{T}$ 和 $\\mathbf{y}^{c}=[0, 0, 1]^\\text{T}$ 分别表示第 $a$ 个、第 $b$ 个和第 $c$ 个数据点属于第一类、第二类和第三类。 \n", "在 VSQL 中,$\\mathcal{F}$ 由两部分组成:参数化局部量子电路和经典全连接神经网络(fully-connected neural network, FCNN)。首先,我们需要预处理经典信息,将经典信息编码到量子态。然后我们以卷积的方式将 $U(\\mathbf{\\theta})$ 连续作用在局部量子比特上,这里的 $\\mathbf{\\theta}$ 是参数化局部电路的参数。在这些局部量子比特上进行测量就能得到我们想要的期望值。除此之外,我们还需要一个经典 FCNN 来做数据的后处理。 \n", "我们可以把 VSQL 得到的 $\\mathcal{F}$ 的输出写为 $\\tilde{\\mathbf{y}}^i = \\mathcal{F}(\\mathbf{x}^i)$。这里的 $\\tilde{\\mathbf{y}}^i$ 是一个概率分布,$\\tilde{y}^i_j$ 表示第 $i$ 个数据点属于第 $j$ 类的概率。为了尽可能地预测到准确的标签,我们将预测标签 $\\tilde{\\mathbf{y}}^i$ 和实际标签 $\\mathbf{y}^i$ 之间的累计差距作为损失函数 $\\mathcal{L}$ 进行优化: \n", "\n", "$$\n", "\\mathcal{L}(\\mathbf{\\theta}, \\mathbf{W}, \\mathbf{b}) = -\\frac{1}{N}\\sum\\limits_{i=1}^{N}\\sum\\limits_{j=1}^{k}y^i_j\\log{\\tilde{y}^i_j}, \\tag{1}\n", "$$\n", "\n", "其中 $\\mathbf{W}$ 和 $\\mathbf{b}$ 是经典 FCNN 的权重(weight)和偏置(bias)。注意这个损失函数是由交叉熵(cross-entropy)[2] 推导得到的。\n", "\n", "### 方案流程 \n", "\n", "![pipeline](./figures/vsql-fig-pipeline-cn.png \"图1:VSQL 的流程图\")\n", "