- Manuel d’introduction mathématique au deep learning, conçu pour aider les étudiants et scientifiques sans connaissances préalables, ainsi que les praticiens souhaitant une compréhension plus rigoureuse, à acquérir les bases des algorithmes de deep learning
- Les réseaux de neurones artificiels sont définis comme des compositions répétées de fonctions d’activation et de fonctions affines ; plus la profondeur de composition augmente, plus la classe de fonctions traitée relève des ANN profonds
- L’ensemble progresse de la structure et du calcul des ANN vers la théorie de l’approximation, l’optimisation, l’erreur de généralisation, l’analyse de l’erreur totale et la résolution de PDE
- La partie optimisation couvre à la fois les ODE de gradient flow, GD, SGD, la rétropropagation (backpropagation), l’approche de Kurdyka–Łojasiewicz, la batch normalization et l’initialisation aléatoire
- Le code source Python est disponible dans un dépôt GitHub public et sur la page arXiv ; les noms de fichiers indiqués dans la légende de chaque listing permettent de faire correspondre le contenu du livre et le code
Définir mathématiquement le deep learning
- Ce livre traite les algorithmes de deep learning comme des méthodes de calcul qui utilisent de manière répétée des ANN profonds et des données pour approximer des relations, fonctions ou quantités données
- Un ANN est une classe de fonctions composée de multiples compositions d’une fonction d’activation non linéaire donnée et de fonctions affines
- La profondeur d’un ANN correspond au nombre de répétitions de composition ; on commence à parler d’ANN profond lorsque la composition de fonctions non linéaires et affines dépasse deux éléments
- Le lectorat visé comprend des étudiants et scientifiques sans aucun bagage en deep learning mais ayant besoin de bases solides, ainsi que des praticiens souhaitant mieux comprendre les objets et méthodes du deep learning
Parties I–II : structures de réseaux de neurones et théorie de l’approximation
- Après une brève introduction, le corps du texte est divisé en six parties, Parties I–VI
-
Partie I : réseaux de neurones artificiels
- Le chapitre 1 introduit mathématiquement plusieurs types d’ANN
- fully-connected feedforward ANN
- convolutional ANN (CNN)
- recurrent ANN (RNN)
- residual ANN (ResNet)
- Le chapitre 2 traite le calcul (calculus) des fully-connected feedforward ANN
- Le chapitre 1 introduit mathématiquement plusieurs types d’ANN
-
Partie II : approximation
- Cette partie présente divers résultats mathématiques analysant dans quelle mesure les ANN peuvent bien approximer une fonction donnée
- Pour des raisons d’accessibilité, le chapitre 3 se concentre d’abord sur les fonctions unidimensionnelles des réels vers les réels
- Le chapitre 4 élargit le périmètre aux résultats d’approximation par ANN pour les fonctions multivariées
Partie III : optimisation et algorithmes d’apprentissage
- Le cœur des algorithmes de deep learning consiste à modéliser ou reformuler un problème comme un problème d’optimisation approprié impliquant des ANN profonds
- Cette partie traite les problèmes d’optimisation et les algorithmes qui les résolvent approximativement ; en général, les problèmes de minimisation sont résolus par des méthodes d’optimisation fondées sur le gradient
- Les méthodes fondées sur le gradient sont des procédures de calcul qui résolvent le problème par étapes successives, dans la direction du gradient négatif de la fonction à optimiser
- Le chapitre 5 couvre les ODE de gradient flow (GF) et leurs usages pour comprendre les méthodes de type GD et SGD
- Le chapitre 6 examine et analyse les méthodes d’optimisation déterministes fondées sur le gradient, comme gradient descent (GD)
- Le chapitre 7 examine et analyse les méthodes d’optimisation stochastiques fondées sur le gradient, comme stochastic gradient descent (SGD)
- Le chapitre 8 dérive et traite en détail la rétropropagation, une méthode largement utilisée pour calculer explicitement les gradients dans l’apprentissage des ANN
- L’analyse des chapitres 5 à 7 reste, dans la plupart des cas, limitée pour traiter les problèmes d’optimisation de l’apprentissage des ANN, mais l’approche de Kurdyka–Łojasiewicz (KL) du chapitre 9 permet d’aborder ce type de problèmes
- Le chapitre 10 examine rigoureusement la batch normalization (BN), une méthode destinée à accélérer la procédure d’apprentissage des ANN dans les problèmes d’apprentissage fondés sur les données
- Le chapitre 11 étudie une approche qui optimise la fonction objectif avec différentes initialisations aléatoires
Parties IV–VI : analyse des erreurs et applications aux PDE
-
Partie IV : erreur de généralisation
- L’analyse mathématique du deep learning ne s’arrête pas à la capacité d’approximation des ANN ni aux estimations d’erreur des méthodes d’optimisation
- Lorsque l’on n’a pas accès explicitement à la distribution de probabilité du problème d’apprentissage et qu’on l’approxime avec un nombre fini de réalisations ou de données, il faut estimer l’erreur de généralisation
- Le chapitre 12 examine les estimations probabilistes de l’erreur de généralisation
- Le chapitre 13 traite les estimations fortes de l’erreur de généralisation de type Lp
-
Partie V : analyse de l’erreur totale
- Cette partie montre par des exemples comment combiner les estimations de l’erreur d’approximation de la Partie II, de l’erreur d’optimisation de la Partie III et de l’erreur de généralisation de la Partie IV
- Les exemples portent sur l’apprentissage d’ANN fondé sur des méthodes d’optimisation de type SGD utilisant de nombreuses initialisations aléatoires indépendantes
- Le chapitre 14 présente une décomposition de l’erreur totale adaptée aux problèmes d’apprentissage supervisé
- Le chapitre 15 combine certains résultats des Parties II, III et IV pour établir un exemple d’analyse de l’erreur totale
-
Partie VI : deep learning pour les PDE
- Les méthodes de deep learning servent non seulement aux problèmes d’apprentissage fondés sur les données, mais aussi à résoudre approximativement des équations aux dérivées partielles (PDE)
- La Partie VI examine et implémente trois méthodes populaires de deep learning pour les PDE
- Le chapitre 16 traite les physics-informed neural networks (PINNs) et les deep Galerkin methods (DGMs)
- Le chapitre 17 traite les deep Kolmogorov methods (DKMs)
Accès au code et aux ressources
- Le livre contient plusieurs codes source Python
- Le code source peut être téléchargé depuis le dépôt GitHub public introdeeplearning/book
- Sur la page arXiv, il est également possible d’obtenir le code source en cliquant sur « Other formats », puis en sélectionnant « Download source »
- La légende de chaque source listing contient le nom du fichier source correspondant, ce qui facilite le suivi parallèle des formules, exemples et codes du livre
1 commentaires
Avis sur Hacker News
Cela ressemble à un bon recueil présentant les techniques standard de machine learning avec une notation mathématique assez unifiée et de nombreuses preuves, mais avec 600 pages, c’est vraiment un énorme travail.
Cela dit, j’ai l’impression que l’accent est davantage mis sur les parties faciles à formaliser que sur celles qui seraient intéressantes à comprendre.
Par exemple, le chapitre sur SGD a été choisi parce que l’optimisation est un domaine où les mathématiciens peuvent réellement contribuer de façon influente au machine learning, mais la plupart des preuves sont élémentaires, comme la décomposition biais-variance ou l’inégalité de Jensen ; les théorèmes intéressants sur la convergence ne font que citer la littérature sans se raccrocher aux lemmes précédents, et les méthodes vraiment intéressantes en pratique, comme ADAM, ont très peu de preuves ou de théorie.
Après avoir lu ce chapitre, on comprend sans doute bien les méthodes SGD modernes et leur évolution, mais il semble difficile de savoir pourquoi ces méthodes fonctionnent, au-delà d’intuitions confirmées par des expériences numériques.
Dans ce cas, plutôt que de démontrer longuement des bases comme E(XY)=E(X)E(Y) pour des variables aléatoires indépendantes, il aurait probablement été plus utile de consacrer de la place aux preuves de convergence d’ADAM qui existent déjà.
Le chapitre sur les ANN comportait lui aussi beaucoup de longues preuves sur des points basiques et moins intéressants, et l’article sur les physics-informed neural networks est bon également, mais souffre un peu du même problème.
L’idée de décrire les méthodes de machine learning de façon plus rigoureuse et unifiée est bonne, mais je m’interroge sur la manière dont la ligne a été tracée entre ce qu’il fallait inclure et exclure.
Les preuves de convergence d’ADAM n’expliquent pas non plus pourquoi ADAM tend à mieux fonctionner que d’autres méthodes.
Il est difficile de reprocher à un ouvrage de ne pas expliquer quelque chose que personne ne comprend aujourd’hui, mais si la théorie ne permet pas de prédire ce qui compte réellement, l’idée même d’un enseignement centré sur la théorie s’en trouve affaiblie.
Pour ceux qui veulent aborder le deep learning en profondeur sous l’angle mathématique, le livre de François Fleuret https://fleuret.org/francois/lbdl.html vaut aussi le détour.
Le PDF est gratuit, et la version imprimée est plutôt mignonne.
À chaque tentative, avec une imprimante recto verso, une page sur deux se retrouve retournée verticalement, ce qui pose problème.
Je me demande si les gens lisent vraiment ce genre de livre du début à la fin.
Je suis en train de lire le PRML de Bishop, et terminer le livre sérieusement en faisant tous les exercices prend un temps énorme.
J’ai vu quelqu’un qui avait fait la même chose en parler sur son blog : cela lui aurait pris plus de 1 500 heures.
Dans mon master, personne n’avait terminé ce genre de livre ; on suivait simplement les cours et on googlait le reste selon les besoins.
En venant d’un contexte où mes connaissances en programmation sont plus solides que mes maths, la notation mathématique utilisée ici est plus difficile à comprendre que du code.
Elle me paraît même plus difficile que du code écrit dans un langage de programmation que je ne connais pas.
Je me demande si les personnes ayant une formation mathématique plus solide trouvent ce type d’expression mathématique plus facile à comprendre que du code source.
J’ai essayé de présenter les concepts mathématiquement de la façon la plus exacte possible, mais au final j’ai évité la notation lourde du genre de celle de ce livre, j’ai retiré beaucoup de maths pour que les étudiants puissent s’en servir dans l’industrie, et le cours réel contenait bien plus de code que de formules.
Dès qu’on essaie de tout écrire de manière très exacte, cela devient vite brouillon.
En mathématiques, trouver une bonne notation pour un nouveau concept est très difficile, et même des notations que tout le monde reconnaît ensuite comme claires — notation d’Einstein, diagrammes de Feynman, notation matricielle — ont souvent été créées au départ par des personnes brillantes.
Transcrire un domaine A dans la notation d’un domaine B ne le rend pas forcément utile ; traduire la mécanique quantique dans des mathématiques comme les C*-algèbres a aussi été un énorme chantier, et reste encore dans une certaine mesure un domaine de recherche ouvert.
Donc l’effort nécessaire pour écrire ce livre a dû être énorme, mais je pense que son utilité pratique risque d’être faible.
Les personnes capables de lire confortablement ce genre d’équations n’en ont généralement pas besoin ; par exemple, quelqu’un qui connaît les transformations affines n’a presque jamais besoin de voir explicitement tous les indices ijkl d’un tenseur 4D.
À l’inverse, les autres risquent fort d’être intimidés et de décrocher.
L’une des raisons est qu’elle est optimisée pour l’écriture manuscrite.
Écrire du code à la main est extrêmement fastidieux, ce qui aide à comprendre pourquoi la notation mathématique a cette forme.
De plus, il n’existe pas vraiment de « ce code-là » qui corresponde à la notation mathématique.
La notation mathématique sert à énoncer des faits ou des propositions mathématiques, et son objectif est différent de celui du code qui implémente des algorithmes de deep learning.
Les sujets et le mode d’explication sont donc orientés vers ce type de public.
Par exemple, dans le deep learning réel, je n’ai presque jamais vu quelqu’un se soucier des conditions d’existence et d’unicité des algorithmes d’optimisation fondés sur le gradient, mais ce genre de résultat fait partie des sujets qui intéressent ces personnes et sur lesquels elles publient.
Le titre annonce d’emblée un livre sur les fondements théoriques du domaine, donc cette approche n’a rien de surprenant.
Ce genre de livre se lit rarement du début à la fin ; on creuse plutôt en profondeur quelques chapitres portant sur les techniques liées à sa propre recherche.
Moi aussi, dans mes recherches, j’ai déjà utilisé des recueils d’articles tout aussi verbeux, mais le cœur de ce qui m’intéressait représentait environ 20 à 30 pages.
C’est beaucoup trop prolixe à mon goût, tant du point de vue de la rigueur que de la quantité de contenu.
Par exemple, ils incluent l’inégalité de Gronwall comme lemme et la démontrent ; même si la version utilisée est un peu plus générale que celle que je vois d’habitude, l’inégalité de Gronwall est un outil extrêmement standard dans l’analyse des équations différentielles ordinaires, au point que mes livres rigoureux de théorie du contrôle se contentent eux aussi de donner une référence sans preuve pour éviter l’encombrement.
Plus on élève le niveau d’exigence des preuves et moins on veut poser d’hypothèses, plus on obtient ce genre de prolixité.
Je me demande qui sont exactement les lecteurs visés par « étudiants et scientifiques ».
Dès le début du chapitre 1, il y a des indices dans des indices, des sommes avec des indices placés dans des exposants, et on entre dans d’immenses chaînes de composition de fonctions.
Plus loin, les indices atteignent quatre niveaux de profondeur, l’ouvrage introduit au moins trois nouveaux opérateurs infixes, et définit 30 nouveaux symboles issus de trois alphabets différents, alors qu’on n’a même pas encore atteint la page 100 sur 600.
Je ne sais pas pour qui cela a été conçu, ni qui est censé suivre et assimiler tout ça.
J’ai vu pas mal de livres qui essaient d’expliquer le deep learning d’un point de vue mathématique, mais ça me surprend toujours
Le deep learning actuel est clairement une science empirique, et je pense qu’il n’y a pas tant de travaux théoriques ayant eu un impact assez important pour figurer dans un livre
Parmi ces livres, celui-ci me semble franchement proche du pire
Il consacre beaucoup de pages à démontrer des lemmes qui n’apportent presque aucune compréhension supplémentaire et qui ne sont que vaguement liés au deep learning, et une bonne partie du code est du code de tracé de graphes dont je ne comprends pas pourquoi il est là
Je pense que très peu de gens liront une grande partie de ce livre
Je continue de penser que les meilleurs manuels sont Deep Learning de Goodfellow et al., ainsi que le plus moderne Understanding Deep Learning (https://udlbook.github.io/udlbook/)
Même si la pointe du deep learning est très empirique, il existe des recherches intéressantes qui cherchent à comprendre pourquoi ça fonctionne, et pas seulement quelles techniques marchent bien
Dire que les démonstrations ne sont pas un bon moyen de comprendre n’a pas de sens
Ce n’est pas la bonne approche pour tout le monde, mais un livre intitulé « introduction mathématique à x » s’adresse évidemment à des personnes ayant une certaine formation mathématique, et pour ces lecteurs, les lemmes et leurs preuves sont une manière naturelle de construire leur compréhension
Les mathématiques ne sont pas seulement des preuves, c’est aussi une façon de communiquer
Il existe plusieurs façons d’expliquer comment fonctionnent les réseaux de neurones : les schémas, le code, les mots, et aussi une notation mathématique assez dense
Il est généralement plus facile d’acquérir d’abord l’intuition, puis de comprendre les parties techniques, plutôt que de construire l’intuition à partir de la théorie
C’est globalement vrai dans les sciences exactes, en particulier en mathématiques, et c’est pour cela que les exemples aident
Je me demande si le deep learning est une science empirique simplement parce que tout le monde a peur des mathématiques
C’est un domaine aussi riche que la physique moderne, mais curieusement la plupart des praticiens semblent vouloir continuer à le voir comme une sorte de Far West
Il y a aussi beaucoup de chercheurs en deep learning très portés sur les maths
Si le deep learning est une science empirique, c’est parce que les outils mathématiques dont nous disposons ne suffisent pas à expliquer et prédire les phénomènes observés dans une théorie unifiée
Dire que c’est une science empirique ne signifie pas que le domaine soit un « Far West »
Les modèles de deep learning peuvent faire l’objet d’expériences contrôlées et reproductibles, ce qui permet d’améliorer notre compréhension de ce qui se passe dans la plupart des cas
Les bons praticiens le savent
On peut faire beaucoup de choses sans aller beaucoup plus loin que l’algèbre linéaire, le calcul différentiel et intégral, et les probabilités de niveau licence, et ces connaissances servent surtout à donner de l’intuition et à formaliser un peu le problème qu’on essaie de résoudre
On peut obtenir des résultats, y compris impressionnants, en faisant très peu de maths
Résultat : les gens démontrent et résolvent de nouveaux problèmes empiriquement très vite, bien plus vite que n’apparaissent les résultats théoriques expliquant pourquoi cela fonctionne
La théorie est difficile pour de nombreuses raisons, mais l’une des principales est que beaucoup de réussites du deep learning ne rentrent pas bien dans les cadres existants comme les statistiques ou le contrôle optimal, ce qui les rend difficiles à expliquer
Je me demande si quelqu’un utilise vraiment ces mathématiques
Mon intuition est plutôt non ; au mieux, j’y vois une forme de soutien psychologique qui rassure les chercheurs en deep learning en leur disant que ce qu’ils veulent faire n’est pas impossible
Je suis tout à fait prêt à admettre que je me trompe
Les maths ne sont pas forcément nécessaires pour construire un bon modèle, mais il faut connaître les maths pour savoir pourquoi un modèle se trompe
C’est pour cela que les maths sont nécessaires
Sans maths, on finit par se convaincre qu’il suffit d’augmenter l’échelle pour atteindre l’AGI
On utilise des Transformer partout parce que tout le monde le fait, et on se perd entre les fonctions d’activation
On peut construire un modèle qui fonctionne, mais il y a une grande différence entre un modèle qui fonctionne et le fait de prévoir où il échouera et d’en comprendre les limites
Beaucoup de gens semblent regarder uniquement les résultats sur l’ensemble de test et espérer que le modèle n’est pas en surapprentissage
Sans même parler du réglage des hyperparamètres à partir des résultats sur l’ensemble de test
Imaginez l’informatique sans théorie, sans algorithmes de tri ou de recherche dont l’exactitude est prouvée et dont les propriétés sont connues
Ces mathématiques jouent le même rôle que la théorie de l’informatique
Si vous vous contentez d’ajuster un modèle dans une bibliothèque comme Keras, vous n’« utilisez » effectivement pas ces maths
Si le dataset est en dessous d’une certaine taille, si le problème est en dessous d’une certaine complexité, et si le modèle est déployé depuis des années et que ses propriétés ont été bien étudiées, on peut faire beaucoup de choses en ne connaissant les maths que grossièrement
C’est un peu comme pouvoir créer une webapp parfaitement fonctionnelle sans comprendre en profondeur le fonctionnement interne du runtime de Python ou de Java
Mais si l’on ne comprend pas les mécanismes réels, on se retrouve assez fortement bloqué dès qu’on tombe sur une situation qui n’est pas déjà prise en charge par une bibliothèque
Pour voir ce qui arrive quand on ignore les mathématiques sous-jacentes, il suffit de regarder la génération actuelle de diplômés en « data science » qui n’ont pas les bases en maths et en statistiques
Il y a aussi beaucoup de problèmes du côté du recrutement, mais au final, s’ils ne trouvent pas d’emploi, c’est parce qu’on ne les a jamais forcés à apprendre cela et qu’ils ne savent pas vraiment ce qu’ils font
Donc oui, il y a des gens qui s’en servent
Dans ce cas, cela donne aux praticiens un moyen de vérifier la cohérence physique entre plusieurs méthodes
Dans ce cas, ce sont des choses que quelqu’un qui fait du machine learning utilise tous les jours, non ?
Je me demande s’il est courant de mettre un livre, surtout un livre qui vient tout juste de sortir, directement sur ArXiv
J’en vois assez souvent, au moins pour les manuels de mathématiques et d’informatique