Introduction au Deep Learning

Je vous pro­pose de dis­cuter un peu autour d’une vidéo de David Louapre (chaine youtube Sci­enceE­ton­nante) sur le deep learn­ing. C’est telle­ment bien présen­té et amené et que je préfère l’u­tilis­er comme base de réflex­ion ici.

Nous avons déjà dis­cuté du deep learn­ing sur ce blog avec l’ar­ti­cle sur la course de voitures Rob­o­race, avec l’u­til­i­sa­tion de Nvidia Dri­ve PX2, une carte opti­misée pour le deep learn­ing. C’est un domaine de l’in­tel­li­gence arti­fi­cielle qui prof­ite aujour­d’hui de la puis­sance phénomé­nale des archi­tec­tures dis­tribuées actuelles (que l’on par­le de GPU sur nos cartes graphiques, comme le cloud pour une archi­tec­ture hétérogène dis­tribuée). Nous devri­ons la voir sur­gir de plus en plus dans les jeux vidéo, mais égale­ment dans notre quo­ti­di­en, sans for­cé­ment en avoir con­science.

Cela me rap­pelle que dans le sous-marins, il y a une fonc­tion forte utile qui était jadis rem­plie par un homme qu’on appelle “Oreille d’or”.  Son tra­vail était d’i­den­ti­fi­er, à l’or­eille, les dif­férents objets via leur sig­na­ture acous­tique (qu’il s’agisse de leur bruit même, ou de l’é­cho du radar/sonar). Plusieurs pro­grammes infor­ma­tiques ont été créé pour cela, mais dès que l’on essayait de pro­gram­mer cette analyse, on se cas­sait les dents. Au final, c’est un réseau de neu­rones qui a pris le relais. Il a appris par l’ex­péri­ence: on ne con­nait pas vrai­ment son “algo­rithme d’analyse” qui serait trop dif­fi­cile à extraire de son réseau neu­ronal, mais il est désor­mais bien plus per­for­mant que les meilleures oreilles d’or. En bref, nous avons conçu un pro­gramme qui en a pro­gram­mé un autre, et qui l’a fait bien mieux que nous ne sauri­ons le faire. C’est assez grossier comme descrip­tion, mais c’est aus­si assez proche de la réal­ité.

Bon, je vous laisse avec la vidéo et on en repar­le juste après:

Vous pou­vez com­pléter cette vidéo à par­tir du bil­let réal­isé sur son site (que je vous con­seille forte­ment de suiv­re).

Donc pour résumer, le deep learn­ing, c’est une approche de l’in­tel­li­gence arti­fi­cielle con­sis­tant à faire de l’ap­pren­tis­sage automa­tique (machine learn­ing), tout en lais­sant le pro­gramme se débrouiller rel­a­tive­ment seul. Au final, on obtient un sys­tème “pré­dic­tif” capa­ble de résoudre des prob­lèmes qu’on aurait pas for­cé­ment su résoudre au tra­vers d’un algo­rithme “clas­sique”.

main-qimg-591214aefebe015188cd29b5ba4fc9a6

Après une longue tra­ver­sée du désert, « l’ap­pren­tis­sage pro­fond » est désor­mais la méth­ode phare de l’in­tel­li­gence arti­fi­cielle: toutes les grandes entre­pris­es tech­nologiques s’y met­tent : Google, IBM, Microsoft, Ama­zon  ou Adobe y investis­sent des for­tunes. Face­book égale­ment, qui, sig­nal fort, a placé Yann LeCun à la tête de son nou­veau lab­o­ra­toire d’in­tel­li­gence arti­fi­cielle instal­lé à Paris.

Dans la vidéo, pour l’analyse d’im­ages il par­le des “car­ac­téris­tiques inter­mé­di­aires de l’im­age”. Pour ma part, dans l’analyse des flux bour­siers, j’u­til­i­sais dif­férentes moulinettes comme l’analyse tech­nique (plus de 100 for­mules dif­férentes) qui vont des moyennes mobiles aux bollingers en pas­sant par les chan­de­liers japon­ais. Si vous ne con­nais­sez pas ces méth­odes, retenez sim­ple­ment que c’est une sorte de cal­cul math­é­ma­tique plus ou moins basé sur l’ob­ser­va­tion de ten­dances et qui ont, par le passé, fait plus ou moins leurs preuves pour prédire le cours de telle ou telle action. On dira plus sou­vent que telle analyse tech­nique a été per­for­mante pour telle action sur telle péri­ode. C’est sur l’u­til­i­sa­tion intel­li­gente de ces for­mules que mon tra­vail por­tait essen­tielle­ment. Ne con­nais­sant pas quels étaient les approches opti­males par action, j’en­trainais des algo­rithmes géné­tiques sur le passé de l’ac­tion. Hé bien ça, c’est l’an­ci­enne méth­ode qui a atteint ses lim­ites.  Aujour­d’hui, si je devais réé­tudi­er la ques­tion je me pencherais sur le deep learn­ing. Pourquoi utilis­er l’analyse tech­nique alors que l’or­di­na­teur est capa­ble de trou­ver ses pro­pres algo­rithmes d’analyse (aux­quels je ne com­prendrai prob­a­ble­ment rien — ni per­son­ne d’ailleurs).

