Przegląd istotnych metod uczenia maszynowego
W tej sekcji omówimy kilka kluczowych pojęć i metod z klasycznego uczenia maszynowego, które pomogą nam lepiej zrozumieć przepływy pracy w kwantowym uczeniu maszynowym. Najpierw wprowadzimy kilka ogólnych pojęć, a następnie przyjrzymy się bliżej dwóm rodzajom uczenia maszynowego: metodom jądrowym (szczególnie w kontekście maszyny wektorów nośnych) oraz sieciom neuronowym. Pomiędzy tymi metodami z pewnością istnieją powiązania, ale będziemy je traktować jako odrębne ze względu na różnice w przepływach kwantowych omawianych tutaj i w kolejnych lekcjach. Jest to jedynie pobieżny przegląd i pominiemy wiele niuansów. W celu pełniejszego zapoznania się z uczeniem maszynowym polecamy zasoby takie jak [1-3].
Rodzaje uczenia maszynowego
Zgodnie z prostą definicją, uczenie maszynowe to zbiór algorytmów, które analizują wzorce i zależności w danych oraz wyciągają na ich podstawie wnioski. Ogólnie rzecz biorąc, algorytmy uczenia maszynowego można pogrupować w trzy główne kategorie w zależności od rodzaju danych i sposobu, w jaki algorytmy uczą się bez jawnego programowania:
- Uczenie nadzorowane: W uczeniu nadzorowanym dane używane do trenowania modelu są etykietowane. Celem tych algorytmów jest nauczenie się zależności między danymi a odpowiadającymi im etykietami lub wynikami oraz uogólnienie tej wiedzy na niewidziane wcześniej dane. Typowymi zadaniami w tej klasie są klasyfikacja i regresja.
- Uczenie nienadzorowane: W przeciwieństwie do uczenia nadzorowanego, uczenie nienadzorowane wykorzystuje nieetykietowane dane do trenowania modelu uczenia maszynowego. Celem takich algorytmów jest odkrywanie ukrytych wzorców i struktur w danych. Niektóre algorytmy w tej klasie to algorytmy grupowania i redukcji wymiarowości. Niektóre modele generatywne, takie jak generatywne sieci przeciwstawne i wariacyjne autoenkodery, można również zaliczyć do tej kategorii.
- Uczenie przez wzmacnianie: Algorytmy w tej kategorii uczenia maszynowego są definiowane przez agenta, który wchodzi w interakcję ze środowiskiem. Agent podejmuje działania i otrzymuje informację zwrotną od środowiska w postaci nagród i kar. Dzięki temu mechanizmowi sprzężenia zwrotnego agent ostatecznie uczy się podejmować właściwy zestaw działań w celu wykonania konkretnego zadania.

Lewy obraz przedstawia dwie kategorie etykietowanych danych, jak w uczeniu nadzorowanym. W tym przypadku kategorie są liniowo separowalne. Prawy obraz pokazuje klastry danych. W zadaniu uczenia nienadzorowanego dane te początkowo nie byłyby etykietowane, a algorytm badałby rozkład, być może poszukując klastrów. W celu wizualizacji przykładowych klastrów, które algorytm mógłby zidentyfikować, punkty danych zostały teraz oznaczone etykietami. Kluczową różnicą między tymi dwoma podejściami jest to, że proces uczenia nadzorowanego zaczyna się od danych już oznaczonych etykietami, natomiast proces nienadzorowany zaczyna się od danych nieetykietowanych, nawet jeśli dane są etykietowane na końcu.
Wprowadzenie „kwantowości” do uczenia maszynowego
Możemy teraz zacząć badać, w jaki sposób „kwantowość” jest wprowadzana do uczenia maszynowego. W tej szerszej kategoryzacji rozważamy typ modelu/algorytmu na urządzeniu przetwarzającym, a także typ dostarczanych do niego danych. Powyższy obraz podsumowuje te możliwe kombinacje.

