2 points par GN⁺ 2023-11-27 | 1 commentaires | Partager sur WhatsApp
  • Un site d’apprentissage qui rassemble en un seul endroit exercices de code, supports de cours et lectures complémentaires pour étudier en suivant le livre 2023 de Simon J.D. Prince publié chez MIT Press, Understanding Deep Learning
  • Il propose 68 notebooks Python couvrant l’ensemble du livre, sous forme d’exercices où l’apprenant complète le code manquant en consultant le texte
  • Les supports destinés aux enseignants comprennent des fichiers d’illustrations, des cours vidéo pour les 12 premiers chapitres, des diapositives, un livret de corrigés, des figures interactives pour la classe et un fichier LaTeX des équations
  • Les diapositives sont conçues pour un cours de deep learning de premier cycle en 20 séances, allant de l’apprentissage supervisé aux CNN, à la génération d’images, puis aux Transformers and LLMs
  • Les lectures complémentaires s’étendent à la vision par ordinateur, aux mathématiques du machine learning, à l’optimisation, à l’apprentissage par renforcement, à la théorie du ML et à la Responsible AI, et peuvent servir aussi bien à l’autoformation qu’à la préparation de cours

Informations sur le livre et citation

  • Understanding Deep Learning est un livre écrit par Simon J.D. Prince ; les informations de citation BibTeX indiquent qu’il a été publié par MIT Press en 2023
  • L’entrée BibTeX fournie contient les informations suivantes
    • author = "Simon J.D. Prince"
    • title = "Understanding Deep Learning"
    • publisher = "The MIT Press"
    • year = 2023
    • url = "http://udlbook.com";

Exercices de code suivant le livre

  • Le site propose 68 exercices sous forme de notebooks Python couvrant l’ensemble du livre
  • Les exercices consistent à compléter du code manquant à partir du texte
  • Les notebooks se trouvent dans le dépôt GitHub udlbook/udlbook, et chaque élément peut être ouvert via des liens ipynb/colab
  • Bases et construction des réseaux neuronaux

    • Les premiers chapitres couvrent les mathématiques de base, l’apprentissage supervisé, les réseaux neuronaux peu profonds, les fonctions d’activation, la composition de réseaux et les réseaux neuronaux profonds
    • Les exercices sur les fonctions de perte comprennent least squares loss, binary cross-entropy loss et multiclass cross-entropy loss
  • Optimisation et calcul de l’apprentissage

    • Les notebooks d’optimisation couvrent line search, gradient descent, stochastic gradient descent, momentum et Adam
    • Les exercices de calcul de gradients comprennent la backpropagation sur un toy model, la backpropagation générale et l’initialization
  • Performance, régularisation et CNN

    • Les exercices liés à la performance couvrent MNIST-1D performance, le bias-variance trade-off, double descent et les high-dimensional spaces
    • Les exercices de régularisation comprennent L2 regularization, implicit regularization, ensembling, Bayesian approach et augmentation
    • Les exercices sur la convolution comprennent 1D convolution, MNIST-1D convolution, 2D convolution, downsampling & upsampling et la convolution pour MNIST
  • Sujets modernes du deep learning

    • Les notebooks liés à la stabilisation et aux architectures de réseaux couvrent shattered gradients, residual networks et batch normalization
    • Les exercices sur les Transformers comprennent self-attention, multi-head self-attention, tokenization et decoding strategies
    • Les sujets sur les réseaux neuronaux de graphes comprennent graph representation, graph classification, neighborhood sampling et graph attention networks
    • Les exercices sur les modèles génératifs couvrent GAN toy example, Wasserstein distance, normalizing flows, latent variable models et diffusion models
    • Les exercices d’apprentissage par renforcement comprennent Markov decision processes, dynamic programming, Monte-Carlo methods, temporal difference methods et control variates
    • Les derniers sujets incluent random data, full-batch gradient descent, lottery tickets, adversarial attacks, bias mitigation et explainability

