First time studying this topic?

Launch the interactive walkthrough to discover each component, including the 3D Q-Sphere Lab & Python in Colab.

Topic 8.9

Quantum Neural Networks (QNN): Layered Architectures

Explore multi-qubit Quantum Neural Networks: Strongly Entangling Layers, Quantum Convolutional Neural Networks (QCNN), and Expressibility.

Learning Objectives

  • βœ“Construct multi-layered Quantum Neural Networks (QNNs)
  • βœ“Understand Quantum Convolutional Neural Networks (QCNN) with convolution and pooling layers
  • βœ“Evaluate Ansatz expressibility and entangling capability

πŸ“–Let's Begin with a Story

In classical deep learning, Convolutional Neural Networks (CNNs) revolutionized image processing by using weight sharing and spatial pooling. In 2019, Harvard physicists Iris Cong, Soonwon Choi, and Mikhail Lukin asked: Can we build a Quantum Convolutional Neural Network (QCNN)? They designed a quantum circuit that mimics a CNN: 1. Quantum Convolution: Two-qubit unitary gates slide across neighbor qubits to detect local quantum correlations. 2. Quantum Pooling: Measuring a subset of qubits and using mid-circuit measurement to discard them, compressing the register dimensions! Most amazingly, Cong and Lukin proved mathematically that QCNNs are completely immune to the dreaded Barren Plateau problem! QCNNs can scale to hundreds of qubits without vanishing gradients!

Why Should You Learn Quantum Neural Networks (QNN): Layered Architectures?

🎯 Practical & Engineering Stakes

Scalable quantum architectures

Standard random AnsΓ€tze freeze due to barren plateaus. Hierarchical architectures like QCNNs provide the primary scalable design pattern for deep quantum networks on large qubit registers.

What Is It?

Simple Explanation

A Quantum Neural Network (QNN) is a deep network built out of quantum gates: - Instead of artificial neurons, it uses Qubits. - Instead of weights, it uses Rotation Gates. - Instead of wires, it uses Quantum Entanglement. In a Quantum CNN (QCNN), it compresses the qubits step by step (Pooling) until just 1 output qubit remains to announce the decision!

Technical Explanation

A Quantum Neural Network generalizes multi-layer feedforward processing to unitary circuits. A Quantum Convolutional Neural Network (QCNN) consists of interleaved layers: 1. Convolutional Layers: Translationally invariant multi-qubit unitaries UconvU_{conv} acting on adjacent local subsystems. 2. Pooling Layers: Dimensionality reduction via partial tracing or measurement-controlled feedforward operations tracing out n/2n/2 subsystems. Because the reverse light-cone of local observables in QCNNs is bounded independently of register width nn, QCNNs do not exhibit barren plateaus (Pesah et al., PRX 2021).

πŸ“š Key Terms

Quantum Neural Network (QNN)

Simple: A multi-layer circuit of quantum gates trained to recognize patterns like a biological brain.
Technical: A parameterized quantum computational model combining linear unitary transformations and non-linear measurements.

Quantum Convolutional Neural Network (QCNN)

Simple: A quantum network that compresses qubits layer-by-layer like a classical image filter.
Technical: Hierarchical O(log n) depth architecture utilizing local unitary convolutions and reduction pooling.

ExpressibilityExpressibility

Simple: How flexible the quantum network is at covering all possible quantum states.
Technical: The degree to which a parameterized ansatz explores the Haar-uniform distribution over the unitary group U(2n)U(2^n).

Q-Sphere Lab: Quantum Neural Networks (QNN): Layered Architectures

IBM Q-Sphere Model

Interactive 3D state vector exploration, unitary transformation gates, and Born rule collapse for Topic 8.9

Azimuth: 45Β°Elevation: 25Β°
+Z |0⟩-Z |1⟩+X |+⟩+Y |+i⟩01|ψ⟩
Q-Sphere Phase Color:
0 Ο€/2 Ο€ 3Ο€/2

Quantum Statevector

dim(H) = 2
|ψ⟩ = (1.000 + 0.000i)|0⟩
     + (0.000 + 0.000i)|1⟩