Na przykład CC oznacza, że dysponujemy klasycznym zbiorem danych – takim jak obrazy, dźwięk lub tekst, który możemy przechowywać na komputerach klasycznych – oraz że używamy komputera klasycznego do uruchomienia algorytmu uczenia maszynowego. Jest to właśnie klasyczne środowisko uczenia maszynowego. Z drugiej strony QQ oznacza, że używamy komputera kwantowego do przetwarzania danych kwantowych. Tutaj „dane kwantowe” mogą oznaczać kilka rzeczy i mogą zależeć od kontekstu. Dane kwantowe można traktować jako zbiór wyników pomiarów uzyskanych z urządzenia kwantowego lub mogą odnosić się do stanów przygotowanych na komputerze kwantowym przez inny algorytm. W przyszłości mogą nawet odnosić się do danych przechowywanych w QRAM (Quantum Random Access Memory), który obecnie nie istnieje. Gdy badacze mówią o kwantowym uczeniu maszynowym, zwykle mają na myśli reżim CQ, w którym dostępny zbiór danych jest klasyczny, a urządzeniem przetwarzającym wykonującym algorytm uczenia maszynowego jest komputer kwantowy. W kolejnych częściach kursu skupimy się na takich algorytmach.
Maszyny wektorów nośnych
Teraz pokrótce przypomnimy klasę algorytmów zwanych maszynami wektorów nośnych z punktu widzenia klasycznego uczenia maszynowego. Później pokażemy, jak wprowadzić do tego algorytmu obliczenia kwantowe.

Załóżmy zadanie klasyfikacji binarnej na zbiorze danych z dwuwymiarową przestrzenią cech, jak pokazano na wykresie. Jednym ze sposobów przeprowadzenia klasyfikacji dla tego zbioru danych jest znalezienie prostej lub – ogólnie – hiperpłaszczyzny oddzielającej obie klasy. W praktyce możemy znaleźć nieskończenie wiele hiperpłaszczyzn rozdzielających, więc pytanie brzmi: jak zdefiniować tę optymalną? Pomysł polega na tym, że szczególnie dobra granica decyzyjna powinna maksymalizować margines, zdefiniowany jako odległość do najbliższych punktów w każdej klasie. W tym ujęciu punkty danych o najmniejszej odległości do granicy decyzyjnej nazywane są wektorami nośnymi.
Liniową granicę decyzyjną można opisać na wiele sposobów; w pewnym sensie najprostszym sposobem jest ten pokazany w poniżej. Tutaj jest zbiorem parametrów definiujących hiperpłaszczyznę, jest Twoim zbiorem danych, a jest stałym przesunięciem. jest odwzorowaniem z przestrzeni wejściowych punktów danych, często (ale niekoniecznie) do przestrzeni o wyższej wymiarowości. Do tego odwzorowania wrócimy poniżej.
W modelu jest wektorem parametrów strojonych, których model miałby się uczyć. To właśnie nazywamy „sformułowaniem pierwotnym”. Za pomocą pewnych manipulacji matematycznych można pokazać, że istnieje drugi sposób sformułowania tego samego problemu. Nazywamy to „sformułowaniem dualnym”, przedstawionym równaniem poniżej. W tym sformułowaniu musimy optymalizować względem parametrów alfa. Główna różnica polega na tym, że w sformułowaniu pierwotnym równanie zawiera iloczyn skalarny między wektorem cech a uczonymi parametrami, podczas gdy w sformułowaniu dualnym iloczyn skalarny jest pomiędzy wektorami cech. Mimo że forma dualna zawiera zarówno cechy danych treningowych, jak i odpowiadające im etykiety, w następnej sekcji zobaczymy, jak okazuje się ona bardziej użyteczna niż forma pierwotna.
Metody jądrowe i rola, jaką może odegrać podejście kwantowe
Poniższy film przedstawia motywację, jak kwantowe podejście może odegrać rolę w klasyfikatorach liniowych. Jest to bardziej szczegółowo opisane w tekście.
Przejście do przestrzeni o wyższej wymiarowości
W tej i kolejnej podsekcji omówienie koncentruje się na odwzorowaniach do wyższych wymiarów. Chodzi tu o wyjaśnienie „triku jądrowego” w kontekście odwzorowań między przestrzeniami, a tym samym przygotowanie gruntu pod to, czym jest jądro kwantowe. Nie chodzi natomiast o to, że wyższe wymiary w kwantowych funkcjach falowych rozwiązują wszystkie nasze problemy. Jak wspomniano we wstępie, klasyczne mapy cech Gaussa są już nieskończenie wymiarowe. Wymiarowość cech danych jest ważna, ale wysokowymiarowe stany kwantowe nie są wystarczające do uzyskania poprawy w porównaniu z metodami klasycznymi.
Graficznie można łatwo zobaczyć, jak możemy uogólnić podejście SVM na przypadki, w których oryginalne dane nie są liniowo separowalne, przy odpowiednim odwzorowaniu do wyższych wymiarów. Patrząc na dwuwymiarowe dane po lewej stronie, widzimy, że nie ma liniowej granicy decyzyjnej, która mogłaby oddzielić obie klasy. Możemy jednak rozważyć dodanie trzeciej cechy do naszej przestrzeni cech. Jeżeli ta nowa cecha jest – na przykład – odległością od początku układu współrzędnych dla poprzednich dwóch cech i , to dane stają się liniowo separowalne. Oznacza to również, że możemy teraz skutecznie uruchomić algorytm maszyny wektorów nośnych w tej wyżejwymiarowej przestrzeni cech.

To „odwzorowanie cech” również oznaczamy jako . Mapa cech często odwzorowuje z przestrzeni danych wejściowych do wyższego wymiaru, jak pokazano tutaj, ale istnieją modele i algorytmy wykorzystujące odwzorowania do niższych wymiarów. Odwzorowanie do wyższych wymiarów jest po prostu łatwym przypadkiem do wizualizacji i zrozumienia.
Niektóre mapy cech mogą odwzorowywać do przestrzeni o bardzo wysokiej wymiarowości. W takich przypadkach wysoka wymiarowość sprawia, że iloczyny skalarne stają się bardziej kosztowne obliczeniowo. Wrócimy do tego punktu poniżej.
Dlaczego forma dualna jest użyteczna?
Przypomnijmy sformułowania pierwotne i dualne naszego liniowego modelu granicy:
Teraz, gdy wiemy, że użycie mapy cech w celu przejścia do przestrzeni o wyższej wymiarowości może pozwolić nam skutecznie znaleźć hiperpłaszczyznę rozdzielającą, możemy zastąpić oryginalny wektor cech w równaniach wektorami po odwzorowaniu cech. Jeżeli jednak zrobimy to w sformułowaniu pierwotnym, napotkamy problem konieczności obliczania iloczynów skalarnych między parametrami a potencjalnie bardzo wysokowymiarową mapą cech. Jednak w sformułowaniu dualnym widzimy, że są one zastąpione iloczynami skalarnymi między wektorami cech różnych danych wejściowych po odwzorowaniu.
For some feature maps, it may be possible to write the inner product of feature-mapped vectors as a simple function of the original (lower-dimensional) variables and . W przypadku niektórych wyborów możemy nawet być w stanie zapisać jako prostą funkcję iloczynu skalarnego w niższym wymiarze . Jest to bardzo korzystne obliczeniowo, ponieważ możemy uzyskać dostęp do przestrzeni, w której dane są liniowo separowalne, ale bez kosztu operacji w wyższych wymiarach. W istocie, ponieważ wektory po mapowaniu cech pojawiają się w jedynie w iloczynach skalarnych, możemy nawet nie potrzebować jawnie wykonywać mapowania cech, aby obliczyć iloczyny skalarne. Funkcję , która oblicza iloczyny skalarne, nazywamy „funkcją jądra”, a ten sposób uniknięcia obliczenia mapy cech nazywamy „sztuczką jądra”. W rzeczywistości wektory po mapowaniu cech mogłyby być nawet nieskończenie wymiarowe, ale jądro nadal mogłoby być bardzo efektywnie obliczalne.
Funkcja jądra jest funkcją dwóch wejściowych wektorów danych. Wstawienie każdej pary wektorów danych ze zbioru danych jako argumentów funkcji jądra daje symetryczną, dodatnio półokreśloną macierz, zwaną macierzą jądra:
Po obliczeniu macierzy jądra możemy znaleźć optymalne parametry () za pomocą metod takich jak oprogramowanie do programowania kwadratowego lub algorytm zwany „sekwencyjną minimalną optymalizacją”. Oczywiście zakłada to, że istnieje efektywnie obliczalne jądro odpowiadające mapie cech, która czyni klasy danych liniowo separowalnymi. Powiązanym, ale nowatorskim podejściem jest kwantowa estymacja jądra.
Jądra kwantowe
Komputery kwantowe, lub ogólnie stany kwantowe, pozwalają na bardzo naturalną definicję „jądra kwantowego”. Możemy interpretować zakodowanie wejścia w stan kwantowy jako mapę cech. Proces ten rzeczywiście może odwzorować dane w bardzo wysokowymiarową przestrzeń, jak to często bywa w klasycznych mapach cech, ale wymiarowość będzie zależeć od metody kodowania (zobacz lekcję Kodowanie danych). Przypomnijmy, że iloczyn skalarny dwóch stanów kwantowych jest powiązany z prawdopodobieństwem pomiaru stanu będąc w stanie . Możemy oszacować iloczyn skalarny dwóch odwzorowanych punktów danych i , wykonując wystarczająco wiele pomiarów powstałego obwodu.

