Recapitulare a metodelor relevante de machine learning
În această secțiune, vom recapitula câțiva termeni și metode cheie din machine learning-ul clasic care ne vor ajuta să înțelegem mai bine fluxurile de lucru din quantum machine learning. Vom introduce mai întâi câțiva termeni generali, înainte de a aprofunda două tipuri de machine learning: metodele de kernel (în special în contextul unei mașini cu vectori suport) și rețelele neuronale. Există cu siguranță conexiuni între aceste metode, dar le vom trata ca distincte datorită diferențelor din fluxurile de lucru cuantice discutate aici și în lecțiile ulterioare. Aceasta este doar o prezentare generală sumară și vom omite o mare parte din nuanțe. Pentru o prezentare mai completă a machine learning-ului, recomandăm resurse precum [1-3].
Tipuri de machine learning
Prin definiție simplă, machine learning-ul este o colecție de algoritmi care analizează și trag inferențe din tipare și relații din date. La modul general, algoritmii de machine learning pot fi grupați în trei categorii principale în funcție de tipul de date implicate și de modul în care algoritmii învață fără a fi programați explicit:
- Învățare supravegheată: În învățarea supravegheată, datele utilizate pentru antrenarea modelului sunt etichetate. Scopul acestor algoritmi este de a învăța relația dintre date și etichetele sau ieșirile corespunzătoare și de a generaliza aceasta la date nevăzute. Sarcinile comune din această clasă sunt clasificarea și regresia.
- Învățare nesupravegheată: Spre deosebire de învățarea supravegheată, învățarea nesupravegheată utilizează date neetichetate pentru a antrena modelul de machine learning. Scopul unor astfel de algoritmi este de a descoperi tipare ascunse și structuri în date. Unii algoritmi din această clasă sunt algoritmii de clustering și de reducere a dimensionalității. Unele modele generative, cum ar fi rețelele adversariale generative și variational autoencoders, pot fi considerate și în această categorie.
- Învățare prin consolidare: Algoritmii din această categorie de machine learning sunt definiți de un agent care interacționează cu un mediu. Agentul efectuează acțiuni și primește feedback din mediul său sub formă de recompense și penalizări. În cele din urmă, prin acest mecanism de feedback, agentul învață să efectueze setul corect de acțiuni pentru a realiza o sarcină specifică.

Imaginea din stânga arată două categorii de date etichetate, ca în învățarea supravegheată. În acest caz, categoriile sunt separabile liniar. Imaginea din dreapta arată clustere de date. Într-o sarcină de învățare nesupravegheată, aceste date nu ar fi inițial etichetate, iar algoritmul ar studia distribuția, căutând poate clustere. Pentru a vizualiza exemplele de clustere pe care algoritmul le-ar putea identifica, punctele de date au fost acum etichetate. O diferență cheie între cele două este că procesul de învățare supravegheată începe cu datele deja etichetate, iar procesul nesupravegheată începe cu date neetichetate, chiar dacă datele sunt etichetate la final.
Introducerea „cuantic" în machine learning
Putem acum să începem să explorăm modul în care „cuantic" este introdus în machine learning. În această categorizare mai largă, luăm în considerare tipul de model/algoritm de pe dispozitivul de procesare, precum și tipul de date furnizate acestuia. Imaginea de mai sus rezumă aceste combinații posibile.

De exemplu, CC înseamnă că avem un set de date clasic – cum ar fi imagini, sunet sau text pe care le putem stoca pe computere clasice – și că folosim și un computer clasic pentru a rula un algoritm de machine learning. Acesta este exact cadrul clasic de machine learning. Pe de altă parte, QQ înseamnă că folosim un computer cuantic pentru a procesa date cuantice. Aici, „datele cuantice" ar putea însemna mai multe lucruri și ar putea fi dependente de context. Datele cuantice ar putea fi gândite ca un set de rezultate ale măsurătorilor obținute de la un dispozitiv cuantic, sau ar putea face referire la stări care au fost pregătite pe un computer cuantic de un alt algoritm. În viitor, ar putea chiar face referire la date stocate în QRAM (Quantum Random Access Memory), care nu există în prezent. Când cercetătorii vorbesc despre quantum machine learning, se referă de obicei la regimul CQ, unde setul de date la îndemână este clasic, iar dispozitivul de procesare care execută algoritmul de machine learning este un computer cuantic. În următoarele părți ale cursului, ne vom concentra pe astfel de algoritmi.
Mașini cu vectori suport
Recapitulăm acum o clasă de algoritmi numită mașini cu vectori suport din perspectiva machine learning-ului clasic. Mai târziu vom arăta cum să introducem computingul cuantic în acest algoritm.