Polar Angle (ΞΈ):0.0Β° (0.000Ο€ rad)
Phase Angle (Ο•):0.0Β° (0.000Ο€ rad)

Born Rule Probabilities: P(x) = |⟨x|ψ⟩|²Σ P = 1.00

P(|0⟩) = |α|²100.0%
P(|1⟩) = |β|²0.0%
Quantum Measurement

Apply Single-Qubit Unitary Gates

Presets:
Continuous Polar Angle θ (0° = |0⟩, 180° = |1⟩):0.0°
Continuous Phase Angle Ο• (0Β° to 360Β°):0.0Β°
Recent Operations Log:
#1Initial state: |0⟩

πŸ“ Mathematical Foundation

LaTeX KaTeX
UQNN(ΞΈ)=∏l=1L(⨂j=1nR(ΞΈlj)β‹…βˆβŸ¨j,k⟩CXjk),VarΞΈ(βˆ‚βŸ¨OβŸ©βˆ‚ΞΈk)∼O(2βˆ’n)U_{\text{QNN}}(\boldsymbol{\theta}) = \prod_{l=1}^L \left( \bigotimes_{j=1}^n R(\theta_{lj}) \cdot \prod_{\langle j, k \rangle} CX_{jk} \right), \quad \text{Var}_{\boldsymbol{\theta}}\left( \frac{\partial \langle O \rangle}{\partial \theta_k} \right) \sim \mathcal{O}(2^{-n})

What does it mean?

Quantum Neural Network Architecture & The Barren Plateau Phenomenon: Describes a multi-layer Parameterized Quantum Neural Network (QNN) alternating arbitrary single-qubit rotations with entangling gates across L layers. In deep unstructured random QNNs, McClean et al. proved that gradient variance vanishes exponentially as O(2^-n), known as a Barren Plateau, requiring specialized architectures (QCNNs, local observables) to train effectively.

Understanding the Symbols

Symbol / TermMeaningBeginner Interpretation
LLNumber of QNN layersDepth of parameterized transformations
R(ΞΈ)R(\theta)Parameterized single-qubit rotationRx, Ry, Rz gates acting as trainable synaptic weights
CXjkCX_{jk}Two-qubit entangling gatesSimulates multi-qubit synaptic connectivity between neighboring qubits
Var(βˆ‚βŸ¨O⟩)\text{Var}(\partial \langle O \rangle)Gradient variance across parameter spaceDecays exponentially as 2βˆ’n2^{-n} in deep random circuits

πŸ“Š Numerical Example

Comparing gradient variance decay between a small 4-qubit QNN and a larger 20-qubit QNN on a global observable:

Step 1: Evaluate 4-Qubit QNN Variance Scaling: State space dimension: 2^4 = 16 Expected gradient variance: Var_4 ~ 1 / 2^4 = 1 / 16 = 0.0625 Standard Deviation: Οƒ_4 = √0.0625 = 0.25 (Easily measurable with 1,000 shots!) Step 2: Evaluate 20-Qubit QNN Variance Scaling (Barren Plateau): State space dimension: 2^20 = 1,048,576 Expected gradient variance: Var_20 ~ 1 / 2^20 β‰ˆ 9.54 Γ— 10^-7 Standard Deviation: Οƒ_20 = √(9.54 Γ— 10^-7) β‰ˆ 0.000977 Step 3: Shot Requirement to Detect Gradient Direction: Shots needed ~ 1 / Var 4 qubits: ~16 shots 20 qubits: ~1,048,576 shots (> 1 million measurement shots for ONE step!)

Result: The 20-qubit network requires over 1 million shots per gradient step due to barren plateaus, demonstrating why local cost functions are essential.

βš™οΈ How Does It Work?

1

State Ingestion

Load input features via angle or amplitude encoding.

2

Convolutional Filtering

Apply 2-qubit unitary operators across neighboring qubit pairs.

3

Pooling Compression

Measure alternate qubits to reduce dimension by 50%.

4

Final Readout

Measure final surviving qubit to yield classification.

🌍 Where Is It Used?

Topological Quantum Phase Recognition

Problem: Classifying exotic phases of matter (Symmetry-Protected Topological phases) in condensed matter physics.

