Aller au contenu principal

Révision des méthodes d'apprentissage automatique pertinentes

Dans cette section, nous passerons en revue quelques termes et méthodes clés de l'apprentissage automatique classique qui nous aideront à mieux comprendre les flux de travail en apprentissage automatique quantique. Nous introduirons d'abord quelques termes généraux, avant d'approfondir deux types d'apprentissage automatique : les méthodes à noyau (notamment dans le contexte d'une machine à vecteurs de support) et les réseaux de neurones. Il existe certes des connexions entre ces méthodes, mais nous les traiterons comme distinctes en raison des différences dans les flux de travail quantiques discutés ici et dans les leçons suivantes. Ce n'est qu'un aperçu succinct, et nous omettrons beaucoup de nuances. Pour un aperçu plus complet de l'apprentissage automatique, nous recommandons des ressources comme [1-3].

Types d'apprentissage automatique

En guise de définition simple, l'apprentissage automatique est une collection d'algorithmes qui analysent les patterns et les relations dans les données et en tirent des inférences. De manière générale, les algorithmes d'apprentissage automatique peuvent être regroupés en trois grandes catégories selon le type de données impliqué et la façon dont les algorithmes apprennent sans être explicitement programmés :

  1. Apprentissage supervisé : Dans l'apprentissage supervisé, les données utilisées pour entraîner le modèle sont étiquetées. L'objectif de ces algorithmes est d'apprendre la relation entre les données et leurs étiquettes ou sorties correspondantes et de généraliser cela à des données non vues. Les tâches courantes dans cette classe sont la classification et la régression.
  2. Apprentissage non supervisé : Contrairement à l'apprentissage supervisé, l'apprentissage non supervisé utilise des données non étiquetées pour entraîner le modèle d'apprentissage automatique. L'objectif de tels algorithmes est de découvrir des patterns et structures cachés dans les données. Certains algorithmes dans cette classe sont des algorithmes de regroupement et de réduction de dimensionnalité. Certains modèles génératifs comme les réseaux adversariaux génératifs et les auto-encodeurs variationnels peuvent également être considérés dans cette catégorie.
  3. Apprentissage par renforcement : Les algorithmes dans cette catégorie d'apprentissage automatique sont définis par un agent qui interagit avec un environnement. L'agent prend des actions et reçoit des retours de son environnement sous forme de récompenses et de punitions. Finalement, grâce à ce mécanisme de retour, l'agent apprend à prendre l'ensemble correct d'actions pour effectuer une tâche spécifique.

Une représentation schématique de l'apprentissage supervisé et non supervisé.

L'image de gauche montre deux catégories de données étiquetées comme dans l'apprentissage supervisé. Dans ce cas, les catégories sont linéairement séparables. L'image de droite montre des clusters de données. Dans une tâche d'apprentissage non supervisé, ces données ne seraient initialement pas étiquetées et l'algorithme étudierait la distribution, cherchant peut-être des clusters. À des fins de visualisation des clusters que l'algorithme pourrait identifier, les points de données ont maintenant été étiquetés. Une différence clé entre les deux est que le processus d'apprentissage supervisé commence avec les données déjà étiquetées et le processus non supervisé commence avec des données non étiquetées, même si les données sont étiquetées à la fin.

Introduire le « quantique » dans l'apprentissage automatique

On peut maintenant commencer à explorer comment le « quantique » est introduit dans l'apprentissage automatique. Dans cette catégorisation plus large, nous considérons le type de modèle/algorithme sur le dispositif de traitement, ainsi que le type de données qui lui est fourni. L'image ci-dessus résume ces combinaisons possibles.

Un diagramme montrant des quadrants avec des algorithmes sur un axe et des données sur l'autre, où chacun peut être quantique ou classique par nature.

Par exemple, CC signifie qu'on a un jeu de données classique — comme des images, des sons ou du texte qu'on peut stocker sur des ordinateurs classiques — et qu'on utilise également un ordinateur classique pour exécuter un algorithme d'apprentissage automatique. C'est précisément le cadre de l'apprentissage automatique classique. D'un autre côté, QQ signifie qu'on utilise un ordinateur quantique pour traiter des données quantiques. Ici, « données quantiques » pourrait signifier plusieurs choses, et pourrait dépendre du contexte. Les données quantiques pourraient être considérées comme un ensemble de résultats de mesures obtenus d'un dispositif quantique, ou elles pourraient se référer à des états qui ont été préparés sur un ordinateur quantique par un autre algorithme. À l'avenir, elles pourraient même se référer à des données stockées dans une QRAM (mémoire d'accès aléatoire quantique), qui n'existe pas encore. Lorsque les chercheurs parlent d'apprentissage automatique quantique, ils font généralement référence au régime CQ, où le jeu de données disponible est classique et le dispositif de traitement exécutant l'algorithme d'apprentissage automatique est un ordinateur quantique. Dans les parties suivantes du cours, nous nous concentrerons sur de tels algorithmes.

Machines à vecteurs de support

Nous récapitulons maintenant une classe d'algorithmes appelés machines à vecteurs de support d'un point de vue de l'apprentissage automatique classique. Plus tard, nous montrerons comment intégrer le calcul quantique dans cet algorithme.

Un diagramme d'une machine à vecteurs de support.

Supposons une tâche de classification binaire sur un jeu de données avec un espace de caractéristiques à deux dimensions comme le montre le graphique. Une chose qu'on peut faire pour effectuer la classification pour ce jeu de données est de trouver une ligne, ou en général un hyperplan qui sépare les deux classes. En pratique, on peut trouver une infinité de plans séparateurs, donc la question est : comment définit-on l'optimal ? L'idée ici est qu'une frontière de décision particulièrement bonne devrait maximiser la marge, définie comme la distance aux points les plus proches dans chaque classe. Dans ce cadre, les points de données avec la plus petite distance à la frontière de décision sont appelés vecteurs de support.

Une frontière de décision linéaire pourrait être décrite de plusieurs façons ; d'une certaine façon, la façon la plus directe est celle montrée dans f1f_1 ci-dessous. Ici, Θ\Theta est l'ensemble des paramètres définissant l'hyperplan, x\vec{x} est ton jeu de données, et bb est un décalage constant. Φ\Phi est une correspondance de l'espace des points de données d'entrée souvent (mais pas nécessairement) vers un espace de dimension supérieure. Nous reviendrons sur cette correspondance ci-dessous.

Dans le modèle f1,f_1, Θ\Theta est le vecteur de paramètres ajustables que le modèle apprendrait. C'est ce qu'on appelle la « formulation primale ». Avec quelques manipulations mathématiques, on peut montrer qu'il existe une deuxième façon de formuler le même problème. Nous appelons cela la « formulation duale », représentée par l'équation f2f_2 ci-dessous. Pour cette formulation, nous devons optimiser sur les paramètres alpha. La principale différence est que dans la formulation primale l'équation a un produit scalaire entre le vecteur de caractéristiques et les paramètres apprenables, alors que dans la formulation duale le produit scalaire est entre les vecteurs de caractéristiques. Même si la formulation duale inclut à la fois les caractéristiques des données d'entraînement et les étiquettes correspondantes, nous verrons dans la prochaine section comment elle s'avère être plus utile que la formulation primale.

f1(x)=ΘTΦ(x)+bf_1(\vec{x}) = \Theta^T \Phi(\vec{x})+b f2(x)=i=1nαiyiΦT(xi)Φ(x)+bf_2(\vec{x}) = \sum_{i=1}^n \alpha_i y_i \Phi^T(\vec{x}_i)\Phi(\vec{x})+b

Méthodes à noyau et comment le quantique peut jouer un rôle

La vidéo ci-dessous motive comment le quantique peut jouer un rôle dans les classificateurs linéaires. Cela est décrit plus en détail dans le texte.

Passage vers des espaces de plus grande dimension

Dans cette sous-section et la suivante, la discussion se concentre sur les correspondances vers des dimensions supérieures. L'objectif ici est d'expliquer l'« astuce du noyau » dans le contexte des correspondances entre espaces, et ainsi préparer le terrain pour ce qu'est un noyau quantique. L'objectif n'est pas que des dimensions supérieures dans les fonctions d'onde quantiques résolvent tous nos problèmes. Comme mentionné dans l'introduction, les cartes de caractéristiques gaussiennes classiques sont déjà de dimension infinie. La dimensionnalité des caractéristiques de données est importante, mais les états quantiques à haute dimension ne sont pas suffisants pour améliorer les méthodes classiques.

Graphiquement, on peut facilement voir comment on peut généraliser l'approche SVM aux cas où les données originales ne sont pas linéairement séparables, avec la bonne correspondance vers des dimensions supérieures. En regardant les données bidimensionnelles sur la gauche, on peut voir qu'il n'y a pas de frontière de décision linéaire qui peut séparer les deux classes. Cependant, on peut envisager d'ajouter une troisième caractéristique à notre espace de caractéristiques. Si cette nouvelle caractéristique est — par exemple — la distance à l'origine des deux caractéristiques précédentes x1x_1 et x2x_2, alors les données deviennent linéairement séparables. Cela signifie également qu'on peut maintenant exécuter l'algorithme de machine à vecteurs de support avec succès sur cet espace de caractéristiques de dimension supérieure.

Un diagramme montrant un anneau d'un type de données avec un deuxième type de données remplissant le milieu de l'anneau. Une deuxième cellule montre les données projetées en 3D, comme en forme de bol. Maintenant les données sont linéairement séparables.

Nous désignons également cette « correspondance de caractéristiques » par Φ\Phi. La carte de caractéristiques correspond souvent de l'espace des données d'entrée à une dimension supérieure, comme montré ici, mais il existe des modèles et des algorithmes qui utilisent des correspondances vers des dimensions inférieures. La correspondance vers des dimensions supérieures est simplement un cas facile à visualiser et à comprendre.

x=(x1x2)\vec{x} = \begin{pmatrix}x_1 \\ x_2 \end{pmatrix} Φ(x)=(x1x2x12+x22)\vec{\Phi}(\vec{x}) = \begin{pmatrix}x_1 \\ x_2 \\ {x_1}^2+{x_2}^2\end{pmatrix}

Certaines cartes de caractéristiques peuvent correspondre à des espaces de très haute dimension. Dans de tels cas, la haute dimensionnalité rend les produits scalaires plus coûteux computationnellement. Nous reviendrons sur ce point ci-dessous.

Pourquoi la formulation duale est-elle utile ?

Rappelons les formulations primale et duale de notre modèle de frontière linéaire :

f1(x)=ΘTΦ(x)+bf_1(\vec{x}) = \Theta^T \Phi(\vec{x})+b f2(x)=i=1nαiyiΦT(xi)Φ(x)+bf_2(\vec{x}) = \sum_{i=1}^n \alpha_i y_i \Phi^T(\vec{x}_i)\Phi(\vec{x})+b

Maintenant que nous savons qu'utiliser une carte de caractéristiques pour accéder à un espace de dimension supérieure peut nous permettre de trouver avec succès un hyperplan séparateur, nous pouvons remplacer le vecteur de caractéristiques original x\vec{x} dans les équations par les vecteurs correspondant à la carte de caractéristiques. Cependant, si nous le faisons dans la formulation primale, nous rencontrons le problème de devoir calculer les produits scalaires entre les paramètres et une carte de caractéristiques potentiellement très haute dimension. Cependant, dans la formulation duale, nous voyons que ceux-ci sont remplacés par des produits scalaires entre des vecteurs correspondant à la carte de caractéristiques de différentes entrées.

Pour certaines cartes de caractéristiques, il peut être possible d'écrire le produit scalaire des vecteurs correspondant à la carte de caractéristiques ΦT(xi)Φ(xj)\vec{\Phi}^T(\vec{x}_i)\cdot \vec{\Phi}(\vec{x}_j) comme une fonction simple k(xi,xj)k(\vec{x}_i, \vec{x}_j) des variables originales (de dimension inférieure) xi\vec{x}_i et xj\vec{x}_j. Pour certains choix de Φ,\Phi, nous pourrions même être capables d'écrire ΦT(xi)Φ(xj)\vec{\Phi}^T(\vec{x}_i)\cdot \vec{\Phi}(\vec{x}_j) comme une fonction simple du produit scalaire de dimension inférieure xiTxj\vec{x}_i^T\vec{x}_j. Cela est computationnellement très bénéfique car on peut accéder à l'espace dans lequel les données sont linéairement séparables, mais sans le coût des manipulations en dimensions supérieures. En fait, puisque les vecteurs correspondant à la carte de caractéristiques n'apparaissent dans f2f_2 qu'en produits scalaires, nous n'avons peut-être même pas besoin d'effectuer explicitement la carte de caractéristiques pour calculer les produits scalaires. Nous appelons la fonction k(xi,xj)k(\vec{x}_i, \vec{x}_j) qui calcule les produits scalaires la « fonction noyau », et cette façon d'éviter le calcul de la carte de caractéristiques est appelée l'« astuce du noyau ». En fait, les vecteurs correspondant à la carte de caractéristiques pourraient même être de dimension infinie, mais le noyau pourrait toujours être calculé très efficacement.

La fonction noyau elle-même est une fonction de deux vecteurs de données d'entrée. L'insertion de chaque paire de vecteurs de données dans le jeu de données comme arguments de la fonction noyau donne une matrice symétrique positive semi-définie, appelée la matrice noyau :

k=(k(x1,x1)k(x1,x2)...k(x2,x1)k(x2,x2)...)k = \begin{pmatrix}k(\vec{x}_1,\vec{x}_1) & k(\vec{x}_1,\vec{x}_2) & ... \\ k(\vec{x}_2,\vec{x}_1) & k(\vec{x}_2,\vec{x}_2) & ... \\ \vdots & \vdots & \ddots\end{pmatrix}

Une fois que nous calculons la matrice noyau, on peut trouver les paramètres optimaux (αi\alpha_i) en utilisant des méthodes telles que des logiciels de programmation quadratique ou un algorithme appelé « optimisation minimale séquentielle ». Bien sûr, cela suppose qu'il existe un noyau calculable efficacement correspondant à une carte de caractéristiques qui rend tes classes de données linéairement séparables. Une approche connexe mais nouvelle est l'estimation du noyau quantique.

Noyaux quantiques

Les ordinateurs quantiques, ou les états quantiques en général, permettent une définition très naturelle du « noyau quantique ». On peut interpréter l'encodage d'une entrée x\vec{x} dans un état quantique Φ(x)|\Phi(\vec{x})\rangle comme une carte de caractéristiques. Ce processus peut effectivement mapper les données dans un espace de très haute dimension comme c'est courant dans les cartes de caractéristiques classiques, mais la dimensionnalité dépendra de la méthode d'encodage (voir la leçon sur l'encodage des données). Rappelons que le produit scalaire de deux états quantiques ψϕ\langle \psi | \phi \rangle est lié à la probabilité de mesurer l'état ϕ|\phi\rangle lorsqu'on est dans l'état ψ|\psi\rangle. On peut estimer le produit scalaire des deux points de données correspondants Φ(xi)\vec{\Phi}(\vec{x}_i) et Φ(xj)\vec{\Phi}(\vec{x}_j) en effectuant suffisamment de mesures du circuit résultant.

Une représentation abstraite d'un noyau comme circuit.

Comme nous le verrons plus tard dans le cours, on peut utiliser des mesures sur un circuit quantique comme celui montré ci-dessus pour estimer un noyau, et on peut ensuite exécuter l'optimisation SVM classiquement sur la matrice noyau pour apprendre les paramètres ajustables.

Classificateurs quantiques variationnels et réseaux de neurones

Un autre algorithme d'apprentissage automatique quantique à court terme est appelé « circuits quantiques variationnels » (VQC). Lorsque ces circuits sont utilisés dans une tâche de classification, tu pourrais voir le même acronyme utilisé pour désigner des « classificateurs quantiques variationnels » (également VQC). Ceux-ci tirent souvent parti de structures similaires aux réseaux de neurones classiques (NN) ; et dans ces cas, tu les verras décrits comme des réseaux de neurones quantiques (QNN). Il est important de comprendre que les VQC sont plus généraux et n'ont pas besoin de suivre une structure NN, mais nous commençons par analogie avec les NN pour clarifier le rôle que le quantique peut jouer dans les flux de travail d'apprentissage automatique existants. Nous discuterons ensuite des généralisations. Nous commençons par récapituler les réseaux de neurones classiques.

La vidéo ci-dessous donne un bref aperçu des réseaux de neurones, et où ils se chevauchent avec les circuits quantiques variationnels. Cela est exploré plus en détail dans le texte.

Un réseau de neurones est un modèle computationnel qui s'inspire librement de la structure et du fonctionnement des neurones dans un cerveau. Ces neurones, qui sont les nœuds que nous voyons dans l'image, sont organisés en couches et connectés par des poids.

QML_CR_background_QNN_2ndlayer.png

La première couche est la couche d'entrée, et les activations an0a_n^0 des neurones dans cette couche sont alimentées directement depuis les données x\vec{x} à analyser (comme le grisé des pixels individuels dans une image, par exemple). La dernière couche est une couche de sortie qui décrit la catégorisation (comme classer une image avec 90% de chance d'être un chien, et 10% de chance d'être un chat, pour rester avec l'exemple d'image).

QML_CR_background_QNN_output.png

Les neurones dans chaque couche traitent les signaux qu'ils reçoivent d'une couche précédente et les transmettent à la suivante par des poids, wiw_i (les connexions dans le diagramme). Si nous nous concentrons sur l'un de ces neurones, nous avons le bloc de construction d'un réseau de neurones, qui est appelé un « perceptron ». Mathématiquement, un perceptron prend un vecteur d'entrée x\vec{x}, et calcule son produit scalaire avec un vecteur de poids entraînable plus un biais. Et très important, le perceptron applique une fonction d'activation non linéaire (σ\sigma) par-dessus ce calcul. Ces fonctions d'activation non linéaires sont essentielles pour la grande puissance expressive des réseaux de neurones. Une autre façon de penser à cela est que, si nous n'avions pas de non-linéarité entre les couches, on pourrait en principe écrire l'ensemble du réseau de neurones comme une seule grande multiplication matricielle. Cela donnerait simplement un modèle linéaire, qui ne serait pas capable de capturer les patterns complexes que les réseaux de neurones profonds peuvent. Par conséquent, les fonctions d'activation non linéaires sont fondamentales dans les réseaux de neurones.

perceptron_CP.png

Des fonctions comme

f(x)=σ(wx+b)f(\vec{x}) = \sigma (\vec{w}\cdot \vec{x}+\vec{b})

sont calculées à chaque neurone en utilisant les données connues x\vec{x} et la non-linéarité σ\sigma ainsi que les vecteurs inconnus de poids w\vec{w} et de biais b\vec{b}. En général, il pourrait y avoir des poids non nuls entre tous les neurones de toutes les couches, et nous appellerions les poids de la couche LL à la couche L+1L+1 entre les neurones mm et n,n, wm,nLw^L_{m,n}. De même, le biais sur le nieˋmen^\text{ième} neurone de la LieˋmeL^\text{ième} couche serait bnL.b^L_n. Les biais ici ne sont pas liés aux bb's de la discussion du noyau quantique.

Tu pourrais commencer ton réseau de neurones avec un ensemble aléatoire de poids et de biais, ou à partir d'une configuration de départ raisonnable connue. De là, l'idée est de vérifier à quel point ton réseau de neurones classe les choses et de l'améliorer. Nous utilisons une fonction de coût pour décrire comment notre réseau de neurones s'écarte de la classification correcte. Il existe de nombreuses façons de définir une fonction de coût. Nous en décrirons un exemple courant ici, qui implique l'erreur quadratique moyenne (EQM) :

C(wm,nL,bnL)=1Ni=1Ntrainj=1Noutputs(vi,jpi,j)2C(w^L_{m,n},b^L_n) = \frac{1}{N}\sum_{i=1}^{N_\text{train}}\sum_{j=1}^{N_\text{outputs}}{(v_{i,j}-p_{i,j})^2}

Selon ton application, cela pourrait signifier prendre la différence entre la valeur réelle vi,jv_{i,j} d'une image ii des données d'entraînement pour la sortie jj (disons par exemple, une valeur de 1,0 sur le neurone de couche de sortie pour « chien » et un 0 sur tous les autres neurones) et la valeur prédite pi,jp_{i,j}. Mettre au carré cette différence et la sommer sur toutes les catégories, de sorte qu'elle capture non seulement si la bonne catégorie était la plus activée, mais aussi si les activations incorrectes sont réduites. On somme ensuite sur tous les exemples de notre ensemble d'entraînement et on obtient un coût.

On fait ensuite varier les paramètres comme les poids dans chaque couche, entre tous les neurones, et les biais sur tous les neurones. Des routines d'optimisation classiques comme la descente de gradient sont utilisées pour rechercher un minimum local dans la fonction de coût.

Perceptron quantique

Pour pouvoir construire le pendant quantique du perceptron, l'une des choses que nous devons considérer est de pouvoir implémenter la non-linéarité avec des circuits quantiques, ce qui est le rôle de la fonction d'activation dans les réseaux de neurones classiques. C'est parce que sans considérations supplémentaires, les circuits quantiques n'implémentent que des opérations unitaires, qui sont simplement linéaires. Il existe différentes méthodes que nous pouvons utiliser pour introduire la non-linéarité dans les circuits quantiques. L'une des principales méthodes consiste à utiliser les mesures comme source de non-linéarité. D'autres considérations incluent les méthodes basées sur la transformée de Fourier quantique, les mesures en milieu de circuit ou les circuits dynamiques, et la trace des qubits hors du circuit.

Réseau de neurones quantique

Un réseau de neurones quantique (QNN) fonctionne en encodant d'abord les données d'entrée avec la couche unitaire UU dans la figure, puis en appliquant des circuits quantiques correspondant aux poids entre les couches (WW's ci-dessous), et enfin une couche de mesure. Quelques points clés à ce sujet :

  • Le chargement des données et les pondérations sont des opérations linéaires.
  • Les mesures sont non linéaires.
  • Donc, comme dans le NN classique, nous avons à la fois des composantes linéaires et non linéaires.
  • Les circuits de poids ont encore des paramètres variationnels, donc il y a encore une minimisation classique à effectuer.

Une représentation d'un réseau de neurones quantique sous forme de circuit.

On peut utiliser un circuit comme celui ci-dessus pour calculer une fonction fQNN(x)=0U(X)WOWU(x)0f_{QNN}(x) = \langle 0|U^{\dagger}(X)W^{\dagger}OWU(x)|0\rangle Notons que cette fonction n'est pas généralement la même que la fonction f(x)f(x) décrite dans les NN classiques. En particulier, cette fonction inclut potentiellement de nombreuses couches de nombreux poids, et est appliquée sur toutes les données chargées dans ton circuit quantique par UU.

Généralisations

Nous pouvons maintenant examiner l'une des façons de construire le pendant quantique d'un réseau de neurones. Dans ce modèle, le flux d'information est différent d'un réseau de neurones à propagation avant classique. Dans le cadre classique, l'information coulerait de gauche à droite, en commençant par l'entrée et se terminant par la sortie du modèle, et dans la direction inverse lors de la rétropropagation pour entraîner le modèle.

Un diagramme montrant plusieurs couches de portes dans un réseau de neurones quantique

Cependant, dans cette construction de réseau de neurones quantique, nous voyons que le bloc unitaire qui encode les données se répète entre les blocs unitaires variationnels avec les paramètres entraînables. Cette stratégie, que nous désignons par « réalimentation des données », est soutenue par des résultats théoriques intéressants. En fait, un article de Pérez-Salinas et al. montre que, avec l'aide de plusieurs réalimentations de données, « un seul qubit fournit des capacités computationnelles suffisantes pour construire un classificateur quantique universel lorsqu'il est assisté d'une sous-routine classique ». Par conséquent, la réalimentation des données est une technique que nous pouvons utiliser pour améliorer l'expressivité et la puissance de représentation du modèle, permettant au réseau de neurones quantique d'approximer des fonctions complexes.

Références

[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.