Skip to content

About

Quantum Neural Network binary classifier using parameterized quantum circuits built from scratch with Qiskit

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Quantum Neural Network: Parameterized Quantum Circuit Classifier

A production-quality implementation of a Quantum Neural Network (QNN) using parameterized quantum circuits (PQCs) for binary classification. This project demonstrates the intersection of quantum computing and machine learning, showcasing practical skills in both domains.

Overview

This implementation builds a quantum classifier from scratch using Qiskit (core library, v1.0+), without relying on higher-level packages like qiskit-machine-learning. The QNN learns to classify non-linearly separable data (the two-moons problem) by optimizing quantum circuit parameters through classical gradient-free optimization.

Key Concepts

Parameterized Quantum Circuits (PQCs): A QNN is fundamentally a quantum circuit with:

  1. Feature encoding layer: Encodes classical input data into quantum states
  2. Parameterized ansatz layers: Learnable quantum gates (RY rotations)
  3. Measurement: Extracting classical information via expectation values

Why Quantum? Quantum circuits can express complex feature spaces that may be classically expensive, leveraging quantum entanglement and superposition for pattern recognition in high-dimensional spaces.


Architecture

     Classical Input Data (2 features)
              ↓
    ╔═════════════════════╗
    ║  Feature Map        ║
    ║  RY(π·x₀) on Q0     ║  Angle Encoding
    ║  RY(π·x₁) on Q1     ║  x ∈ [0,1] → θ ∈ [0,π]
    ╚═════════════════════╝
              ↓
    ╔═════════════════════════════════╗
    ║   Variational Ansatz            ║
    ║   (Repeated n_layers times)     ║
    ║  ┌─────────────────────────┐    ║
    ║  │ RY(θ₀) Q0 ─ RY(θ₀) Q1   │    ║  Parameterized Layer
    ║  │     │         │         │    ║
    ║  │ CNOT(Q0→Q1)   │         │    ║  Entanglement
    ║  └─────────────────────────┘    ║
    ║  (Repeat with different θ)      ║
    ╚═════════════════════════════════╝
              ↓
    ╔═════════════════════╗
    ║  Measurement        ║
    ║  Expectation ⟨Z₀⟩   ║  Pauli-Z on qubit 0
    ║  Output ∈ [-1, 1]   ║
    ╚═════════════════════╝
              ↓
    ╔═════════════════════╗
    ║  Classification     ║
    ║  ⟨Z₀⟩ > 0 → Class 1 ║
    ║  ⟨Z₀⟩ ≤ 0 → Class 0 ║
    ╚═════════════════════╝

Implementation Details

  • Number of Qubits: 2 (matches input feature dimension)
  • Number of Layers: 2-3 variational ansatz layers
  • Feature Encoding: Angle encoding using RY gates
    • Formula: θ = π · x, where x ∈ [0, 1]
  • Entanglement: CNOT ladder connecting adjacent qubits
  • Observable: Pauli-Z on first qubit
  • Loss Function: Binary Cross-Entropy
    • Probability mapping: p = (1 + ⟨Z₀⟩) / 2 ∈ [0, 1]
  • Optimization: COBYLA (gradient-free, suitable for quantum circuits)

How It Works

1. Data Encoding

Features are angle-encoded into quantum rotations. For a 2D input (x₀, x₁):

  • Qubit 0: Apply RY(π·x₀)
  • Qubit 1: Apply RY(π·x₁)

This creates a quantum state |ψ⟩ that encodes the classical data.

2. Quantum Processing

The parameterized ansatz applies learnable rotations and entangling gates:

  • RY gates with trainable angles θᵢ
  • CNOT gates create entanglement between qubits
  • Multiple layers increase expressivity

3. Measurement & Classification

The expectation value ⟨Z₀⟩ is extracted and used for classification:

  • Map ⟨Z₀⟩ ∈ [-1, 1] to probability p ∈ [0, 1]: p = (1 + ⟨Z₀⟩) / 2
  • Apply threshold: p > 0.5 → Class 1, else Class 0

4. Training

Parameters are optimized using COBYLA (Constrained Optimization BY Linear Approximation):

  • Objective: Minimize binary cross-entropy loss
  • No gradients required (quantum circuits lack efficient gradient computation on hardware)
  • Iterative refinement of parameters

Expected Results

On the two-moons dataset (100 samples, noise=0.15):

Accuracy: ~75-85%
Training Loss: Decreases from ~0.69 to ~0.30-0.40

Note: This is a proof-of-concept implementation on a classical simulator. Accuracy is limited by:

  • Small circuit depth (2 layers)
  • Small dataset (100 samples)
  • Barren plateaus in quantum optimization

Real quantum advantages emerge with larger datasets and circuits on actual quantum hardware.


Installation

Requirements

  • Python 3.9+
  • Qiskit >= 1.0
  • NumPy, SciPy, scikit-learn, Matplotlib

Setup

# Clone repository
git clone <your-repo-url>
cd 05-qnn-qiskit-ml

# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

Usage

Run the QNN Classifier

python qnn_classifier.py

Output:

  • Console: Training progress, loss history, accuracy metrics
  • decision_boundary.png: Visualization of learned decision boundary
  • training_loss.png: Loss curve during training