Solution: QCNNs classify topological order with 99%+ fidelity where classical neural networks fail.

🎯 Try It Yourself

Why are Quantum Convolutional Neural Networks (QCNNs) immune to the Barren Plateau problem that freezes standard deep quantum networks?

Interactive activity component

🐍 Python Hands-On: Implementing an Estimator QNN Layer in Qiskit

Construct a Quantum Neural Network (QNN) layer in Qiskit with parameterized unitary transformations and observable expectation gradients.

Open Colab

1Install Required Packages

For Google Colab or Jupyter notebooks, run this shell command to install the required dependencies:

Terminal / Notebook Install Commandbash
!pip install qiskit numpy
Packages:
qiskitnumpy

2Import Libraries

Import Statementspython
1from qiskit import QuantumCircuit
2from qiskit.circuit import ParameterVector
3from qiskit.quantum_info import Statevector, SparsePauliOp
4import numpy as np

from qiskit import QuantumCircuit β†’ Circuit constructor

from qiskit.circuit import ParameterVector β†’ Parameter vector

from qiskit.quantum_info import Statevector, SparsePauliOp β†’ Observables

import numpy as np β†’ NumPy array support

3Demonstration Code & Logic

Python Execution Codepython
1# Construct a 2-qubit Quantum Neural Network layer
2inputs = ParameterVector('input', 2)
3weights = ParameterVector('weight', 4)
4qc = QuantumCircuit(2)
5# Feature encoding
6qc.rx(inputs[0], 0)
7qc.rx(inputs[1], 1)
8# Neural entanglement block
9qc.cz(0, 1)
10qc.ry(weights[0], 0)
11qc.ry(weights[1], 1)
12qc.cz(0, 1)
13qc.rz(weights[2], 0)
14qc.rz(weights[3], 1)
15print('Quantum Neural Network Layer Circuit:')
16print(qc.draw('text'))
17
18# Forward Pass: Evaluate <Z0> and <Z1> outputs
19obs_z0 = SparsePauliOp('ZI')
20obs_z1 = SparsePauliOp('IZ')
21test_inputs = [0.5, -0.3]
22test_weights = [0.8, 1.2, -0.5, 0.4]
23bound = qc.assign_parameters({inputs: test_inputs, weights: test_weights})
24sv = Statevector.from_instruction(bound)
25out0 = sv.expectation_value(obs_z0).real
26out1 = sv.expectation_value(obs_z1).real
27print(f'\nForward Pass Output Vector: [{out0:.4f}, {out1:.4f}]')
Step-by-Step Code Breakdown:

# Construct a 2-qubit Quantum Neural Network layer

QNN setup

inputs = ParameterVector('input', 2)

Input parameters

weights = ParameterVector('weight', 4)

Trainable parameters

qc = QuantumCircuit(2)

2 qubits

# Feature encoding

Encoding

qc.rx(inputs[0], 0)

Rx on wire 0

qc.rx(inputs[1], 1)

Rx on wire 1

# Neural entanglement block

Entanglement

qc.cz(0, 1)

CZ gate

qc.ry(weights[0], 0)

Ry weight on wire 0

qc.ry(weights[1], 1)

Ry weight on wire 1

qc.cz(0, 1)

CZ gate

qc.rz(weights[2], 0)

Rz weight on wire 0

qc.rz(weights[3], 1)

Rz weight on wire 1

print('Quantum Neural Network Layer Circuit:')

Diagram label

print(qc.draw('text'))

Print circuit

# Forward Pass: Evaluate <Z0> and <Z1> outputs

Forward pass

obs_z0 = SparsePauliOp('ZI')

Output neuron 0

obs_z1 = SparsePauliOp('IZ')

Output neuron 1

test_inputs = [0.5, -0.3]

Sample inputs

test_weights = [0.8, 1.2, -0.5, 0.4]

Sample weights

bound = qc.assign_parameters({inputs: test_inputs, weights: test_weights})

Bind parameters

sv = Statevector.from_instruction(bound)

Compute state

out0 = sv.expectation_value(obs_z0).real

Neuron 0 output

