🏳️🌈♿️👩🎨🌱 En février, je remets 3% de mes ventes à des organismes qui favorisent la diversité, les arts et l'environnement 🏳️🌈♿️👩🎨🌱
Le grimoire informatique
On démonte le robot #2 – l'entraînement des réseaux de neurones
Dans mon article précédent, je t'ai présenté comment fonctionne les réseaux de neurones derrière les algorithmes. Je vais maintenant te présenter, de la façon la plus simple possible, comment fonctionne l'entraînement de ces réseaux de neurones.
Les réseaux de neurones sont des structures mathématiques très complexes. Ils ont des milliers, des millions ou même des milliards de paramètres. Heureusement, nous avons maintenant accès à des ordinateurs très puissants qui peuvent faire des milliards de calculs par seconde. C'est pourquoi nous avons maintenant la capacité technique pour entraîner ces algorithmes dans un temps et avec un coût raisonnable.
Ça n'était pas possible dans les années 1970 lorsque ces réseaux ont été inventés. C'est ça qui a causé ce qu'on appelle aujourd'hui l'hiver de l'intelligence artificielle.
Les étapes de l'entraînement des réseaux de neurones
L'entraînement des algorithmes se fait à l'aide de données étiquetées. C'est à dire des données accompagnées de la " bonne réponse".
Il y a trois séquences de calculs dans un entraînement: l'évaluation, le calcul de l'erreur et la rétro-propagation.
C'est possible de répéter ces étapes plusieurs fois en utilisant des époques d'entraînement où on repasse sur toutes nos données plusieurs fois.
L'évaluation
Dans l'article précédent, j'ai présenté une introduction à la partie de l'évaluation. Essentiellement, pour chaque donnée, on calcule, de gauche à droite:
-
le produit des valeurs en entrée avec les paramètres correspondants
-
la somme de ces produits pour chaque neurone
-
la valeur de la fonction d'activation qu'on envoie ensuite en sortie
Lorsqu'on arrive à la dernière couche de neurones, on applique la fonction Softmax pour obtenir une probabilité pour chacune des valeurs possibles.
Le calcul de l'erreur
L'erreur, c'est la différence entre les probabilités calculées et le vecteur de probabilités qui correspond à l'
étiquette. Ce vecteur prend la valeur 0 pour toutes les positions sauf celle de l'étiquette qui prend la valeur 1.
L'erreur est donc la valeur négative de la probabilité (-p) pour toutes les sorties possibles sauf l'étiquette, et de (
1-p) pour l'étiquette.
L'objectif de l'entraînement de l'algorithme est de diminuer la somme des erreurs. Donc, on veut que les probabilités de toutes les sorties possibles soient près de 0 sauf celle de la valeur de l'étiquette qu'on veut la plus près possible de
1.
Chaque itération de l'entraînement, ou époque dans le langage de l'apprentissage automatique, va faire le calcul de l'erreur pour toutes les paires de données étiquetées dont on dispose.
La rétro-propagation des erreurs
Tu te rappelles qu'on a multiplié les valeurs par les paramètres pour arriver à la valeur de sortie lors de l'
évaluation. Maintenant, on va faire le chemin inverse pour la rétro-propagation des erreurs.
On va prendre l'erreur qu'on a obtenue à la sortie, et on va corriger les paramètres de tout notre réseau. Notre but, c'est de diminuer l'erreur pour la prochaine fois qu'on va entrer les mêmes données. On veut augmenter la probabilité qu'on tombe sur la valeur étiquetée en sortie.
Et tu te demandes comment on peut corriger tous les paramètres à partir d'une seule valeur d'erreur ? C'est ici que les grosses mathématiques débarquent !
Nous allons utiliser le calcul différentiel. Tu te rappelles, au premier cours de maths au Cégep... le même où tu as vu la tangente hyperbolique, que tu as oubliée après l'examen ! Plus particulièrement, nous allons utiliser la règle de la chaîne. C'est super utile pour calculer l'impact cumulatif sur la valeur en sortie des différentes couches de neurones.
C'est ce qui explique le choix de nos fonctions d'activation. Pour mettre à jour un poids, on calcule sa contribution dans l'erreur à l'aide de la règle de la chaîne. On ajoute ensuite un facteur delta pour le corriger.
Je ne m’attarderai pas davantage ici sur ces calculs, mais tu peux voir tous les détails dans le livre de référence Deep Learning. Ce livre a été écrit par Ian Goodfellow, Yoshua Bengio et Aaron Courville, trois pionniers de l'intelligence artificielle par réseaux de neurones profonds.
C'est facile de calculer leur dérivée pour un ordinateur, et encore plus de le faire en parallèle, en utilisant l'algèbre matricielle.
La suite !
Sur nos ordinateurs modernes, les calculs d'entraînement des réseaux de neurones sont très performants, en particulier si on utilise des processeurs graphiques (GPU).