Le livre «Deep Learning in Pictures. Un guide visuel de l'intelligence artificielle "

imageSalut, habrozhiteli! Le Deep Learning est devenu un puissant moteur pour travailler avec l'intelligence artificielle. Des illustrations vives et des exemples de code simples vous éviteront d'avoir à vous plonger dans les aspects complexes de la construction de modèles d'apprentissage en profondeur, rendant les tâches complexes accessibles et amusantes.



John Krohn, Grant Beyleveld et le grand illustrateur Aglae Bassens utilisent des exemples et des analogies vifs pour expliquer ce qu'est l'apprentissage en profondeur, pourquoi il est si populaire et comment il se rapporte à d'autres approches de l'apprentissage automatique. Le livre est idéal pour les développeurs, les scientifiques des données, les chercheurs, les analystes et les futurs programmeurs qui souhaitent appliquer l'apprentissage en profondeur à leur travail. Les calculs théoriques sont parfaitement complétés par le code d'application Python dans les notebooks Jupyter. Vous apprendrez des techniques pour créer des modèles efficaces dans TensorFlow et Keras, et vous vous familiariserez également avec PyTorch.



Les connaissances de base de l'apprentissage profond vous permettront de créer de vraies applications - de la vision par ordinateur et du traitement du langage naturel à la génération d'images et aux algorithmes de jeu.



Réseau de profondeur intermédiaire basé sur Keras



Pour conclure ce chapitre, nous allons incorporer les nouvelles connaissances théoriques dans un réseau de neurones et voir si nous pouvons surpasser le modèle précédent shallow_net_in_keras.ipynb en classant les nombres manuscrits.



Les premières étapes de la création d'un réseau de profondeur intermédiaire dans le bloc-notes Jupyter intermediaire_net_in_keras.ipynb sont identiques aux étapes de la création de son prédécesseur - un réseau peu profond. Tout d'abord, les mêmes dépendances Keras sont chargées et l'ensemble de données MNIST est entré et traité de la même manière. Comme vous pouvez le voir dans le Listing 8.1, le plaisir commence là où l'architecture du réseau neuronal est définie.



Liste 8.1. Code définissant l'architecture du réseau neuronal de profondeur intermédiaire



model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(784,)))
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))


La première ligne de cet extrait de code, model = Sequential (), est la même que dans le réseau précédent (extrait 5.6); c'est une instance d'un objet modèle de réseau neuronal. La ligne suivante commence la divergence. Dans ce document, nous avons remplacé la fonction d'activation sigmoïde dans la première couche cachée par la fonction relu, comme recommandé au chapitre 6. Tous les autres paramètres de la première couche, à l'exception de la fonction d'activation, sont restés les mêmes: elle se compose toujours de 64 neurones, et la dimension de la couche d'entrée est restée la même - 784 neurones.



Un autre changement significatif du Listing 8.1 par rapport à l'architecture peu profonde du Listing 5.6 est la présence d'une deuxième couche cachée de neurones artificiels. En appelant model.add (), nous ajoutons sans effort une deuxième couche Dense avec 64 neurones relu, justifiant le mot intermédiaire dans le nom du notebook. En appelant model.summary (), vous pouvez voir, comme le montre la Fig. 8.9 que cette couche supplémentaire ajoute 4 160 paramètres d'apprentissage supplémentaires, par rapport à l'architecture peu profonde (voir la figure 7.5). Les paramètres peuvent être divisés en:



  • 4096 poids correspondant aux connexions de chacun des 64 neurones de la deuxième couche cachée avec chacun des 64 neurones de la première couche cachée (64 × 64 = 4096);
  • plus 64 décalages, un pour chaque neurone dans la deuxième couche cachée;
  • le résultat est 4160 paramètres: n paramètres = nw + nb = 4096 + 64 =

    = 4160.


En plus des modifications apportées à l'architecture du modèle, nous avons également modifié les options de compilation du modèle, comme indiqué dans l'extrait 8.2.