Jak zobaczymy później w kursie, możemy wykorzystać pomiary na obwodzie kwantowym, takim jak ten pokazany powyżej, do oszacowania jądra, a następnie klasycznie uruchomić optymalizację SVM na macierzy jądra, aby nauczyć się dostrajalnych parametrów.
Wariacyjne klasyfikatory kwantowe i sieci neuronowe
Innym algorytmem kwantowego uczenia maszynowego krótkoterminowego jest tzw. „wariacyjne obwody kwantowe” (VQC). Gdy obwody te są używane w zadaniu klasyfikacji, można zobaczyć ten sam akronim odnoszący się do „wariacyjnych klasyfikatorów kwantowych” (również VQC). Często wykorzystują one struktury podobne do klasycznych sieci neuronowych (NN); a w takich przypadkach zobaczysz je opisywane jako kwantowe sieci neuronowe (QNN). Ważne jest, aby zrozumieć, że VQC są bardziej ogólne i nie muszą naśladować struktury NN, ale zaczynamy od analogii z NN, aby pomóc wyjaśnić rolę, jaką kwantowość może odegrać w istniejących przepływach pracy uczenia maszynowego. Następnie omówimy uogólnienia. Zaczynamy od podsumowania klasycznych sieci neuronowych.
Poniższy film zawiera krótki przegląd sieci neuronowych oraz ich części wspólnej z wariacyjnymi obwodami kwantowymi. Temat ten jest bardziej rozwinięty w tekście.
Sieć neuronowa jest modelem obliczeniowym luźno inspirowanym strukturą i funkcją neuronów w mózgu. Neurony te, które są węzłami widocznymi na obrazku, są zorganizowane w warstwy i połączone za pomocą wag.

Pierwsza warstwa to warstwa wejściowa, a aktywacje neuronów w tej warstwie są zasilane bezpośrednio z danych do analizy (jak na przykład cieniowanie poszczególnych pikseli w obrazie). Ostatnia warstwa to warstwa wyjściowa, która opisuje kategoryzację (jak klasyfikacja obrazu jako mającego 90% szansy bycia psem i 10% szansy bycia kotem, aby pozostać przy przykładzie obrazu).

Neurony w każdej warstwie przetwarzają sygnały, które otrzymują z poprzedniej warstwy, i przekazują je do następnej poprzez wagi (połączenia na diagramie). Jeśli skupimy się na jednym z tych neuronów, otrzymamy podstawowy element sieci neuronowej, zwany „perceptronem”. Matematycznie perceptron przyjmuje wektor wejściowy i oblicza jego iloczyn skalarny z trenowalnym wektorem wag plus pewne obciążenie. I co bardzo ważne, perceptron stosuje nieliniową funkcję aktywacji () na wynik tego obliczenia. Te nieliniowe funkcje aktywacji są kluczowe dla ogromnej zdolności ekspresyjnej sieci neuronowych. Innym sposobem myślenia o tym jest to, że gdybyśmy nie mieli nieliniowości między warstwami, to w zasadzie moglibyśmy zapisać całą sieć neuronową jako jedno wielkie mnożenie macierzy. Skutkowałoby to po prostu modelem liniowym, który nie byłby w stanie uchwycić złożonych wzorców, które mogą uchwycić głębokie sieci neuronowe. Dlatego nieliniowe funkcje aktywacji są fundamentalne w sieciach neuronowych.

