Deep Learning avec JavaScript
Réseaux de neurones dans TensorFlow.js
Shanqing Cai
Stanley Bileschi
Eric D. Nielsen et François Chollet
Nikhil Thorat et Daniel Smilkuv
First Interactive
Avant-propos
1
Préface
3
À propos des auteurs
5
Introduction
7
Partie 1 Motivation et concepts de base11
1 Deep learning et JavaScript
13
1.1 Intelligence artificielle, apprentissage automatique, réseaux de neurones et deep learning16
Intelligence artificielle 16 • Apprentissage automatique : en quoi diffère-t-il de la programmation traditionnelle ? 17 • Réseaux de neurones et apprentissage profond 21 • Pourquoi le deep learning ? Pourquoi maintenant ? 26
1.2 Pourquoi combiner JavaScript et apprentissage automatique ?27
Un bref historique de TensorFlow, Keras et TensorFlow.js 35 • Pourquoi TensorFlow. js : une brève comparaison avec des bibliothèques similaires 39 • Comment TensorFlow.js est-il utilisé dans le monde réel ? 41 • Ce que ce livre vous apprendra et ne vous apprendra pas sur TensorFlow.js 41
Partie 2 Introduction à TewsorFlow.js45
2 Pour commencer : une régression linéaire simple dans TensorFlow.js
47
2.1 Exemple 1 : prédire la durée d'un téléchargement avec TensorFlow.js48
Aperçu du projet : prédire la durée 48 • Note sur les listings de code et les interactions dans la console 48 • Création et formatage des données 50 • Définir un modèle simple 53 • Ajuster le modèle aux données d'entraînement 56 • Utiliser notre modèle entraîné pour faire des prédictions 58 • Résumé de notre premier exemple 58
2.2 Explorer Model.fit() : dissection d'une descente de gradient à partir de l'Exemple 159
Les intuitions derrière l'optimisation de la descente de gradient 60 • Rétropropagation : Dans la descente de gradient 64.
2.3 Régression linéaire avec de multiples caractéristiques en entrée68
Le jeu de données sur le prix de l'immobilier à Bostont 69 • Obtenir et exécuter le projet Boston Housing depuis GitHubt 70 • Accéder aux données du jeu Boston Housingt 72 • Définir précisément le problème du logement à Bostont 74 • Une légère diversion dans la normalisation des donnéet 75 • Régression linéaire sur les données du jeu Boston Housingt 78
2.4 Comment interpréter votre modèlet83
Extraire du sens à partir des poids apprist 83 • Extraire des poids internes du modèlet 85 • Mises en garde sur l'interprétabilitét 86
3 Ajouter de la non-linéarité : au-delà des sommes pondérées
89
3.1 Non-linéarité : qu'est-ce que c'est et à quoi cela sert-il ?90
Construire l'intuition pour la non-linéarité dans les réseaux de neurones 92 • Hyperparamètres et optimisation des hyperparamètres 99
3.2 Non-linéarité en sortie ; modèles pour la classification102
Qu'est-ce que la classification binaire ? 102 • Mesurer la qualité des classifieurs binaires : courbes de précision, de rappel, d'exactitude et ROC 104 • La courbe ROC : montrer les compromis dans la classification binaire 108 • Entropie croisée binaire : la fonction de perte pour la classification binaire 113
3.3 Classification multiclasse116
Encodage one-hot de données catégorielles 117 • Activation Softmax 119 • Entropie croisée catégorielle : la fonction de perte pour la classification multiclasse 121 • Matrice de confusion : analyse détaillée de la classification multiclasse 123
4 Reconnaître des images et des sons à l'aide des réseaux de neurones convolutifs
127
4.1 Des vecteurs aux tenseurs : représentation des images128
Le jeu de données MNIST 129
4.2 Votre premier réseau de neurones convolutif129
Couche conv2d 132 • Couche maxPooling2d 135 • Motifs répétés de convolution et de pooling 136 • Couches aplaties et denses 137 • Entraîner le convnet 139 • Utiliser un convnet pour faire des prédictions 143
4.3 Au-delà des navigateurs : entraîner des modèles plus rapidement en utilisant Node.js146
Dépendances et importations pour l'utilisation de tfjs-node 146 • Entraîner un convnet amélioré pour le jeu MNIST dans tfjs-node 148 • Sauvegarder le modèle depuis Node.js et le charger dans le navigateur 152
4.4 Reconnaître des mots parlés : appliquer des convnet sur des données audio154
Spectrogrammes : représenter des sons sous forme d'images 154
5 Apprentissage par transfert : réutiliser des réseaux de neurones pré-entraînés
163
5.1 Introduction à l'apprentissage par transfert : réutiliser des modèles déjà entraînés164
Apprentissage p ar transfert basé sur des formes de sortie compatibles : couches gelées 166 • Apprentissage par transfert sur des formes de sortie incompatibles : créer un nouveau modèle en utilisant les sorties du modèle de base 172 • Tirer le meilleur parti de l'apprentissage par transfert avec les bons ajustements : un exemple audio 186
5.2 Détection d'objets par apprentissage par transfert sur un convnet197
Un problème simple de détection d'objets à partir de scènes synthétisées 198 • Plongée profonde dans la détection d'objets simple 199
Partie 3 Deep learning avancé avec TewsorFlow.js211
6 Travailler avec les données
213
6.1 Utiliser tf.data pour gérer les donnéese214
L'objet tf.data.Datasete 215 • Créer un tf.data.Datasete 215 • Accéder aux données de votre Datasete 219 • Manipuler des tf.data.Datasete 222
6.2 Entraîner des modèles avec model.fitDatasete226
6.3 Schémas courants d'accès aux donnéese232
Travailler avec des données au format CSVe 232 • Accéder à des données vidéo en utilisant tf.data.webcame 237 • Accéder à des données audio à l'aide de tf.data. microphonee 241
6.4 Vos données sont probablement erronées : traiter des problèmes dans vos donnéese243
Théorie des donnéese 244 • Détection et nettoyage des problèmes liés aux donnéese 248
6.5 Augmentation des donnéese255
7 Visualisation des données et des modèles
261
7.1 Visualisation des données262
Visualiser des données à l'aide de tfjs-vis 262 • Étude de cas : visualiser des données météorologiques avec tfjs-vis 270
7.2 Visualiser des modèles après l'entraînement275
Visualiser les activations internes d'un convnet 278 • Visualiser à quoi les couches de convolution sont sensibles : Images avec activation maximale 281 • Interprétation visuelle du résultat de la classification d'un convnet 285
8 Le sous-apprentissage, le surapprentissage et le flux de travail universel de l'apprentissage automatique
289
8.1 Formuler le problème de la prévision de la température290
8.2 Sous-apprentissage, surapprentissage et contre-mesures294
Sous-apprentissage 294 • Surapprentissage 296 • Réduire le surapprentissage avec la régularisation des poids, et visualiser son fonctionnement 298
8.3 Le flux de travail universel de l'apprentissage automatique303
9 Deep learning pour les séquences et le texte
309
9.1 Seconde tentative de prévision météorologique : introduction aux réseaux de neurones récurrents310
Pourquoi les couches denses échouent à modéliser l'ordre séquentiel 311 • Comment les réseaux de neurones récurrents modélisent l'ordre séquentiel 313
9.2. Construire des modèles de deep learning pour le texte322
Comment le texte est représenté dans l'apprentissage automatique : encodage one-hot et multi-hot 323 • Première tentative pour le problème de l'analyse de sentiment 325 • Une représentation plus efficace du texte : le plongement de mots 327 • Réseaux de neurones convolutifs 1D 330
9.3 Tâches séquence à séquence avec mécanisme d'attention338
Formuler la tâche de séquence à séquence 339 • Architecture encodeur-décodeur et mécanisme d'attention 341 • Plongée profonde dans le modèle d'encodeur-décodeur basé sur l'attention 344
10 Deep learning génératif
353
10.1 Générer du texte avec LSTM354
Prédiction du prochain caractère : une façon simple de générer du texte 354 • L'exemple lstm-text-generation 356 • Température : caractère aléatoire ajustable dans le texte généré 359
10.2 Auto-encodeurs variationnels (VAE) : trouver une représentation vectorielle efficace et structurée des images363
Auto-encodeur classique et VAE : idées de base 363 • Un exemple détaillé de VAE : le jeu de données Fashion-MNIST 366
10.3 Générer des images avec les réseaux antagonistes génératifs (GAN)375
L'idée de base derrière les GAN 376 • Les briques de construction de l'ACGAN 379 • Plonger plus profondément dans l'entraînement du réseau ACGAN 383 • Voir l'entraînement et la génération pour l'ACGAN MNIST 386
11 Les bases de l'apprentissage par renforcement
391
11.1 Formuler les problèmes d'apprentissage par renforcement393
11.2 Réseaux et gradients de politiques : l'exemple de la tige sur le chariot396
Cart-pole comme problème d'apprentissage par renforcement 396 • Apprentissage par renforcement : notion de politique 39S • Entraînement du réseau de politiques : l'algorithme REINFORCE 401
11.3 Réseaux de valeurs et Q-learning : l'exemple du jeu Snake409
Snake comme problème d'apprentissage par renforcement 409 • Processus de décision de Markov et valeurs Q 412 • Q-réseau profond 415 • Entraînement du DQN 419
Partie 4 En résumé et en guise de conclusion435
12 Tester, optimiser et déployer des modèles
437
12.1 Tester des modèles TensorFlow.js438
Tests unitaires traditionnels 439 • Tester avec des valeurs d'or 442 • Considérations relatives à l'entraînement en continu 444
12.2 Optimisation du modèle446
Optimisation de la taille du modèle par la quantification des poids après l'entraînement 446 • Optimiser la vitesse d'inférence en utilisant la conversion GraphModel 454
12.3 Déployer des modèles TensorFlow.js sur diverses plateformes et environnements459
Considérations supplémentaires pour le déploiement sur le Web 459 • Déploiement vers des services dans le cloud 460 • Déploiement vers une extension de navigateur, comme dans Chrome 461 • Déployer des modèles TensorFlow.js dans des applications mobiles basées sur JavaScript 463 • Déployer des modèles TensorFlow.js dans des applications de bureau multiplateformes basées sur JavaScript 465 • Déployer les modèles TensorFlow.js sur WeChat et d'autres systèmes de plugins d'applications mobiles basés sur JavaScript 467 • Déployer des modèles TensorFlow.js sur des ordinateurs monocarte 468 • Résumé des déploiements 470
13 Résumé, conclusions, et au-delà
473
13.1 Révisions sur des concepts clés474
Diverses approches de l'IA 474 • Ce qui distingue le deep learning parmi les autres sous-domaines de l'apprentissage automatique 474 • Comment penser le deep learning à un haut niveau ? 475 • Principales technologies du deep learning 476 • Applications et opportunités débloquées par le deep learning dans JavaScript 477
13.2 Aperçu rapide sur le flux de travail et les algorithmes de deep learning dans TensorFlow.js478
Le flux de travail universel du deep learning supervisé 478 • Types de modèles et de couches dans TensorFlow.js : une référence rapide 480 • Exploiter les modèles préentraînés de TensorFlow.js 484 • L'espace des possibilités 487 • Limites du deep learning 489
13.3 Tendances dans le deep learning492
13.4 Conseils pour poursuivre l'exploration493
S'entraînera des problèmes d'apprentissage automatique du monde réel avec Kaggle 494 • Découvrir les derniers développements sur arXiv 494 • Explorer l'écosystème de TensorFlow.js 495
Annexe A Installer tfjs-node-gpu et ses dépendances
497
Annexe B Tutoriel rapide sur les tenseurs et leurs opérations dans TensorFlow.js
503
Glossaire
529
Index
539