Mitygacja błędów odczytu dla prymitywu Sampler z użyciem M3
Szacowane użycie: poniżej jednej minuty na procesorze Heron r2 (UWAGA: To jest wyłącznie szacunek. Twój czas wykonania może się różnić.)
Wprowadzenie
W odróżnieniu od prymitywu Estimator, prymityw Sampler nie ma wbudowanego wsparcia dla mitygacji błędów. Kilka metod obsługiwanych przez Estimator jest zaprojektowanych specjalnie dla wartości oczekiwanych i dlatego nie ma zastosowania do prymitywu Sampler. Wyjątkiem jest mitygacja błędów odczytu, która jest wysoce skuteczną metodą mającą zastosowanie również do prymitywu Sampler.
Dodatek M3 do Qiskit implementuje efektywną metodę mitygacji błędów odczytu. Ten samouczek wyjaśnia, jak używać dodatku M3 do Qiskit w celu mitygacji błędów odczytu dla prymitywu Sampler.
Czym jest błąd odczytu?
Bezpośrednio przed pomiarem stan rejestru Qubitów jest opisany superpozycją stanów bazy obliczeniowej lub macierzą gęstości. Pomiar rejestru Qubitów do klasycznego rejestru bitów przebiega dwuetapowo. Najpierw wykonywany jest właściwy pomiar kwantowy. Oznacza to, że stan rejestru Qubitów jest rzutowany na pojedynczy stan bazowy charakteryzowany ciągiem -ek i -ek. Drugi etap polega na odczytaniu bitstringa charakteryzującego ten stan bazowy i zapisaniu go w pamięci klasycznego komputera. Nazywamy ten krok odczytem. Okazuje się, że drugi etap (odczyt) generuje więcej błędów niż pierwszy (rzutowanie na stany bazowe). Ma to sens, gdy przypomnisz sobie, że odczyt wymaga wykrycia mikroskopowego stanu kwantowego i wzmocnienia go do sfery makroskopowej. Rezonator odczytu jest sprzężony z Qubitem (transmonem), dzięki czemu doświadcza bardzo małego przesunięcia częstotliwości. Impuls mikrofalowy jest następnie odbijany od rezonatora, przy czym doświadcza małych zmian swoich charakterystyk. Odbity impuls jest następnie wzmacniany i analizowany. Jest to delikatny proces i podlega szeregowi błędów.
Ważny wniosek jest taki, że choć zarówno pomiar kwantowy, jak i odczyt są obarczone błędami, ten drugi generuje dominujący błąd, zwany błędem odczytu, który jest przedmiotem tego samouczka.
Podstawy teoretyczne
Jeśli próbkowany bitsring (przechowywany w pamięci klasycznej) różni się od bitstringa charakteryzującego rzutowany stan kwantowy, mówimy, że wystąpił błąd odczytu. Obserwuje się, że te błędy są losowe i nieskorelowane między próbkami. Okazało się użyteczne modelowanie błędu odczytu jako zaszumionego kanału klasycznego. To znaczy, dla każdej pary bitstringów i , istnieje stałe prawdopodobieństwo, że prawdziwa wartość zostanie błędnie odczytana jako .
Dokładniej, dla każdej pary bitstringów istnieje (warunkowe) prawdopodobieństwo , że zostanie odczytane, pod warunkiem że prawdziwa wartość to Czyli,
gdzie jest liczbą bitów w rejestrze odczytu. Dla konkretności zakładamy, że jest dziesiętną liczbą całkowitą, której binarna reprezentacja jest bitstringiem etykietującym stany bazy obliczeniowej. Macierz nazywamy macierzą przypisań. Dla stałej prawdziwej wartości suma prawdopodobieństw po wszystkich zaszumionych wynikach musi wynosić . Czyli
Macierz bez ujemnych wpisów spełniająca (1) nazywana jest lewostochastyczną. Macierz lewostochastyczna jest też nazywana kolumnowostochastyczną, ponieważ każda z jej kolumn sumuje się do . Eksperymentalnie wyznaczamy przybliżone wartości każdego elementu , wielokrotnie przygotowując każdy stan bazowy i obliczając częstości wystąpień próbkowanych bitstringów.
Jeśli eksperyment polega na szacowaniu rozkładu prawdopodobieństwa na wyjściowych bitstringach przez wielokrotne próbkowanie, możemy użyć do mitygacji błędu odczytu na poziomie rozkładu. Pierwszym krokiem jest wielokrotne wykonanie interesującego obwodu, tworząc histogram próbkowanych bitstringów. Znormalizowany histogram to zmierzony rozkład prawdopodobieństwa na możliwych bitstringach, który oznaczamy przez . (Szacowane) prawdopodobieństwo próbkowania bitstringa jest równe sumie po wszystkich prawdziwych bitstringach , każdy ważony przez prawdopodobieństwo, że zostanie mylony z . Stwierdzenie to w formie macierzowej brzmi:
gdzie jest prawdziwym rozkładem. Innymi słowy, błąd odczytu ma efekt pomnożenia idealnego rozkładu bitstringów przez macierz przypisań , dając obserwowany rozkład . Zmierzyliśmy i , ale nie mamy bezpośredniego dostępu do . Zasadniczo uzyskamy prawdziwy rozkład bitstringów dla naszego obwodu, rozwiązując równanie (2) dla numerycznie.
Zanim przejdziemy dalej, warto zwrócić uwagę na kilka ważnych cech tego naiwnego podejścia.
- W praktyce równanie (2) nie jest rozwiązywane przez odwrócenie . Procedury algebry liniowej w bibliotekach programistycznych stosują metody bardziej stabilne, dokładne i efektywne.
- Szacując , zakładaliśmy, że wystąpiły wyłącznie błędy odczytu. W szczególności zakładamy, że nie było błędów przygotowania stanu i pomiaru kwantowego — lub przynajmniej że zostały one w inny sposób zmitigowane. W takim stopniu, w jakim jest to dobre założenie, rzeczywiście reprezentuje wyłącznie błąd odczytu. Ale gdy używamy do korekty zmierzonego rozkładu bitstringów, nie czynimy takiego założenia. W rzeczywistości oczekujemy, że interesujący obwód wprowadzi szumy, na przykład błędy bramek. „Prawdziwy" rozkład nadal zawiera efekty wszelkich błędów, które nie zostały w inny sposób zmitigowane.
Ta metoda, choć użyteczna w pewnych okolicznościach, ma kilka ograniczeń.
Zasoby przestrzeni i czasu potrzebne do oszacowania rosną wykładniczo wraz z :
- Szacowanie i jest obarczone błędem statystycznym wynikającym ze skończonego próbkowania. Szum ten można zminimalizować do dowolnie małej wartości kosztem większej liczby shotów (do skali czasowej dryfujących parametrów sprzętu, które skutkują systematycznymi błędami w ). Jednak jeśli nie przyjmuje się żadnych założeń dotyczących bitstringów obserwowanych podczas mitygacji, liczba shotów wymagana do oszacowania rośnie co najmniej wykładniczo wraz z .
- jest macierzą . Gdy , ilość pamięci potrzebna do przechowania jest większa niż pamięć dostępna w mocnym laptopie.
Dalsze ograniczenia to:
- Odtworzony rozkład może mieć jedno lub więcej ujemnych prawdopodobieństw (sumując się nadal do jedności). Jednym rozwiązaniem jest minimalizacja przy ograniczeniu, że każdy element jest nieujemny. Jednak czas wykonania takiej metody jest o rzędy wielkości dłuższy niż bezpośrednie rozwiązanie równania (2).
- Ta procedura mitygacji działa na poziomie rozkładu prawdopodobieństwa bitstringów. W szczególności nie może skorygować błędu w pojedynczym obserwowanym bitstringu.
Dodatek M3 do Qiskit: skalowanie do dłuższych bitstringów
Rozwiązanie równania (2) za pomocą standardowych numerycznych procedur algebry liniowej jest ograniczone do bitstringów o długości nie większej niż około 10 bitów. M3 może jednak obsługiwać znacznie dłuższe bitstringi. Dwie kluczowe właściwości M3, które to umożliwiają, to:
- Korelacje błędów odczytu rzędu trzeciego i wyższego wśród zbiorów bitów są uznawane za pomijalnie małe i są ignorowane. Zasadniczo, kosztem większej liczby shotów, można szacować wyższe korelacje.
- Zamiast konstruować wprost, używamy znacznie mniejszej efektywnej macierzy, która rejestruje prawdopodobieństwa wyłącznie dla bitstringów zebranych podczas konstruowania .
Na wysokim poziomie procedura działa następująco.
Najpierw konstruujemy bloki budulcowe, z których możemy zbudować uproszczony, efektywny opis . Następnie wielokrotnie uruchamiamy interesujący obwód i zbieramy bitstringi, których używamy do konstruowania zarówno , jak i — z pomocą bloków budulcowych — efektywnego .
Dokładniej:
-
Jednokubitowe macierze przypisań są szacowane dla każdego Qubitu. W tym celu wielokrotnie przygotowujemy rejestr Qubitów w stanie zerowym , a następnie w stanie jedynkowym , i rejestrujemy prawdopodobieństwo, że każdy Qubit zostanie odczytany niepoprawnie.
-
Korelacje rzędu trzeciego i wyższe są uznawane za pomijalnie małe i są ignorowane.
Zamiast tego konstruujemy macierzy przypisań dla pojedynczych Qubitów oraz macierzy przypisań dla par Qubitów. Te jedno- i dwukubitowe macierze przypisań są przechowywane do późniejszego użycia.
-
Po wielokrotnym próbkowaniu obwodu w celu konstruowania , konstruujemy efektywne przybliżenie , używając wyłącznie bitstringów próbkowanych podczas konstruowania . Ta efektywna macierz jest budowana z użyciem opisanych wcześniej macierzy jedno- i dwukubitowych. Wymiar liniowy tej macierzy wynosi co najwyżej rzędu liczby shotów użytych podczas konstruowania , co jest znacznie mniejsze niż wymiar pełnej macierzy przypisań .
Szczegóły techniczne dotyczące M3 można znaleźć w artykule Scalable Mitigation of Measurement Errors on Quantum Computers.
Zastosowanie M3 do algorytmu kwantowego
Zastosujemy mitygację odczytu M3 do problemu ukrytego przesunięcia. Problem ukrytego przesunięcia i ściśle z nim powiązane problemy, takie jak problem ukrytej podgrupy, zostały pierwotnie opracowane w kontekście odporności na błędy (a dokładniej, zanim udowodniono możliwość odpornych na błędy QPU!). Są jednak również badane na dostępnych procesorach. Przykład algorytmicznego wykładniczego przyspieszenia uzyskanego dla wariantu problemu ukrytego przesunięcia na 127-kubitowych QPU IBM® można znaleźć w tym artykule (wersja arXiv).
W poniższym tekście całe działania arytmetyczne są boolowskie. To znaczy, dla , dodawanie jest funkcją logiczną XOR. Ponadto mnożenie (lub ) jest funkcją logiczną AND. Dla , jest zdefiniowane przez bitowe zastosowanie XOR. Iloczyn skalarny jest zdefiniowany przez .
Operator Hadamarda i transformata Fouriera
W implementacji algorytmów kwantowych bardzo powszechne jest używanie operatora Hadamarda jako transformaty Fouriera. Stany bazy obliczeniowej są niekiedy nazywane stanami klasycznymi. Pozostają one w relacji jeden do jednego z klasycznymi bitstringami. Operator Hadamarda -Qubitowy na stanach klasycznych można traktować jako transformatę Fouriera na boolowskiej hiperkostce:
Rozważmy stan odpowiadający stałemu bitstringowi . Stosując i używając , widzimy, że transformatę Fouriera można zapisać jako
Operator Hadamarda jest swoją własną odwrotnością, czyli . Tak więc odwrotna transformata Fouriera jest tym samym operatorem, . Wprost mamy:
Problem ukrytego przesunięcia
Rozważamy prosty przykład problemu ukrytego przesunięcia. Problem polega na identyfikacji stałego przesunięcia na wejściu funkcji. Funkcją, którą rozważamy, jest iloczyn skalarny. Jest to najprostszy element dużej klasy funkcji dopuszczających kwantowe przyspieszenie dla problemu ukrytego przesunięcia za pomocą technik podobnych do tych przedstawionych poniżej.
Niech będą bitstringami długości . Definiujemy przez
Niech będą stałymi bitstringami długości . Definiujemy ponadto przez
gdzie i są (ukrytymi) parametrami. Dane są nam dwie czarne skrzynki: jedna implementująca , a druga . Zakładamy, że wiemy, że obliczają funkcje zdefiniowane powyżej, z tym że nie znamy ani , ani . Celem jest wyznaczenie ukrytych bitstringów (przesunięć) i przez wykonywanie zapytań do i . Oczywiste jest, że jeśli rozgrywamy tę grę klasycznie, potrzebujemy zapytań, aby wyznaczyć i . Na przykład możemy zapytać o wszystkie pary ciągów, takie że jeden element pary to same zera, a drugi ma dokładnie jeden element równy . W każdym zapytaniu poznajemy jeden element lub . Jednak zobaczymy, że jeśli czarne skrzynki są zaimplementowane jako obwody kwantowe, możemy wyznaczyć i za pomocą jednego zapytania do każdego z i .
W kontekście złożoności algorytmicznej czarna skrzynka jest nazywana wyrocznią. Oprócz bycia nieprzezroczystą, wyrocznia ma tę właściwość, że zużywa dane wejściowe i zwraca dane wyjściowe natychmiastowo, nie dodając nic do budżetu złożoności algorytmu, w którym jest osadzona. W rzeczywistości w rozpatrywanym przypadku wyrocznie implementujące i okazują się efektywne.
Obwody kwantowe dla i
Potrzebujemy następujących składników, aby zaimplementować i jako obwody kwantowe.
Dla jednobitowych stanów klasycznych , z , bramka controlled- może być zapisana jako
Będziemy operować bramkami CZ, jedną na , jedną na , i tak dalej, aż do . Ten operator nazywamy .
jest kwantową wersją :
Musimy też zaimplementować przesunięcie bitstringa. Oznaczamy operator na rejestrze przez jako i analogicznie na rejestrze przez . Operatory te stosują wszędzie tam, gdzie pojedynczy bit wynosi , i tożsamość wszędzie tam, gdzie wynosi . Wtedy mamy
Druga czarna skrzynka jest zaimplementowana przez unitarną