Să presupunem o sarcină de clasificare binară pe un set de date cu un spațiu de caracteristici bidimensional, așa cum se arată în grafic. Un lucru pe care îl putem face pentru a efectua clasificarea acestui set de date este să găsim o linie, sau în general un hiperplan care separă cele două clase. În practică putem găsi infinit de multe hiperplane separatoare, deci întrebarea este: Cum definim cel optim? Ideea este că o limită de decizie deosebit de bună ar trebui să maximizeze marginea, definită ca distanța până la cele mai apropiate puncte din fiecare clasă. În acest context, punctele de date cu cea mai mică distanță față de limita de decizie se numesc vectori suport.
O limită de decizie liniară poate fi descrisă în mai multe moduri; într-un anumit sens, cel mai simplu mod este cel prezentat în de mai jos. Aici, este setul de parametri care definesc hiperplanul, este setul tău de date, iar este o deplasare constantă. este o mapare din spațiul punctelor de date de intrare, adesea (dar nu neapărat) către un spațiu de dimensiune mai mare. Ne vom întoarce la această mapare mai jos.
În modelul este vectorul parametrilor ajustabili pe care modelul îi va învăța. Aceasta este ceea ce numim „formularea primară". Prin câteva manipulări matematice putem arăta că există o a doua modalitate de a formula aceeași problemă. Aceasta se numește „formularea duală", reprezentată de ecuația de mai jos. Pentru această formulare, trebuie să optimizăm parametrii alfa. Principala diferență este că în formularea primară ecuația are un produs intern între vectorul de caracteristici și parametrii care se pot învăța, în timp ce în formularea duală produsul intern este între vectorii de caracteristici. Deși forma duală include atât caracteristicile datelor de antrenament, cât și etichetele corespunzătoare, vom vedea în secțiunea următoare cum se dovedește a fi mai utilă decât forma primară.
Metode de kernel și rolul cuanticului
Videoclipul de mai jos motivează modul în care cuanticul poate juca un rol în clasificatorii liniari. Aceasta este descrisă în detaliu mai mare în text.
Trecerea la spații de dimensiuni mai mari
În această subsecțiune și în cea următoare, discuția se concentrează pe mapările la dimensiuni mai mari. Scopul este de a explica „trucul kernel" în contextul mapărilor între spații și de a pregăti astfel scena pentru ceea ce este un kernel cuantic. Ideea nu este că dimensiunile mai mari ale funcțiilor de undă cuantice rezolvă toate problemele noastre. Așa cum s-a menționat în introducere, mapările clasice de caracteristici gaussiene sunt deja de dimensiune infinită. Dimensionalitatea caracteristicilor datelor este importantă, dar stările cuantice de înaltă dimensionalitate nu sunt suficiente pentru îmbunătățirea față de metodele clasice.
Din punct de vedere grafic, se poate vedea ușor cum putem generaliza abordarea SVM la cazurile în care datele originale nu sunt separabile liniar, dacă avem maparea potrivită la dimensiuni mai mari. Privind datele bidimensionale din stânga, putem vedea că nu există nicio limită de decizie liniară care să separe cele două clase. Cu toate acestea, putem lua în considerare adăugarea unei a treia caracteristici la spațiul nostru de caracteristici. Dacă această nouă caracteristică este – de exemplu – distanța față de originea celor două caracteristici anterioare și , atunci datele devin separabile liniar. Aceasta înseamnă și că putem rula acum cu succes algoritmul mașinii cu vectori suport pe acest spațiu de caracteristici de dimensiune mai mare.