Alors, si aujour­d’hui je devais me lancer dans le domaine, qu’est-ce que je pour­rais utilis­er ? Oui, c’est étrange de raison­ner ain­si non ? Dans tout domaine, il y a ceux qui font avancer le domaine, qui ont besoin d’en con­naitre chaque détail, chaque for­mule math­é­ma­tique… et ceux qui préfèrent utilis­er la tech­nique et qui sont aus­si sou­vent capa­bles de la faire évoluer (approche hack­er). Pour ma part, en ce qui con­cerne l’IA, je suis plus un util­isa­teur (jadis aver­ti, mais qui a besoin d’une grosse update). Alors, je vais chercher à me servir du Deep Learn­ing, sans vouloir réin­ven­ter la tech­nique.

Tout d’abord, je pense qu’il serait intéres­sant d’iden­ti­fi­er les archi­tec­tures de réseaux de neu­rones pro­fonds qui fonc­tion­nent bien aujour­d’hui et pour quel domaine ou appli­ca­tion.  Ensuite, il y a l’ar­chi­tec­ture de Nvidia sur le DL qui per­met d’of­frir une solu­tion matérielle et des API logi­cielles pour utilis­er le deep learn­ing. Enfin, il serait peut-être intéres­sant aus­si de faire le tour des dif­férentes solu­tions open source exis­tant aujour­d’hui: cette liste me parait un bon point de départ.

Après cela, j’aimerais bien me fix­er dans une archi­tec­ture matérielle/logicielle et tester la recon­nais­sance d’ob­jets en util­isant la base d’im­ages Ima­geNet dont par­le la vidéo (je viens de deman­der l’ac­cès sur leur site, j’e­spère qu’ils accepteront).

Voilà, et vous, vous avez déjà testé le sujet — est-ce que ce domaine vous intéresse ? Voyez-vous les appli­ca­tions pos­si­bles dans le jeu vidéo ? Je vous pro­pose qu’on en dis­cute dans les com­men­taires de cet arti­cle. Et bien enten­du, je vous tiens au courant de mes recherch­es sur le sujet dans de prochains posts.

Je vous laisse avec cette vidéo de présen­ta­tion de Yann LeCun à l’USI:

Ain­si que celle-ci au col­lège de France:

2 réflexions sur « Introduction au Deep Learning »

  1. Généra­tion procé­du­rale d’en­vi­ron­nement en se bas­ant sur l’é­tude de biotopes par une série de pho­tos, d’analyse d’ob­jets dans ces pho­tos… nom­bre, dis­per­sion, prox­im­ité… le tout en deep learn­ing — oui, cela sem­ble pos­si­ble. Cela per­me­t­trait d’établir des règles au tra­vers d’un réseau de neu­rones. Une fois ce dernier entrainé, il devrait être pos­si­ble de l’ex­porter dans le jeu pour génér­er le paysage.
    Pour l’IA des PNJ… un peu plus com­plexe. Mais il faut y réfléchir en effet 😉

  2. J’aimerais en faire plusieurs appli­ca­tions pour un Minecraft-like, notam­ment des généra­tions opti­misées de ter­rain (dont la déco­ra­tion avec l’emplacement de la végé­ta­tion, des routes, habi­ta­tions, mines, ruines, etc), de végé­ta­tion (tel que le bran­chage d’un arbre) ou d’é­cosys­tème.
    Enfin dévelop­per des IA pour les créa­tures (PNJ, ani­maux, mon­stres).

    Il faudrait s’in­spir­er du réel en imposant des con­traintes esthé­tiques pour obtenir un décor styl­isé mais cohérent.
    Et avoir des PNJ qui exploitent leur envi­ron­nement ou qui soient capa­ble de réa­gir aux actes des joueurs, des ani­maux et plantes qui inter­agis­sent, etc, serait très intéres­sant.

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.