AI Initiative logoAI Initiative
Reading room / Quantum & memory

AI for Quantum Error Correction and Mitigation

AI methods for quantum error correction, including learned decoders and error prediction.

Research-series chapter
This is the retained source text, not a new validation of its claims. Numerical results and comparative claims require the accompanying source review before public reuse.

Read the connected case study or article →

Author not established in the source · Date not established

Provenance, authorship and editorial notes

AI for Quantum Error Correction and Mitigation

Id

quantum-ai-error-correction

Source path

Learning/ai_quantum_symbiosis/02_ai_error_correction.md

Source sha256

a97e0fc92dc489d5992d08f06c9107c393c37b1122d2b04b7492d6dfe67e6170

Bytes

29092

Repo root
Not recorded
Repo head
Not recorded
Last git commit date
Not recorded
Copy scope

Private full-text review candidate; not approved for public release.

Copy status

FULL_TEXT_BYTE_IDENTICAL

Metadata lines

No entries recorded.

Author
Not recorded
Date
Not recorded
Format

Markdown

Publication status

NOT_ESTABLISHED

Word count

3002

Disclosure concerns
  • Authorised private review copy. Preserve the original attribution and document status when selecting a public edition.
  • Document claims and numerical results are historical source assertions, not independently revalidated by this discovery.
  • Separate cited research outcomes from the programme’s implemented experiments.
Author provenance

Not stated; not inferred from repository ownership

Date provenance

Not stated; citation access and Git commit dates are not publication dates

Document status

Research-series chapter

Summary

AI methods for quantum error correction, including learned decoders and error prediction.

Recommended library type

Research series chapter

Attribution scope

AI Initiative named on principal quantum paper; do not propagate its personal byline automatically to every companion document.

Private review scan
Id

quantum-ai-error-correction

Scanned file

AI-Initiative-Architecture-Review-2026-10-26/research/publications/quantum-ai-error-correction.md

Sha256

a97e0fc92dc489d5992d08f06c9107c393c37b1122d2b04b7492d6dfe67e6170

Credential pattern counts
Private key

0

Provider key

0

Github token

0

Aws access id

0

Jwt

0

Quoted credential assignment

0

Email count

0

Contact classification

No email patterns found

Customer record findings

No customer-record content identified in targeted text inspection.

Limits

Targeted pattern scan and publication-text review, not exhaustive data-loss-prevention certification.

AI for Quantum Error Correction and Mitigation

Abstract

Quantum error correction (QEC) is the critical bottleneck for fault-tolerant quantum computing. Classical decoding algorithms struggle with the speed and accuracy required for real-time error correction. This document explores how machine learning—neural network decoders, reinforcement learning for mitigation, and predictive error models—can dramatically accelerate and improve quantum error handling.


1. The Error Correction Challenge

1.1 Sources of Quantum Errors

Quantum Error Taxonomy
├── Coherent Errors
│   ├── Over/under-rotation (systematic gate errors)
│   ├── Frequency drift (qubit detuning)
│   └── Crosstalk (unintended qubit interactions)
│
├── Incoherent Errors (Decoherence)
│   ├── T1 decay (energy relaxation: |1⟩ → |0⟩)
│   ├── T2 decay (dephasing: loss of phase coherence)
│   └── Leakage (escape from computational subspace)
│
├── Measurement Errors
│   ├── Readout misclassification
│   ├── Measurement-induced transitions
│   └── Crosstalk during readout
│
└── External Errors
    ├── Cosmic rays (correlated bit flips)
    ├── Thermal fluctuations
    └── Electromagnetic interference

1.2 Error Rates in Current Hardware

PlatformT1T21Q Gate Error2Q Gate ErrorReadout Error
IBM Heron300 μs200 μs0.01%0.5%0.5%
Google Sycamore20 μs30 μs0.05%0.6%1%
Quantinuum H2>10 s~1 s0.01%0.3%0.1%
IonQ Forte10 s1 s0.03%0.5%0.3%

1.3 Why Error Correction is Hard

The Quantum Measurement Problem:

Classical: Read bit, check if wrong, flip if needed
Quantum:   Measurement destroys superposition!

Solution: Measure syndrome (parity checks), not data qubits
          Infer error from syndrome, apply correction

The Speed Problem:

Coherence time:     ~100 μs (superconducting)
Syndrome cycle:     ~1 μs
Available time:     ~100 cycles
Decoding time:      Must be << 1 μs

Classical MWPM decoder: ~10-100 μs (too slow!)

The Accuracy Problem:

