Deep learning en action

Book description

Plongez au coeur du Deep Learning
Ce livre a été écrit pour tous ceux qui souhaitent s'initier au Deep Learning (apprentissage profond). Il est la suite logique du titre "Le Machine learning avec Python" paru en février 2018.

Le Deep Learning est une technologie nouvelle qui évolue très rapidement. Ce livre en présente les bases principales de cette technologie. Au coeur de celle-ci on trouve les réseaux de neurones profonds, permettant de modéliser tous types de données et les réseaux de convolution, capables de traiter des images.
Et enfin, cette technologie de plus en plus utilisée dans les applications d'intelligence artificielle introduit le notion de Reinforcement Learning (apprentissage par renforcement) qui permet d'optimiser les prises de décision par exemple pour le fonctionnement d'un robot.

Au programme :
La génèse du Deep Learning
Les résaux de neuronnes
Les bases des réseaux de type Deep learning
L'architecture réseau
Créer un réseau type
Adapter le réseau à des besoins propres
Les architectures spécifiques
La vectorisation
Le Deep Learning et DL4J sur Spark
Au coeur de l'intelligence artificielle
RL4J et Reinforcement Learning

Table of contents

  1. Couverture
  2. Deep learning en action - Une approche par la pratique
  3. Copyright
  4. Préface
    1. Qu’y a-t-il dans ce livre ?
    2. C’est qui, « le praticien » ?
    3. Qui devrait lire ce livre ?
      1. Le praticien de l’apprentissage machine en entreprise
        1. Le data scientist
        2. L’ingénieur Java
      2. Le dirigeant d’entreprise
      3. L’universitaire
    4. Conventions utilisées dans ce livre
    5. Utiliser les exemples de code
    6. Notes pratiques
  5. CHAPITRE 1. Quelques révisions sur l’apprentissage automatique
    1. Des machines pour apprendre
      1. Comment les machines peuvent-elles apprendre ?
      2. La biologie, une source d’inspiration
      3. Le deep learning, c’est quoi ?
      4. Descendre dans le terrier du lièvre
    2. Poser les bonnes questions
    3. Apprentissage automatique et mathématiques : une histoire d’algèbre linéaire
      1. Scalaires
      2. Vecteurs
      3. Matrices
      4. Tenseurs
      5. Hyperplans
      6. Opérations mathématiques utiles
        1. Produit scalaire
        2. Produit élément par élément
        3. Produit extérieur
      7. Convertir des données en vecteurs
      8. Résoudre des systèmes d’équations
        1. Méthodes pour la résolution des systèmes d’équations linéaires
        2. Méthodes itératives
        3. Méthodes itératives et algèbre linéaire
      9. Derrière l’apprentissage automatique : une affaire de statistiques
      10. Probabilités
      11. Probabilités conditionnelles
      12. Probabilité a posteriori
      13. Distributions
      14. Échantillons versus Population
      15. Méthodes de rééchantillonnage
      16. Biais de sélection
      17. Vraisemblance
    4. Comment l’apprentissage automatique fonctionne-t-il ?
      1. Régression
        1. Configurer le modèle
        2. Visualiser une régression linéaire
        3. Relation avec le modèle de régression linéaire
      2. Classification
      3. Clustering
      4. Sous-apprentissage et surapprentissage
      5. Optimisation
      6. Optimisation convexe
      7. Descente de gradient
      8. Descente de gradient stochastique
        1. Descente de gradient avec mini-lots
      9. Méthodes d’optimisation quasi-Newton
      10. Modèles génératifs et modèles discriminants
      11. Régression logistique
      12. La fonction logistique
      13. Comprendre la sortie de la régression logistique
    5. Évaluer les modèles
      1. La matrice de confusion
        1. Sensibilité et spécificité
        2. Exactitude
        3. Précision
        4. Rappel
        5. F1
        6. Interprétation des scores et contexte
    6. Progresser dans la compréhension de l’apprentissage automatique
  6. CHAPITRE 2. Fondements des réseaux de neurones et du deep learning
    1. Les réseaux de neurones
      1. Le neurone biologique
        1. Synapses
        2. Dendrites
        3. Axones
        4. Flux d’informations à travers le neurone biologique
        5. Du biologique à l’artificiel
      2. Le perceptron
        1. Histoire du perceptron
        2. Définition du perceptron
        3. Algorithme d’apprentissage du perceptron
        4. Limites du perceptron d’origine
      3. Réseau feed-forward multicouche
        1. Évolution du neurone artificiel
          1. Entrée des neurones artificiels
          2. Poids de connexion
          3. Biais
          4. Fonctions d’activation
        2. Comparer neurone biologique et neurone artificiel
        3. Architecture du réseau de neurones feed-forward
          1. Couche d’entrée
          2. Couche cachée
          3. Couche de sortie
          4. Connexions entre couches
    2. Entraînement des réseaux de neurones
      1. Apprentissage par rétropropagation
        1. Intuition de l’algorithme
        2. Coup d’œil sur la rétropropagation
        3. Comprendre le pseudocode de la rétropropagation
          1. Mettre à jour les poids de la couche de sortie
          2. Exprimer le terme d’erreur
          3. La nouvelle règle de propagation pour la valeur d’erreur
          4. Mise à jour des couches cachées
    3. Fonctions d’activation
      1. Linéaire
      2. Sigmoïde
      3. Tanh
      4. Tanh « dure »
      5. Softmax
      6. Rectification linéaire
        1. Variante Leaky de la fonction d’activation ReLU
        2. Softplus
    4. Fonctions de perte
      1. Notation des fonctions de perte
      2. Fonctions de perte pour la régression
        1. Erreur quadratique moyenne (MSE)
        2. Autres fonctions de perte pour la régression
          1. Erreur absolue moyenne
          2. Erreur MSLE
          3. Erreur absolue moyenne en pourcentage
        3. Discussion sur les fonctions de perte pour la régression
      3. Fonctions de perte pour la classification
        1. Perte charnière
        2. Perte logistique
          1. Log-vraisemblance négative
      4. Fonctions de perte pour la reconstruction
    5. Hyperparamètres
      1. Taux d’apprentissage
      2. Régularisation
      3. Moment
      4. Dispersion
  7. CHAPITRE 3. Principes fondamentaux des réseaux profonds
    1. Définir l’apprentissage profond
      1. Qu’est-ce que le deep learning ?
        1. Définir les réseaux profonds
        2. Progrès et résurgence
        3. Progrès dans l’architecture des réseaux
          1. Avancées dans les types de couche
          2. Avancées dans les types de neurones
          3. Architectures hybrides
        4. De l’ingénierie des caractéristiques à l’apprentissage automatisé des caractéristiques
          1. Ingénierie des caractéristiques
          2. Apprentissage des caractéristiques
        5. Modélisation générative
          1. Inceptionisme
          2. Modélisation du style artistique
          3. GAN
          4. Réseaux de neurones récurrents
        6. Le Tao de l’apprentissage profond
      2. Organisation de ce chapitre
    2. Principes communs dans les architectures des réseaux profonds
      1. Paramètres
      2. Couches
      3. Fonctions d’activation
        1. Fonctions d’activation pour l’architecture générale
          1. Fonctions d’activation pour les couches cachées
          2. Couche de sortie pour la régression
          3. Couche de sortie pour la classification binaire
          4. Couche de sortie pour la classification multiclasse
      4. Fonctions de perte
        1. Entropie croisée pour la reconstruction
      5. Algorithmes d’optimisation
        1. Méthodes de premier ordre
        2. Méthodes de second ordre
          1. L-BFGS
          2. Gradient conjugué
          3. Hessian-free
      6. Hyperparamètres
        1. Taille de la couche
        2. Hyperparamètres de magnitude
          1. Taux d’apprentissage
          2. Momentum de Nesterov
          3. AdaGrad
          4. RMSProp
          5. AdaDelta
          6. ADAM
          7. Régularisation
          8. DropOut
          9. DropConnect
          10. L1
          11. L2
          12. Mini-lots
      7. Résumé
    3. Fabriquer des briques de construction pour les réseaux profonds
      1. RBM
        1. Architecture du réseau
          1. Couche visible et couche invisible
          2. Connexions et poids
          3. Biais
          4. Entraînement
        2. Reconstruction
        3. Autres utilisations des RBM
      2. Auto-encodeurs
        1. Similitudes avec les perceptrons multicouches
        2. Définition des caractéristiques des auto-encodeurs
          1. Apprentissage non supervisé de données non étiquetées
          2. Apprendre à reproduire les données d’entrée
        3. Entraînement des auto-encodeurs
        4. Variantes courantes des auto-encodeurs
          1. Auto-encodeurs contractifs
          2. Auto-encodeurs de débruitage
        5. Applications des auto-encodeurs
      3. Auto-encodeurs variationnels
  8. CHAPITRE 4. Architectures majeures des réseaux profonds
    1. Réseaux préentraînés non supervisés
      1. DBN
        1. Extraction de caractéristiques avec des couches RBM
          1. Apprendre automatiquement des caractéristiques de niveau supérieur
          2. Initialisation du réseau feed-forward
        2. Ajustement d’un DBN avec un réseau de neurones multicouche feed-forward
          1. Rétropropagation douce
          2. La couche de sortie
        3. État actuel des DBN
      2. GAN
        1. Entraînement des modèles génératifs, apprentissage non supervisé et réseaux GAN
          1. Le réseau discriminant
          2. Le réseau génératif
        2. Construire des modèles génératifs et des réseaux DCGAN
        3. Réseau GAN conditionnel
        4. Comparaison entre réseaux GAN et auto-encodeurs variationnels
    2. Réseaux de neurones convolutifs (CNN)
      1. Inspiration biologique
        1. Intuition
      2. Présentation de l’architecture des réseaux CNN
        1. Arrangements spatiaux des neurones
        2. Évolution des connexions entre couches
      3. Couches d’entrée
      4. Couches de convolution
        1. Convolution
        2. Filtres
        3. Cartes d’activation
        4. Partage des paramètres
        5. Filtres appris et rendus
        6. Fonctions d’activation ReLU en tant que couches
        7. Hyperparamètres dans les couches de convolution
          1. Taille de filtre
          2. Profondeur de sortie
          3. Pas
          4. Zero-padding
        8. Normalisation par lots et couches
      5. Couches de pooling
      6. Couches entièrement connectées
      7. Autres applications des réseaux CNN
      8. Réseaux CNN notables
      9. Résumé
    3. Réseaux de neurones récurrents
      1. Modéliser la dimension temporelle
        1. Perdu dans le temps
        2. Récurrence temporelle et boucles dans les connexions
        3. Séquences et données temporelles
        4. Comprendre l’entrée et la sortie du modèle
      2. Entrée volumétrique 3D
        1. Séries chronologiques inégales et masquage
      3. Pourquoi ne pas utiliser les modèles de Markov ?
      4. Architecture générale des réseaux de neurones récurrents
        1. Architecture des réseaux de neurones récurrents et étapes temporelles
      5. Réseaux LSTM
        1. Propriétés des réseaux LSTM
        2. Architecture des réseaux LSTM
        3. Unités LSTM
        4. Couches LSTM
        5. Entraînement
        6. BPTT et BPTT tronquée
      6. Applications spécifiques à certains domaines et réseaux mixtes
    4. Réseaux de neurones récursifs
      1. Architecture réseau
      2. Variétés de réseaux de neurones récursifs
      3. Applications des réseaux de neurones récursifs
    5. Résumé et discussion
      1. Le deep learning rendra-t-il obsolètes d’autres algorithmes ?
      2. Des problèmes différents ont différentes meilleures méthodes
      3. Quand ai-je besoin du deep learning ?
        1. Quand devriez-vous utiliser le deep learning ?
        2. Quand devriez-vous vous en tenir à l’apprentissage automatique traditionnel ?
  9. CHAPITRE 5. Construire des réseaux profonds
    1. Faire correspondre problèmes et réseaux profonds
      1. Données en colonnes et perceptrons multicouches
      2. Images et réseaux de neurones convolutifs
      3. Séries de données chronologiques et réseaux de neurones récurrents
      4. Utiliser des réseaux hybrides
    2. La suite d’outils DL4J
      1. Vectorisation et DataVec
      2. Runtimes et ND4J
        1. ND4J et le besoin de vitesse
          1. JavaCPP
          2. Backends CPU
          3. Backends GPU
        2. Benchmarking de ND4J et DL4J
    3. Concepts de base de l’APIDL4J
      1. Charger et enregistrer des modèles
        1. Écrire un modèle entraîné sur le disque
          1. Écrire dans HDFS
        2. Lecture à partir du disque d’un modèle enregistré
          1. Lire depuis HDFS
      2. Obtenir des entrées pour le modèle
        1. Chargement des données pendant l’entraînement
          1. RecordReaders
          2. DataSetIterator
    4. Configuration de l’architecture de modèle
      1. Configurer l’architecture du modèle
        1. Construire des architectures orientées couches
        2. Hyperparamètres
      2. Entraînement et évaluation
        1. Faire une prédiction
        2. Entraînement, validation et données de test
    5. Modélisation de données CSV avec des réseaux de perceptrons multicouches
      1. Configurer les données d’entrée
      2. Déterminer l’architecture du réseau
        1. Hyperparamètres généraux
        2. Première couche cachée
        3. Couche de sortie pour la classification
      3. Entraîner le modèle
      4. Évaluer le modèle
    6. Modélisation d’images de chiffres manuscrits à l’aide de réseaux CNN
      1. Code Java pour le réseau CNNLeNet
      2. Chargement et vectorisation des images d’entrée
      3. Architecture réseau pour LeNet dans DL4J
        1. Hyperparamètres généraux
          1. Régularisation
          2. Initialisation de poids
          3. Algorithme d’optimisation
          4. Updater
        2. Couches de convolution
          1. Taille du filtre
          2. Canaux de données d’entrée
          3. Pas
          4. Fonction d’activation
        3. Couches de max-pooling
          1. Max-pooling
          2. Réglage du pas de la couche de pooling
        4. Couche de sortie
      4. Entraînement du réseau CNN
    7. Modéliser des données séquentielles en utilisant des réseaux de neurones récurrents
      1. Générer du « Shakespeare » via des réseaux LSTM
        1. Flux de travail de modélisation de haut niveau
        2. Code Java pour la modélisation de Shakespeare
        3. Configurer les données d’entrée et la vectorisation
        4. Architecture du réseau LSTM
          1. Observations générales sur les hyperparamètres
      2. Entraînement du réseau LSTM
        1. Génération d’échantillons Shakespeare
      3. Classifier des séquences temporelles en utilisant des réseaux LSTM
        1. Listing de code Java pour l’exemple de classification récurrente
        2. Configuration des données d’entrée et vectorisation
        3. Architecture du réseau et entraînement
    8. Utiliser des auto-encodeurs pour la détection d’anomalies
      1. Code Java pour l’exemple d’auto-encodeur
      2. Configuration des données d’entrée
      3. Auto-encodeur : architecture réseau et entraînement
      4. Évaluer le modèle
    9. Utiliser des auto-encodeurs variationnels pour reconstruire les chiffres MNIST
      1. Exemple de code reconstruisant des chiffres MNIST
      2. Examiner le modèle VAE
        1. Comprendre le nuage de points
        2. Comprendre les images générées
    10. Applications du deep learning dans le traitement du langage naturel
      1. Apprentissage par plongement lexical avec Word2Vec
        1. Modèle et algorithme Word2Vec
        2. Contexte de modélisation
        3. Apprendre les significations similaires et les relations sémantiques
        4. Arithmétique vectorielle et plongement lexical
        5. Listing du code Java pour l’exemple Word2Vec
        6. Comprendre l’exemple Word2Vec
        7. Autres utilisations pratiques de Word2Vec
      2. Représentations distribuées de phrase avec des vecteurs de paragraphes
        1. Construire des vecteurs de paragraphes
        2. Comprendre les vecteurs de paragraphes de l’exemple
      3. Utiliser des vecteurs de paragraphes pour la classification de documents
        1. Comprendre l’exemple de classification avec des vecteurs de paragraphes
        2. Explorer plus profondément l’approche Word2Vec
          1. Extensions dans des domaines spécifiques : Gov2Vec
          2. Graphiques et Node2Vec
          3. Moteurs de recommandation et Item2Vec
          4. Vision par ordinateur et FaceNet
  10. CHAPITRE 6. Optimiser les réseaux profonds
    1. Concepts de base dans l’optimisation des réseaux profonds
      1. Une intuition pour construire des réseaux profonds
      2. Construire l’intuition en tant que processus étape par étape
    2. Adapter données d’entrée et architectures réseau
      1. Résumé
    3. Relation entre objectif du modèle et couches de sortie
      1. Couche de sortie pour un modèle de régression
        1. Fonction de perte
        2. Fonction d’activation
      2. Couche de sortie du modèle de classification
        1. Modèles de classification avec une seule étiquette
        2. Modèles avec plus de deux étiquettes
          1. Modèles de classification multiclasse
          2. Modèles de classification multiétiquette
    4. Travailler avec le nombre de couches, le nombre de paramètres et la mémoire
      1. Réseaux de neurones multicouches feed-forward
        1. Déterminer le nombre de couches cachées
        2. Déterminer le nombre de neurones par couche
      2. Contrôler le nombre de couches et de paramètres
        1. Déterminer le nombre de paramètres pour un réseau
      3. Estimer les besoins en mémoire du réseau
    5. Stratégies d’initialisation des poids
    6. Initialisation orthogonale des poids dans les RNN
    7. Utiliser les fonctions d’activation
      1. Résumé pour les fonctions d’activation
    8. Appliquer les fonctions de perte
    9. Comprendre les taux d’apprentissage
      1. Utiliser le ratio des mises à jour des paramètres
      2. Recommandations spécifiques pour les taux d’apprentissage
    10. Parcimonie et apprentissage
    11. Appliquer des méthodes d’optimisation
      1. SGD : les meilleures pratiques
    12. Utiliser la parallélisation et les GPU pour accélérer l’entraînement
      1. Apprentissage en ligne et algorithmes itératifs parallèles
        1. Parallélisme des tâches
        2. Parallélisme des données
      2. Paralléliser SGD dans DL4J
        1. Exécution parallèle de SGD
          1. Mini-lots
          2. Régularisation
      3. Parallélisme et GPU
    13. Contrôle des époques et taille de mini-lot
      1. Comprendre les compromis sur la taille des mini-lots
    14. Comment utiliser la régularisation ?
      1. Régularisations L1 et L2
      2. Régularisation max-norm
      3. DropOut
        1. Problèmes avec DropOut
      4. Quelques compléments sur la régularisation
        1. Pooling stochastique
        2. Entraînement antagoniste
        3. Curriculum learning
    15. Travailler avec des classes déséquilibrées
      1. Méthodes pour l’échantillonnage des classes
      2. Fonctions de perte pondérées
    16. Traiter le problème du surapprentissage
    17. Utiliser les statistiques réseau de l’interface utilisateur. Tuning UI
      1. Détecter une initialisation des poids médiocre
      2. Détecter des données non mélangées
      3. Détecter les problèmes de régularisation
  11. CHAPITRE 7. Optimiser des architectures de réseau profond spécifiques
    1. Réseaux de neurones convolutifs (CNN)
      1. Architectures convolutives courantes
      2. Configurer les couches de convolution
        1. Définir le pas pour les filtres
        2. Utiliser le remplissage
        3. Choisir le nombre de filtres
        4. Configurer la taille de filtre
        5. Mode de convolution et calcul de la taille spatiale du volume de sortie
      3. Configurer les couches de pooling
      4. Apprentissage par transfert
        1. Une alternative à l’entraînement à partir de rien
        2. Affiner un modèle convolutif existant
        3. Utiliser un modèle de convolution existant en tant qu’extracteur de caractéristiques
        4. Quand envisager d’essayer l’apprentissage par transfert
    2. Réseaux de neurones récurrents
      1. Données en entrée du réseau et couches d’entrée
      2. Couches de sortie et RnnOutputLayer
      3. Entraîner le réseau
        1. Initialisation des poids
        2. Rétropropagation dans le temps
        3. Régularisation
      4. Déboguer des problèmes courants avec les réseaux LSTM
      5. Remplissage et masquage
        1. Appliquer le remplissage et le masquage à une entrée volumétrique
      6. Évaluer et noter avec le masquage
        1. Classification en utilisant la classe Evaluation
        2. Scorer de nouvelles données avec MultiLayerNetwork
      7. Variantes d’architectures de réseaux récurrents
    3. Machines de Boltzmann restreintes
      1. Unités cachées et modélisation des informations disponibles
      2. Utiliser des unités différentes
      3. Utiliser la régularisation avec les RBM
    4. DBN
      1. Utiliser l’inertie
      2. Utiliser la régularisation
        1. DropOut
      3. Déterminer le nombre d’unités cachées
  12. CHAPITRE 8. Vectorisation
    1. Introduction à la vectorisation dans l’apprentissage automatique
      1. Pourquoi avons-nous besoin de vectoriser des données ?
      2. Stratégies pour traiter des attributs de données brutes en colonne
        1. Nominal
        2. Ordinal
        3. Intervalle
        4. Ratio
      3. Ingénierie des caractéristiques et techniques de normalisation
        1. Copie de caractéristiques
        2. Normalisation
          1. Standardisation et moyenne zéro, variance unitaire
          2. Transformation min-max
          3. Whitening et analyse en composantes principales
          4. Réseaux de neurones récurrents, CNN et normalisation
          5. Normalisation pour les modèles de régression
        3. Binarisation
    2. Utiliser DataVec pour ETL et la vectorisation
    3. Vectoriser des données d’image
      1. Représentation des données d’image dans DL4J
      2. Données d’image et normalisation vectorielle avec DataVec
    4. Vectorisation et données séquentielles
      1. Variations importantes dans les sources de données séquentielles
      2. Vectorisation de données séquentielles avec DataVec
        1. Convertir des séries temporelles en un seul vecteur
        2. Convertir des données séquentielles en un objet DataSet en mode local
        3. Construire des objets DataSet personnalisés à partir de données séquentielles
      3. Texte et vectorisation
        1. Sac de mots
        2. TF-IDF
          1. TF
          2. IDF
          3. Calculer le score TF-IDF
        3. Comparer Word2Vec et VSM
      4. Travail avec des graphiques
  13. CHAPITRE 9. Utiliser le deep learning et DL4J sur Spark
    1. Introduction à l’utilisation de DL4J avec Spark et Hadoop
      1. Exécuter Spark à partir de la ligne de commande
        1. spark-submit
        2. Travailler avec la sécurité de Hadoop et Kerberos
        3. Téléchargement de l’assemblage Spark
          1. Initialiser Kerberos
    2. Configurer et optimiser l’exécution de Spark
      1. Exécuter Spark sur Mesos
      2. Exécuter Spark sur YARN
        1. Comparer les modes d’exécution Spark
      3. Guide général pour la mise au point de Spark
        1. Définir le nombre d’executors
        2. Executors Spark et cœurs de processeurs
        3. Executors Spark et mémoire
        4. Spark, conteneur YARN et allocation de ressources
        5. Comprendre les demandes de mémoire d’un executor dans YARN
        6. Comprendre Spark, JVM et la collecte des déchets
          1. Traiter le ralentissement de l’efficacité de la collecte des déchets ou des pauses
          2. Sélectionner un collecteur de déchets pour JVM et Spark
      4. Mettre au point les jobs DL4J sur Spark
        1. Définir le nombre d’executors
        2. Définir la quantité de mémoire pour les executors
    3. Configurer un modèle d’objet de projet Maven pour Spark et DL4J
      1. Un modèle de dépendances dans un fichier pom.xml
      2. Configurer un fichier POM pour CDH 5.X
      3. Configurer un fichier POM pour HDP 2.4
    4. Dépanner Spark et Hadoop
      1. Problèmes courants avec ND4J
      2. Où chercher pour déboguer Spark ?
        1. ND4J et sérialisation Kryo
        2. jnind4j et java.library.path
      3. Exécution en parallèle de DL4J sur Spark
      4. Un exemple d’entraînement Spark minimal
    5. L’APIDL4J et les meilleures pratiques pour Spark
    6. Exemple de perceptron multicouche Spark
      1. Configurer l’architecture réseau MLP pour Spark
      2. Entraînement et évaluation du modèle distribué
      3. Construire et exécuter un job Spark DL4J
    7. Générer du texte à la manière de Shakespeare avec Spark et un réseau LSTM
      1. Configuration de l’architecture de réseau LSTM
      2. Entraîner, suivre les progrès et comprendre les résultats
    8. Modéliser MNIST avec un réseau de neurones convolutifs sur Spark
      1. Configurer le job Spark et charger les données MNIST
      2. Configurer l’architecture et l’entraînement CNN de LeNet
  14. ANNEXE A. Mais c’est quoi, l’intelligence artificielle ?
    1. L’histoire (du moins jusqu’ici)
      1. Définir le deep learning
      2. Définir l’intelligence artificielle
        1. L’étude de l’intelligence
        2. Dissonance cognitive et définitions modernes
          1. Ce que n’est pas l’IA
          2. Déplacer le poteau de but
          3. Segmenter les définitions de l’IA
          4. Commentaire critique sur les segments
          5. Une cinquième définition ambitieuse de l’IA
        3. Les hivers de l’IA
          1. IA, hiver 1 (1974-1980)
          2. IA, hiver 2 (fin des années 1980)
        4. Les traits communs aux hivers de l’IA
    2. Qu’est-ce qui provoque aujourd’hui l’intérêt pour l’IA ?
    3. L’hiver arrive
  15. ANNEXE B. RL4J et apprentissage par renforcement
    1. Préliminaires
      1. Processus de décision markovien
      2. Terminologie
    2. Différents paramètres
      1. Model-free
      2. Observation
      3. Jeux à un seul joueur et avec des adversaires
    3. Q-Learning
      1. De la politique aux réseaux de neurones
      2. Itération sur les politiques
      3. Exploration vs Exploitation
      4. Équation de Bellman
      5. Échantillonnage d’un état initial
      6. Implémentation Q-Learning
      7. Modéliser Q(s, a)
      8. Experience Replay
        1. Compression
      9. Couches de convolution et prétraitement d’images
        1. Traitement d’image
      10. Traitement de l’historique
      11. Double Q-Learning
      12. Coupure (clipping)
      13. Recalibrage des récompenses
      14. Prioritized Experience Replay
    4. Graphique, visualisation et Mean-Q
    5. RL4J
    6. Conclusion
  16. ANNEXE C. Les 12 nombres de Jeff Dean
  17. ANNEXE D. Réseaux de neurones et rétropropagation : une approche mathématique
    1. La rétropropagation dans un perceptron multicouche
  18. ANNEXE E. Utiliser l’APIND4J
    1. Conception et utilisation de base
      1. Comprendre les NDArray
        1. Rang
        2. Forme
        3. Longueur
        4. Pas
        5. Type de données
      2. Syntaxe générale ND4J
      3. Les bases du travail avec les tableaux NDArray
        1. La classe ND4J
          1. Nd4j.zeros(int ... )
          2. Nd4j.ones( int ... )
          3. Initialiser avec d’autres valeurs
          4. Initialiser avec des nombres aléatoires
        2. Contrôler la forme des tableaux NDArray
          1. Exemple : créer un tableau NDArray 1 x 2
          2. Exemple : créer un tableau NDArray 2 x 2
          3. Exemple : ajouter deux tableaux NDArray 2 x 2
        3. Créer des tableaux NDArray à partir de tableaux Java
        4. Obtenir et définir les valeurs de tableaux NDArray individuels
        5. Travailler avec les lignes d’un tableau NDArray
          1. Obtenir une ligne unique
          2. Obtenir plusieurs lignes
          3. Définir une ligne unique
        6. Référence rapide pour déterminer la taille/les dimensions des tableaux NDArray
      4. Classe Dataset
        1. Relation avec NDArray
        2. Utilisations courantes
    2. Créer des vecteurs d’entrée
      1. Notions de base sur la création de vecteurs
        1. Dimensionner le vecteur
        2. Définir les valeurs des caractéristiques
        3. Définir l’étiquette
        4. Sortie d’étiquette unique
        5. Sortie multiétiquette
        6. Régression
    3. Utiliser MLLibUtil
      1. Convertir un INDArray en vecteur MLLib
      2. Convertir un vecteur MLLib en INDArray
    4. Faire des prédictions avec DL4J
      1. Utiliser ensemble DL4J et ND4J
        1. Différences entre vecteurs de sortie en fonction du type de couche de sortie
          1. Couche de sortie logistique pour la classification binaire
          2. Couche de sortie softmax pour la classification multiétiquette
          3. Couche de sortie linéaire pour la régression
        2. Obtenir l’étiquette prédite depuis le tableau INDArray retourné
  19. ANNEXE F. Utiliser DataVec
    1. Charger des données pour l’apprentissage automatique
    2. Charger des données CSV pour les perceptrons multicouches
    3. Charger des données d’image pour les réseaux de neurones convolutifs
    4. Charger des données séquentielles pour les réseaux de neurones récurrents
    5. Transformer des données avec DataVec (alias data wrangling)
      1. Transformations DataVec : concepts clés
      2. Transformations DataVec : un exemple
  20. ANNEXE G. Travailler avec DL4J depuis la source
    1. Vérifier si Git est installé
    2. Cloner les projets GitHub DL4J clés
    3. Télécharger la source via un fichier Zip
    4. Utiliser Maven pour construire le code source
  21. ANNEXE H. Configurer des projets DL4J
    1. Créer un nouveau projet DL4J
      1. Java
      2. Travailler avec Maven
        1. Un fichier POM (Project Object Model) minimal
          1. Quelques explications sur les fichiers POM
      3. IDE
        1. Démarrer rapidement un projet DL4J en utilisant IntelliJ
    2. Configurer d’autres fichiers POMMaven
      1. ND4J et Maven
  22. ANNEXE I. Configuration de GPU pour les projets DL4J
    1. Passer des backends aux GPU
      1. Choisir un GPU
      2. Systèmes à GPU multiples et entraînement
    2. CUDA sur différentes plateformes
    3. Surveiller les performances des GPU
      1. Interface de gestion du système NVIDIA
  23. ANNEXE J. Résoudre les problèmes d’installation de DL4J
    1. Erreurs de mémoire lors de l’installation à partir de la source
    2. Anciennes versions de Maven
    3. Maven et variables PATH
    4. Mauvaises versions du JDK
    5. C++ et autres outils de développement
    6. Windows et les chemins d’accès include
    7. Surveiller les GPU
    8. Utiliser JVisualVM
    9. Travailler avec Clojure
    10. OSX et support des nombres en virgule flottante
    11. Bogue Fork/Join dans Java 7
    12. Précautions
      1. Autres référentiels locaux
      2. Vérifier les dépendances de Maven
      3. Réinstaller les dépendances
      4. Si tout le reste échoue
    13. Différentes plateformes
      1. OSX
      2. Windows
        1. Configurer Visual Studio
        2. Travailler avec Windows sur les plateformes 64 bits
      3. Linux
        1. Ubuntu
          1. Centos
  24. Sommaire

Product information

  • Title: Deep learning en action
  • Author(s): Josh Patterson, Adam Gibson
  • Release date: May 2018
  • Publisher(s): Editions First
  • ISBN: 9782412037447