ZKSF logo, a neon quantum brainZKSF

Applications / AI / Quantum for AI

QGAN and synthetic data

Adversarial generation against a learning discriminator

A QGAN is a generative adversarial network whose generator is a quantum circuit rather than a neural network. A classical discriminator learns to separate the circuit's samples from the target while the circuit learns to fool it, and the two alternate. The discriminator half is ordinary PyTorch and runs where your other models run; only the generator is submitted as circuits.

Two quantities are tracked because either alone can mislead. The discriminator gap says whether the discriminator can still tell the two apart, and it shrinks both when the generator improves and when the discriminator collapses. The total variation distance to the target says whether the generated distribution actually moved. Both are reported.

The console showing a three-mode linear-optics program with two photons entering a beamsplitter, above a job history of neural.cpu, QuEra Aquila and Rigetti runs
The optics editor the photonic generator was built in, and the jobs behind this page. Open the console

Run on our engines

A two-qubit generator of four rotations against a two-layer classical discriminator, 40 alternating steps, targeting 0.4 / 0.1 / 0.1 / 0.4. Submitted to each kind of compute we offer, on 18 September 2026. Every figure below is a real job on the service, priced as any customer would be priced.

DeviceEngineKindQubitsResultCost
CPUexact.cpuCPU2TVD 0.269 to 0.146, discriminator gap 0.0069 to -0.0006$0.0722
Rigettiqpu.rigettiQPU2TVD 0.286, the converged generator re-run at 1,000 shots$0.7250
CPUphotonic.slos.cpuCPU3generator half, P(target) 0.993, 0.835, 0.802, 0.754 and 0.085 across five starts$0.0003
Quandelaqpu.quandela.belenosQPUtakes the identical linear-optics program and input state; the simulator row above is the exact reference a run here is certified against

The same problem is yours to run: every instance here is seeded, so it rebuilds exactly. Open the console and a cost estimate is free before anything executes.

722 circuits over 40 alternating steps. The generated distribution ended at 0.408 on 00, 0.238 on 01, 0.000 on 10 and 0.354 on 11, against a target of 0.4 / 0.1 / 0.1 / 0.4: the two large modes were found, and of the two symmetric minority outcomes one took 0.238 and the other took nothing.

The photonic row is a separate experiment on the same shape, run on a linear-optics simulator across five random starts. Four reached 0.75 or better against a ceiling of 0.9996 and the fifth stopped at 0.085.

Where this stops

  • Mode collapse onto one of several equivalent outcomes is an ordinary GAN failure and is visible in the measured distribution above
  • One start in five stuck on the photonic leg, so a single run is not evidence of convergence and several seeds are needed
  • Dual-rail encoding spends two modes per qubit, so a 24-mode photonic register is 12 qubits and the feature space a photonic generator can reach is correspondingly small

The classical baseline for this case is the discriminator gap, which starts at 0.0069. The structural limit, which does not move when a benchmark is re-run, is Mode collapse onto a subset of outcomes, the same failure mode as a classical GAN.

Run it yourself

Every figure above is from a job billed on the production service. Load the same circuits into the console, change the instance to your own data, and export a certificate for your own run rather than citing ours.

The argument behind these numbers, at length: Quantum machine learning on simulators and real quantum hardware.