文章目录
- Week 33: 量子深度学习入门:参数化量子电路与混合模型构建
- 摘要
- Abstract
- 1. 理论基础:量子神经元
- 1.1 从比特到量子比特 (Qubit)
- 1.2 参数化量子电路
- 2. 量子梯度下降
- 2.1 量子电路的训练?
- 3. 构建经典-量子混合网络
- 3.1 环境配置与电路定义
- 3.2 混合模型架构
- 4. 量子模拟的意义与瓶颈
- 4.1 GPU模拟的可行性
- 4.2 表达能力
- 4.3 贫瘠高原问题
- 总结
Week 33: 量子深度学习入门:参数化量子电路与混合模型构建
摘要
本周初探了量子机器学习领域。利用GPU对量子电路进行了模拟。本周理解并构建参数化量子电路,通过将其视为一个可微的“量子层”嵌入到经典神经网络中,实现了经典-量子混合模型的端到端训练。
Abstract
This week, I made initial forays into the field of quantum machine learning. Utilising GPUs, I simulated quantum circuits. I gained an understanding of and constructed parameterised quantum circuits, embedding them as differentiable ‘quantum layers’ within classical neural networks to achieve end-to-end training of classical-quantum hybrid models.
1. 理论基础:量子神经元
1.1 从比特到量子比特 (Qubit)
经典深度学习的基础是比特(0 或 1),而量子计算的基础是 Qubit。一个 Qubit 的状态∣ ψ ⟩ |\psi\rangle∣ψ⟩可以表示为基态∣ 0 ⟩ |0\rangle∣0⟩和∣ 1 ⟩ |1\rangle∣1⟩的线性叠加:
∣ ψ ⟩ = α ∣ 0 ⟩ + β ∣ 1 ⟩ |\psi\rangle = \alpha |0\rangle + \beta |1\rangle∣ψ⟩=α∣0⟩+β∣1⟩
其中α , β ∈ C \alpha, \beta \in \mathbb{C}α,β∈C且∣ α ∣ 2 + ∣ β ∣ 2 = 1 |\alpha|^2 + |\beta|^2 = 1∣α∣2+∣β∣2=1。这不仅仅是概率分布,而是复数概率幅,意味着量子态之间可以发生干涉 (Interference)——这是量子计算算力的核心来源。
1.2 参数化量子电路
在深度学习中,我们通过调整权重W WW来拟合函数。在量子计算中,我们通过调整量子门 (Quantum Gates) 的旋转角度θ \thetaθ来演化量子态。
一个典型的 PQC 包含三个阶段:
- 编码:将经典数据x xx转化为量子态∣ ψ x ⟩ |\psi_x\rangle∣ψx⟩(例如使用 Rotation Encoding)。
- 演化 (Ansatz):应用一系列带参数θ \thetaθ的旋转门(如R x ( θ ) , R y ( θ ) R_x(\theta), R_y(\theta)Rx(θ),Ry(θ))和纠缠门(如 CNOT),将量子态变换为∣ ψ ( θ , x ) ⟩ |\psi(\theta, x)\rangle∣ψ(θ,x)⟩。这等价于经典网络中的前向传播。
- 测量:对量子态进行测量,计算期望值⟨ Z ⟩ \langle Z \rangle⟨Z⟩,将量子信息坍缩回经典数值输出。
数学上,这个过程是:
f ( x ; θ ) = ⟨ 0 ∣ U † ( x ) V † ( θ ) O ^ V ( θ ) U ( x ) ∣ 0 ⟩ f(x; \theta) = \langle 0| U^\dagger(x) V^\dagger(\theta) \hat{O} V(\theta) U(x) |0\ranglef(x;θ)=⟨0∣U†(x)V†(θ)O^V(θ)U(x)∣0⟩
这就构建了一个量子神经元。
2. 量子梯度下降
2.1 量子电路的训练?
要将量子电路嵌入 PyTorch,必须能够计算梯度∂ f / ∂ θ \partial f / \partial \theta∂f/∂θ。
对于常用的旋转门(如R x ( θ ) = e − i θ X / 2 R_x(\theta) = e^{-i\theta X/2}Rx(θ)=e−iθX/2),我们使用参数平移规则 (Parameter-Shift Rule) 来计算解析梯度:
∂ f ∂ θ = f ( θ + π 2 ) − f ( θ − π 2 ) 2 \frac{\partial f}{\partial \theta} = \frac{f(\theta + \frac{\pi}{2}) - f(\theta - \frac{\pi}{2})}{2}∂θ∂f=2f(θ+2π)−f(θ−2π)
这非常神奇:它意味着我们不需要深入量子态的内部(那通常是指数级复杂的),只需要在两个不同的参数点运行电路,就能精确算出梯度。这使得 PQC 可以无缝接入 Backpropagation 算法。
3. 构建经典-量子混合网络
使用了PennyLane库并配合 PyTorch 接口可以利用 GPU 加速模拟(模拟量子门本质上是矩阵乘法。
3.1 环境配置与电路定义
importpennylaneasqmlimporttorchimporttorch.nnasnn# 定义量子设备 (使用 default.qubit 模拟器)n_qubits=4dev=qml.device("default.qubit",wires=n_qubits)@qml.qnode(dev,interface="torch")defquantum_circuit(inputs,weights):""" inputs: 经典输入数据 (Batch, n_qubits) weights: 可训练参数 """# 1. 编码层: 将经典数据映射到量子态 (Angle Encoding)# 类似于 input layerqml.AngleEmbedding(inputs,wires=range(n_qubits))# 2. 变分层 (Ansatz): 类似于 hidden layers# BasicEntanglerLayers 包含了一层旋转门和一层纠缠门qml.BasicEntanglerLayers(weights,wires=range(n_qubits))# 3. 测量层: 输出每个 qubit 的 Pauli-Z 期望值return[qml.expval(qml.PauliZ(wires=i))foriinrange(n_qubits)]3.2 混合模型架构
我们将上述量子电路包装成一个QuantumLayer,夹在两个经典 Linear 层之间,构建一个用于 MNIST 分类的混合模型。
classHybridModel(nn.Module):def__init__(self):super().__init__()# 经典预处理层: 将 28x28 图片降维到 4 (对应 Qubit 数)self.clayer_1=nn.Linear(28*28,n_qubits)# 量子层参数初始化# 2层结构,每层每个qubit有一个旋转参数weight_shapes={"weights":(2,n_qubits)}self.qlayer=qml.qnn.TorchLayer(quantum_circuit,weight_shapes)# 经典后处理层: 将量子输出映射到 10 类self.clayer_2=nn.Linear(n_qubits,10)defforward(self,x):# x shape: (batch, 1, 28, 28)x=x.view(-1,28*28)x=self.clayer_1(x)x=torch.tanh(x)# 将数据压缩到 [-1, 1] 或 [0, pi] 供量子编码# 进入量子层# 输入是经典的,内部演化是量子的,输出又是经典的x=self.qlayer(x)x=self.clayer_2(x)returnx# 之后可以像训练普通 CNN 一样使用 CrossEntropyLoss 和 SGD 训练此模型4. 量子模拟的意义与瓶颈
4.1 GPU模拟的可行性
真正的量子计算机(QPU)目前噪音很大(NISQ 时代),且访问昂贵。
但在 GPU 上模拟量子电路,本质上是在进行大规模的复数矩阵乘法。
- N NN个 Qubits 的状态向量大小是2 N 2^N2N。
- 对于N < 30 N < 30N<30,现代 GPU (如 A100) 可以极快地进行全状态向量模拟。
这让我们可以在没有量子计算机的情况下,验证量子算法的逻辑和梯度下降的可行性。
4.2 表达能力
研究表明,PQC 的表达能力与量子纠缠(Entanglement)密切相关。纠缠门(如 CNOT)让 Qubit 之间产生关联,这在数学上类似于经典网络中的非线性激活函数。没有纠缠的量子电路,仅仅是线性变换,表达能力有限。
4.3 贫瘠高原问题
这是 QML 领域的“梯度消失”问题。当量子电路过深或 Quibit 过多时,损失函数的梯度方差会指数级衰减至 0。这使得训练深层量子网络极其困难。这也解释了为什么目前的 QML 架构多采用 “浅层量子 + 深层经典” 的三明治结构。
总结
本周对参数化量子神经网络进行了初步的了解,这周的学习让我明白,QML 不是要取代经典深度学习,而是作为一种高性能的Kernel或特征提取器,与经典网络协同工作。接下来的学习将进一步了解如何设计更好的 Ansatz,以捕捉数据中经典方法难以察觉的相关性。