Liste 8.2. Code de compilation de réseau de neurones à profondeur intermédiaire



model.compile(loss='categorical_crossentropy',
                      optimizer=SGD(lr=0.1),
                      metrics=['accuracy'])


image


Ces lignes de l'extrait 8.2:



  • définir une fonction de coût basée sur l'entropie croisée: loss = 'categorical_crossentropy' (dans un réseau peu profond, le coût quadratique était utilisé loss = 'mean_squared_error');
  • définir la méthode de descente du gradient stochastique pour minimiser les coûts: optimizer = SGD;
  • définir l'hyperparamètre du taux d'apprentissage: lr = 0,1 (1) ;
  • , , Keras , : metrics=['accuracy'](2).


(1) , , .



(2) , , , , , . , , , . , , : , (, « 86 »), (« 86 , »).


Enfin, nous formons le réseau intermédiaire en exécutant le code du Listing 8.3.

Liste 8.3. Code d'entraînement de réseau neuronal de profondeur intermédiaire



model.fit(X_train, y_train,
              batch_size=128, epochs=20,
              verbose=1,
              validation_data=(X_valid, y_valid))


La seule chose qui a changé dans la formation d'un réseau intermédiaire par rapport à un réseau peu profond (voir l'extrait 5.7) est une diminution de l'ordre de l'hyperparamètre des époques de 200 à 20. Comme vous le verrez plus tard, une architecture intermédiaire plus efficace nécessite beaucoup moins d'époques pour apprendre.



image


En figue. 8.10 présente les résultats des quatre premières époques de l'apprentissage en réseau. Comme vous vous en souvenez peut-être, notre architecture peu profonde a atteint un plateau de 86% de précision sur les données de validation après 200 époques. Le réseau de profondeur intermédiaire l'a largement dépassé: comme le montre le champ val_acc, le réseau a atteint une précision de 92,34% après la première période d'apprentissage. Après la troisième époque, la précision dépassait 95%, et à la 20e époque, elle semble avoir atteint un plateau à environ 97,6%. Nous allons sérieusement de l'avant!



Examinons de plus près la sortie de model.fit (), illustrée à la Fig. 8.10:



  • La

    barre de progression , illustrée ci-dessous, remplit plus de 469 «cycles d'apprentissage» (voir la figure 8.5): 60000/60000 [======================== ======]
  • 1s 15us/step , 469 1 , 15 .
  • loss . 0.4744 (SGD) , 0.0332 .
  • acc — . 86.37% 99% . , .
  • , (val_loss), , 0.08 .
  • (val_acc). , 97.6%, 86% .




Dans ce chapitre, nous avons fait un excellent travail. Tout d'abord, nous avons appris comment un réseau de neurones à paramètres fixes traite les informations. Ensuite, nous avons déterminé les méthodes d'interaction - fonctions de coût, descente de gradient stochastique et rétropropagation - qui vous permettent d'ajuster les paramètres du réseau pour approximer toute valeur y vraie qui a une relation continue avec une entrée x. En cours de route, nous nous sommes familiarisés avec plusieurs hyperparamètres, dont la vitesse d'apprentissage, la taille de l'emballage et le nombre d'époques d'entraînement, ainsi qu'avec les règles pratiques de réglage de chacun d'eux. À la fin du chapitre, nous avons appliqué nos nouvelles connaissances pour créer un réseau de neurones à profondeur intermédiaire, qui surpassait considérablement le réseau peu profond précédent sur le même problème de classification des nombres manuscrits.Ensuite, nous examinerons les méthodes pour améliorer la stabilité des réseaux de neurones artificiels à mesure qu'ils s'approfondissent, nous permettant de développer et de former un modèle d'apprentissage en profondeur à part entière.



»Plus de détails sur le livre peuvent être trouvés sur le site Web de l'éditeur

» Table des matières

» Extrait



pour les habitants une réduction de 25% sur le coupon - Deep Learning



Lors du paiement de la version papier du livre, un livre électronique est envoyé à l'e-mail.



All Articles