Notăm această „mapare a caracteristicilor" cu . Maparea caracteristicilor mapează adesea din spațiul datelor de intrare la o dimensiune mai mare, așa cum se arată aici, dar există modele și algoritmi care utilizează mapări la dimensiuni mai mici. Maparea la dimensiuni mai mari este pur și simplu un caz ușor de vizualizat și de înțeles.
Unele mapări de caracteristici pot mapa în spații de dimensiuni foarte mari. În astfel de cazuri, dimensionalitatea ridicată face produsele interne mai costisitoare din punct de vedere computațional. Ne vom întoarce la acest punct mai jos.
De ce este utilă forma duală?
Reamintește formulările primară și duală ale modelului nostru de limită liniară:
Acum că știm că utilizarea unei mapări de caracteristici pentru a ajunge la un spațiu de dimensiune mai mare ne poate permite să găsim cu succes un hiperplan separator, putem înlocui vectorul de caracteristici original din ecuații cu vectorii mapați după caracteristici. Cu toate acestea, dacă facem acest lucru în formularea primară, întâlnim problema de a fi nevoiți să calculăm produsele interne dintre parametri și o mapare de caracteristici potențial de dimensiune foarte mare. Totuși, în formularea duală, vedem că acestea sunt înlocuite cu produse interne între vectorii mapați după caracteristici ai diferitelor intrări.
Pentru unele hărți de caracteristici, poate fi posibil să scriem produsul intern al vectorilor mapați ca o funcție simplă a variabilelor originale (de dimensiune mai mică) și . Pentru anumite alegeri ale lui putem chiar să scriem ca o funcție simplă a produsului intern de dimensiune mai mică . Acest lucru este foarte avantajos din punct de vedere computațional, deoarece putem accesa spațiul în care datele sunt liniar separabile, fără costul manipulărilor în dimensiuni mai mari. De fapt, deoarece vectorii mapați apar în doar în produse interne, s-ar putea să nu fie nevoie să efectuăm explicit maparea caracteristicilor pentru a calcula produsele interne. Numim funcția care calculează produsele interne „funcția kernel", iar această metodă de a evita calculul mapării caracteristicilor se numește „trucul kernel". De fapt, vectorii mapați ar putea fi chiar de dimensiune infinită, dar kernel-ul ar putea fi în continuare calculabil foarte eficient.
Funcția kernel în sine este o funcție a doi vectori de date de intrare. Inserând fiecare pereche de vectori de date din setul de date ca argumente ale funcției kernel obținem o matrice simetrică, pozitiv semidefinită, numită matricea kernel:
Odată ce calculăm matricea kernel, putem găsi parametrii optimi () folosind metode precum software de programare pătratică sau un algoritm numit „optimizare minimă secvențială". Desigur, acest lucru presupune că există un kernel calculabil eficient, corespunzător unei hărți de caracteristici care face clasele de date liniar separabile. O abordare înrudită, dar nouă, este estimarea kernel-ului cuantic.
Kerneluri cuantice
Calculatoarele cuantice, sau stările cuantice în general, permit o definiție foarte naturală a „kernel-ului cuantic". Putem interpreta encodarea unui input într-o stare cuantică ca o hartă de caracteristici. Acest proces poate într-adevăr să mapeze datele într-un spațiu de dimensiune foarte mare, așa cum este comun în hărțile de caracteristici clasice, dar dimensionalitatea va depinde de metoda de encodare (vezi lecția Encodarea Datelor). Reamintim că produsul intern a două stări cuantice este legat de probabilitatea de a măsura starea când ne aflăm în starea . Putem estima produsul intern al celor două puncte de date mapate și efectuând suficient de multe măsurători ale circuitului rezultat.

