Řízení šíření chyb
Kvantové výpočty odolné vůči chybám se podobají závodu mezi chybami a opravou chyb. Pokud je počet chyb dostatečně malý, oprava chyb je úspěšně opraví; ale pokud je chyb příliš mnoho, oprava chyb selže.
Z tohoto důvodu je třeba věnovat dostatečnou pozornost způsobu, jakým se kvantové výpočty provádějí v implementacích Circuit odolných vůči chybám, aby se řídilo šíření chyb. To znamená, že chyba na jednom Qubit se může prostřednictvím Gate v kvantovém Circuit potenciálně rozšířit na více Qubit, což může způsobit dramatický nárůst počtu chyb. To je zásadní problém, protože pokud se nám nepodaří šíření chyb kontrolovat, naše úsilí o opravu chyb bude rychle zahlceno. Pokud na druhou stranu dokážeme udržet šíření chyb pod kontrolou, pak má oprava chyb reálnou šanci udržet krok, což umožní opravovat chyby dostatečně rychle, aby kvantový výpočet fungoval podle záměru.
Výchozím bodem technické diskuse o tomto problému je poznání, že dvou-Qubit Gate (nebo obecněji vícero-Qubit Gate) mohou šířit chyby, i když fungují dokonale. Uvažme například Gate řízený-NOT a předpokládejme, že na řídicím Qubit dojde k chybě těsně před provedením Gate řízeného-NOT. Jak jsme již pozorovali v lekci „Oprava kvantových chyb", je to ekvivalentní chybě vyskytující se na obou Qubit po provedení řízeného-NOT. A situace je podobná pro chybu působící na cílový Qubit místo řídicího před provedením Gate řízeného-NOT.
Jedná se o šíření chyb, protože nešťastné umístění chyby nebo před Gate řízeným-NOT ji efektivně promění ve dvě chyby po Gate řízeném-NOT. K tomu dochází i když je Gate řízený-NOT dokonalý, a nesmíme zapomínat, že daný Gate řízený-NOT může být sám o sobě zašuměný, což může vytvořit korelované chyby na dvou Qubit.
K našim obavám přispívá fakt, že následující dvou-Qubit Gate mohou tyto chyby šířit ještě dále, jak naznačuje následující obrázek.
V jistém smyslu se tomu nelze vyhnout; dokud budeme používat vícero-Qubit Gate, bude existovat potenciál pro šíření chyb. Nicméně, jak probereme v následujících podsekcích, lze podniknout kroky k omezení škod, které to způsobuje, a umožnit tak zvládnutí šířených chyb.
Transverzální implementace Gate
Nejjednodušší známý způsob, jak zmírnit šíření chyb v kvantových Circuit odolných vůči chybám, je implementovat Gate transverzálně, což znamená vytvořit pro ně gadgety, které mají určitou jednoduchou formu. Konkrétně gadgety musí být tenzorovým součinem operací (jinými slovy kvantový Circuit o hloubce jedna), kde každá operace může působit pouze na jednu pozici Qubit v rámci každého kódového bloku, kterého se dotýká. Nejsnáze se to vysvětlí na příkladech.
Příklady transverzálních implementací Gate
Uvažme následující obrázek, který naznačuje transverzální implementaci Gate CNOT. (Tato konkrétní implementace, kde se CNOT provádí Qubit po Qubit, funguje pouze pro CSS kódy — ale funguje ve skutečnosti pro všechny CSS kódy.)
Na tomto obrázku jsou dva kódové bloky, každý zobrazený jako sestávající z pěti Qubit (i když jich může být více, jak již bylo naznačeno). Circuit na pravé straně má hloubku jedna a každý z Gate CNOT působí na jednu pozici Qubit v rámci každého bloku: řídicí i cíl pro první CNOT je nejvyšší Qubit (tedy Qubit 0 podle konvence číslování Qiskit), řídicí i cíl pro druhý CNOT je Qubit druhý shora (tedy Qubit 1) a tak dále. Jedná se tedy o transverzální gadget.
Pro druhý příklad — ve skutečnosti třídu příkladů — uvažme libovolnou Pauliho Gate. Pauliho Gate lze vždy implementovat transverzálně, pro jakýkoli stabilizátorový kód, vytvořením gadgetů složených z Pauliho operací. Konkrétně každou Pauliho operaci na logickém Qubit kódovaném stabilizátorovým kódem lze implementovat transverzálně volbou vhodné Pauliho operace na fyzických Qubit použitých pro kódování. To je konzistentní se skutečností, která byla mimochodem zmíněna v lekci „Stabilizátorový formalismus": až na globální fázi Pauliho operace, které komutují s každým stabilizátorovým generátorem stabilizátorového kódu, působí jako Pauliho operace na Qubit nebo Qubit kódované tímto kódem.
Jako konkrétní příklad uvažme -Qubit Shorův kód, pro který by se standardní bázové stavy mohly kódovat následovně.
Gate na logickém Qubit kódovaném tímto kódem lze implementovat transverzálně pomocí -Qubit Pauliho operace
zatímco Gate na logickém Qubit lze implementovat transverzálně pomocí -Qubit Pauliho operace
Obě tyto Pauliho operace mají váhu což je minimální požadovaná váha. (-Qubit Shorův kód má vzdálenost takže jakákoli neidentická Pauliho operace o váze nebo méně je detekována jako chyba.)
A pro třetí příklad, -Qubit Steaneův kód (a vlastně každý barevný kód) umožňuje transverzální implementaci všech Cliffordových Gate. Již jsme viděli, jak se Gate CNOT implementují transverzálně pro jakýkoli CSS kód, takže zbývá uvážit Gate a . Hadamardova Gate aplikovaná na všech Qubit Steaneova kódu je ekvivalentní Gate aplikované na logický Qubit, který kóduje, zatímco Gate (na rozdíl od Gate ) aplikovaná na všech Qubit je ekvivalentní logické Gate
Šíření chyb u transverzálních gadgetů
Nyní, když víme, co jsou transverzální implementace Gate, proberme jejich souvislost se šířením chyb.
Pro transverzální implementaci jedno-Qubit Gate máme v našem gadgetu jednoduše tenzorový součin jedno-Qubit Gate, který působí na kódový blok fyzických Qubit zvoleného kvantového kódu pro opravu chyb. Ačkoli kterákoli z těchto Gate může selhat a zavést chybu, nedojde k žádnému šíření chyb, protože nejsou zapojeny žádné vícero-Qubit Gate. Ihned po aplikaci gadgetu se provede oprava chyb; a pokud je počet chyb zavedených gadgetem (nebo během jeho provádění) dostatečně malý, chyby budou opraveny. Pokud je tedy míra chyb zaváděných poruchovými Gate dostatečně malá, oprava chyb má dobrou šanci na úspěch.
Pro transverzální implementaci dvou-Qubit Gate na druhou stranu existuje potenciál pro šíření chyb — jednoduše se tomu nelze vyhnout, jak jsme již pozorovali. Podstatné však je, že transverzální gadget nikdy nemůže způsobit šíření chyb v rámci jednoho kódového bloku.
Například u výše popsané transverzální implementace Gate CNOT pro CSS kód by se chyba mohla vyskytnout na horním Qubit horního kódového bloku těsně před provedením gadgetu a první CNOT v rámci gadgetu tuto chybu rozšíří na horní Qubit ve spodním bloku. Nicméně dvě výsledné chyby jsou nyní v oddělených kódových blocích. Za předpokladu, že náš kód dokáže opravit chybu , kroky opravy chyb, které proběhnou po gadgetu, obě chyby opraví jednotlivě — protože v každém kódovém bloku nastane pouze jediná chyba. Naproti tomu, kdyby k šíření chyb došlo uvnitř stejného kódového bloku, mohlo by to proměnit chybu s nízkou váhou na chybu s vysokou váhou, kterou kód nedokáže zvládnout.
Neuniverzálnost transverzálních Gate
Pro dva různé stabilizátorové kódy se může stát, že konkrétní Gate lze implementovat transverzálně jedním kódem, ale ne druhým. Například zatímco Gate nelze implementovat transverzálně pomocí -Qubit Steaneova kódu, existují jiné kódy, pro které to možné je.
Bohužel pro žádný netriviální kvantový kód pro opravu chyb nikdy není možné implementovat univerzální množinu Gate transverzálně. Tento fakt je známý jako Eastinova-Knillova věta.
Důkaz této věty zde nebude vysvětlen. (Není to komplikovaný důkaz, ale vyžaduje základní znalost Lieových grup a Lieových algeber, které nepatří mezi předpoklady této série.) Základní myšlenku však lze vyjádřit intuitivně: Nekonečné rodiny transverzálních operací nemohou zůstat v kódovém prostoru netriviálního kódu, protože nepatrné rozdíly v transverzálních operacích jsou dobře aproximovány Pauliho operacemi s nízkou váhou, které kód detekuje jako chyby.
Shrnutí: transverzální gadgety nabízejí jednoduchou a ze své podstaty odolnou implementaci Gate — ale pro jakoukoli rozumnou volbu kvantového kódu pro opravu chyb nikdy nebude existovat univerzální množina Gate, kterou by bylo možné implementovat tímto způsobem, což vyžaduje použití alternativních gadgetů.
Magické stavy
Vzhledem k tomu, že pro žádnou netriviální volbu kvantového kódu pro opravu chyb není možné implementovat univerzální množinu kvantových Gate transverzálně, musíme zvážit jiné metody pro implementaci Gate odolnou vůči chybám. Jedna známá metoda je založena na pojmu magických stavů, což jsou kvantové stavy Qubit, které umožňují implementace určitých Gate odolné vůči chybám.
Implementace Gate pomocí magických stavů
Začněme tím, že se podíváme na Gate a , které mají následující maticový popis.
Podle definice je Cliffordova operace, zatímco není; Gate není možné implementovat pomocí Circuit složeného z Cliffordových Gate (Gate , Gate a CNOT Gate).
Nicméně je možné implementovat Gate (až na globální fázi) pomocí Circuit složeného z Cliffordových Gate, pokud navíc máme k dispozici kopii stavu
a pokud povolíme měření ve standardní bázi a klasicky řízené Gate. Konkrétně následující Circuit ukazuje jeden způsob, jak toho dosáhnout. Jev, který zde vidíme, je poněkud zjednodušený příklad teleportace kvantového Gate.
Abychom ověřili, že tento Circuit funguje správně, můžeme nejprve spočítat účinek CNOT Gate na vstup.
Měření proto dává výsledky a se stejnou pravděpodobností. Pokud je výsledek Gate se neprovede a výstupní stav je a pokud je výsledek Gate se provede a výstupní stav je
Stav se v tomto kontextu nazývá magický stav, i když není v tomto ohledu jedinečný: i jiné stavy se nazývají magické stavy, když je lze použít podobným způsobem (případně pro jiné Gate a s použitím jiných Circuit). Například záměnou stavu za stav a nahrazením Gate ve výše uvedeném Circuit za Gate implementujeme Gate — což je potenciálně užitečné pro výpočet odolný proti chybám pomocí kódu, pro který nelze Gate implementovat transversálně.
Gadgety odolné proti chybám z magických stavů
Nemusí být zřejmé, že použití magických stavů k implementaci Gate je užitečné pro odolnost proti chybám. Například u výše popsané implementace Gate se zdá, že stále potřebujeme aplikovat Gate na stav , abychom získali magický stav, který pak použijeme k implementaci Gate . Jaká je tedy výhoda použití tohoto přístupu pro odolnost proti chybám?
Zde jsou tři klíčové body, které na tuto otázku odpovídají.
-
Vytváření magických stavů nevyžaduje aplikaci Gate, který se snažíme implementovat, na konkrétní stav. Například aplikace Gate na stav není jediný způsob, jak získat stav .
-
Vytváření magických stavů lze provádět odděleně od výpočtu, ve kterém se používají. To znamená, že chyby, které vzniknou v procesu vytváření magického stavu, se nebudou šířit do samotného prováděného výpočtu.
-
Pokud lze jednotlivé Gate v Circuit implementujícím zvolený Gate pomocí magického stavu implementovat odolně proti chybám a předpokládáme dostupnost magických stavů, získáme implementaci zvoleného Gate odolnou proti chybám.
Pro zjednodušení následující diskuse se zaměřme konkrétně na Gate — s tím, že metodologii lze rozšířit i na jiné Gate. Implementace Gate odolná proti chybám pomocí magických stavů má podobu naznačenou následujícím obrázkem.
Qubity v původním Circuit s -Gate odpovídají logickým Qubitům v tomto diagramu, které jsou kódovány libovolným kódem, který používáme pro odolnost vůči chybám.
Vstupy a výstupy v diagramu by proto měly být chápány jako kódování těchto stavů.
To znamená zejména to, že ve skutečnosti nepotřebujeme jen magické stavy — potřebujeme kódované magické stavy.
Gate v původním Circuit s -Gate jsou zde nahrazeny gadgety, o kterých předpokládáme, že jsou odolné vůči chybám.
Tento konkrétní obrázek tedy naznačuje, že už máme odolné gadgety pro CNOT Gate a Gate. Pro barevný kód by tyto gadgety mohly být transverzální; pro povrchový kód (nebo jakýkoli jiný CSS kód) lze CNOT provést transverzálně, zatímco gadget pro Gate by sám mohl být implementován pomocí magických stavů, jak bylo dříve naznačeno jako možné. (Obrázek také naznačuje, že máme odolný gadget pro provádění měření ve standardní bázi, které jsme dosud ignorovali. To by ve skutečnosti mohlo být náročné pro některé kódy vybrané tak, aby to bylo obtížné, ale pro CSS kód je to záležitost měření každého fyzického Qubitu následovaného klasickým post-processingem.)
Implementace je tedy odolná vůči chybám za předpokladu, že máme kódování magického stavu Ale stále jsme neřešili otázku, jak získáme kódování tohoto stavu. Jedním ze způsobů, jak získat kódované magické stavy (nebo možná přesněji, jak je vylepšit), je proces známý jako destilace magických stavů. Následující diagram ilustruje, jak tento proces vypadá na nejvyšší úrovni.
Slovně řečeno, sbírka zašuměných kódovaných magických stavů je přivedena do speciálního typu Circuit známého jako destilátor. Všechny výstupní bloky kromě jednoho jsou změřeny — což znamená, že logické Qubity jsou měřeny měřeními ve standardní bázi. Pokud je jakýkoli výsledek měření proces selhal a musí být restartován. Pokud však každý výsledek měření je výsledný stav horního kódového bloku bude méně zašuměný kódovaný magický stav. Tento stav by pak mohl být spojen s dalšími čtyřmi jako vstupy do dalšího destilátoru, nebo použit k implementaci Gate, pokud je považován za dostatečně blízký pravému kódovanému magickému stavu. Samozřejmě, proces musí někde začít, přičemž jednou z možností je připravit je neodolným způsobem.
Existují různé známé způsoby, jak sestavit samotný destilátor, ale ty zde nebudou vysvětleny ani analyzovány. Na logické úrovni je typický přístup — pozoruhodně a poněkud shodou okolností — spuštění kódovacího Circuit pro stabilizátorový kód pozpátku! To by ve skutečnosti mohl být jiný stabilizátorový kód, než ten používaný pro opravu chyb. Například by se mohl potenciálně použít povrchový nebo barevný kód pro opravu chyb, ale spustit enkodér pro -Qubitový kód pozpátku za účelem destilace magických stavů. Kódovací Circuit pro stabilizátorové kódy vyžadují pouze Cliffordovy Gate, což zjednodušuje odolnou implementaci destilátoru. Ve skutečnosti jsou specifika závislá na použitých kódech.
Stručně řečeno, tato sekce si kladla za cíl poskytnout pouze velmi obecnou diskusi o magických stavech, se záměrem poskytnout jen základní představu o tom, jak to funguje. Někdy se tvrdí, že režie pro použití magických stavů k odolné implementaci Gate by byla extrémně vysoká, přičemž drtivá většina práce by šla do procesu destilace. To však ve skutečnosti není tak jasné — existuje mnoho potenciálních způsobů, jak tyto procesy optimalizovat. Existují navíc alternativní přístupy k budování odolných gadgetů pro Gate, které nelze implementovat transverzálně. Například deformace kódu a přepínání kódu jsou klíčová slova spojená s některými z těchto schémat — a nové způsoby se nadále vyvíjejí a zdokonalují.
Odolná oprava chyb
Kromě implementace různých gadgetů potřebných pro odolnou implementaci daného kvantového Circuit existuje další důležitá otázka, kterou je třeba si uvědomit: implementace samotných kroků opravy chyb. To se vrací k myšlence, že cokoli zahrnující kvantovou informaci je náchylné k chybám — včetně Circuit, které jsou samy o sobě určeny k opravě chyb.
Uvažuj například typ Circuit popsaný v lekci „Stabilizátorový formalismus" pro nedestruktivní měření generátorů stabilizátoru pomocí odhadu fáze. Tyto Circuit zjevně nejsou odolné vůči chybám, protože mohou způsobit šíření chyb v kódovém bloku, na kterém operují. To se může zdát poměrně problematické, ale existuje několik známých způsobů, jak provádět opravu chyb odolně tak, aby nedocházelo k šíření chyb v opravovaných kódových blocích.
Jedna metoda je známá jako Shorova oprava chyb, protože ji poprvé objevil Peter Shor. Myšlenka je provádět měření syndromů pomocí takzvaného cat stavu, což je -Qubitový stav tvaru
kde a označují řetězce samých nul a samých jedniček délky Například se jedná o stav pro a GHZ stav pro ale obecně Shorova oprava chyb vyžaduje takový stav pro rovné váze měřeného generátoru stabilizátoru.
Jako příklad zde zobrazený Circuit měří generátor stabilizátoru tvaru
To vyžaduje konstrukci samotného cat stavu, a aby to spolehlivě fungovalo v přítomnosti chyb a potenciálně vadných Gate, metoda ve skutečnosti vyžaduje opakované spouštění Circuit jako je tento, aby se daly odvodit závěry o tom, kde mohly různé chyby nastat během procesu.
Alternativní metoda je známá jako Steaneova oprava chyb. Tato metoda funguje odlišně a funguje pouze pro CSS kódy. Myšlenka je taková, že ve skutečnosti neprovádíme měření syndromů na kódovaných kvantových stavech v Circuit, který se snažíme spustit, ale místo toho záměrně šíříme chyby do pracovního systému, a poté tento systém změříme a klasicky detekujeme chyby. Následující diagramy Circuit ilustrují, jak to lze provést pro detekci a chyb.