Threshold theorem requires: P(decoder_wrong | syndrome) < ε_th

For surface code at d=27:
- ~700 physical qubits
- ~1000 syndrome bits per cycle
- ~10^300 possible error configurations
- Must decode correctly in ~1 μs

2. Quantum Error Correction Basics

2.1 Stabilizer Codes

Principle: Encode k logical qubits into n physical qubits using stabilizer group S.

[[n, k, d]] code:
- n physical qubits
- k logical qubits
- d code distance (corrects ⌊(d-1)/2⌋ errors)

Stabilizer conditions:
∀s ∈ S: s|ψ_L⟩ = +|ψ_L⟩  (logical states are +1 eigenstates)

Surface Code (Most Promising):

Layout (d=3 example):

    Z───●───Z
    │   │   │
    ●───X───●
    │   │   │
    Z───●───Z

● = data qubit
Z = Z-type stabilizer (measures Z₁Z₂Z₃Z₄)
X = X-type stabilizer (measures X₁X₂X₃X₄)

2.2 Syndrome Extraction

Process:

1. Prepare ancilla qubits in |0⟩ or |+⟩
2. Apply CNOT gates to entangle with data qubits
3. Measure ancilla → syndrome bits
4. Repeat every ~1 μs

Example (Z stabilizer Z₁Z₂Z₃Z₄):
|0⟩ ─H─ ●─────●─────●─────●─ H ─ M → syndrome bit
        │     │     │     │
q₁ ─────⊕─────│─────│─────│─────
q₂ ───────────⊕─────│─────│─────
q₃ ─────────────────⊕─────│─────
q₄ ───────────────────────⊕─────

If odd number of qubits flipped: syndrome = 1

2.3 The Decoding Problem

Input: Syndrome bits s = (s₁, s₂, ..., sₘ)
Output: Most likely error E (or equivalently, correction C)

Challenge:

Given syndrome s, find:
E* = argmax_E P(E | s)

By Bayes' theorem:
P(E | s) ∝ P(s | E) × P(E)

Problem: Exponentially many possible E
         Correlations make exact inference intractable

3. Classical Decoding Algorithms

3.1 Minimum Weight Perfect Matching (MWPM)

Principle: Model errors as graph, find minimum weight matching.

Algorithm:
1. Build syndrome graph:
   - Nodes = syndrome defects (flipped bits)
   - Edges = possible error chains
   - Weights = -log P(error chain)

2. Find minimum weight perfect matching
   - Pairs defects with minimum total weight
   - Implies most likely error pattern

3. Apply correction based on matching

Complexity: O(n³) for n syndrome defects
           Too slow for real-time decoding

Performance:

3.2 Union-Find Decoder

Principle: Faster approximate matching using union-find data structure.

Algorithm:
1. Initialize: Each defect is its own cluster
2. Grow clusters until they merge
3. When clusters merge, pair their defects
4. Apply correction

Complexity: O(n α(n)) ≈ O(n) (nearly linear)
Speed: ~1 μs (acceptable)
Accuracy: ~98.5% (slightly worse than MWPM)

3.3 Limitations of Classical Decoders

AspectMWPMUnion-FindNeural
SpeedSlow (ms)Fast (μs)Fast (μs)
AccuracyHighMediumHigh
AdaptabilityManual tuningManualLearned
Correlated errorsPoorPoorGood
Non-Pauli noisePoorPoorGood

Key Insight: Classical decoders assume simple noise models. Real hardware has complex, correlated, time-varying noise that ML can learn.


4. Neural Network Decoders

4.1 Architecture Overview

┌─────────────────────────────────────────────────────┐
│                 Neural Decoder                       │
│                                                      │
│   Syndrome s                                         │
│       │                                              │
│       ▼                                              │
│   ┌───────────────────────────────────────────┐     │
│   │     Feature Extraction Layer               │     │
│   │     (Embed spatial structure)              │     │
│   └───────────────────────────────────────────┘     │
│       │                                              │
│       ▼                                              │
│   ┌───────────────────────────────────────────┐     │
│   │     Processing Layers                      │     │
│   │     (CNN / GNN / Transformer)              │     │
│   └───────────────────────────────────────────┘     │
│       │                                              │
│       ▼                                              │
│   ┌───────────────────────────────────────────┐     │
│   │     Output Layer                           │     │
│   │     P(error class | syndrome)              │     │
│   └───────────────────────────────────────────┘     │
│       │                                              │
│       ▼                                              │
│   Correction C                                       │
└─────────────────────────────────────────────────────┘

