Classical shadows, pe scurt
Când măsori o stare cuantică, o distrugi. Ca să afli tot despre o stare de n qubiți prin tomografie completă, ai nevoie de un număr de măsurători care crește exponențial cu n. Peste câțiva qubiți, nu mai ai nicio șansă.
De cele mai multe ori nu ai nevoie de tot. Ai nevoie de câteva sute de proprietăți: niște energii, niște corelații, una-două fidelități. Classical shadows, introduse de Huang, Kueng și Preskill în 2020, sunt făcute exact pentru asta.
Trucul
- Aplici o transformare unitară aleatoare pe stare. O alegere des întâlnită e o măsurătoare Pauli aleatoare pe fiecare qubit.
- Măsori în baza computațională și notezi rezultatul.
- Inversezi pe hârtie canalul de măsurare și obții un snapshot, o estimare clasică grosieră a stării.
Un singur snapshot e o estimare proastă. Media multora e una bună. Partea utilă e câte îți trebuie. Ca să prezici M observabile, numărul de snapshot-uri crește cu log M, nu cu dimensiunea spațiului Hilbert. Pentru observabile locale și măsurători Pauli aleatoare, costul depinde de cât de locală e observabila, nu de numărul total de qubiți.
Deci măsori o dată, păstrezi snapshot-urile și decizi mai târziu ce proprietăți estimezi. E ca o fotografie căreia îi poți pune întrebări oricând.
Mai jos, o stare de patru qubiți e măsurată cu măsurători Pauli aleatoare, simulate exact în browserul tău. Fiecare punct e estimarea unei proprietăți, iar liniuța e valoarea ei reală. Adaugă snapshot-uri și urmărește cum se așază estimările, apoi pune alte întrebări acelorași snapshot-uri.
- Z₃·
- X₂·
- X₁·
- X₃·
- Z₀ X₁·
- X₂ Z₃·
- X₁ X₂·
- Z₀ Z₁·
Ce construiesc
Împreună cu un colaborator lucrez la un protocol de codificare construit în jurul classical shadows. Partea teoretică e gata. Acum lucrez la jumătatea mai puțin spectaculoasă: infrastructura de experimente.
- un workspace uv, ca stratul de date, framework-ul de experimente și experimentele să fie pachete separate
shadows-data, un pachet comun pentru generarea și încărcarea snapshot-urilor- Hydra pentru configurare, ca fiecare rulare să poată fi reprodusă dintr-un singur config
- MLflow pentru tracking, ca rezultatele să nu stea într-un folder numit
final_v3
Scriu mai mult când am rezultate care merită arătate.