Cours et supports pour enseignants

  • Les ressources pour enseignants comprennent des illustrations, des diapositives et un livret de corrigés
  • Un lien d’inscription est fourni pour obtenir l’answer booklet après inscription auprès de MIT Press
  • Les Interactive figures sont des supports utilisés pour expliquer des idées en cours
  • Un working Latex file contenant toutes les équations est fourni
  • Diapositives pour un cours de deep learning de premier cycle en 20 séances

    • Les diapositives sont des supports pour un 20 lecture undergraduate deep learning course
    • Les thèmes des diapositives publiées comprennent Introduction, Supervised Learning, Shallow Neural Networks, Deep Neural Networks, Loss Functions, Fitting Models, Computing Gradients, Initialization, Performance, Regularization, Convolutional Networks, Image Generation, Transformers and LLMs

Lectures complémentaires

  • Le site regroupe comme ressources complémentaires d’autres articles, blogs et livres utilisant un style similaire et la même notation que Understanding Deep Learning
  • Bases de la vision par ordinateur et du machine learning

    • Computer vision: models, learning, and inference est un livre publié par CUP en 2012, centré sur les modèles probabilistes et couvrant une grande partie du contenu de ML de l’époque pré-deep learning
    • Les ressources de mathématiques pour le machine learning couvrent l’algèbre linéaire, l’introduction aux probabilités, les distributions de probabilité, l’ajustement de distributions de probabilité et la loi normale
    • Les ressources de machine learning comprennent learning and inference, regression models, classification models, few-shot learning et meta-learning
  • Transformers, LLMs, NLP

    • Les ressources sur les Transformers et les LLMs comprennent une vue d’ensemble des LLM, Transformers I·II·III, l’entraînement et le fine-tuning des LLM, ainsi que l’accélération de l’inférence des LLM
    • Les ressources NLP couvrent neural natural language generation, parsing I·II·III et XLNet
    • Les sujets liés aux Transformers comprennent self-attention, position encoding, architecture multi-head, Transformer block, encoder, decoder et training tricks
  • Optimisation, modèles temporels, apprentissage par renforcement

    • Les ressources d’optimisation comprennent gradient-based optimization, Bayesian optimization et SAT Solvers I·II·III
    • Les ressources sur les modèles temporels couvrent Kalman filter, smoothing, Extended Kalman filter, Unscented Kalman filter et particle filtering
    • La ressource d’apprentissage par renforcement Transformers in RL couvre les défis du RL, les avantages des Transformers en RL, representation learning, reward learning, policy learning, interpretability et applications
  • ODEs, SDEs, théorie du ML

    • L’ensemble ODEs and SDEs in machine learning couvre ODEs, SDEs, gradient descent, stochastic gradient descent, residual networks, diffusion models et physics-informed machine learning
    • Les ressources associées comprennent une introduction aux ODE, les closed-form solutions des ODE, les méthodes numériques pour ODE, stochastic processes and SDEs
    • Les ressources de ML Theory comprennent gradient flow, neural tangent kernel, NTK applications, Bayesian ML I·II, Bayesian neural networks et neural network Gaussian processes
  • Apprentissage non supervisé, modèles graphiques, Responsible AI

    • Les ressources d’apprentissage non supervisé couvrent complex data densities, variational autoencoders et normalizing flows
    • Les ressources sur les modèles graphiques comprennent graphical models, models for chains and trees et models for grids
    • Les ressources Responsible AI comprennent bias and fairness, explainability I·II et differential privacy I·II