Example Code

from qnn_classifier import QuantumNeuralNetwork, generate_dataset

# Generate data
X, y = generate_dataset(n_samples=100, noise=0.15)

# Create and train QNN
qnn = QuantumNeuralNetwork(n_qubits=2, n_layers=2)
result = qnn.train(X, y, maxiter=150, method='COBYLA')

# Evaluate
predictions = qnn.predict(X, result['params'])
accuracy = (predictions == y).mean()
print(f"Accuracy: {accuracy:.4f}")

File Structure

05-qnn-qiskit-ml/
├── qnn_classifier.py      # Main QNN implementation
├── requirements.txt       # Python dependencies
├── .gitignore            # Git ignore rules
└── README.md             # This file

Code Highlights

Clean Architecture

  • Object-oriented design: QuantumNeuralNetwork class encapsulates all functionality
  • Modular methods: Separate feature map, ansatz, circuit building
  • Well-documented: Extensive docstrings and comments

Key Methods

Method Purpose
__init__(n_qubits, n_layers) Initialize QNN with quantum parameters
_build_feature_map(features) Angle-encode classical features
_build_variational_ansatz(params) Create parameterized quantum layers
forward(features, params) Compute expectation value (inference)
predict(X, params) Batch classification
loss_function(params, X, y) Binary cross-entropy loss
train(X, y, maxiter) Train circuit parameters

Quantum Computing Concepts Demonstrated

✅ Feature Encoding: Angle encoding strategy ✅ Entanglement: CNOT-based circuit design ✅ Parameterized Circuits: RY gate rotations ✅ Expectation Values: Pauli-Z measurement ✅ Variational Quantum Algorithms: Training via classical optimization

Machine Learning Concepts Demonstrated

✅ Binary Classification: Two-class problem ✅ Loss Functions: Binary cross-entropy ✅ Optimization: Gradient-free method (COBYLA) ✅ Data Preprocessing: Feature normalization ✅ Model Evaluation: Accuracy, classification report, confusion matrix


Performance Characteristics

Computational Complexity

  • Circuit depth: O(n_layers × n_qubits)
  • Parameters: O(n_layers × n_qubits)
  • Forward pass: O(2^n_qubits) state space (classical simulation)
  • Training: O(iterations × samples × forward_pass)

Scalability

  • Simulator: Efficient up to ~20 qubits (due to 2^n state space)
  • Real hardware: Requires error mitigation for n > 5 qubits
  • Training: Batch size doesn't affect quantum circuit complexity

Physics and ML Background

Quantum Machine Learning (QML)

Quantum circuits exploit quantum mechanical phenomena:

  • Superposition: Process exponential feature spaces
  • Entanglement: Capture feature correlations
  • Interference: Extract patterns through measurement

Parameterized Quantum Circuits (PQCs)

A PQC is a quantum circuit with adjustable gates (parameters), trained like classical neural networks. Key difference: optimization through classical optimization loops (no backprop on quantum hardware).

Why Qiskit?

Qiskit is the industry-standard open-source quantum computing framework:

  • Abstraction over multiple quantum backends (simulators, real hardware)
  • Composable circuit primitives
  • Statevector simulator for exact computation
  • Active community and documentation

References

Foundational Papers

  1. Schuld, M., Brougham, T., & Killoran, N. (2022). Quantum Machine Learning: A Data-Driven Perspective. arXiv preprint arXiv:2201.08309.

    • Comprehensive review of QML theory and applications
  2. Benedetti, M., Lloyd, E., Sack, S., & Wolinsky, M. (2019). Parameterized quantum circuits as machine learning models. Quantum Science and Technology, 4(4), 043001.

    • PQC methodology and expressivity analysis
  3. Havlíček, V., Córcoles, A. D., Temme, K., et al. (2019). Supervised learning with quantum-enhanced feature spaces. Nature, 567(7747), 209-212.

    • Quantum feature maps and kernel methods
  4. McClean, G. R., Boixo, S., Smelyanskiy, V. N., et al. (2018). Barren plateaus in quantum neural network training landscapes. Nature Communications, 9(1), 4812.

    • Fundamental challenges in QNN optimization

Resources


Author

Thiago Girao PhD Candidate in Physics Specialization: Quantum Information and Computation

Research interests:

  • Quantum algorithms for machine learning
  • Variational quantum circuits
  • Quantum error mitigation and NISQ devices
  • Applications of quantum computing in scientific computing

License

This project is provided as-is for educational and portfolio purposes.


Future Enhancements

  • GPU-accelerated simulator (qiskit-aer with cuQuantum)
  • Real quantum hardware execution (IBM Quantum)
  • Multi-class classification (3+ classes)
  • Quantum kernel methods for SVM
  • Parameter update visualization (animation)
  • Benchmarking against classical NNs
  • Gradient estimation techniques (parameter shift rule)
  • More complex datasets (iris, MNIST subset)

Last Updated: 2026 Status: Production-ready demonstration Python Version: 3.9+

About

Quantum Neural Network binary classifier using parameterized quantum circuits built from scratch with Qiskit

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages