A la veille du début du cours «Deep Learning. Basic »a préparé pour vous une traduction de matériel intéressant.
L'apprentissage en profondeur a énormément contribué aux progrès et à la montée en puissance de l'intelligence artificielle que nous constatons aujourd'hui dans le monde. Les tâches que l'intelligence artificielle effectue actuellement, telles que la classification de texte et d'images, la segmentation d'instances, la réponse à des questions basées sur des données textuelles, la compréhension de la lecture, etc., étaient autrefois de la science-fiction, mais elles deviennent de plus en plus utiles et de plus en plus imitées. humain grâce à l'utilisation de réseaux de neurones profonds.
Comment les réseaux de neurones font-ils face à ces tâches complexes? Que se passe-t-il sous les couches infinies de bits d'opérations mathématiques qui remplissent ces réseaux?
Un simple réseau de neurones
Creusons un peu plus profondément et comprenons conceptuellement les bases des réseaux de neurones profonds.
Tout d'abord, parlons de l'algorithme utilisé par la plupart (sinon tous) des réseaux de neurones pour apprendre à partir des données d'entraînement. Les données d'entraînement ne sont rien de plus que des données annotées par l'homme, c'est-à-dire des images étiquetées dans le cas de la classification d'images ou des sentiments étiquetés dans l'analyse des sentiments.
Et cela s'appelle l'algorithme de rétropropagation d'erreur.
Voici un bref aperçu de la structure des réseaux de neurones:
Les réseaux neuronaux transforment les données d'entrée en sortie d'une certaine manière. Les données d'entrée peuvent être des images, des fragments de texte, etc. Les données d'entrée sont converties en leur représentation numérique: par exemple, dans les images, chaque pixel est codé avec une valeur numérique en fonction de sa position, et dans le texte, chaque mot est un vecteur de nombres, qui est une représentation vectorielle d'un mot (dans un tel vecteur, chaque nombre est une estimation d'une caractéristique spécifique d'un mot) ou un vecteur unidimensionnel (un vecteur à n dimensions constitué de n-1 zéros et un un, où la position de un pointera vers le mot sélectionné).
Cette entrée numérique est ensuite passée à travers un réseau de neurones (en utilisant une technique connue sous le nom de rétropropagation d'une erreur), qui sous le capot comporte plusieurs étapes de multiplication par des poids dans le réseau, d'ajout de décalages et de passage par une fonction d'activation non linéaire. Une telle étape de propagation directe est effectuée pour chaque entrée dans les données d'apprentissage étiquetées, et la précision du réseau est calculée à l'aide d'une fonction connue sous le nom de fonction de perte ou fonction de coût. Le but du réseau est de minimiser la fonction de perte, c'est-à-dire de maximiser sa précision. Dans un premier temps, le réseau commence à travailler avec une valeur aléatoire des paramètres (poids et biais), puis augmente progressivement sa précision et minimise les pertes, en continuant à améliorer ces paramètres à chaque itération par propagation directe sur les données d'apprentissage.La mise à jour des poids et biais (amplitude et direction positive ou négative) est déterminée par l'algorithme de rétro-propagation. Examinons l'algorithme de rétropropagation et comprenons comment il aide les réseaux de neurones à «apprendre» et à minimiser la perte de données d'entraînement.
Propagation vers l'avant dans un réseau de neurones profond
L'essence de la rétropropagation d'erreur est de déterminer comment chaque paramètre doit changer afin de mieux s'adapter aux données d'apprentissage (c'est-à-dire pour minimiser les pertes et maximiser la précision de la prédiction). La méthode pour déterminer ces valeurs est assez simple:
Dans l'image ci-dessus, l'axe Y est une fonction de perte et l'axe X est un paramètre (poids) du réseau. La valeur initiale du poids doit être réduite pour atteindre le minimum local. Mais comment le réseau comprend-il que le poids doit être réduit pour ce faire? Le réseau s'appuiera sur la pente de la fonction au point de départ.
Comment obtenez-vous la pente? Si vous avez étudié les mathématiques, vous savez que la pente d'une fonction en un point est donnée par sa dérivée. Voila! Nous pouvons maintenant calculer la pente, et donc la direction de changement (positive ou négative) du poids. La valeur de poids est mise à jour de manière itérative et nous nous retrouvons avec le minimum.
La difficulté survient lorsque les poids ne sont pas directement liés à la fonction de perte, comme c'est le cas avec les réseaux de neurones profonds. C'est là que la règle de chaîne familière entre en jeu.
Par exemple, dans la figure ci - dessus montre que le résultat Y ne dépend pas directement de la valeur d'entrée X , mais X passe par F , et ensuite à travers G avant de donner une valeur de sortie Y . En utilisant la règle de chaîne, vous pouvez écrire la dérivée de G par rapport à X , indiquant la dépendance de G sur F , où F dépend de X... Cette règle peut être appliquée pour des réseaux de toute longueur avec la dérivée résultante et, par conséquent, la pente pour toute valeur de sortie par rapport à l'entrée, obtenue comme le produit des dérivées de toutes les étapes par lesquelles passe la valeur d'entrée. C'est l'essence de la rétropropagation de l'erreur, où la dérivée / pente de la valeur de sortie par rapport à chaque paramètre est obtenue en multipliant les dérivées lors du passage en arrière à travers le réseau jusqu'à ce que la dérivée directe du paramètre soit trouvée, c'est pourquoi la méthode est appelée rétropropagation.
C'est tout. Pour en savoir plus sur le cours, nous vous invitons à vous inscrire à la journée portes ouvertes via le lien ci-dessous: