Livre “Comprendre le Deep Learning” de Jean-Claude Heudin

Je vous l’avais promis sur Face­book pour ceux qui m’y suiv­ent, voici un petit retour sur le dernier livre de Jean-Claude Heudin, “Com­pren­dre le Deep Learn­ing: Une intro­duc­tion aux réseaux de neu­rones” aux édi­tions Sci­ence ebook.

Avant d’entrer dans le détail, voici mon ressen­ti général: il s’agit d’un livre agréable à lire, rel­a­tive­ment sim­ple d’accès, qui ne se con­tente pas de vul­garis­er un des domaines phares de l’Intelligence Arti­fi­cielle. Il explique avec des exem­ples con­crets et pro­gres­sifs, et con­tient même un volet “pra­tique” qui per­met au lecteur d’aller plus en avant, s’il le souhaite. Après, pour ceux qui con­nais­sent déjà le domaine, c’est très léger — je l’ai lu en 3H mais sans le volet “pro­gram­ma­tion” — Toute­fois, le con­trat est rem­pli: il s’agit d’une intro­duc­tion et je pense que c’est suff­isam­ment bien expliqué pour que n’importe qui, avec un min­i­mum de con­nais­sances en maths bien sûr, puisse suiv­re la démon­stra­tion.  Nous sommes sur un livre de 178 pages pour un prix de vente de 15€, c’est très cor­rect.

Bon, en même temps, l’auteur s’intéresse au domaine depuis de très nom­breuses années et ce n’est pas sa pre­mière pub­li­ca­tion sur le sujet. Je ne vais pas m’étendre sur son CV, mais vous trou­verez plus d’infos sur Wikipé­dia.

Au début du livre, l’auteur nous entraine sur la piste des prédi­ca­teurs et clas­sifi­ca­teurs linéaires, et mon­tre qu’il est pos­si­ble de met­tre en place une forme d’appren­tis­sage sim­ple, par approches suc­ces­sives. Pour cela, il prend un exem­ple con­cret et chiffré, et détaille les phas­es de l’apprentissage, ain­si que ses lim­ites.

De là, il intro­duit le neu­rone arti­fi­ciel et mon­tre qu’on peut ain­si dépass­er les lim­i­ta­tion des mod­èles précé­dents.  Il intro­duit trois fonc­tions d’activation, dont la sig­moïde, et tou­jours à l’aide de cal­culs sim­ples, mon­tre com­ment cela fonc­tionne, d’une couche à l’autre, com­ment les poids se répar­tis­sent, com­ment se propa­gent les don­nées, etc.

Enfin, il mon­tre com­ment l’utilisation de matri­ces peut con­sid­érable­ment sim­pli­fi­er les cal­culs — tout du moins leur représen­ta­tion.  Et vous savez tous, si vous suiv­ez ce blog, que les matri­ces sont au cœur du fonc­tion­nement des cal­culs par­al­lèles, que cela soit dans un super­cal­cu­la­teur ou dans le GPU de votre carte graphique avec ses mil­liers de cores capa­bles de traiter des mil­liers d’éléments d’une matrice en un seul cycle de cal­cul.

Ensuite, nous pas­sons à la phase appren­tis­sage avec l’une des approches con­nues sous le nom de rétro­prop­a­ga­tion de l’erreur. Et ce, tou­jours avec des chiffres à l’appui qui per­me­t­tent de bien com­pren­dre ce qui se passe à l’intérieur du réseau (un réseau de 3 couch­es de 3 neu­rones pour l’exemple: une d’entrée, une cachée et une de sor­tie). Un autre con­cept est intro­duit, celui de la descente et du cal­cul de gra­di­ent qui n’est pour­tant pas facile à expli­quer, mais je pense que l’auteur s’en sort très bien. C’est peut-être la par­tie la plus hard du livre, mais c’est aus­si, à mon avis, l’essentiel du prob­lème ! Sans entr­er dans le détail des réseaux super­visés ou non, il ne faut pas s’imaginer qu’il suf­fit d’avoir un jeu de don­nées et d’une librairie de deep Learn­ing pour faire fonc­tion­ner tout le bouzin. Cela néces­site des années d’expérience, de “feel­ing” pour trou­ver le bon mod­èle de réseau (sou­vent plusieurs com­bi­naisons d’ailleurs), pour adapter le jeu de don­nées, choisir les bonnes fonc­tions d’activation, éviter les pièges du surap­pren­tis­sage (over­fit­ting), de la dis­pari­tion de gra­di­ent (van­ish­ing gra­di­ent), etc.

Enfin, nous pas­sons à une phase “pro­gram­ma­tion” en sautant directe­ment dans le Javascript. C’est peut-être la par­tie qui m’a déçu car, bien qu’utilisant à la fois Python et Javascript, j’ai une préférence mar­quée pour le pre­mier, surtout quand il s’agit d’IA. Pour ceux qui veu­lent se lancer dans le DL, je trou­ve dom­mage de les entraîn­er dans cette voie. L’auteur jus­ti­fie son choix par le fait qu’il suf­fit juste d’avoir un nav­i­ga­teur, pas besoin d’installer d’outils sup­plé­men­taires… ça se défend. Bon, en même temps, c’est pas la mort. On passe facile­ment de l’un à l’autre, et c’est tou­jours plus sym­pa d’entrer dans du con­cret directe­ment que de pass­er par de l’algorithmie abstraite. D’ailleurs, après avoir créé ses pro­pres rou­tines, l’auteur passe par la librairie ConvNet.JS pour un cas pra­tique de deep Learn­ing… et ça c’est top ! Mais j’avance dans ma présen­ta­tion 😉

L’auteur ter­mine donc sur une présen­ta­tion du Deep Learn­ing. Pour l’instant, nous en étions au fonc­tion­nement des réseaux de neu­rones formels. On par­le de réseaux de neu­rones pro­fonds quand le nom­bre de couch­es cachées et le jeu de don­nées d’entrée pour l’apprentissage sont suff­isam­ment impor­tants. Il présente les pro­grès dans le domaine, les appli­ca­tions, mais aus­si le fait que nous sommes loin de pou­voir con­stru­ire une intel­li­gence arti­fi­cielle con­sciente. Mais ça, c’est sans compter l’accélération expo­nen­tielle du pro­grès ! 😉 D’ailleurs, l’auteur a fait une con­férence sur le sujet.

Voilà, je con­seille la lec­ture de ce livre à ceux qui n’ont qu’une vague idée ou qui ne con­nais­sent pas du tout le domaine. C’est une très bonne entrée en matière. Çà reste un livre rel­a­tive­ment pra­tique qui devrait plaire aux développeurs. Et pour ceux qui n’ont pas cette fibre, il est pos­si­ble de prof­iter de 75% du livre qui n’est pas basé sur la pro­gram­ma­tion ! Reste les démon­stra­tions chiffrées  pour la com­préhen­sion du fonc­tion­nement “interne” des réseaux neu­ronaux. D’ailleurs, il n’y a pas beau­coup de livres trai­tant du sujet en français, donc prof­itez-en !

Sinon, le sujet est assez bien abor­dé dans cette vidéo:

Et si le sujet vous intéresse, il y a égale­ment ces pages de votre servi­teur qui assure une veille tech­no sur le sujet, et cet arti­cle d’introduction.

Je vous laisse avec une petite vidéo sur la robo­t­ique et l’IA où vous retrou­verez l’auteur qui dis­cute avec un pro­gramme de sa con­cep­tion (“you’re a bitch” que je ne traduirai pas ;):

Une réflexion sur « Livre “Comprendre le Deep Learning” de Jean-Claude Heudin »

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.