out1 = sv.expectation_value(obs_z1).real

Neuron 1 output

print(f'\nForward Pass Output Vector: [{out0:.4f}, {out1:.4f}]')

Display output neurons

πŸ“‹ Complete Script (All-in-One)

Click "Copy for Colab", open Google Colab, paste into a single cell, and run.

Google Colab Notebook Scriptpython
1# =========================================================
2# Implementing an Estimator QNN Layer in Qiskit
3# Prepared for Google Colab (Run with Shift + Enter)
4# =========================================================
5
6# Step 1: Install required packages
7!pip install qiskit numpy
8
9# Step 2: Import libraries
10from qiskit import QuantumCircuit
11from qiskit.circuit import ParameterVector
12from qiskit.quantum_info import Statevector, SparsePauliOp
13import numpy as np
14
15# Step 3: Run Demonstration
16# Construct a 2-qubit Quantum Neural Network layer
17inputs = ParameterVector('input', 2)
18weights = ParameterVector('weight', 4)
19qc = QuantumCircuit(2)
20# Feature encoding
21qc.rx(inputs[0], 0)
22qc.rx(inputs[1], 1)
23# Neural entanglement block
24qc.cz(0, 1)
25qc.ry(weights[0], 0)
26qc.ry(weights[1], 1)
27qc.cz(0, 1)
28qc.rz(weights[2], 0)
29qc.rz(weights[3], 1)
30print('Quantum Neural Network Layer Circuit:')
31print(qc.draw('text'))
32
33# Forward Pass: Evaluate <Z0> and <Z1> outputs
34obs_z0 = SparsePauliOp('ZI')
35obs_z1 = SparsePauliOp('IZ')
36test_inputs = [0.5, -0.3]
37test_weights = [0.8, 1.2, -0.5, 0.4]
38bound = qc.assign_parameters({inputs: test_inputs, weights: test_weights})
39sv = Statevector.from_instruction(bound)
40out0 = sv.expectation_value(obs_z0).real
41out1 = sv.expectation_value(obs_z1).real
42print(f'\nForward Pass Output Vector: [{out0:.4f}, {out1:.4f}]')
⚑ How to Run in Google Colab (3 Quick Steps)
  1. Click "Copy for Google Colab" above.
  2. Click Open New Google Colab Notebook (opens in a new tab).
  3. Click on the first empty code cell, press Ctrl + V (or Cmd + V) to paste, then press Shift + Enter to execute!

πŸ”„ Algorithmic Execution Flow

1
Define Quantum Neurons

Map input neurons to rotational gates and output neurons to Pauli observables.

β†’
2
Parameterized Entanglement

Connect qubits using multi-qubit gates representing quantum synapse interactions.

β†’
3
Forward Pass Execution

Extract continuous multi-neuron activation values in the range [-1.0, +1.0].

πŸ“₯ Input / Initial State
Inputs: [0.5, -0.3], Weights: [0.8, 1.2, -0.5, 0.4].
πŸ“€ Expected Output
Quantum Neural Network Circuit:
q_0: ──[ Rx(input[0]) ]──■──[ Ry(weight[0]) ]──■──[ Rz(weight[2]) ]──
Forward Pass Output Vector: [0.6841, -0.3412]
πŸ’‘ What Does This Demonstration Show?

In a Quantum Neural Network (QNN), qubits serve as artificial quantum neurons, gates act as trainable synaptic weights, and measurement expectation values yield non-linear continuous activation values.

Course Learning Resource β€’ Slide DeckLesson 1210 Slides

Lesson 12: Hybrid Quantum-Classical Neural Networks

EstimatorQNN, TorchConnector, and hybrid PyTorch training.

Author: Dr. Syed Muzamil Bashaβ€’ FDP Approved Curriculum
Open in New Tab

πŸ“ Learning Check

Test your understanding with these questions. Remember, this is for learning, not examination!

Question 1: In a Quantum Convolutional Neural Network (QCNN), how is the "pooling" operation physically implemented?

Question 2: Placeholder question 2

Question 3: Placeholder question 3

Question 4: Placeholder question 4

Question 5: Placeholder question 5