Algorytmy kwantowego uczenia maszynowego QML
\[ \newcommand{\bra}[1]{\left \langle #1 \right \rvert} \newcommand{\ket}[1]{\left \rvert #1 \right \rangle} \newcommand{\braket}[2]{\left \langle #1 \middle \rvert #2 \right \rangle} \]
Dziedziną łączącą klasyczne uczenie maszynowe i obliczenia kwantowe nazywamy kwantowym uczeniem maszynowym. QML (Quantum Machine Learning) powstało aby szybciej (czas trenowania modelu) i sprawniej (ewaluacja) rozwiązywać problemy uczenia maszynowego. Do tego celu chcemy wykorzystać procesory kwantowe oraz własności algorytmów kwantowych i ich przewagi nad klasycznymi odpowiednikami.
Dobre i uzyteczne procesory kwantowe, realizujące w pełni nasze oczekiwania to wciąz odległa przyszłość. Jednak bardzo szybko rozwija się dziedzina, która wskazuje jak uzywać aktualnych (słabych i zaszumionych) procesorów kwantowych z wykorzystaniem klasycznych optymalizatorów w podejściu hybrydowym.
Postaramy się zdefiniować jakie problemy i modele mozemy sformułować tak by nie wymagały one duzej liczby (zaszumionych) kubitów.
W podejściu tym komputery kwantowe mogą być uzywane i trenowane podobnie do sieci neuronowych. Mozemy np. kontrolować parametry fizyczne naszego układu kwantowego (natęzenie pola elektromagnetycznego, częstotliwość promienia laserowego), co pozwinno pozwolić rozwiązać probelmy analogicznie jak ma to miejsce w sieciach neuronowych. W bardziej rozszerzonym podejściu okazuje się, ze cały obwód kwantowy moze być kontrolowany za pomocą parametrów realizowanych w bramkach. Mozna go traktować jako rózniczkowalną funkcję. Automatyczne rózniczkowanie wykorzystywane jest w paradygmacie programowania Differentiable programming jak równiez w szeroko stosowanych sieciach neuronowych. Podejście to mozna wyrazic jako coś więcej niz sieci neuronowe. To paradygmat gdzie algorytmy nie są kodowane ale “uczące się”.
Dlatego idea trenowania komputerów kwantowych pozwala na więcej niz tylko realizacja modeli uczenia maszynowego. Trenowane obwody kwantowe mozna wykorzystać w chemii kwantowe, kwantowej optymalizacji, projektowaniu algorytmów kwantowych, kwantowej korekcji błędów czy zrozumienia układów fizycznych.
Parameterised Quantum Circuit jak ogólny model uczenia maszynowego
Wiemy juz jak składać bramki w celu utworzenia dowolnego (i o dowolnej głębokości) obwodu. \[ \ket{\psi'} = U_m(\theta_m)\dots U_2(\theta_2) U_1(\theta_1) \ket{\psi} \]
Część indywidualnych bramek (ze zbioru \((U_i)_{i=1,/dots,m}\)) moze być ustalona np. \(X\), \(CNOT\), czyli ich parametry są ściśle określone (np. \(\pi\)). Jednak część bramek moze zalezeć od parametrów obrotów wyrazonych najczęściej jako radiany (w zakresi \(\theta \in [-\pi, \pi]\)). Po przygotowaniu stanu \(\ket{\psi'}\) mozemy zmierzyć jeden lub cały zestaw kubitów. Po pomiarze kubity zostają w stanie bazowym zgodnie z wykorzystanym operatorem. Najczęściej wybieramy bazę obliczeniową pozwalającą uzyskać rezultat jako listę bitów.
Tak zdefiniowany i działający obwód kwantowy mozna wykorzystać do wielu rzeczy. Dla nas najwazniejszym aspektem jest mozliwość trenowania parametrów obwodu.
Variational Quantum Eigensolver
PQC uzywany jest do wygenerowania końcowego stanu \(\ket{\psi'}\), który jest bliski stanowi odpowiadającemu najmniejszej wartości własnej problemu zakodowanego w postaci Hamiltonianiu. Odpowiada to stanowi podstawowemu (o najnizszej energii) powiązanemu z minimum funkcji kosztu.
Quantum Neural Networks
PQC mozna wykorzystać do tworzenia modelu predykcyjnego - kwantowa sieć neuronowa jako klasyfikator. W tym przypadku dokonuje się pomiaru kilku a nawet jednego kubitu w celu weryfikacji wyniku. Stan początkowy powinien kodować próbkę danych do sklasyfikowania
Modele generatywne
W tym przypadku mozemy zbudować Quantum Circuit Born Machine gdzie dokonujemy pomiaru wszystkich kubitów w celu wygenerowania nowej próbki. Prawdopodobieństwo pojawienia się wartości otrzymanych z próbki zakodowane zostaje w stanie \(\ket{\psi'}\).
Kodowanie danych
Angle Encoding
Kazdy kubit moze być opisany przez dwa kąty \(\theta\in [0,\pi]\) oraz \(\phi \in [0,2\pi]\). Kazda wartość opisuje jeden punkt na sferze Blocha.
Schemat kodowania
Rozwazmy N wierszy 8 zmiennych \(X_1\dots X_8\) o wartościach rzeczywistych.
Potrzebujemy określić \(X_i^{max}\) oraz \(X_i^{min}\).
\(\theta^j_i = \frac{X^j_i - X_i^{min}}{X_i^{max}-X_i^{min}} \pi\)
Korzystając z bramki \(R_y\) mozemy zakodować kazdy kubit z osobnym kątem. Mozna takze wybrać dwie bramki z dwoma kątami dla jednego kubitu (\(R_y\) i \(R_z\))
Więcej przykładów kwantowego embeddingu
QAOA
Bramki kwantowe realizowane są w modelu bramkowym przez operatory unitarne
reprezentowane przez macierze.
\(U U^{\dagger} = U^{\dagger} U = I\)
Kazda macierz unitarna moze być przedstawiona jako:
\(U(H,t) = e^{-i H t}\)
gdzie \(H\) to macierz Hermitowska (\(H=H^{\dagger}\))
W ogólności, implementacja obwodu kwantowego, który dokładnie realizuje macierz unitarną dla zadanego Hamiltonianiu jest bardzo trudnym zadaniem. Hamiltonian taki zazwyczaj składa się z sumy wielu niekomutujących części.
\(H = H_1 + H_2 + \dots + H_n\)
Mozemy wykorzystać wzór Trotter'a-Suzuki
, który przybliza dowolną sumę macierzy \(e^{A + B} \approx \left( e^{A/n} e^{B/n} \right)^n\)
dlatego dla \(H=\sum_k H_k\) otrzymujemy $ U(H,t,n) = _{j=1}^n _k e^{-i H_k t/n} $