Deep Learning avec Keras - Deep Learning

Comme indiqué dans l'introduction, l'apprentissage en profondeur est un processus d'entraînement d'un réseau neuronal artificiel avec une énorme quantité de données. Une fois formé, le réseau pourra nous donner des prédictions sur des données invisibles. Avant d'aller plus loin en expliquant ce qu'est le deep learning, passons rapidement en revue quelques termes utilisés dans la formation d'un réseau neuronal.

Les réseaux de neurones

L'idée de réseau neuronal artificiel est dérivée des réseaux neuronaux de notre cerveau. Un réseau neuronal typique se compose de trois couches - entrée, sortie et couche cachée, comme indiqué dans l'image ci-dessous.

Ceci est également appelé un shallowréseau neuronal, car il ne contient qu'une seule couche cachée. Vous ajoutez plus de couches cachées dans l'architecture ci-dessus pour créer une architecture plus complexe.

Réseaux profonds

Le diagramme suivant montre un réseau profond composé de quatre couches cachées, une couche d'entrée et une couche de sortie.

Au fur et à mesure que le nombre de couches cachées est ajouté au réseau, sa formation devient plus complexe en termes de ressources requises et de temps nécessaire pour former complètement le réseau.

Formation réseau

Une fois que vous avez défini l'architecture du réseau, vous l'entraînez à effectuer certains types de prédictions. La formation d'un réseau est un processus consistant à trouver les pondérations appropriées pour chaque lien du réseau. Pendant l'entraînement, les données circulent des couches d'entrée aux couches de sortie via diverses couches masquées. Comme les données se déplacent toujours dans une direction de l'entrée à la sortie, nous appelons ce réseau en tant que réseau à réaction et nous appelons la propagation des données en tant que propagation en avant.

Fonction d'activation

À chaque couche, nous calculons la somme pondérée des entrées et la transmettons à une fonction d'activation. La fonction d'activation apporte la non-linéarité au réseau. C'est simplement une fonction mathématique qui discrétise la sortie. Certaines des fonctions d'activation les plus couramment utilisées sont sigmoïde, hyperbolique, tangente (tanh), ReLU et Softmax.

Rétropropagation

La rétropropagation est un algorithme d'apprentissage supervisé. Dans Backpropagation, les erreurs se propagent vers l'arrière de la sortie à la couche d'entrée. Étant donné une fonction d'erreur, nous calculons le gradient de la fonction d'erreur par rapport aux poids attribués à chaque connexion. Le calcul du gradient procède à l'envers à travers le réseau. Le gradient de la couche finale de poids est calculé en premier et le gradient de la première couche de poids est calculé en dernier.

A chaque couche, les calculs partiels du gradient sont réutilisés dans le calcul du gradient pour la couche précédente. C'est ce qu'on appelle la descente de gradient.

Dans ce didacticiel basé sur un projet, vous allez définir un réseau de neurones profonds à feed-forward et l'entraîner avec des techniques de rétropropagation et de descente de gradient. Heureusement, Keras nous fournit toutes les API de haut niveau pour définir l'architecture réseau et l'entraîner à l'aide de la descente de gradient. Ensuite, vous apprendrez comment faire cela dans Keras.

Système de reconnaissance des chiffres manuscrits

Dans ce mini projet, vous appliquerez les techniques décrites précédemment. Vous allez créer un réseau de neurones d'apprentissage en profondeur qui sera formé pour reconnaître les chiffres manuscrits. Dans tout projet d'apprentissage automatique, le premier défi consiste à collecter les données. En particulier, pour les réseaux d'apprentissage profond, vous avez besoin d'énormes données. Heureusement, pour le problème que nous essayons de résoudre, quelqu'un a déjà créé un ensemble de données pour la formation. Cela s'appelle mnist, qui est disponible dans le cadre des bibliothèques Keras. L'ensemble de données se compose de plusieurs images de 28 x 28 pixels de chiffres manuscrits. Vous entraînerez votre modèle sur la majeure partie de cet ensemble de données et le reste des données sera utilisé pour valider votre modèle entraîné.

Description du projet

le mnistl'ensemble de données se compose de 70000 images de chiffres manuscrits. Quelques exemples d'images sont reproduits ici pour votre référence

Chaque image a une taille de 28 x 28 pixels, ce qui en fait un total de 768 pixels de différents niveaux de gris. La plupart des pixels tendent vers l'ombre noire tandis que seuls quelques-uns d'entre eux sont vers le blanc. Nous mettrons la distribution de ces pixels dans un tableau ou un vecteur. Par exemple, la distribution des pixels pour une image typique des chiffres 4 et 5 est illustrée dans la figure ci-dessous.

Chaque image a une taille de 28 x 28 pixels, ce qui en fait un total de 768 pixels de différents niveaux de gris. La plupart des pixels tendent vers l'ombre noire tandis que seuls quelques-uns d'entre eux sont vers le blanc. Nous mettrons la distribution de ces pixels dans un tableau ou un vecteur. Par exemple, la distribution des pixels pour une image typique des chiffres 4 et 5 est illustrée dans la figure ci-dessous.

En clair, vous pouvez voir que la distribution des pixels (en particulier ceux tendant vers les tons blancs) diffère, cela distingue les chiffres qu'ils représentent. Nous alimenterons cette distribution de 784 pixels à notre réseau en entrée. La sortie du réseau se composera de 10 catégories représentant un chiffre entre 0 et 9.

Notre réseau sera composé de 4 couches - une couche d'entrée, une couche de sortie et deux couches cachées. Chaque couche cachée contiendra 512 nœuds. Chaque couche est entièrement connectée à la couche suivante. Lorsque nous formerons le réseau, nous calculerons les poids pour chaque connexion. Nous formons le réseau en appliquant la rétropropagation et la descente de gradient dont nous avons parlé précédemment.