L'objectif de cette recherche est de comprendre le fonctionnement et les limites de l'IA.
L'intelligence artificielle, IA, est une branche de l'informatique comprenant des programmes d'apprentissage et des programmes de prédiction.
Les programmes d'apprentissage traitent des données complexes afin de les classer, ou de les régresser. La régression sera traitée à la fin.
Les résultats peuvent ensuite être utilisés par des programmes de prédiction, ou de décision.
Un programme d'apprentissage répartit par classe les données qu'il reçoit et établit les limites de ces classes, frontières de décision.
Un apprentissage de classification sépare les classes de la meilleure façon théorique.
Avant
Après
C'est le cas le plus simple et le plus compatible avec l'imagination.
Supposons qu'il faut détecter sur une route, limitée à 3,5t, les véhicules en infraction et les signaler à une patrouille de police.
Une caméra à l'entrée est capable de mesurer la longueur et la largeur de chaque véhicule.
Cette caméra transmet, au fur et à mesure, les dimensions à un programme de prédiction.
Comment faire en sorte que ce programme avertisse à bon escient ?
En IA, il suffit de rassembler dans un fichier, matrice, un max de dimensions de véhicules, en indiquant si ils dépassent 3,5 t.
On utilise cette matrice dans un programme d'apprentissage qui partage les dimendions en 2 classes, binaire, séparées par une droite, linéaire.
Dans les illustrations, les largeurs sont en abscisses et longueurs en ordonnées.
Avant exécution, les points bleus, >3,5t, et oranges, <3,5t, sont visiblement séparés. Cependant, la frontière entre les 2 classes est initialisée au hasard et des points
oranges sont en zone bleue.
Après les savants calculs, les deux classes sont correctement séparées par une frontière de décision linéaire, représentant l'équiprobabilité d'appartenance à une classe.
Ces informations sont utilisées par le prédicteur qui avertit la patrouille chaque fois qu'un véhicule de la zone bleue, probablement > 3,5t, est caméräisé.
Un esprit chagrin pourrait remarquer que les dimensions ont changé «en cours de route». C'est vrai car les points d'avant et ceux d'après sont extraits de deux tests.
J'avoue que j'ai la flemme de recommencer les copies d'écran.
Cependant, à quelque chose malheur est bon. Ça accentue l'importance de l'échantillon d'apprentissage. Il doit être le plus complet possible pour minimiser le risque d'erreur.
Dans la famille des binaires, biclasses, il y a aussi des frontières de décision inlinéaires.
En voici deux exemples, avec la situation avant, la situation après apprentissage linéaire et la situation après apprentissage complexe.
État initial
À l'abandon d'une tentative linéaire infructueuse
Après apprentissage inlinéaire
Exemple 1 d'apprentissage binaire, inlinéaire
État initial
À l'abandon d'une tentative linéaire infructueuse
Après apprentissage inlinéaire
Exemple 2 d'apprentissage binaire, inlinéaire
La différence de résultat saute aux yeux.
Il est inimaginable d'utiliser une prédiction issue d'un apprentissage linéaire dans ces cas.
Je ne veux pas mettre systématiquement en doute l'IA mais je me demande si elle est capable de changer de méthode en cas d'échec. Dans ces exemples, un humain voit que la linéarité est inadaptée et ne perd pas son temps.
Ce qui précède sert à imaginer l'apprentissage grâce à des exemples en 2 dimensions.
L'esprit humain peut imaginer deux dimensions, le plan. Il peut imaginer 3 dimensions, le volume, longueur, largeur, hauteur. Il peine avec 4 dimensions, un volume au fil du
temps. Mais à partir de 5 c'est le trou noir.
Que dire d'un échantillon d'images de 64x64, 4 096 dimensions ?
Théoriquement, le nombre de dimensions est illimité.
Il existe 3 modes d'apprentissage, supervisé, insupervisé et par renforcement.
Je commence par le plus facile à comprendre.
Avant
Après
Apprentissage supervisé d'une classification binaire linéaire
Dans le but de frapper les esprits, un module, programme élémentaire, de ce type est appelé neurone artificiel.
C'est surtout artificiel mais je conserve l'appellation, utile pour la suite.
Pour comprendre le principe, ou s'en souvenir, voir https://www.youtube.com/watch?v=VlMm4VZ6lk4&t=0s.
En résumé :
Les points, coordonnées x1x2, forment 2 «nuages» au travers desquels le programme trace une droite, au hasard.
Sachant que tous les points d'un côté sont censés appartenir à la classe 0, orange, et de l'autre à la classe 1, bleue, il calcule le risque d'erreur représenté par cette droite,
log loss, ll.
Il calcule ensuite l'influence, gradient, de chaque variable sur l'évolution de cette probabilité. Il doit augmenter la variable si son augmentation favorise une diminution du ll,
sinon il doit la diminuer.
Il ne touche pas directement à la variable. Il lui applique un poids, weight, wi, qu'il modifie légèrement, descente de gradient, en fonction d'un taux d'apprentissage,
learning rate.
Ces modifications provoquent le changement de droite qui donne lieu à de nouveaux calculs, boucle d'apprentissage.
Cette boucle est interrompue, idéalement, lorsque ll est tombé à 0. Lorsque l'apprentissage est imparfait, le ll cesse de diminuer, voire augmente.
Je récapitule les étapes de la boucle d'apprentissage :
1) Agrégation de toutes les variables selon la formule z = w1x1 + w2x2 + b.
2) Activation, calcul de probabilité de z et prédiction de 1 si z >= 0,5.
3) Calcul du risque sur tout l'échantillon d'apprentissage, ll.
4) Calcul des gradients. Estimation de la variation du ll en fonction de la modification du poids wi, et du biais, b. J'évoquerai le biais plus tard.
5) Calcul et mise à jour des wi et b.
6) Agrégation suivante.
Ce sont les wi et b, après apprentissage, qui déterminent la droite de décision,, w1x + w2y + b = 0, frontière d'équiprobabilité, entre les 2 zones.
Apprentissage supervisé d'une classification binaire inlinéaire
Dès que la frontière de décision n'est plus une doite, le neurone ne suffit plus. Il faut en utiliser plusieurs et former un réseau.
Voici un exemple simple, mais spectaculaire.
Lorsque une droite ne suffit plus, points oranges en zone bleue,
il suffit d'ajouter des couches et des neurones.
La première image représente un neurone, à droite, recevant directement les valeurs X1 et X2. Il les traite de façon binaire et linéaire, avec le résultat insuffisant,
des points oranges restent en zone bleue.
La seconde image illustre un réseau. Les valeurs X1 et X2 sont traîtées par 2 neurones de la 1ère couche qui envoient leurs prédictions au neurone final, avec un résultat
impressionnant.
Dans un réseau, tous les neurones fonctionnent de la même manière, décrite précédemment.
La nouveauté est
- que le neurone envoie sa prédiction à tous les neurones suivants, propagation avant, et
- que le ll, les gradients et les màj de wi, et b, sont étendus à tout le réseau, propagation arrière.
Le nombre de couches et de neurones est illimité.
Ce fonctionnement en réseau est conceptuellement, mathématiquement et informatiquement très simple avec des résultats qui me laissent pantois.
Le second schéma mérite les précisions suivantes :
1) à gauche gauche se trouvent les valeurs de l'échantillon, de 1 à n, illimité, 64 pour une image de 8x8, 2 ici;
2) au centre se trouvent les couches internes du réseau, dites cachées, ici 1 couche de 2 neurones, illimités dans la pratique;
3) à droite se trouve le résultat de la classification, zones colorées, ici 2, illimité dans la pratique;
4) les lignes symbolisent la transmission des données, leur poid, positif ou négatif;
5) la carré au bas, inférieur gauche, des neurones représente le biais, plus ou moins positif ou négatif.
Pour observer et chercher à comprendre, en 2D, voir http://playground.tensorflow.org/
Après cette premiere approche, je me dis que l'IA supervisée permet de la classification, multidimensionnelle, afin de prédiction
L'apprentissage insupervisé. À voir https://www.youtube.com/watch?v=FTtzd31IAOw.
Le poids, X1, le nombre de pattes, X2,
sans préciser de quoi il s'agit
pourtant, le programme distingue 3 groupes et leur limite
Le regroupement
Il s'agit de regrouper des données en fonction de leur ressemblance, création d'ensembles d'éléments ayant des points communs.
Cela peut servir à suggérer des groupes afin qu'un utilisateur y colle des étiquettes, après avoir examiné les caractéristiques ?
Les résultats peuvent alors servir à de la classification supervisée.
Autre idée, la proposition d'achat, de lecture, de contenu, «Ceci pourrait aussi vous intéresser», ou autre suggestion du même acabit.»
Une méthode de détection,
tracer une limite, au hasard.
La détection d'anomalie
Pour détecter les taches dans le décor, ce qui n'a rien à faire dans l'échantillon d'apprentissage.
Son usage me paraît plus évident. Sécurité, individu armé dans un endroit public, voiture dans un piétonnier, aiguillage des déchets.
.
La réduction de dimension
Réduire le nombre de variables réduit les volumes des traitements supervisés.
La réduction s'appuie uniquement sur les caractéristiques sans avoir besoin du quoi il s'agit.
Le but de cet apprentissage est de permettre à un programme de prédiction, d'établir la meilleure action à accomplir dans un état donné.
Ce programme prédit grâce à une matrice, table, de décision.
Par exemple :
La matrice fixe la règle à suivre.
D'après cette matrice, c'est l'action = 1 qui à la meilleure note en état 1, l'action = 2 en état 2, l'action = 3 en état 4, ....
Il prédira, donc, 1 en état 1, 2 en état 2, rien, pas de panique, en état 3 et 3 en état 4.
L'historique des états.
La mise à jour de la matrice est déclenchée lorsqu'une note, facultative, est attribuée.
Cette note renforce, ou déforce, selon une logique programmée, tous les états rencontrés, en remontant jusqu'à l'état initial.
Dans cet exemple simple, une note négative, -1, est attribuée lorsque l'action provoque un dépassement de limite ou un retour à un état déjà rencontré.
La logique programmée est d'attribuer aux états initiaux précédants le nombre de coups innotés, ici 3.
Cela donne la matrice du début.
Si un essai est l'application d'une action dans une situation initiale,
il faut comprendre que cette logique de renforcement est basée sur un très grand nombre d'essais, au moins autant que nécessaire pour éprouver toutes les actions
dans toutes les situations initiales.
Dans cet exemple simple, les actions sont toutes générées aléatoirement.
Par exemple :
3,1,2,2,3,4,2,1,4,2
donnant comme trace :
L'historique des états.
Nous avons 5 notes, donc 5 passages par la logique de màj, mais aucun renforcement, une màj antérieure ayant déjà enregistré une suite de 3 coups innotés, moins est insuffisant.
Le programmeur estime que la première suffit, donc stop.
Mais que se passe-t il dans cet exemple ?
Pour bien comprendre, un petit dessin vaut mieux ...
Le terrain de jeu.
Dans cet exemple, didactique, 4 actions sont possibles, →, 1, ↓, 2, ←, 3, ↑, 4. Tout est il clair, à présent ?
Le programmeur doit concevoir un apprentisseur qui, au départ de l'e1, avec les 4 actions possibles, 1, →, 2, ↓, 3, ←, 4, ↑, passe par tous les états, sélectionne toutes
les cases, du tableau de jeu, quelles qu'en soient les formes et dimension.
Pour commencer il va créer un programme capable de traiter le tableau de jeu de 2 lignes et 2 colonnes.
Ensuite il généralisera son apprentisseur à tous les tableaux.
Haut