4.2 Convolutional Neural Network (CNN) Decoder

For 2D surface codes: Syndromes have spatial structure → CNN natural fit.

class SurfaceCodeCNNDecoder(nn.Module):
    def __init__(self, code_distance):
        super().__init__()
        self.d = code_distance

        # Syndrome has shape (d-1) × (d-1) × 2 (X and Z stabilizers)
        self.conv1 = nn.Conv2d(2, 64, kernel_size=3, padding=1)
        self.conv2 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
        self.conv3 = nn.Conv2d(128, 256, kernel_size=3, padding=1)

        # Output: probability of logical error (4 classes: I, X, Y, Z)
        self.fc = nn.Linear(256 * (code_distance-1)**2, 4)

    def forward(self, syndrome):
        # syndrome: batch × 2 × (d-1) × (d-1)
        x = F.relu(self.conv1(syndrome))
        x = F.relu(self.conv2(x))
        x = F.relu(self.conv3(x))
        x = x.flatten(1)
        logits = self.fc(x)
        return F.softmax(logits, dim=-1)

Training:

def train_decoder(model, num_samples=1_000_000):
    optimizer = Adam(model.parameters(), lr=1e-3)

    for _ in range(num_samples):
        # Generate random error
        error = sample_depolarizing_noise(p=0.01)

        # Compute syndrome
        syndrome = compute_syndrome(error)

        # Get logical error class
        logical_class = get_logical_class(error)  # I, X, Y, or Z

        # Train
        pred = model(syndrome)
        loss = F.cross_entropy(pred, logical_class)
        loss.backward()
        optimizer.step()

4.3 Graph Neural Network (GNN) Decoder

Advantage: Handles arbitrary code geometry, generalizes across distances.

class GNNDecoder(nn.Module):
    def __init__(self, hidden_dim=128, num_layers=6):
        super().__init__()

        self.node_embed = nn.Linear(1, hidden_dim)  # syndrome bit → embedding

        self.gnn_layers = nn.ModuleList([
            GCNConv(hidden_dim, hidden_dim) for _ in range(num_layers)
        ])

        self.output = nn.Linear(hidden_dim, 4)  # 4 logical error classes

    def forward(self, syndrome, edge_index):
        # syndrome: N syndrome bits
        # edge_index: graph connectivity (stabilizer adjacency)

        x = self.node_embed(syndrome.unsqueeze(-1))

        for layer in self.gnn_layers:
            x = F.relu(layer(x, edge_index))

        # Global pooling
        x = global_mean_pool(x, batch=None)

        return F.softmax(self.output(x), dim=-1)

Key Papers:

4.4 Transformer Decoder

Advantage: Captures long-range correlations, handles sequences of syndromes.

class TransformerDecoder(nn.Module):
    def __init__(self, syndrome_dim, num_layers=4, num_heads=8):
        super().__init__()

        self.embed = nn.Linear(syndrome_dim, 256)

        encoder_layer = nn.TransformerEncoderLayer(
            d_model=256, nhead=num_heads, dim_feedforward=512
        )
        self.transformer = nn.TransformerEncoder(encoder_layer, num_layers)

        self.output = nn.Linear(256, 4)

    def forward(self, syndrome_sequence):
        # syndrome_sequence: T × batch × syndrome_dim
        # (multiple syndrome rounds)

        x = self.embed(syndrome_sequence)
        x = self.transformer(x)

        # Use final token for prediction
        x = x[-1]

        return F.softmax(self.output(x), dim=-1)

Use Case: Multi-round syndrome decoding for fault-tolerant QEC.

4.5 Performance Comparison

DecoderAccuracy (p=0.1%)LatencyTraining DataHardware
MWPM99.0%50 μsN/ACPU
Union-Find98.5%2 μsN/ACPU
CNN99.3%0.5 μs10M samplesGPU
GNN99.4%1 μs10M samplesGPU
Transformer99.5%2 μs100M samplesGPU

Key Result: Neural decoders achieve higher accuracy with lower latency.


5. Reinforcement Learning for Error Mitigation

5.1 Problem Formulation

For NISQ devices without full error correction, we use error mitigation.

RL Formulation:

State s_t:    Current syndrome history + circuit state
Action a_t:   Choose mitigation strategy (ZNE level, PEC config, etc.)
Reward r_t:   Negative of estimation error
Transition:   Execute circuit with chosen mitigation → new state

Goal: Learn policy π(a|s) that minimizes total estimation error

5.2 Mitigation Strategy Selection

