Les 6 points qui ont mis les réseaux de neurones à la mode (deep learning)
Beaucoup de conférences techniques parlent maintenant d'intelligence artificielle, de machine learning, et plus particulièrement de deep learning, autrement dit de réseaux de neurones. C'est un des mots-clés les plus fréquents !
Note : le deep learning n'est qu'une branche des réseaux de neurones, concernant des réseaux en couches, et dont le nombre de couches est important, d'où le terme "deep". Pour la suite de l'article, j'utiliserai indifféremment un terme ou l'autre pour parler de deep learning.
Pourtant, quand j'ai fait ma thèse sur ce sujet, je faisais partie des extraterrestres, et trouver un travail dans le domaine était à l'époque chose quasi impossible...
Mais je n'ai pas 60 ans (du tout !), en effet, j'ai obtenu ma thèse en... 2007, il y a donc tout juste 10 ans ! Qu'est-ce qui a changé à ce point alors ? Voici les 6 points que je retiens.
1. Plus de puissance de calcul (et le cloud computing)
Le point qui vient le premier à l'esprit, c'est qu'en 10 ans, les puissances de calcul ont énormément évoluées. Quand j'ai fait ma thèse, j'avais un ordinateur de bureau performant pour l'époque, mais qui aujourd'hui serait au niveau d'un smartphone...
Nous avions un cluster de calcul, dont on était fiers, de... 20 machines !
Aujourd'hui, il suffit de quelques clics pour avoir accès via le cloud à des machines d'une puissance incroyable, avec plusieurs cartes graphiques (les GPU sont bien plus adaptés que les CPU pour les réseaux de neurones).
Bien sûr, cela a un prix, mais c'est négligeable comparé à l'achat de telles machines, qui ne tourneraient de toute façon pas à 100%. Sur AWS par exemple, on peut obtenir une machine "p2.8xlarge" (8 GPU avec 96Go de mémoire et 32 vCPU avec 488 Go de mémoire) pour moins de 8$/h...
Du coup, ce qui à l'époque prenait des semaines de calcul s'obtient aujourd'hui en quelques heures au plus. On peut donc lancer des algorithmes sur plus d'itérations, avec des réseaux plus gros, et avec plus de données, chose impossible en 2007 (sauf si on s'appelait Google, Microsoft, ...).
2. Plus de données (et le Big Data)
C'est d'ailleurs mon deuxième point. Lorsque j'ai commencé mes recherches en intelligence artificielle, on utilisait des datasets contenant dans le millier d'exemples.
Avec aussi peu de données, on devait se limiter à des problèmes simples. De toute façon, on ne pouvait pas calculer sur plus complexes (cf point 1) ! Traiter les images ou le son était difficile et les résultats n'étaient pas très bons. Du coup, cela ne semblait pas vraiment présenter un intérêt industriel...
Aujourd'hui, on peut facilement obtenir des millions d'exemples sur un sujet précis, grâce au big data, et aux fabuleux créateurs de données : le web, les objets connectés, les réseaux sociaux, les données de surveillance...
Et avec plus de données, on peut apprendre des problèmes plus difficiles. En effet, la règle globale, c'est que le nombre de données doit augmenter avec la complexité de la tâche à apprendre (ce n'est cependant pas toujours vrai...). Plus de données ouvre donc plus de possiblités !
3. De meilleurs algorithmes
"Sans maîtrise, la puissance n'est rien !"
Cette phrase, tirée d'une publicité pour les pneus Pirelli, s'applique bien aux réseaux de neurones. Effectivement, on a aujourd'hui plus de puissance de calcul et plus de données. Mais sans nouveaux algorithmes, le domaine n'aurait pas autant décollé.
En effet, des chercheurs (oui, les extraterrestres d'il y a 10 ans ^^) ont amélioré les algorithmes autour des réseaux de neurones, avec des petites choses qui font la différence comme la régularisation, le dropout, les couches de convolution...
Et si le principe de la rétro-propagation du gradient est toujours le même, on a pu l'optimiser, pour obtenir plus rapidement de meilleurs résultats (par exemple avec le "mini-batch"). Sans compter qu'avec le "transfert learning", on peut réutiliser des réseaux de neurones déjà pré-entraînés, ce qui fait gagner un temps fou !
4. Des outils et frameworks plus accessibles
Plus de puissance de calcul, plus de données, et de meilleurs algorithmes, ça a poussé plus de personnes à s'intéresser au domaine. Certes, ça restait encore une niche, mais ces pionniers ont très vite compris qu'ils faisaient tous la même chose à quelques détails près.
Et on le sait, le bon informaticien est fainéant. Du coup, plutôt que de tout recoder, et de devoir vérifier plusieurs fois ses équations (c'est tellement facile de transformer un - en + quand on tape du code...), ce qui devait arriver arriva : il y a eu des librairies, puis des frameworks complets !
Et ça, ça permet à ceux qui ne maîtrisent pas les équations de s'y intéresser aussi. Les réseaux de neurones ne sont alors plus limités à une élite qui calcule les dérivées de tête, mais à tous les développeurs !
Ces frameworks ont beaucoup évolué, il y en a aujourd'hui des tonnes, dans plein de langages différents (même si Python est actuellement le langage à la mode), et tout un chacun peut utiliser le deep learning sur ses applications, sans avoir à faire des études particulières pour cela.
On trouve même des outils de type "clic-bouton" qui permettent à des novices complets en informatique d'obtenir des modèles, certes non optimisés mais d'assez bonne qualité.
5. Des résultats marquants
Là encore, tout s’enchaîne. Avec plus de personnes s'intéressant au domaine, et sur des problèmes plus complexes grâce à plus de puissance, plus de données et de meilleurs algorithmes, des résultats marquants sont arrivés.
Ceux-ci sont alors fortement relayés, sur les réseaux sociaux, sur les sites web, dans la presse, et même à la télévision. On peut par exemple penser au traitement de la parole, aux systèmes de reconnaissance d'images ou de reconnaissance d'écriture, aux voitures autonomes, aux drones...
Et quasiment chaque jour de nouveaux articles sont publiés, présentant une nouvelle application réussie.
Forcément, toutes ces réussites donnent envie à d'autres de s'y lancer !
6. Une meilleure présentation "marketing"
Ce n'est pas le point le plus évident, et pourtant, je pense qu'il a beaucoup joué aussi.
Tout d'abord, on ne parle plus de réseaux de neurones à couches, mais de deep learning. Dans les conférences, ce point est frappant... L'expression "réseau de neurones" semble ne plus être du tout à la mode, sentant le formol, les premières recherches, et les échecs, alors que "Deep Learning" a une bien meilleure image, de jeunesse, de réussite. Et puis ce terme anglais a un petit côté mystérieux et attirant (peut être grâce au "deep").
On ne montre plus non plus les réseaux de la même façon : on ne voit plus d'équations dans les slides (ou très peu), plus de sigmoïdes, plus non plus de notation mathématiques, mais des schémas simplifiés et des photos de chats bien classés.
Voici la façon dont on introduisait les réseaux de neurones à l'époque (ici le schéma d'un neurone, issu de Wikipedia) :
Et la présentation actuelle (ici un slide issu d'un cours de NVIDIA qui présente le Deep Learning) :
Ca change, hein !?
Le terme Deep Learning se marie aussi très bien avec son cousin germain le "Machine Learning" (ils ont d'ailleurs le même nom de famille ^^). En réalité, le Machine Learning contient le Deep Learning, mais aussi beaucoup d'autres algorithmes, issus des mathématiques et des statistiques (qui eux aussi ont eu le droit à un lifting de leurs noms et de leurs présentations).
Conclusion
Suite à ma thèse, je pensais ne jamais travailler directement dans l'IA et plus particulièrement dans les réseaux de neurones, car il n'y avait pas ou très peu de postes. Je les ai cependant enseigné, au milieu d'autres techniques d'intelligence artificielle (j'étais professeur jusqu'à quelques mois en arrière).
Et puis la roue a tourné, et ils sont aujourd'hui ma meilleure carte de visite. Dans toutes les conférences, "mon" domaine est devenue à la mode, on en parle, beaucoup. C'est agréable de se dire qu'on n'a pas perdu notre temps il y a 10 ans ! :)
(d'ailleurs petite page d'autopromo : la deuxième édition de mon livre "Intelligence artificielle pour les développeurs - concepts et implémentation en C#" sort en décembre ! Un des chapitres est dédié aux réseaux de neurones et au deep learning ;) )
IT specialist IBM ; Maître de conférences (MAST) à l'Université d'Artois
5 ansArticle très intéressant !
Salesforce Consultant - Data Scientist
5 ansBravo Virginie, ta perseverence a payé. J'ai aussi commandé ton bookin. Je me lance en parallèle dans un dba sur l'apport de l'intelligence Artificielle dans le management SI. Merci beaucoup
Formateur, en développement informatique (logiciel & web) / C#, Java, Dev Web Fullstack , cybersecurite, SGBD, réseaux TCP/IP, Linux / BTS, Ecoles d'ingénieurs, formation continue / Paris, Normandie, télétravail
6 ansArticle on ne peut plus clair . L'explosion du deep learning date de 2012 grâce au point n°5, résultat des points 1, 2 et 3 :-)
J'accompagne vos équipes pour améliorer leur impact
7 ansPour une fois que l'on peut lire un article qui sort un peu des niaiseries marketing habituelles sur le sujet !