1 commentaires

 
GN⁺ 2023-11-27
Avis sur Hacker News
  • Les commentaires ici se divisent globalement en deux catégories : 1) on peut créer des systèmes d’IA sans ces connaissances, donc ce n’est pas indispensable ; 2) pour comprendre ce qui se passe réellement, ces bases sont nécessaires.
    Les deux points de vue sont justes, et j’ai l’impression que le domaine est en train de se scinder en deux compétences : ingénieur ML et scientifique/chercheur ML.
    Dans une équipe, c’est bien d’avoir les deux. Le scientifique peut être lent, tandis que l’ingénieur essaie rapidement différentes API et modèles open source, mais quand il se retrouve bloqué ou qu’il faut modifier l’algorithme, beaucoup d’ingénieurs perdent pied. C’est là qu’il faut un mode de pensée de R&D, souvent peu familier à beaucoup d’ingénieurs, et que le scientifique en IA devient important.

    • Mon expérience a plutôt été l’inverse. Les gens sous-estiment la capacité à construire des systèmes, ainsi que le fait que la plupart des problèmes qui valent la peine d’être résolus exigent des techniques ennuyeuses et non standardisées.
      Ces dix dernières années, j’ai vu le même schéma dans plusieurs équipes. Une entreprise obtient un peu de budget, se persuade que son problème est particulier, puis recrute des data scientists titulaires d’un doctorat avec quelques articles à leur actif ; mais souvent, ils ne connaissent que R et viennent à peine de terminer un bootcamp Python.
      Au bout de trois mois, il n’y a pas grand-chose comme résultats, seulement une pile de notebooks Jupyter ; parfois, il n’y a pas de code de production, ni même d’environnement d’expérimentation.
      Le problème business reste entier. L’entreprise finit par comprendre que, si elle a beaucoup de data scientists mais pas assez d’ingénieurs data/ML, elle se bloque au moment du déploiement en production ou, faute de bien comprendre Python, construit une Étoile de la mort mêlant pipelines de données + algorithmes + infrastructure, en consommant 70 % de ressources en plus.
      Le projet prend du retard et les gens s’impatientent. Désormais, une équipe à 2,5 millions de dollars par an n’arrive même pas à produire une preuve de concept parce qu’elle ne sait pas servir le modèle en batch ou via une API REST.
      L’entreprise perd son élan, tandis que les concurrents sortent une solution imparfaite mais en avance, attirent des utilisateurs et l’améliorent. Ensuite, les PM et les engineering managers se disputent pour savoir qui est responsable, et les VP produit/ingénierie cherchent un bouc émissaire. Quelques docteurs sont licenciés et partent enseigner dans une université locale.
    • Cette distinction pourrait-elle se voir par une analogie similaire ? Les personnes qui créent des modèles et celles qui les utilisent ; les personnes qui créent des langages de programmation et celles qui les utilisent.
    • Ça ressemble à un argumentaire commercial pour vendre des scientifiques en IA.
    • En pratique, quand on bloque, revenir aux fondamentaux est presque une évidence, et les bons profils devraient essayer de faire les deux.
      Dans ce sens, je ne vois pas très bien d’où vient cette séparation entre ingénieur ML et scientifique ML, et elle me donne l’impression d’être une distinction faite par certains pour se valoriser.
  • En tant que personne qui a raté le coche, je me demande si apprendre cela aujourd’hui n’a plus qu’une valeur historique, ou si cela reste pertinent pour l’emploi à l’avenir.
    Avec l’IA, on a l’impression qu’OpenAI va manger le déjeuner de tout le monde ; est-ce une idée complètement à côté de la plaque ?

    • D’un point de vue pratique, le plus important est d’apprendre ce que ces choses peuvent réellement faire. Autour du ML, il y a beaucoup de pensée floue du type « on ajoute de l’IA et tout s’améliore magiquement ».
      Des ressources comme la récente vidéo de Karpathy expliquant les LLM sont de bons supports semi-vulgarisés pour le grand public, mais le niveau de compréhension pratique juste au-dessus est difficile à acquérir sans mettre les mains dedans. Il n’est pas nécessaire de mémoriser toutes les maths, mais il est utile d’avoir une idée de l’« interface » des composants.
      Ce qui compte, c’est ce que chaque technique de modèle fait réellement, en particulier au moment de l’inférence, là où elle doit bien s’intégrer au reste de la stack.
      Quant à savoir si cela reste pertinent, le deep learning, au sens de réseaux neuronaux denses entraînés à optimiser une fonction donnée, n’a pas fondamentalement changé en pratique depuis environ 15 ans ; théoriquement, il est encore plus ancien, et pour la plupart des usages, il est bien plus important et largement utilisé que les approches à la OpenAI.
      Pour tout ce qui implique de l’estimation numérique, comme l’optimisation publicitaire ou la modélisation financière, on n’utilise pas de LLM : on utilise des modèles adaptés à l’objectif, comme partie d’un système plus vaste. Une interface du type « on donne des nombres et on reçoit des nombres » est explicable, facile à intégrer dans une stack logicielle et agréable à mesurer.
      Elle a des barres d’erreur compréhensibles et, parfois, elle est même cohérente. Elle offre aussi une interface contrôlable qui ne va pas soudainement recracher des secrets d’entreprise ni oublier de sérialiser du JSON. La latence et les coûts sont également bien plus faibles.
      Si vous devez rendre une page web en moins de 100 ms ou optimiser parmi des millions d’options, l’IA générative n’est pas un choix pratique, et il est peu probable qu’elle le devienne.
      Je n’ai pas un énorme bagage en maths ou en théorie du ML, mais j’ai passé l’essentiel des dix dernières années à construire de l’infrastructure, des pipelines de données et du monitoring avec des spécialistes du ML. Je ne peux pas intégrer une sigmoïde à la volée, mais ce n’est pas l’essentiel. Je l’ai déjà fait une fois, j’ai une intuition de la façon dont la fonction se comporte, et je peux raisonner dessus comme sur un composant boîte noire.
    • Il s’agit ici de deep learning, la catégorie dont les LLM sont un sous-ensemble. Si l’apprentissage automatique vous intéresse, il faut apprendre le deep learning, qui est extrêmement utile pour de nombreuses raisons.
      Contrairement à d’autres domaines du ML, les composants du deep learning s’imbriquent bien les uns avec les autres. Si vous le voulez, vous pouvez même utiliser un Transformer avec un CNN. Il permet aussi d’appliquer l’apprentissage automatique à n’importe quel type de données — texte, images, vidéo, audio, etc. — et il passe naturellement à l’échelle sur le plan du calcul.
      En tant que personne assez impliquée dans ce domaine, je trouve dommage qu’à cause des LLM, des gens se détournent du ML et du deep learning en suivant l’idée erronée qu’« il n’y a plus de raison de s’y mettre ». Les grands algorithmes coûtent cher à exécuter, ont un débit lent et sont généralement moins performants que des modèles conçus pour un objectif précis. Pour beaucoup de tâches, ils ne sont pas non plus plus faciles à utiliser que des réseaux encodeurs.
      C’est peut-être un point de vue biaisé, mais je pense que c’est l’un des domaines les plus amusants à apprendre en informatique. Si vous avez une bonne idée, vous pouvez construire quelque chose à l’état de l’art même avec un GPU grand public à la maison. Il suffit de trouver une niche qui reçoit moins d’attention que les LLM.
    • Si vous voulez construire des systèmes ML, cela reste très pertinent. OpenAI occupe beaucoup l’espace médiatique, mais en réalité il existe énormément d’équipes qui créent des choses utiles et intéressantes.
    • Du point de vue applicatif, il est plus important de comprendre comment fonctionne l’ensemble du processus ML, quels en sont les concepts clés et comment les composants s’imbriquent.
      Le deep learning en fait partie. Une grande partie est déjà encapsulée dans des bibliothèques et des API ; le travail consiste donc à préparer les bonnes données, appeler la bonne API, puis exploiter les résultats.
    • Le marché des services d’IA sera dominé par quelqu’un, mais les applications de petite IA en périphérie sont trop nombreuses pour qu’un seul acteur puisse toutes les contrôler.
      Par exemple, OpenAI ne s’intéressera probablement pas au développement d’un petit réseau neuronal embarqué sur une puce capteur détectant en temps réel certaines molécules dans l’air.
  • Ce livre est impressionnant. Il contient aussi un chapitre sur un sujet que j’aime beaucoup, l’efficacité déraisonnable du deep learning. Y a-t-il d’autres livres à surveiller ?

    • Cette présentation de DeepMind fait le tour des livres de base en ML : https://drive.google.com/file/d/1lPePNMGMEKoaDvxiftc8hcy-rFp...
      Les plus pressés peuvent aller directement à la diapo 123. Les principales recommandations sont Murphy, Gelman, Barber et Deisenroth.
      Il faut garder à l’esprit que ces diapositives ont un biais bayésien. Cela dit, Murphy est un excellent livre sur le deep learning, et passer par les modèles linéaires généralisés avant d’entrer dans le deep learning est aussi une bonne approche.
    • Vraiment impressionnant, avec le potentiel de devenir le manuel de référence sur le sujet.
      Fait intéressant, le fameux article Attention approche les 10 000 citations et devrait les atteindre vers la fin de l’année. Il est très probable que ce soit l’article à avoir atteint le plus rapidement ce jalon important.
      Les livres de deep learning écrits avant l’article Attention doivent être considérés comme datés et nécessitent une mise à jour. C’est un peu comme un vieux manuel de physique qui contiendrait les lois de Newton, mais pas l’équivalence masse-énergie d’Einstein.
    • https://news.ycombinator.com/item?id=38425368
  • Si l’on commence maintenant à lire et à étudier l’IA, peut-on atteindre un niveau proche de celui d’un expert ?
    Je crains de m’engager dans un parcours qui nécessiterait un master ou un doctorat.

    • Lire ce livre permet d’acquérir de très bonnes bases théoriques, et probablement une compréhension plus profonde que beaucoup d’ingénieurs ML.
      En revanche, il peut manquer les leçons de terrain, les petites astuces et intuitions nécessaires pour faire fonctionner de vrais systèmes. Cela prend du temps, et selon moi c’est autant un art qu’une science.
    • Dans un monde où la quantité d’informations à apprendre ne cesse d’augmenter, le seul repère vraiment utile est de se demander : « est-ce que j’aime apprendre ça ? »
      Des questions comme « puis-je devenir expert ? » sont trop floues pour servir de bons repères.
    • Sans connaître l’objectif, il est très difficile de répondre. Cela dépend si l’on veut devenir praticien du deep learning ou chercheur.
    • Il est probablement peu probable que tu deviennes expert, mais je ne vois pas très bien pourquoi tu voudrais l’être.
  • J’ai travaillé pendant 10 ans sur plusieurs plateformes de machine learning dans de grandes entreprises tech, et tout ce sur quoi j’ai travaillé est devenu obsolète assez vite.
    Des algorithmes de ML aux plateformes de calcul, tout était très éphémère. Ajoutez à cela le fait que la plupart des innovations en ML viennent d’une poignée d’entreprises d’élite, et apprendre beaucoup de ce type de contenu me semble presque contradictoire.

    • Les plateformes de machine learning deviennent obsolètes.
      Mais pas les algorithmes et les idées du machine learning. Si apprendre SVN ou le bayésien naïf ne t’a rien apporté d’utile aujourd’hui, alors en réalité tu n’as rien appris.
    • Un bon nombre de techniques de deep learning ont déjà résisté à l’épreuve du temps. Les nouvelles techniques s’appuient aussi sur les anciennes, ou sont développées pour en corriger les défauts.
      Par exemple, le Transformer a été développé pour résoudre le problème de disparition du gradient des LSTM sur les longues séquences, et pour améliorer le fait que les LSTM sont intrinsèquement séquentiels dans la dimension temporelle, ce qui exploite mal les GPU.
    • Je suis fortement en désaccord. Si c’est devenu obsolète, c’est probablement que tu ne faisais que courir après la dernière mode.
      Les fondamentaux ne changent pas beaucoup. Il y a plusieurs courants dans ce domaine, et beaucoup d’algorithmes ont tenu dans la durée et sont réellement utilisés. Bien sûr, on peut en mettre certains à niveau si l’on veut, mais si l’on poursuit indéfiniment le lapin blanc, il ne reste qu’une boule de coton dans les mains.
    • Très peu de choses restent inchangées dans la tech. Il faut voir la technologie comme une autre forme d’évolution.
      Personnellement, je pense que des forces du même genre que celles de l’évolution font avancer la technologie. Il me semble que Linus Torvalds a déjà dit que Linux avait évolué par sélection naturelle.
    • Alors quelles connaissances fondamentales faut-il apprendre ? Il doit bien y avoir en ML des principes généraux qui restent valables avec le temps, non ?
  • Il est très difficile de juger ce genre de livre. Faut-il se contenter de la table des matières ?
    Je me demande qui est l’auteur, s’il a d’autres travaux estimés, s’il existe de bonnes critiques de personnes qui connaissent le sujet, ou seulement de bonnes critiques d’étudiants qui n’y connaissent rien.

    • Je peux vivement recommander l’auteur. Son précédent livre, Computer Vision: Models, Learning, and Inference, est facile à lire, aborde le sujet sous un angle non orthodoxe, et contient beaucoup d’excellentes illustrations qui soutiennent le texte.
      Je compte acheter celui-ci en version papier.
    • On peut le vérifier par une recherche.
      Tu demandes si l’on juge seulement à la table des matières, mais le site lié permet de télécharger plus de 500 pages de brouillon, couvrant les chapitres 1 à 21.
      L’auteur, Simon J. D. Prince, est professeur émérite d’informatique à l’University of Bath et l’auteur de Computer Vision: Models, Learning and Inference. C’est un chercheur spécialisé en IA et en deep learning, qui a dirigé des équipes de chercheurs dans le monde académique et industriel, notamment chez Anthropics Technologies Ltd et Borealis AI.
      Parmi ses autres publications reconnues, on compte plus de 50 articles évalués par les pairs dans des conférences de tout premier plan comme CVPR, ICCV ou SIGGRAPH : https://scholar.google.com/citations?user=fjm67xYAAAAJ&hl=en
      Pour les critiques, le livre n’est pas encore publié et ce que l’on consulte actuellement est littéralement un brouillon gratuit. Il est en précommande sur Amazon à 85 dollars.
    • Le PDF complet est proposé en téléchargement gratuit sur cette page. C’est le premier lien tout en haut.
      https://github.com/udlbook/udlbook/releases/download/v1.16/U...
    • Marcus Hutter a écrit sur la [Marcus' AI Recommendation Page] que « Prince (2023) est le seul bon manuel sur le deep learning ».
  • J’espère que ce n’est pas une question idiote, mais comment peut-on acheter la version papier ?

  • Dans l’illustration du PDF, Why does deep learning work semble pointer vers Deep learning and ethics, et inversement.

  • Ayant lu pour la dernière fois le livre Deep Learning d’Ian Goodfellow en 2016, je trouve intéressant qu’il n’y ait pas de chapitre sur les RNN, mais qu’il y ait un chapitre sur les Transformers.

    • Les RNN sont structurellement inefficaces à entraîner sur le matériel rentable disponible aujourd’hui, ils ont donc en quelque sorte perdu à la loterie du matériel.
      C’est pourquoi ils sont peu utilisés actuellement. Cela dit, à titre personnel, je les trouve suffisamment intéressants sur le plan conceptuel pour mériter d’être abordés dans ce type de cours.