Je vous l’avais promis sur Facebook pour ceux qui m’y suivent, voici un petit retour sur le dernier livre de Jean-Claude Heudin, “Comprendre le Deep Learning: Une introduction aux réseaux de neurones” aux éditions Science ebook.
Avant d’entrer dans le détail, voici mon ressenti général: il s’agit d’un livre agréable à lire, relativement simple d’accès, qui ne se contente pas de vulgariser un des domaines phares de l’Intelligence Artificielle. Il explique avec des exemples concrets et progressifs, et contient même un volet “pratique” qui permet au lecteur d’aller plus en avant, s’il le souhaite. Après, pour ceux qui connaissent déjà le domaine, c’est très léger — je l’ai lu en 3H mais sans le volet “programmation” — Toutefois, le contrat est rempli: il s’agit d’une introduction et je pense que c’est suffisamment bien expliqué pour que n’importe qui, avec un minimum de connaissances en maths bien sûr, puisse suivre la démonstration. Nous sommes sur un livre de 178 pages pour un prix de vente de 15€, c’est très correct.
Bon, en même temps, l’auteur s’intéresse au domaine depuis de très nombreuses années et ce n’est pas sa première publication sur le sujet. Je ne vais pas m’étendre sur son CV, mais vous trouverez plus d’infos sur Wikipédia.
Au début du livre, l’auteur nous entraine sur la piste des prédicateurs et classificateurs linéaires, et montre qu’il est possible de mettre en place une forme d’apprentissage simple, par approches successives. Pour cela, il prend un exemple concret et chiffré, et détaille les phases de l’apprentissage, ainsi que ses limites.
De là, il introduit le neurone artificiel et montre qu’on peut ainsi dépasser les limitation des modèles précédents. Il introduit trois fonctions d’activation, dont la sigmoïde, et toujours à l’aide de calculs simples, montre comment cela fonctionne, d’une couche à l’autre, comment les poids se répartissent, comment se propagent les données, etc.
Enfin, il montre comment l’utilisation de matrices peut considérablement simplifier les calculs — tout du moins leur représentation. Et vous savez tous, si vous suivez ce blog, que les matrices sont au cœur du fonctionnement des calculs parallèles, que cela soit dans un supercalculateur ou dans le GPU de votre carte graphique avec ses milliers de cores capables de traiter des milliers d’éléments d’une matrice en un seul cycle de calcul.
Ensuite, nous passons à la phase apprentissage avec l’une des approches connues sous le nom de rétropropagation de l’erreur. Et ce, toujours avec des chiffres à l’appui qui permettent de bien comprendre ce qui se passe à l’intérieur du réseau (un réseau de 3 couches de 3 neurones pour l’exemple: une d’entrée, une cachée et une de sortie). Un autre concept est introduit, celui de la descente et du calcul de gradient qui n’est pourtant pas facile à expliquer, mais je pense que l’auteur s’en sort très bien. C’est peut-être la partie la plus hard du livre, mais c’est aussi, à mon avis, l’essentiel du problème ! Sans entrer dans le détail des réseaux supervisés ou non, il ne faut pas s’imaginer qu’il suffit d’avoir un jeu de données et d’une librairie de deep Learning pour faire fonctionner tout le bouzin. Cela nécessite des années d’expérience, de “feeling” pour trouver le bon modèle de réseau (souvent plusieurs combinaisons d’ailleurs), pour adapter le jeu de données, choisir les bonnes fonctions d’activation, éviter les pièges du surapprentissage (overfitting), de la disparition de gradient (vanishing gradient), etc.
Enfin, nous passons à une phase “programmation” en sautant directement dans le Javascript. C’est peut-être la partie qui m’a déçu car, bien qu’utilisant à la fois Python et Javascript, j’ai une préférence marquée pour le premier, surtout quand il s’agit d’IA. Pour ceux qui veulent se lancer dans le DL, je trouve dommage de les entraîner dans cette voie. L’auteur justifie son choix par le fait qu’il suffit juste d’avoir un navigateur, pas besoin d’installer d’outils supplémentaires… ça se défend. Bon, en même temps, c’est pas la mort. On passe facilement de l’un à l’autre, et c’est toujours plus sympa d’entrer dans du concret directement que de passer par de l’algorithmie abstraite. D’ailleurs, après avoir créé ses propres routines, l’auteur passe par la librairie ConvNet.JS pour un cas pratique de deep Learning… et ça c’est top ! Mais j’avance dans ma présentation 😉
L’auteur termine donc sur une présentation du Deep Learning. Pour l’instant, nous en étions au fonctionnement des réseaux de neurones formels. On parle de réseaux de neurones profonds quand le nombre de couches cachées et le jeu de données d’entrée pour l’apprentissage sont suffisamment importants. Il présente les progrès dans le domaine, les applications, mais aussi le fait que nous sommes loin de pouvoir construire une intelligence artificielle consciente. Mais ça, c’est sans compter l’accélération exponentielle du progrès ! 😉 D’ailleurs, l’auteur a fait une conférence sur le sujet.
Voilà, je conseille la lecture de ce livre à ceux qui n’ont qu’une vague idée ou qui ne connaissent pas du tout le domaine. C’est une très bonne entrée en matière. Çà reste un livre relativement pratique qui devrait plaire aux développeurs. Et pour ceux qui n’ont pas cette fibre, il est possible de profiter de 75% du livre qui n’est pas basé sur la programmation ! Reste les démonstrations chiffrées pour la compréhension du fonctionnement “interne” des réseaux neuronaux. D’ailleurs, il n’y a pas beaucoup de livres traitant du sujet en français, donc profitez-en !
Sinon, le sujet est assez bien abordé dans cette vidéo:
Et si le sujet vous intéresse, il y a également ces pages de votre serviteur qui assure une veille techno sur le sujet, et cet article d’introduction.
Je vous laisse avec une petite vidéo sur la robotique et l’IA où vous retrouverez l’auteur qui discute avec un programme de sa conception (“you’re a bitch” que je ne traduirai pas ;):
Merci pour ce retour.
Le livre rejoint ma Todo Read. 😉