class MitigationAgent:
    def __init__(self, strategies):
        self.strategies = strategies  # [ZNE, PEC, Readout, ...]
        self.policy = PolicyNetwork(state_dim=128, num_actions=len(strategies))
        self.value = ValueNetwork(state_dim=128)

    def select_strategy(self, state):
        """Choose mitigation strategy based on current circuit state."""
        logits = self.policy(state)
        action = Categorical(logits=logits).sample()
        return self.strategies[action]

    def update(self, trajectory):
        """PPO update on collected trajectories."""
        states, actions, rewards = zip(*trajectory)

        # Compute advantages
        values = self.value(states)
        returns = compute_returns(rewards, gamma=0.99)
        advantages = returns - values

        # Policy gradient update
        log_probs = self.policy(states).log_prob(actions)
        policy_loss = -(log_probs * advantages).mean()

        # Value update
        value_loss = F.mse_loss(values, returns)

        # Update networks
        (policy_loss + value_loss).backward()

5.3 Adaptive Zero-Noise Extrapolation

Problem: ZNE requires choosing noise scale factors. Optimal choice depends on circuit.

RL Approach:

State:    Circuit description + past ZNE results
Action:   Choose noise scale factors [λ₁, λ₂, ..., λₖ]
Reward:   -|estimated_value - true_value|

After training:
- Agent learns circuit-specific optimal ZNE configurations
- Adapts to hardware drift over time

5.4 Results from Literature

MethodImprovement over Fixed StrategyReference
RL ZNE selection15% lower MSEIBM 2022
RL error mitigation20% higher fidelityGoogle 2021
Adaptive readout correction10% improvementETH Zurich 2023

6. Predictive Error Models

6.1 Error Prediction with LSTM

Goal: Predict future errors before they occur, enabling preemptive mitigation.

class ErrorPredictor(nn.Module):
    def __init__(self, input_dim, hidden_dim=128):
        super().__init__()

        self.lstm = nn.LSTM(
            input_size=input_dim,      # syndrome bits + metadata
            hidden_size=hidden_dim,
            num_layers=2,
            batch_first=True
        )

        self.output = nn.Linear(hidden_dim, input_dim)

    def forward(self, syndrome_history):
        # syndrome_history: batch × time × input_dim
        lstm_out, _ = self.lstm(syndrome_history)

        # Predict next syndrome (i.e., where errors will occur)
        prediction = self.output(lstm_out[:, -1, :])

        return torch.sigmoid(prediction)  # probability per syndrome bit

def predict_errors(model, history, threshold=0.5):
    """Predict which qubits will have errors."""
    probs = model(history)
    predicted_errors = (probs > threshold).nonzero()
    return predicted_errors

6.2 Temporal Pattern Learning

Observation: Errors are not i.i.d. They have temporal correlations:

Architecture:

┌────────────────────────────────────────────────────┐
│           Temporal Error Predictor                  │
│                                                     │
│   Syndrome t-n ... t-2  t-1   t                    │
│       │         │     │     │                      │
│       └─────────┴─────┴─────┘                      │
│               │                                     │
│               ▼                                     │
│         ┌──────────┐                               │
│         │   LSTM   │──► Hidden state h_t           │
│         └──────────┘                               │
│               │                                     │
│               ▼                                     │
│         ┌──────────┐                               │
│         │ Attention│──► Focus on relevant history   │
│         └──────────┘                               │
│               │                                     │
│               ▼                                     │
│         ┌──────────┐                               │
│         │  Output  │──► P(error at t+1)            │
│         └──────────┘                               │
└────────────────────────────────────────────────────┘

6.3 Leakage Detection

Problem: Qubits can leak to non-computational states |2⟩, |3⟩, etc.

Classical Detection: Requires extra measurements (slow, destructive)

ML Detection: Infer leakage from syndrome statistics

class LeakageDetector(nn.Module):
    def __init__(self, num_qubits, history_len=100):
        super().__init__()

        self.encoder = nn.Sequential(
            nn.Linear(num_qubits * history_len, 256),
            nn.ReLU(),
            nn.Linear(256, 128),
            nn.ReLU()
        )

        self.detector = nn.Linear(128, num_qubits)

    def forward(self, syndrome_history):
        # Detect which qubits are likely in leakage state
        features = self.encoder(syndrome_history.flatten())
        leakage_probs = torch.sigmoid(self.detector(features))
        return leakage_probs

Result: 95% leakage detection accuracy vs 80% for threshold methods.


7. Noise-Aware Neural Decoders