Funkcje takie jak
są obliczane w każdym neuronie przy użyciu znanych danych i nieliniowej , a także nieznanych wektorów wag i obciążeń . Ogólnie mogą występować niezerowe wagi pomiędzy wszystkimi neuronami we wszystkich warstwach, a wagi z warstwy do warstwy pomiędzy neuronami i oznaczymy jako . Podobnie, obciążenie na -tym neuronie -tej warstwy oznaczymy jako Obciążenia te nie są związane z z dyskusji o jądrze kwantowym.
Możesz rozpocząć swoją sieć neuronową z losowym zestawem wag i obciążeń lub od znanej rozsądnej konfiguracji początkowej. Stamtąd pomysł polega na sprawdzeniu, jak dobrze twoja sieć neuronowa klasyfikuje rzeczy, i ulepszaniu jej. Używamy funkcji kosztu, aby opisać, w jaki sposób nasza sieć neuronowa odbiega od poprawnej klasyfikacji. Istnieje wiele sposobów definiowania funkcji kosztu. Opiszemy tutaj jeden powszechny przykład, który obejmuje błąd średniokwadratowy (MSE):
W zależności od zastosowania, mogłoby to oznaczać obliczenie różnicy między rzeczywistą wartością obrazu z danych treningowych dla wyjścia (powiedzmy na przykład wartość 1,0 na neuronie warstwy wyjściowej dla „psa” i 0 na wszystkich pozostałych neuronach) a wartością przewidywaną . Podnieść tę różnicę do kwadratu i zsumować po wszystkich kategoriach, tak aby uchwycić nie tylko to, czy poprawna kategoria została najbardziej aktywowana, ale również czy niepoprawne aktywacje zostały zmniejszone. Następnie sumujemy po wszystkich przykładach w naszym zbiorze treningowym i otrzymujemy koszt.
Następnie wariujemy parametry, takie jak wagi w każdej warstwie, pomiędzy wszystkimi neuronami, oraz obciążenia na wszystkich neuronach. Klasyczne procedury optymalizacji, takie jak spadek gradientu, są używane do wyszukiwania lokalnego minimum w funkcji kosztu.
Perceptron kwantowy
Aby móc zbudować kwantowy odpowiednik perceptronu, jedną z rzeczy, które musimy wziąć pod uwagę, jest możliwość implementacji nieliniowości za pomocą obwodów kwantowych, co jest rolą funkcji aktywacji w klasycznych sieciach neuronowych. Dzieje się tak, ponieważ bez dodatkowych rozważań obwody kwantowe implementują jedynie operacje unitarne, które są po prostu liniowe. Istnieją różne metody, których możemy użyć do wprowadzenia nieliniowości do obwodów kwantowych. Jedną z głównych metod jest użycie pomiarów jako źródła nieliniowości. Inne rozważania obejmują metody oparte na kwantowej transformacie Fouriera, pomiary w środku obwodu lub obwody dynamiczne oraz wytrącanie kubitów z obwodu.
Kwantowa sieć neuronowa
Kwantowa sieć neuronowa (QNN) działa poprzez najpierw zakodowanie danych wejściowych warstwą unitarną na rysunku, następnie zastosowanie obwodów kwantowych odpowiadających wagom między warstwami ( poniżej), a na końcu warstwy pomiaru. Kilka kluczowych punktów dotyczących tego:
- Ładowanie danych i ważenia są operacjami liniowymi.
- Pomiary są nieliniowe.
- Tak więc, podobnie jak w klasycznej NN, mamy zarówno komponenty liniowe, jak i nieliniowe.
- Obwody wag nadal posiadają parametry wariacyjne, więc nadal trzeba przeprowadzić klasyczną minimalizację.

Możemy użyć obwodu takiego jak powyżej do obliczenia funkcji Zauważ, że ta funkcja generalnie nie jest tożsama z funkcją opisaną w klasycznych NN. W szczególności funkcja ta obejmuje potencjalnie wiele warstw wielu wag i jest stosowana do wszystkich danych załadowanych do twojego obwodu kwantowego przez .
Uogólnienia
Możemy teraz przyjrzeć się jednemu ze sposobów konstruowania kwantowego odpowiednika sieci neuronowej. W tym modelu przepływ informacji jest inny niż w klasycznej jednokierunkowej sieci neuronowej. W klasycznym ustawieniu informacja przepływałaby z lewej strony na prawą, zaczynając od wejścia i kończąc na wyjściu modelu, a w odwrotnym kierunku podczas wstecznej propagacji w celu trenowania modelu.

Jednakże w tej konstrukcji kwantowej sieci neuronowej widzimy, że unitarny blok kodujący dane powtarza się pomiędzy wariacyjnymi blokami unitarnymi z trenowalnymi parametrami. Ta strategia, którą nazywamy „ponownym ładowaniem danych” (data reuploading), jest poparta interesującymi wynikami teoretycznymi. W istocie artykuł autorstwa Pérez-Salinas i in. pokazuje, że przy pomocy wielokrotnego ponownego ładowania danych „pojedynczy kubit zapewnia wystarczające możliwości obliczeniowe do skonstruowania uniwersalnego klasyfikatora kwantowego, gdy jest wspomagany klasyczną podprocedurą”. Dlatego ponowne ładowanie danych jest techniką, której możemy użyć do zwiększenia ekspresyjności i mocy reprezentacyjnej modelu, pozwalając kwantowej sieci neuronowej aproksymować złożone funkcje.
Bibliografia
[1] "Reinforcement Learning: An Introduction", Richard S. Sutton and Richard G. Barto, MIT Press, Second Edition, Cambridge, MA, 2018
[2] "Pattern Recognition and Machine Learning", Christopher M. Bishop, Springer, 2006
[3] "Foundations of Machine Learning", Mehryar Mohri, Afshin Rostamizadeh, and Ameet Talwalkar, MIT Press, Second Edition, 2018.