Advanced Algorithms Guide
Documentation for Quantum GANs and Quantum Reinforcement Learning.
Quantum Generative Adversarial Networks (QGANs)
Overview
Quantum GANs use quantum circuits to generate quantum states through adversarial training.
Applications:
Generate quantum states
Data augmentation
Anomaly detection
Quantum state preparation
Quick Start
from quantum_debugger.qml.algorithms import QuantumGAN
import numpy as np
# Create QGAN
qgan = QuantumGAN(n_qubits=4, n_layers=3)
# Prepare real quantum states (training data)
real_states = np.random.randn(100, 2**4) + 1j * np.random.randn(100, 2**4)
for i in range(len(real_states)):
real_states[i] /= np.linalg.norm(real_states[i])
# Train
qgan.train(real_states, epochs=50, batch_size=16)
# Generate new quantum states
generated_states = qgan.generate(n_samples=10)
Parameters
QuantumGAN(n_qubits, n_layers, discriminator_type)
n_qubits: Number of qubits in generator circuitn_layers: Number of variational layersdiscriminator_type: ‘classical’ or ‘quantum’
Training
qgan.train(
real_data, # Real quantum states
epochs=50, # Training epochs
batch_size=16, # Batch size
learning_rate=0.01 # Learning rate
)
# Monitor training
history = qgan.get_training_history()
print(f"Generator loss: {history['generator_loss']}")
print(f"Discriminator loss: {history['discriminator_loss']}")
Generation
# Generate fake quantum states
fake_states = qgan.generate(n_samples=50)
# Each state is normalized
assert all(np.isclose(np.linalg.norm(s), 1.0) for s in fake_states)
Quantum Reinforcement Learning
Overview
Uses quantum circuits to approximate Q-functions for reinforcement learning.
Applications:
Game playing
Robot control
Optimization problems
Decision making
Quick Start
from quantum_debugger.qml.algorithms import QuantumQLearning, SimpleEnvironment
# Create agent
agent = QuantumQLearning(
n_qubits=4,
n_actions=2,
learning_rate=0.01,
gamma=0.99
)
# Create environment
env = SimpleEnvironment(n_states=4, n_actions=2)
# Train
agent.train(env, episodes=100)
# Use trained agent
state = env.reset()
action = agent.choose_action(state, epsilon=0.1)
Parameters
QuantumQLearning(n_qubits, n_actions, n_layers, learning_rate, gamma)
n_qubits: Number of qubits for state encodingn_actions: Number of possible actionsn_layers: Variational layers in Q-circuitlearning_rate: Learning rate for updatesgamma: Discount factor (0-1)
Training
agent.train(
env, # Environment
episodes=100, # Number of episodes
max_steps=200, # Max steps per episode
epsilon_start=1.0, # Initial exploration
epsilon_end=0.01, # Final exploration
epsilon_decay=0.995 # Decay rate
)
# Monitor progress
history = agent.get_training_history()
print(f"Rewards: {history['rewards']}")
print(f"Losses: {history['losses']}")
Action Selection
# Epsilon-greedy policy
action = agent.choose_action(state, epsilon=0.1)
# Greedy (exploit only)
action = agent.choose_action(state, epsilon=0.0)
# Get Q-values for all actions
q_values = agent.get_q_values(state)
best_action = np.argmax(q_values)
Custom Environment
class MyEnvironment:
def reset(self):
"""Reset environment, return initial state."""
return np.zeros(4)
def step(self, action):
"""
Take action, return (next_state, reward, done, info).
"""
next_state = self.state + action
reward = -np.linalg.norm(next_state) # Minimize distance
done = reward > -0.1
return next_state, reward, done, {}
Performance Tips
QGANs
Start small - Use 2-4 qubits initially
Batch size - 8-32 works well
Epochs - 50-100 for convergence
Monitor losses - Both should stabilize
Quantum RL
State encoding - Keep states normalized
Epsilon decay - Start high (1.0), end low (0.01)
Episodes - 100-500 for simple tasks
Learning rate - 0.001-0.01
Examples
QGAN: State Preparation
# Target: Create specific quantum state
target_state = np.array([1, 0, 0, 1]) / np.sqrt(2)
# Train QGAN
qgan = QuantumGAN(n_qubits=2, n_layers=2)
qgan.train([target_state] * 50, epochs=30)
# Generate similar states
generated = qgan.generate(n_samples=10)
References
QGANs: Generative adversarial networks for quantum state preparation
Quantum RL: Quantum approximate optimization for reinforcement learning
See Also
QNN Guide - Quantum Neural Networks
Advanced QML Guide - Variational Quantum Eigensolver & QAOA
Algorithms Guide - VQE ground states & QAOA MaxCut