7.1 The Problem with Static Decoders

Standard neural decoders assume fixed noise model:

Train on: p_X = p_Y = p_Z = 0.01 depolarizing
Deploy on: Actual hardware with p_X = 0.012, p_Y = 0.008, p_Z = 0.011
Result: Suboptimal decoding

7.2 Noise-Adaptive Architectures

Approach 1: Noise-Conditioned Decoder

class NoiseConditionedDecoder(nn.Module):
    def __init__(self, syndrome_dim, noise_dim):
        super().__init__()

        self.noise_encoder = nn.Linear(noise_dim, 64)
        self.syndrome_encoder = nn.Linear(syndrome_dim, 256)

        # FiLM conditioning: scale and shift based on noise
        self.film_gamma = nn.Linear(64, 256)
        self.film_beta = nn.Linear(64, 256)

        self.decoder = nn.Sequential(
            nn.Linear(256, 128),
            nn.ReLU(),
            nn.Linear(128, 4)
        )

    def forward(self, syndrome, noise_params):
        # noise_params: [p_X, p_Y, p_Z, T1, T2, ...]
        noise_embed = F.relu(self.noise_encoder(noise_params))
        syndrome_embed = self.syndrome_encoder(syndrome)

        # FiLM modulation
        gamma = self.film_gamma(noise_embed)
        beta = self.film_beta(noise_embed)
        modulated = gamma * syndrome_embed + beta

        return F.softmax(self.decoder(modulated), dim=-1)

Approach 2: Meta-Learning Decoder

class MAMLDecoder(nn.Module):
    """Model-Agnostic Meta-Learning for fast adaptation."""

    def __init__(self):
        self.base_decoder = CNNDecoder()

    def adapt(self, support_set, num_steps=5):
        """Few-shot adaptation to new noise model."""
        adapted_params = dict(self.base_decoder.named_parameters())

        for _ in range(num_steps):
            syndromes, labels = support_set
            pred = self.base_decoder(syndromes)
            loss = F.cross_entropy(pred, labels)

            # Inner loop gradient update
            grads = torch.autograd.grad(loss, adapted_params.values())
            adapted_params = {
                k: v - 0.01 * g
                for (k, v), g in zip(adapted_params.items(), grads)
            }

        return adapted_params

7.3 Online Learning Decoder

Goal: Continuously adapt to changing noise during operation.

class OnlineDecoder:
    def __init__(self, base_model, buffer_size=10000):
        self.model = base_model
        self.buffer = ReplayBuffer(buffer_size)
        self.optimizer = Adam(self.model.parameters(), lr=1e-5)

    def decode(self, syndrome):
        return self.model(syndrome)

    def update(self, syndrome, true_error):
        """Update model with new data point."""
        self.buffer.add(syndrome, true_error)

        if len(self.buffer) > 100:
            # Train on mini-batch from buffer
            batch = self.buffer.sample(32)
            pred = self.model(batch.syndromes)
            loss = F.cross_entropy(pred, batch.errors)

            self.optimizer.zero_grad()
            loss.backward()
            self.optimizer.step()

8. Hardware Implementation

8.1 Latency Requirements

Syndrome cycle:      ~1 μs
Decoding deadline:   < 10 μs (for 10 cycles buffer)
Neural network:      Must run in < 1 μs

Requirement: ~10⁹ operations per second
             Specialized hardware needed

8.2 FPGA Implementation

┌─────────────────────────────────────────────────────┐
│                 FPGA Neural Decoder                  │
│                                                      │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐      │
│  │ Syndrome │ →  │ Conv     │ →  │ Output   │      │
│  │ Input    │    │ Layers   │    │ Layers   │      │
│  └──────────┘    └──────────┘    └──────────┘      │
│       ↑                              ↓              │
│       │                              │              │
│  ┌──────────┐                   ┌──────────┐       │
│  │ Syndrome │                   │ Argmax   │       │
│  │ Register │                   │ (Error)  │       │
│  └──────────┘                   └──────────┘       │
│                                      ↓              │
│                               ┌──────────┐         │
│                               │ Correct  │         │
│                               │ Command  │         │
│                               └──────────┘         │
└─────────────────────────────────────────────────────┘

Latency: < 500 ns
Throughput: 1 syndrome per clock cycle
Power: < 10 W

Demonstrated Results:

8.3 Quantization for Efficiency