Așa cum vom vedea mai târziu în curs, putem folosi măsurători pe un circuit cuantic precum cel de mai sus pentru a estima un kernel, iar apoi putem rula optimizarea SVM în mod clasic pe matricea kernel pentru a învăța parametrii antrenabili.
Clasificatoare cuantice variaționale și rețele neuronale
Un alt algoritm de machine learning cuantic pentru termen scurt se numește „circuite cuantice variaționale" (VQC). Când aceste circuite sunt folosite într-o sarcină de clasificare, poți vedea același acronim folosit pentru a se referi la „clasificatoare cuantice variaționale" (tot VQC). Acestea valorifică adesea structuri similare cu rețelele neuronale clasice (NN); și în acele cazuri le vei vedea descrise ca rețele neuronale cuantice (QNN). Este important să înțelegi că VQC-urile sunt mai generale și nu trebuie să urmeze o structură NN, dar începem prin analogie cu NN-urile pentru a clarifica rolul pe care cuanticul îl poate juca în fluxurile de lucru existente de machine learning. Vom discuta apoi generalizările. Începem prin a recapitula rețelele neuronale clasice.
Videoclipul de mai jos oferă o scurtă recapitulare a rețelelor neuronale și a modului în care se suprapun cu circuitele cuantice variaționale. Acest lucru este explorat mai detaliat în text.
O rețea neuronală este un model computațional inspirat în mod vag de structura și funcția neuronilor dintr-un creier. Acești neuroni, care sunt nodurile pe care le vedem în imagine, sunt organizați în straturi și sunt conectați prin ponderi.

Primul strat este stratul de intrare, iar activările ale neuronilor din acest strat sunt introduse direct din datele care urmează să fie analizate (cum ar fi nuanța pixelilor individuali dintr-o imagine, de exemplu). Stratul final este un strat de ieșire care descrie categorizarea (cum ar fi clasificarea unei imagini cu 90% șanse de a fi un câine și 10% șanse de a fi o pisică, pentru a rămâne la exemplul cu imagini).

Neuronii din fiecare strat procesează semnalele pe care le primesc de la stratul anterior și le transmit celui următor prin ponderi, (conexiunile din diagramă). Dacă ne concentrăm pe unul dintre acești neuroni, avem blocul de bază al unei rețele neuronale, care se numește „perceptron". Din punct de vedere matematic, un perceptron primește un vector de intrare și calculează produsul său intern cu un vector de ponderi antrenabil plus un termen de bias. Și foarte important, perceptronul aplică o funcție de activare neliniară () peste acest calcul. Aceste funcții de activare neliniare sunt esențiale pentru puterea expresivă mare a rețelelor neuronale. Un alt mod de a gândi la asta este că, dacă nu am avea neliniare între straturi, atunci am putea în principiu să scriem întreaga rețea neuronală ca o singură înmulțire de matrice. Aceasta ar rezulta pur și simplu într-un model liniar, care nu ar putea capta tiparele complexe pe care rețelele neuronale profunde le pot. Prin urmare, funcțiile de activare neliniare sunt fundamentale în rețelele neuronale.