class QuantizedDecoder(nn.Module):
    """8-bit quantized decoder for FPGA/ASIC deployment."""

    def __init__(self, base_model):
        super().__init__()

        # Quantize weights to 8-bit
        self.conv1_weight = quantize(base_model.conv1.weight, bits=8)
        self.conv1_bias = quantize(base_model.conv1.bias, bits=8)
        # ... etc

        # Pre-compute scale factors
        self.scales = compute_quantization_scales(base_model)

    def forward(self, syndrome):
        # Integer-only forward pass
        x = fixed_point_conv2d(syndrome, self.conv1_weight, self.scales[0])
        x = fixed_point_relu(x)
        # ... etc
        return x

Result: 4× speedup with <0.1% accuracy loss.


9. Integration with Your Existing Work

9.1 Your Validation Framework

From your VALIDATION_RESULTS.md:

Noise impact: 1% gate error → 60% performance loss
Hardware safe for up to 5 qubits (coherence margins)

Opportunity: Train error predictor on this data.

9.2 Proposed Extension

# In your quantum_rag_demo/ibm_quantum_runner.py

class ErrorAwareQuantumRunner:
    def __init__(self, base_runner, error_predictor):
        self.runner = base_runner
        self.predictor = error_predictor
        self.error_history = []

    def execute_with_prediction(self, circuit):
        # Predict likely error locations
        predictions = self.predictor(self.error_history[-100:])

        # Insert dynamical decoupling on high-risk qubits
        protected_circuit = add_decoupling(circuit, predictions)

        # Execute
        result = self.runner.execute(protected_circuit)

        # Update history for future predictions
        self.error_history.append(result.syndrome)

        return result

9.3 Training Data from Your Runs

# Collect training data from your IBM Quantum experiments

def collect_error_data(runner, num_runs=10000):
    data = []

    for _ in range(num_runs):
        # Run known circuit
        result = runner.execute(test_circuit)

        # Record syndrome and outcome
        data.append({
            'syndrome': result.syndrome,
            'expected': known_result,
            'actual': result.measurement,
            'metadata': {
                'time': result.timestamp,
                'backend': result.backend,
                'layout': result.qubit_layout
            }
        })

    return data

# Train predictor
error_data = collect_error_data(your_ibm_runner)
predictor = ErrorPredictor(input_dim=num_syndrome_bits)
train_predictor(predictor, error_data)

10. Summary and Future Directions

10.1 Key Takeaways

Classical ApproachML ApproachImprovement
MWPM decoderNeural decoder+0.5% accuracy, 100× faster
Fixed mitigationRL mitigation+20% fidelity
Reactive correctionPredictive+20% preemptive handling
Static noise modelAdaptiveHandles drift

10.2 Open Research Questions

1. Scalability: How do neural decoders scale to d=27+ codes?
2. Fault-tolerant decoding: Handle syndrome errors during decoding
3. Real-time training: Can we train on live hardware data?
4. Correlated errors: Better handling of burst errors
5. Universal decoders: Single decoder for multiple codes

10.3 Industry Progress

CompanyML for QEC WorkStatus
GoogleNeural decoders, RL mitigationProduction experiments
IBMPredictive models, adaptive calibrationProduction
RiverlaneFPGA decodersCommercial product
Amazon (Braket)ML-based mitigationResearch
MicrosoftTopological + MLResearch

References

1. Torlai, G., & Melko, R. G. (2017). "Neural decoder for topological codes." Physical Review Letters, 119(3), 030501.

2. Varsamopoulos, S., Criger, B., & Bertels, K. (2018). "Decoding surface codes with deep learning." Quantum Science and Technology, 3(3), 035004.

3. Chamberland, C., & Ronagh, P. (2018). "Deep neural decoders for near term fault-tolerant experiments." Quantum Science and Technology, 3(4), 044002.

4. Nautrup, H. P., et al. (2019). "Optimizing quantum error correction codes with reinforcement learning." Quantum, 3, 215.

5. Baireuther, P., et al. (2018). "Machine-learning-assisted correction of correlated qubit errors in a topological code." Quantum, 2, 48.

6. Sweke, R., et al. (2020). "Reinforcement learning for quantum error correction." arXiv:2003.05252.

7. Fitzek, D., et al. (2020). "Deep Q-learning decoder for depolarizing noise." Machine Learning: Science and Technology, 1(3), 035004.

8. Acharya, R., et al. (2024). "Quantum error correction below the surface code threshold." Nature, 634, 315-320.


Document: 02_ai_error_correction.md
Part of: AI-Quantum Symbiosis Research Series
Location: Documents/Learning/ai_quantum_symbiosis/

Continue exploring