Funcții de forma
sunt calculate la fiecare neuron folosind datele cunoscute și neliniară, precum și vectorii necunoscuți de ponderi și biasuri . În general, ar putea exista ponderi nenule între toți neuronii tuturor straturilor, și am numi ponderile de la stratul la stratul între neuronii și . Similar, biasul de pe neuronul al stratului ar fi Biasurile de aici nu au legătură cu -urile din discuția despre kernel-ul cuantic.
Ai putea să-ți inițializezi rețeaua neuronală cu un set aleatoriu de ponderi și biasuri, sau dintr-o configurație de pornire rezonabilă și cunoscută. De acolo, ideea este să verifici cât de bine clasifică rețeaua ta neuronală și să o îmbunătățești. Folosim o funcție de cost pentru a descrie cum deviază rețeaua noastră neuronală de la clasificarea corectă. Există multe modalități de a defini o funcție de cost. Vom descrie un exemplu comun, aici, care implică eroarea medie pătratică (MSE):
În funcție de aplicația ta, aceasta ar putea însemna calcularea diferenței dintre valoarea reală a unei imagini din datele de antrenament pentru ieșirea (de exemplu, o valoare de 1.0 pe neuronul stratului de ieșire pentru „câine" și 0 pe toți ceilalți neuroni) și valoarea prezisă . Se ridică la pătrat acea diferență și se sumează peste toate categoriile, astfel că se surprinde nu doar dacă categoria corectă a fost cel mai activată, ci și dacă activările incorecte sunt reduse. Apoi sumăm peste toate exemplele din setul nostru de antrenament și obținem un cost.
Variăm apoi parametrii precum ponderile din fiecare strat, între toți neuronii, și biasurile pe toți neuronii. Rutinele de optimizare clasice precum gradientul descendent sunt folosite pentru a căuta un minim local în funcția de cost.
Perceptron cuantic
Pentru a putea construi corespondentul cuantic al perceptronului, unul dintre lucrurile pe care trebuie să le luăm în considerare este implementarea neliniare cu circuite cuantice, care este rolul funcției de activare în rețelele neuronale clasice. Aceasta deoarece, fără considerații suplimentare, circuitele cuantice implementează doar operații unitare, care sunt pur și simplu liniare. Există diferite metode pe care le putem folosi pentru a introduce neliniare în circuitele cuantice. Una dintre metodele principale este utilizarea măsurătorilor ca sursă de neliniare. Alte considerații includ metode bazate pe transformata Fourier cuantică, măsurători de mijloc de circuit sau circuite dinamice, și urmărirea qubiților în afara circuitului.
Rețea neuronală cuantică
O rețea neuronală cuantică (QNN) funcționează prin encodarea mai întâi a datelor de intrare cu stratul unitar din figură, apoi prin aplicarea circuitelor cuantice corespunzătoare ponderilor între straturi (-urile de mai jos), și în final un strat de măsurătoare. Câteva puncte cheie despre asta:
- Încărcarea datelor și ponderările sunt operații liniare.
- Măsurătorile sunt neliniare.
- Deci, ca și în NN clasic, avem atât componente liniare, cât și neliniare.
- Circuitele de ponderi au în continuare parametri variațional, deci există în continuare o minimizare clasică de efectuat.

Putem folosi un circuit ca cel de mai sus pentru a calcula o funcție Observă că această funcție nu este în general aceeași cu funcția descrisă în NN clasice. În particular, această funcție include potențial multe straturi de multe ponderi și este aplicată peste toate datele încărcate în circuitul tău cuantic prin .
Generalizări
Putem acum să ne uităm la unul dintre modurile de a construi corespondentul cuantic al unei rețele neuronale. În acest model, fluxul de informații este diferit față de o rețea neuronală clasică de tip feed-forward. În cadrul clasic, informația ar curge de la stânga la dreapta, începând cu intrarea și terminând cu ieșirea modelului, și în direcția inversă atunci când se face backpropagation pentru a antrena modelul.

Cu toate acestea, în această construcție a rețelei neuronale cuantice, vedem că blocul unitar care encodează datele se repetă între blocurile unitare variaționale cu parametrii antrenabili. Această strategie, la care ne referim ca „reîncărcare de date" (data reuploading), este susținută de rezultate teoretice interesante. De fapt, un articol al lui Pérez-Salinas et al. arată că, cu ajutorul mai multor reîncărcări de date, „un singur qubit oferă capacități computaționale suficiente pentru a construi un clasificator cuantic universal atunci când este asistat de o subrutină clasică." Prin urmare, data reuploading este o tehnică pe care o putem folosi pentru a îmbunătăți expresivitatea și puterea reprezentațională a modelului, permițând rețelei neuronale cuantice să aproximeze funcții complexe.
Referințe
[1] „Reinforcement Learning: An Introduction", Richard S. Sutton și Richard G. Barto, MIT Press, Ediția a doua, Cambridge, MA, 2018
[2] „Pattern Recognition and Machine Learning", Christopher M. Bishop, Springer, 2006
[3] „Foundations of Machine Learning", Mehryar Mohri, Afshin Rostamizadeh, și Ameet Talwalkar, MIT Press, Ediția a doua, 2018.