Galerie de cartes mentales Connaissances théoriques du Deep Learning
Une partie du contenu est réduite et un total de 1 216 modules sont inclus. Basé sur les deux livres de Yasuki Saito « Introduction à l'apprentissage profond : théorie et implémentation basées sur Python » et « Apprentissage profond avancé : traitement du langage naturel Auteur : [japonais] Yasuki Saito Traducteur : Lu Yujie ». C'est le livre le plus approprié pour débuter dans le deep learning que j'ai jamais lu. Je le recommande vivement avant d'étudier « Hands-On Deep Learning » de Li Mu ! Le contenu qu'il contient ne nécessite aucune connaissance de base. Il est enseigné à partir de zéro et peut être compris par les lycéens.
Modifié à 2024-02-04 00:57:48Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
La gestion de projet est le processus qui consiste à appliquer des connaissances, des compétences, des outils et des méthodologies spécialisés aux activités du projet afin que celui-ci puisse atteindre ou dépasser les exigences et les attentes fixées dans le cadre de ressources limitées. Ce diagramme fournit une vue d'ensemble des 8 composantes du processus de gestion de projet et peut être utilisé comme modèle générique.
Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
Cent ans de solitude est le chef-d'œuvre de Gabriel Garcia Marquez. La lecture de ce livre commence par l'analyse des relations entre les personnages, qui se concentre sur la famille Buendía et raconte l'histoire de la prospérité et du déclin de la famille, de ses relations internes et de ses luttes politiques, de son métissage et de sa renaissance au cours d'une centaine d'années.
La gestion de projet est le processus qui consiste à appliquer des connaissances, des compétences, des outils et des méthodologies spécialisés aux activités du projet afin que celui-ci puisse atteindre ou dépasser les exigences et les attentes fixées dans le cadre de ressources limitées. Ce diagramme fournit une vue d'ensemble des 8 composantes du processus de gestion de projet et peut être utilisé comme modèle générique.
Connaissances théoriques du Deep Learning
introduction
concepts de base
Le problème de l'apprentissage profond est un problème d'apprentissage automatique, qui consiste à résumer des règles générales à l'aide d'algorithmes à partir d'exemples limités et à les appliquer à de nouvelles données inconnues.
Contrairement au machine learning traditionnel, les modèles utilisés en deep learning sont généralement plus complexes.
Le flux de données de l'entrée d'origine vers la cible de sortie passe par plusieurs composants linéaires ou non linéaires. Chaque composant traite les informations et affecte à son tour les composants suivants.
Lorsque nous obtenons enfin le résultat, nous ne savons pas exactement quelle est la contribution de chaque composant. Cette question s'appelle contribution Problème d'attribution.
Le problème de répartition des contributions est aussi souvent traduit par problème de répartition des crédits ou problème de répartition des crédits.
Le problème de l'allocation des contributions est une question très critique, liée à la manière d'apprendre les paramètres de chaque composante.
À l'heure actuelle, le modèle qui permet de mieux résoudre le problème de la répartition des contributions est le réseau de neurones artificiels (ANN).
Les réseaux de neurones et l’apprentissage profond ne sont pas équivalents. L'apprentissage profond peut utiliser des modèles de réseaux neuronaux ou d'autres modèles (par exemple, le réseau de croyances profondes est un modèle de graphe probabiliste).
IA
Concepts de base de l'IA
notion intelligente
intelligence naturelle
définition
Fait référence au pouvoir et aux capacités comportementales des humains et de certains animaux.
intelligence naturelle humaine
C'est la capacité globale des êtres humains à comprendre le monde objectif qui se manifeste par des processus de pensée et des activités mentales.
Différentes vues et hiérarchies du renseignement
Voir
théorie de l'esprit
L'intelligence vient des activités de réflexion
théorie du seuil de connaissance
L'intelligence dépend des connaissances applicables
théorie évolutionniste
L'intelligence peut être atteinte par une évolution progressive
Hiérarchie
Capacités caractéristiques incluses dans le renseignement
Perception
mémoire et capacités de réflexion
apprentissage et adaptabilité
capacité
Concept d'intelligence artificielle
expliquer
Utiliser des méthodes artificielles pour réaliser l'intelligence sur les machines
Étudiez comment construire des machines ou des systèmes intelligents, et simuler et étendre l'intelligence artificielle
Test de Turing
Contenu de base de la recherche en IA
La position du sujet de l’intelligence artificielle
L'intersection des sciences naturelles et des sciences sociales
Noyau : Pensée et intelligence
Matières de base : mathématiques, sciences de la pensée, informatique
Recherche interdisciplinaire avec les sciences du cerveau et les sciences cognitives
Recherche sur les méthodes et technologies de simulation intelligente
perception des machines
Vision
audience
pensée machine
apprentissage automatique
comportement de la machine
Classement des domaines
Perception : c'est-à-dire simuler la capacité de perception humaine à percevoir et à traiter des informations provenant de stimuli externes (visuels et vocaux, etc.). Les principaux domaines de recherche comprennent le traitement de l'information vocale et la vision par ordinateur.
Apprentissage : simulation de la capacité d'apprentissage humaine, en étudiant principalement comment apprendre à partir d'exemples ou interagir avec l'environnement. Les principaux domaines de recherche comprennent l'apprentissage supervisé, l'apprentissage non supervisé et l'apprentissage par renforcement.
Cognition : simule les capacités cognitives humaines. Les principaux domaines de recherche comprennent la représentation des connaissances, la compréhension du langage naturel, le raisonnement, la planification, la prise de décision, etc.
histoire
Différentes écoles de recherche en IA
symbolisme
Symbolisme, également appelé logicisme, école de psychologie ou école d'informatique. En analysant les fonctions de l’intelligence humaine puis en réalisant ces fonctions grâce aux ordinateurs.
Hypothèses de base
Les informations peuvent être représentées à l'aide de symboles
Les symboles peuvent être manipulés via des règles explicites (telles que des opérations logiques)
Les processus cognitifs humains peuvent être considérés comme des processus de manipulation symbolique. Dans la période de raisonnement et de connaissance de l'intelligence artificielle, la méthode symbolique est plus populaire et a obtenu de nombreux résultats.
connexionnisme
Le connexionnisme, également connu sous le nom d'école bionique ou d'école physiologique, est un type de méthodes et de théories de traitement de l'information dans le domaine des sciences cognitives.
Dans le domaine des sciences cognitives, le processus cognitif humain peut être considéré comme un processus de traitement de l’information. Le connexionnisme estime que les processus cognitifs humains sont des processus de traitement de l'information dans des réseaux neuronaux composés d'un grand nombre de neurones simples, plutôt que des opérations symboliques.
Par conséquent, la structure principale du modèle connexionniste est un réseau interconnecté composé d'un grand nombre d'unités simples de traitement de l'information, qui présente les caractéristiques de non-linéarité, de distribution, de parallélisation, de calcul local et d'adaptabilité.
Behaviorisme
Le behaviorisme estime que l’intelligence artificielle découle de la cybernétique.
Outre le deep learning, il existe actuellement une autre technologie passionnante dans le domaine du machine learning, l’apprentissage par renforcement.
Laissez un agent (Agent) entreprendre continuellement différentes actions (Action), changer d'état (État) et interagir avec l'environnement (Environnement) pour obtenir différentes récompenses (Récompense). Il suffit de concevoir des règles de récompenses appropriées, l'agent peut apprendre des stratégies appropriées grâce à des essais et des erreurs continus.
Les réseaux de neurones
réseau neuronal du cerveau
Réseaux de neurones artificiels
L'histoire du développement des réseaux de neurones
Modèle proposé
La période de 1943 à 1969 constitue la première période culminante du développement des réseaux de neurones. Durant cette période, les scientifiques ont proposé de nombreux modèles de neurones et règles d’apprentissage.
En 1943, le psychologue Warren McCulloch et le mathématicien Walter Pitts ont décrit pour la première fois un réseau neuronal artificiel idéalisé et construit un mécanisme informatique basé sur des opérations logiques simples. Le modèle de réseau neuronal qu’ils ont proposé s’appelle le modèle MP.
âge de glace
De 1969 à 1983, il s’agissait du premier développement de réseau neuronal de bas niveau. période de la vallée. Durant cette période, la recherche sur les réseaux neuronaux était dans un état de stagnation et de reflux pendant de nombreuses années.
En 1969, Marvin Minsky a publié le livre « Perceptron », soulignant deux défauts majeurs des réseaux neuronaux : le premier est que le perceptron ne peut pas gérer le problème de la boucle XOR ; le second est que les ordinateurs de l'époque ne pouvaient pas prendre en charge le traitement de gros volumes ; réseaux de neurones. Nécessite une puissance de calcul.
En 1974, Paul Webos de l’Université Harvard a inventé l’algorithme de rétropropagation (BP), mais il n’a pas reçu l’attention qu’il méritait à l’époque.
La renaissance provoquée par l’algorithme de rétropropagation
1983~1995. L'algorithme de rétropropagation a relancé l'intérêt pour les réseaux de neurones.
Le physicien de Caltech, John Hopfield, a proposé un réseau neuronal pour les calculs de mémoire associative et d'optimisation, appelé réseau Hopfield. Le réseau Hopfield obtient à l'époque les meilleurs résultats sur la problématique des voyageurs de commerce et fait sensation.
David Rumelhart et James McClelland proposent une discussion approfondie sur l'application du connexionnisme aux simulations informatiques de l'activité neuronale et réinventent l'algorithme de rétropropagation.
Baisse de popularité
1995~2006. Les machines à vecteurs de support et d'autres méthodes plus simples (telles que les classificateurs linéaires) dépassent progressivement les réseaux de neurones en termes de popularité dans le domaine de l'apprentissage automatique.
L’essor de l’apprentissage profond
2006 ~ maintenant. Les réseaux neuronaux à réaction multicouche peuvent être pré-entraînés couche par couche, puis affinés à l'aide de l'algorithme de rétropropagation. Apprenez efficacement.
apprentissage automatique
Prétraitement des données
Après le prétraitement des données, comme la suppression du bruit, etc. Par exemple, dans la classification de texte, la suppression des mots vides, etc.
Extraction de caractéristiques
Extrayez quelques fonctionnalités efficaces à partir de données brutes. Par exemple, dans la classification d'images, extraire les bords, les fonctionnalités de transformation de caractéristiques invariantes d'échelle (SIFT), etc.
Transformation des fonctionnalités
Effectuez certains traitements sur les fonctionnalités, tels que la réduction de la dimensionnalité et l'amélioration de la dimensionnalité. La réduction de dimensionnalité comprend deux approches : l'extraction de fonctionnalités et la sélection de fonctionnalités. Les méthodes de transformation de caractéristiques couramment utilisées incluent l'analyse en composantes principales (ACP), l'analyse discriminante linéaire (analyse discriminante linéaire), etc.
prédire
La partie centrale de l'apprentissage automatique, faire des prédictions via une fonction
signifie apprendre
Afin d'améliorer la précision des systèmes d'apprentissage automatique, convertissez les informations d'entrée en fonctionnalités efficaces
S'il existe un algorithme capable d'apprendre automatiquement des fonctionnalités efficaces et d'améliorer les performances du modèle d'apprentissage automatique final, alors ce type d'apprentissage peut être appelé apprentissage par représentation.
méthode d'affichage
représentation locale
Une façon de représenter les couleurs consiste à nommer différentes couleurs par des noms différents.
La dimension est élevée et ne peut pas être étendue. La similarité entre les différentes couleurs est de 0.
représentation distribuée
Valeurs RVB pour représenter les couleurs
Pour apprendre une bonne représentation sémantique de haut niveau (généralement une représentation distribuée), il est généralement nécessaire de partir des fonctionnalités de bas niveau et de passer par plusieurs étapes de transformation non linéaire pour l'obtenir.
l'apprentissage en profondeur
étape
Problème de répartition des cotisations
À la différence de « l'apprentissage superficiel », le problème clé que l'apprentissage profond doit résoudre est la répartition des contributions.
Prenons l'exemple du jeu de Go suivant. Chaque fois qu'une partie est jouée, le résultat final est soit une victoire, soit une défaite. Nous réfléchirons aux mouvements qui ont conduit à la victoire finale et aux mouvements qui ont conduit à la défaite finale. Comment juger la contribution de chaque mouvement est le problème de la répartition des contributions, qui est également un problème très difficile.
Dans un sens, l'apprentissage profond peut également être considéré comme une sorte d'apprentissage par renforcement (RL). Chaque composant interne ne peut pas obtenir directement les informations de supervision, mais doit les obtenir via les informations de supervision finales (récompense) de l'ensemble du modèle, et il existe. Un certain retard.
Le modèle de réseau neuronal peut utiliser l'algorithme de rétro-propagation des erreurs, qui peut mieux résoudre le problème de distribution des contributions.
Apprentissage de bout en bout
style d'apprentissage traditionnel
Dans certaines tâches complexes, les méthodes traditionnelles d'apprentissage automatique doivent découper artificiellement l'entrée et la sortie d'une tâche en plusieurs sous-modules (ou plusieurs étapes), et chaque sous-module est appris séparément.
Par exemple, une tâche de compréhension du langage naturel nécessite généralement des étapes telles que la segmentation des mots, le marquage de parties du discours, l'analyse syntaxique, l'analyse sémantique et le raisonnement sémantique.
Il y a deux problèmes avec cette façon d'apprendre
Premièrement, chaque module doit être optimisé séparément, et il n'est pas garanti que ses objectifs d'optimisation et les objectifs globaux de la mission soient cohérents.
La seconde est la propagation des erreurs, c'est-à-dire que les erreurs survenues à l'étape précédente auront un impact important sur les modèles suivants. Cela augmente la difficulté de l’application pratique des méthodes d’apprentissage automatique.
Nouvelle façon d'apprendre
L'apprentissage de bout en bout, également appelé formation de bout en bout, fait référence à l'objectif global d'optimiser directement la tâche sans effectuer de formation en modules ou en étapes au cours du processus d'apprentissage.
Généralement, il n'est pas nécessaire de donner explicitement les fonctions des différents modules ou étapes, et aucune intervention humaine n'est requise dans le processus intermédiaire.
La plupart des apprentissages profonds utilisant des modèles de réseaux neuronaux peuvent également être considérés comme un apprentissage de bout en bout.
Cadres d'apprentissage profond couramment utilisés
Theano : Une boîte à outils Python de l'Université de Montréal, utilisée pour définir, optimiser et exécuter efficacement le projet Theano, n'est actuellement plus en maintenance. Les données d'un tableau multidimensionnel correspondent à des expressions mathématiques. Theano peut utiliser de manière transparente des GPU et des symboles efficaces différentiel.
Caffe : Le nom complet est Convolutional Architecture for Fast Feature Embedding. Il s'agit d'un cadre informatique pour les modèles de réseau convolutifs. La structure du réseau à implémenter peut être spécifiée dans le fichier de configuration et ne nécessite pas de codage. Caffe est implémenté en C et Python et est principalement utilisé pour la vision par ordinateur.
TensorFlow : une boîte à outils Python développée par Google qui peut s'exécuter sur n'importe quel appareil doté d'un CPU ou d'un GPU. Le processus de calcul de TensorFlow est représenté à l'aide de graphiques de flux de données. Le nom de Tensor Flow vient du fait que l'objet opérationnel dans son processus de calcul est un tableau multidimensionnel, c'est-à-dire un tenseur.
Chainer : l'un des premiers frameworks de réseaux neuronaux utilisant des graphiques informatiques dynamiques. Son équipe de développement principale est Preferred Networks, une startup japonaise d'apprentissage automatique. Par rapport aux graphiques de calcul statiques utilisés par Tensorflow, Theano, Caffe et d'autres frameworks, les graphiques de calcul dynamiques peuvent construire dynamiquement des graphiques de calcul au moment de l'exécution, ils sont donc très adaptés à certaines tâches complexes de prise de décision ou de raisonnement.
PyTorch5 : Un framework d'apprentissage en profondeur développé et maintenu par Facebook, NVIDIA, Twitter et d'autres sociétés. Son prédécesseur est Torch6 du langage Lua. PyTorch est également un framework basé sur des graphiques informatiques dynamiques, qui présente des avantages évidents dans les tâches nécessitant une modification dynamique de la structure des réseaux de neurones.
Organisation de ce livre
perceptron
Un perceptron est un algorithme avec des entrées et des sorties. Étant donné une entrée, une valeur donnée sera sortie.
Le perceptron définit les poids et les biais comme paramètres
Les circuits logiques tels que les portes ET et les portes OU peuvent être représentés à l'aide de perceptrons.
Une porte XOR ne peut pas être représentée par un perceptron monocouche.
Une porte XOR peut être représentée à l'aide d'un perceptron à 2 couches
Les perceptrons monocouches ne peuvent représenter que des espaces linéaires, tandis que les perceptrons multicouches peuvent représenter des espaces non linéaires.
Un perceptron à 2 couches peut (en théorie) représenter un ordinateur.
Les réseaux de neurones
Perceptrons et réseaux de neurones
« Perceptron naïf » fait référence à un réseau monocouche et à un modèle qui utilise la fonction étape comme fonction d'activation.
« Perceptron multicouche » fait référence à un réseau neuronal, c'est-à-dire un réseau multicouche qui utilise des fonctions d'activation fluide telles que la fonction sigmoïde ou la fonction ReLU.
Fonctionnement : produit interne du réseau neuronal
Y = np.dot(X, W)
Les réseaux de neurones peuvent être mis en œuvre efficacement en utilisant des opérations matricielles.
Couche affine
L'opération de produit matriciel effectuée lors de la propagation directe du réseau neuronal est appelée « transformation affine » dans le domaine de la géométrie.
La transformation affine comprend une transformation linéaire et une translation, qui correspondent respectivement à l'opération de somme pondérée et à l'opération de décalage du réseau neuronal.
Y = sigmoïde (Y)
couche de sortie
Fonction d'activation : la fonction d'identité est utilisée pour les problèmes de régression et la fonction softmax est utilisée pour les problèmes de classification.
Fonction d'identité
Le signal d'entrée sera émis inchangé
fonction softmax
Supposons que la couche de sortie ait n neurones au total et calculons la sortie yk du k-ème neurone.
Caractéristiques : La somme des valeurs de sortie de la couche de sortie est de 1
Remarque : problèmes de débordement
quantité
Problème de classement
Généralement défini sur le nombre de catégories
Reconnaissance de chiffres manuscrits
La couche d'entrée a 28*28=784 neurones et la couche de sortie a 10 neurones. Il existe également deux couches cachées et le nombre de neurones peut être n'importe quelle valeur.
Le traitement par lots
Saisir plusieurs ensembles de données à la fois
Apprentissage des réseaux neuronaux
fonction de perte
Introduire des concepts
Lorsque vous recherchez des paramètres optimaux (poids et biais), vous recherchez des paramètres qui rendent la valeur de la fonction de perte aussi petite que possible, vous devez donc calculer les dérivées des paramètres (le gradient pour être précis)
Pourquoi ne pas utiliser directement la précision de la reconnaissance comme indicateur ?
La dérivée du paramètre deviendra 0 dans la plupart des endroits
Il en va de même pour les fonctions d'étape comme pour les fonctions d'activation
taper
erreur quadratique moyenne
erreur d'entropie croisée
mini-lot
Extraire quelques données de test
pente
Le vecteur résumé par les dérivées partielles de toutes les variables est appelé le gradient
La direction indiquée par le gradient est la direction dans laquelle la valeur de la fonction diminue le plus en chaque point.
hyperparamètres
Réglage manuel
taux d'apprentissage m
taille du mini-lot
Heures de mise à jour iters_num
formation acquise
Poids w et biais thêta
Les réseaux de neurones
Le gradient de la fonction de perte par rapport aux paramètres de poids
époque
Nombre de cycles/taille du mini-lot
Descente de gradient stochastique (SGD)
Effectuer une descente de gradient sur des données sélectionnées au hasard
méthode de rétro-propagation des erreurs
Bien que la différenciation numérique soit simple et facile à mettre en œuvre, son inconvénient est qu'elle est longue à calculer. Il existe une méthode permettant de calculer efficacement le gradient des paramètres de poids : la méthode de rétro-propagation des erreurs.
Graphique informatique
En utilisant des diagrammes de calcul, vous pouvez comprendre intuitivement le processus de calcul
La propagation vers l'avant des graphiques informatiques effectue des calculs généraux. En rétropropagant le graphe informatique, les dérivées de chaque nœud peuvent être calculées
Le terme d'erreur de la couche l peut être calculé par le terme d'erreur de la couche l 1 Obtenu, c'est la rétro-propagation de l'erreur.
formule
calculer
La quantité de jaune est la valeur obtenue lors de la rétropropagation
La quantité verte est une quantité connue
En implémentant les éléments constitutifs d'un réseau neuronal sous forme de couches, les gradients peuvent être calculés efficacement
En comparant les résultats obtenus par différenciation numérique et la méthode de rétro-propagation des erreurs, vous pouvez confirmer si la mise en œuvre de la méthode de rétro-propagation des erreurs est correcte (confirmation du gradient)
Vidéo de référence
https://www.bilibili.com/video/BV1LM411J7cW/?spm_id_from=333.788&vd_source=048c7bdfe54313b8b3ee1483d9d07e38
réseau neuronal convolutif
Tout doit être aussi simple que possible, mais pas trop simple. [Albert Einstein]
tout le cadre
Par rapport
Réseau basé sur une couche entièrement connectée (couche Affine)
Réseau basé sur CNN
Ordre des liens
Convolution[couche de convolution]-ReLU-(Pooling[couche de pooling])
La couche proche de la sortie utilise la combinaison Affine [transformation affine] - ReLU précédente
La couche de sortie finale utilise la combinaison Affine-Softmax précédente
couche de convolution
Notion de convolution
Problèmes avec la couche entièrement connectée
La forme des données est « ignorée ». L'image est généralement une forme tridimensionnelle dans les directions de la hauteur, de la longueur et du canal, mais les données tridimensionnelles doivent être aplaties en données unidimensionnelles lors de la saisie.
L'image est une forme tridimensionnelle et cette forme doit contenir des informations spatiales importantes.
Les pixels spatialement adjacents ont des valeurs similaires
Chaque canal de RBG est étroitement lié les uns aux autres.
Il y a peu de corrélation entre les pixels éloignés
La couche convolutive peut conserver la forme inchangée
définition
Les données d'entrée et de sortie de la couche de convolution sont appelées cartes de fonctionnalités
Les données d'entrée de la couche convolutive sont appelées la carte des caractéristiques d'entrée
Les données de sortie sont appelées la carte des caractéristiques de sortie
Opération de convolution
L'opération de convolution est équivalente à l'opération de filtrage en traitement d'image
La fonction principale de la convolution est de faire glisser un noyau de convolution (c'est-à-dire un filtre) sur une image (ou une caractéristique) et d'obtenir un nouvel ensemble de caractéristiques grâce à l'opération de convolution.
bidimensionnel
Étant donné une image X ∈ R(M×N) et un filtre W ∈ R (m×n), généralement m << M, n << N, la convolution est
en trois dimensions
Corrélation
Lors du calcul de la convolution, il est souvent nécessaire d'inverser le noyau de convolution.
Flip consiste à inverser l’ordre en deux dimensions (de haut en bas, de gauche à droite), c’est-à-dire faire pivoter de 180 degrés.
En termes d'implémentation spécifique, les opérations de corrélation croisée sont utilisées à la place des convolutions, ce qui réduira certaines opérations ou frais généraux inutiles.
La corrélation croisée est une fonction qui mesure la corrélation entre deux séries, généralement mise en œuvre par le calcul du produit scalaire d'une fenêtre glissante.
Étant donné une image X ∈ R(M×N) et un noyau de convolution W ∈ R (m×n), leur corrélation croisée est
La différence entre la corrélation croisée et la convolution réside uniquement dans le fait que le noyau de convolution soit inversé. La corrélation croisée peut également être appelée convolution sans retournement.
La convolution est utilisée dans les réseaux de neurones pour l'extraction de fonctionnalités. Le fait que le noyau de convolution soit inversé n'a rien à voir avec sa capacité d'extraction de fonctionnalités. Surtout lorsque le noyau de convolution est un paramètre apprenable, la convolution et la corrélation croisée sont équivalentes.
Variantes de convolution
Remplissage nul
Afin de maintenir la taille de l'espace constante, les données d'entrée doivent être complétées
Foulée
L'intervalle de positions auquel le filtre est appliqué est appelé la foulée
Circonvolutions couramment utilisées
Convolution étroite : taille de pas s = 1, pas de remplissage nul aux deux extrémités p = 0 et la longueur de sortie après convolution est n − m 1.
Convolution large : taille de pas s = 1, remplissage nul aux deux extrémités p = m − 1 et la longueur de sortie après convolution est n m − 1.
Convolution de largeur égale : taille de pas s = 1, remplissage nul aux deux extrémités p = (m −1)/2, longueur de sortie n après convolution.
Propriétés mathématiques de la convolution
Opération de convolution sur des données 3D
Les données d'entrée et les numéros de canal de filtre doivent être définis sur la même valeur.
Opérations de convolution multiples
Concernant les filtres de l'opération de convolution, le nombre de filtres doit également être pris en compte. Par conséquent, en tant que données tridimensionnelles, les données de poids du filtre doivent être écrites dans l'ordre (output_channel, input_channel, hauteur, largeur). Par exemple, s'il y a 20 filtres avec un numéro de canal de 3 et une taille de 5 × 5, cela peut s'écrire (20, 3, 5, 5).
Le traitement par lots
Nous espérons que l'opération de convolution correspond également au traitement par lots. Pour ce faire, les données transmises entre chaque couche doivent être enregistrées sous forme de données tridimensionnelles. Plus précisément, les données sont enregistrées dans l'ordre (numéro_batch, canal, hauteur, largeur).
Propriétés des couches convolutives
Connexion locale : chaque neurone de la couche convolutive (supposée être la l-ème couche) est uniquement connecté aux neurones d'une fenêtre locale de la couche suivante (couche l-1), formant un réseau de connexion local. Le nombre de connexions entre la couche convolutive et la couche suivante est considérablement réduit, passant des connexions d'origine n(l) × n(l - 1) aux n(l) × m connexions. m est la taille du filtre.
Partage du poids : le filtre w(l) en tant que paramètre est le même pour tous les neurones de la couche l.
En raison des connexions locales et du partage de poids, les paramètres de la couche convolutive n'ont qu'un poids m dimensionnel w(l) et un biais unidimensionnel b(l), pour un total de m 1 paramètres.
Le nombre de neurones dans la couche l n'est pas choisi arbitrairement, mais satisfait n(l) = n(l−1) − m 1.
Couche de mise en commun
Également appelée couche d'agrégation, couche de sous-échantillonnage
Le regroupement est une sélection de fonctionnalités, qui réduit le nombre de fonctionnalités, réduisant ainsi le nombre de paramètres, réduisant les dimensions des fonctionnalités et réduisant l'espace dans les directions de la hauteur et de la longueur.
Fonctions d'agrégation couramment utilisées
Maximum : Généralement, la valeur maximale de tous les neurones d’une région est prise.
Agrégation moyenne (moyenne) : Généralement, la valeur moyenne de tous les neurones de la zone est prise.
Une couche de regroupement typique divise chaque carte de caractéristiques en régions ne se chevauchant pas de taille 2 × 2, puis utilise un regroupement maximal pour le sous-échantillonnage.
La couche de pooling peut également être considérée comme une couche convolutive spéciale
Dans certains premiers réseaux convolutifs (tels que LeNet-5), des fonctions d'activation non linéaires étaient parfois utilisées dans la couche de pooling.
où Y(′d) est la sortie de la couche de pooling, f(·) est la fonction d'activation non linéaire, w(d) et b(d) sont des poids et biais scalaires apprenables.
Caractéristiques de la couche de pooling
Il n'y a aucun paramètre à apprendre
Le nombre de chaînes ne change pas
Robuste aux petits changements de position (robustesse)
apprentissage des paramètres
Calcul du terme d'erreur
Visualisation de CNN
Visualisation des poids de la couche 1
Le filtre avant l'apprentissage est initialisé de manière aléatoire, il n'y a donc pas de motif dans les tons noir et blanc, mais le filtre après l'apprentissage devient une image régulière. Nous avons constaté que grâce à l'apprentissage, les filtres sont mis à jour en filtres réguliers, tels que des filtres qui passent du blanc au noir, des filtres qui contiennent des zones en blocs (appelées blobs), etc. Filtre sensible aux bords horizontaux et verticaux
On voit que les filtres de la couche convolutive vont extraire des informations originales telles que des bords ou des patchs. Le CNN qui vient d'être mis en œuvre transmettra ces informations brutes aux couches suivantes.
Extraction d'informations basée sur une structure hiérarchique
Informations extraites des couches convolutives de CNN. Les neurones de la couche 1 répondent aux bords ou aux taches, la couche 3 répond à la texture, la couche 5 répond aux parties de l'objet et la couche finale entièrement connectée répond à la catégorie de l'objet (chien ou voiture).
Si plusieurs couches convolutives sont empilées, à mesure que les couches s'approfondissent, les informations extraites deviennent plus complexes et abstraites. C'est une partie très intéressante de l'apprentissage profond. À mesure que les couches s’approfondissent, les neurones passent de formes simples à des informations de « haut niveau ». En d’autres termes, à mesure que nous comprenons le « sens » des choses, les objets de réponse changent progressivement.
Réseau neuronal convolutif typique
LeNet-5
LeNet a été proposé en 1998 comme réseau de reconnaissance de chiffres manuscrits. Il comporte des couches convolutives et des couches de pooling consécutives, et génère finalement les résultats via une couche entièrement connectée.
Hors couche d'entrée, LeNet-5 a un total de 7 couches.
Couche d'entrée : la taille de l'image d'entrée est de 32 × 32 = 1024.
Couche convolutive : à l'aide de 6 filtres 5 × 5, 6 ensembles de cartes de caractéristiques d'une taille de 28 × 28 = 784 sont obtenus. Par conséquent, le nombre de neurones dans la couche C1 est de 6 × 784 = 4704, le nombre de paramètres pouvant être entraînés est de 6 × 25 6 = 156 et le nombre de connexions est de 156 × 784 = 122304 (y compris les biais, idem ci-dessous).
Couche de pooling : la fenêtre d'échantillonnage est de 2 × 2, le pooling moyen est utilisé et une fonction non linéaire est utilisée. Le nombre de neurones est de 6 × 14 × 14 = 1 176, le nombre de paramètres pouvant être entraînés est de 6 × (1 1) = 12 et le nombre de connexions est de 6 × 196 × (4 1) = 5 880.
Couche convolutive. Une table de connexion est utilisée dans LeNet-5 pour définir la dépendance entre les cartes de fonctionnalités d'entrée et de sortie. Comme le montre la figure, un total de 60 filtres 5 × 5 sont utilisés pour obtenir 16 groupes de cartes de fonctionnalités d'une taille de 10 ×. dix. Le nombre de neurones est de 16 × 100 = 1 600, le nombre de paramètres pouvant être entraînés est de (60 × 25) 16 = 1 516 et le nombre de connexions est de 100 × 1 516 = 151 600.
Dans la couche de pooling, la fenêtre d'échantillonnage est de 2 × 2 et 16 cartes de caractéristiques de taille 5 × 5 sont obtenues. Le nombre de paramètres pouvant être entraînés est de 16 × 2 = 32 et le nombre de connexions est de 16 × 25 × (4 1). ) = 2000.
Les couches convolutives, utilisant 120 × 16 = 1 920 filtres 5 × 5, obtiennent 120 ensembles de cartes de caractéristiques d'une taille de 1 × 1. Le nombre de neurones dans la couche C5 est de 120, le nombre de paramètres pouvant être entraînés est de 1 920 × 25 120 = 48 120 et le nombre de connexions est de 120 × (16 × 25 1) = 48 120.
La couche entièrement connectée possède 84 neurones et le nombre de paramètres pouvant être entraînés est de 84 × (120 1) = 10164. Le nombre de connexions et le nombre de paramètres pouvant être entraînés sont les mêmes, soit 10 164.
Couche de sortie : la couche de sortie se compose de 10 fonctions de base radiale euclidienne
rejoindre la table
La relation entièrement connectée entre les cartes de caractéristiques d'entrée et de sortie de la couche convolutive n'est pas nécessaire et une convolution non partagée peut être utilisée
Définissez une table de liens (Link Table) T pour décrire la relation de connexion entre les cartes de fonctionnalités d'entrée et de sortie.
Si la p-ème carte de fonctionnalités en sortie dépend de la d-ème carte de fonctionnalités en entrée, alors Tp,d = 1, sinon 0.
AlexNet
Il a été proposé en 2012 et utilise de nombreuses méthodes techniques des réseaux convolutifs profonds modernes.
Entraînement parallèle à l'aide de GPU
La fonction d'activation utilise ReLU
Utilisez Dropout pour éviter le surapprentissage
Utiliser l'augmentation des données pour améliorer la précision du modèle
Utiliser la couche LRN (Local Response Normalization) pour la normalisation locale
Réseau de création
Module de création : une couche convolutionnelle contient plusieurs opérations de convolution de différentes tailles
Le réseau Inception est empilé par plusieurs modules de création et un petit nombre de couches d'agrégation.
Version V1
La première version v1 du réseau Inception est le très célèbre GoogLeNet [Szegedy et al., 2015], et a remporté le concours de classification d'images ImageNet 2014.
Réseau résiduel ResNet
L'efficacité de la propagation des informations est améliorée en ajoutant des bords directs à la couche convolutive non linéaire.
éléments non linéaires
Peut être une ou plusieurs couches convolutives
Laissez cette unité non linéaire f(x, θ) se rapprocher d'une fonction objectif h(x)
Une unité non linéaire composée d'un réseau neuronal a une capacité suffisante pour se rapprocher approximativement de la fonction objectif d'origine ou de la fonction résiduelle, mais en pratique cette dernière est plus facile à apprendre
Conclusion : laissez l'unité non linéaire f(x, θ) se rapprocher de la fonction résiduelle h(x)−x et utiliser f(x, θ) x pour approximer h(x).
Le réseau résiduel est un réseau très profond composé de nombreuses unités résiduelles connectées en série.
Autres méthodes de convolution
convolution transposée
Convolution atreuse (convolution dilatée)
l'apprentissage en profondeur
Approfondir le réseau
Vers un réseau plus profond
Ce réseau fait référence à VGG qui sera présenté dans la section suivante.
Couche convolutive basée sur 3×3 petits filtres
La fonction d'activation est ReLU
La couche Dropout est utilisée derrière la couche entièrement connectée.
Optimisation basée sur Adam
Utiliser la valeur initiale de He comme valeur initiale du poids
La précision de la reconnaissance est de 99,38 %
Améliorer encore la précision de la reconnaissance
Apprentissage d'ensemble
diminution du taux d'apprentissage
Augmentation des données
Augmentez le nombre d'images en appliquant de petits changements tels que la rotation, le mouvement vertical ou horizontal, le recadrage, le retournement, l'augmentation de la luminosité, etc.
Une motivation plus profonde
Améliorer les performances de reconnaissance
L’importance de l’approfondissement ressort des résultats des concours de reconnaissance d’images à grande échelle représentés par l’ILSVRC. Les résultats de ce concours montrent que les meilleures méthodes récentes sont principalement basées sur l'apprentissage profond et ont tendance à approfondir progressivement les couches du réseau. En d’autres termes, on constate que plus la couche est profonde, plus les performances de reconnaissance sont élevées.
Réduire le nombre de paramètres du réseau
L’avantage d’empiler de petits filtres pour approfondir le réseau est que cela peut réduire le nombre de paramètres et élargir le champ récepteur (une région spatiale locale qui impose des changements aux neurones). De plus, grâce aux couches superposées, les fonctions d'activation telles que ReLU sont prises en sandwich au milieu de la couche convolutive, améliorant encore l'expressivité du réseau. En effet, une expressivité « non linéaire » basée sur des fonctions d'activation est ajoutée au réseau. Grâce à la superposition de fonctions non linéaires, des choses plus complexes peuvent être exprimées.
Rendre l’apprentissage plus efficace
Par rapport à un réseau sans couches approfondies, en approfondissant les couches, les données d'apprentissage peuvent être réduites et l'apprentissage peut être effectué efficacement.
Structure du réseau d'apprentissage profond
Concours ILSVRC
ImageNet contient une variété d'images et chaque image est associée à une étiquette (nom de catégorie). Le concours de reconnaissance d'images ILSVRC utilisant cet énorme ensemble de données a lieu chaque année.
Le concours de reconnaissance d'images à grande échelle ILSVRC a eu lieu en 2012. Lors du concours de cette année-là, la méthode basée sur l'apprentissage profond (communément connue sous le nom d'AlexNet) a remporté une écrasante majorité, bouleversant complètement les méthodes de reconnaissance d'images précédentes. Dans les compétitions ultérieures, l’apprentissage profond a été actif au centre de la scène.
En particulier, ResNet de 2015 (un réseau profond de plus de 150 couches) a réduit le taux de fausse reconnaissance à 3,5 %. On dit que ce résultat dépasse même la capacité de reconnaissance des gens ordinaires.
VGG
VGG est un CNN de base composé de couches convolutives et de couches de pooling. Cependant, sa particularité est qu'il superpose des couches pondérées (couches convolutives ou couches entièrement connectées) à 16 couches (ou 19 couches), qui ont une profondeur (parfois aussi appelée « VGG16 » ou « VGG19 » selon la profondeur de la couche).
GoogleLeNet
Le réseau a non seulement une profondeur verticale, mais également une largeur horizontale, appelée structure de création.
ResNet
A une structure plus profonde que les réseaux précédents
Nous savons déjà qu’approfondir la profondeur est important pour améliorer les performances. Cependant, dans l’apprentissage profond, si l’on approfondit trop la profondeur, l’apprentissage ne se déroulera pas correctement dans de nombreux cas, ce qui entraînera de mauvaises performances finales. Dans ResNet, afin de résoudre ce genre de problème, une « structure de raccourci » (également appelée « raccourci » ou « chemin ») est introduite. Après avoir importé cette structure de raccourci, les performances peuvent être continuellement améliorées à mesure que la couche s'approfondit (bien entendu, l'approfondissement de la couche est également limité).
En pratique, les données de poids apprises à l'aide de l'énorme ensemble de données d'ImageNet sont souvent appliquées de manière flexible. C'est ce qu'on appelle l'apprentissage par transfert. Les poids (parties) appris sont copiés sur d'autres réseaux neuronaux pour un réapprentissage (réglage fin). Par exemple, préparez un réseau avec la même structure que VGG, utilisez les poids appris comme valeurs initiales et utilisez le nouvel ensemble de données comme objet à réapprendre. L’apprentissage par transfert est très efficace lorsque l’ensemble de données disponible est petit.
Accélérer l’apprentissage profond
Problèmes qui doivent être résolus
Le rapport temporel de chaque couche dans le traitement direct d'AlexNet : le côté gauche correspond à l'utilisation du GPU et le côté droit correspond à l'utilisation du CPU. "conv" sur la figure correspond à la couche de convolution, "pool" correspond à la couche de pooling, "fc" correspond à la couche entièrement connectée et "norm" correspond à la couche de régularisation
Le temps de traitement de la couche convolutive représente 95 % du GPU global et 89 % du CPU global.
Accélération basée sur le GPU
Les GPU sont principalement fournis par deux sociétés, NVIDIA et AMD. Bien que les deux GPU puissent être utilisés pour des calculs numériques généraux, le GPU de NVIDIA est plus « proche » du deep learning. En fait, la plupart des frameworks de deep learning ne bénéficient que des GPU NVIDIA. En effet, le framework d'apprentissage en profondeur utilise CUDA, un environnement de développement complet pour le calcul GPU fourni par NVIDIA.
Apprentissage distribué
Calcul distribué sur plusieurs GPU ou plusieurs machines
TensorFlow de Google et CNTK de Microsoft attachent une grande importance à l'apprentissage distribué pendant le processus de développement
L'axe horizontal est le nombre de GPU L'axe vertical représente le taux d'accélération par rapport à un seul GPU.
Réduction numérique de la précision arithmétique
Concernant la précision numérique (nombre de chiffres pour représenter une valeur), on sait déjà que le deep learning ne nécessite pas de précision numérique en chiffres. C'est une propriété importante des réseaux de neurones. Cette propriété repose sur la robustesse des réseaux de neurones.
À l’avenir, les nombres à virgule flottante demi-précision seront utilisés comme standard et devraient atteindre des vitesses jusqu’à environ 2 fois supérieures à celles de la génération précédente de GPU.
Cas d'application de l'apprentissage profond
Détection d'objet
Déterminer le type d'objet et l'emplacement de l'objet à partir de l'image
Parmi les méthodes d'utilisation de CNN pour la détection d'objets, il existe une méthode appelée R-CNN
Segmentation d'images
Classer les images au niveau des pixels
FCN classe tous les pixels via un seul processus direct.
FCN signifie littéralement « un réseau entièrement composé de couches convolutives ». Par rapport au CNN général contenant des couches entièrement connectées, FCN remplace les couches entièrement connectées par des couches convolutives qui jouent le même rôle.
Génération de légende d'image
Une méthode représentative de génération de légendes d'images basée sur l'apprentissage profond est appelée NIC.
NIC est composé de CNN et de RNN (Recurrent Neural Network) profonds qui traitent le langage naturel.
L'avenir de l'apprentissage profond
Transformation du style d'image
Génération d'images
Pilote automatique
apprentissage par renforcement
Représentation distribuée du langage naturel et des mots
Marty : "C'est lourd." Dr Brown : « Dans le futur, les choses seront si lourdes ? —Le film "Retour vers le futur"
Qu'est-ce que le traitement du langage naturel
Notre langage est fait de mots, et le sens du langage est fait de mots. Autrement dit, un mot est la plus petite unité de sens.
Trois façons d'amener les ordinateurs à comprendre le sens des mots
Approche basée sur un thésaurus
approche basée sur le comptage
Approche basée sur l'inférence (word2vec)
Approche basée sur un thésaurus
Envisagez de définir manuellement la signification des mots
Le dictionnaire de synonymes est actuellement largement utilisé.
Un schéma basé sur la relation hyperonyme-hyponyme selon le sens de chaque mot
WordNet
Le dictionnaire de synonymes le plus célèbre
effet
Obtenir des synonymes pour un mot
Calculer la similarité entre les mots
Utilisé via le module NLTK
Problèmes
De nouveaux mots continuent d'apparaître, ce qui rend difficile l'adaptation aux changements d'époque.
Coût de la main d'œuvre élevé
Incapable d'exprimer des différences subtiles dans les mots
approche basée sur le comptage
corpus
Un corpus est une grande quantité de données textuelles
Les corpus utilisés dans le domaine du traitement du langage naturel ajoutent parfois des informations supplémentaires aux données textuelles. Par exemple, chaque mot des données textuelles peut être marqué par une partie du discours. Ici, on suppose que le corpus que nous utilisons n’a aucune balise ajoutée.
Prétraitement de corpus basé sur Python
corpus célèbre
Wikipédia et Google Actualités
prétraitement
Majuscule -> Minuscule
texte.inférieur()
Ponctuation du processus
texte.replace('.', ' .')
re.split('(\W )', texte)
\W : correspond à des caractères autres que des mots (pas de lettres, de chiffres ou de traits de soulignement)
: Indique la correspondance avec le motif précédent "\W" répété une ou plusieurs fois
Créer des identifiants de mots et des tables de correspondance
Convertir une liste de mots en une liste d'identifiants de mots
corpus = [word_to_id[w] pour w en mots]
Représentation distribuée des mots
Construire des représentations vectorielles compactes et raisonnables dans le domaine des mots
Hypothèse de distribution
Le sens d'un mot est formé par les mots qui l'entourent
Le contexte fait référence aux mots entourant un mot centré
La taille du contexte est appelée taille de la fenêtre
La taille de la fenêtre est de 1 et le contexte contient 1 mot à gauche et à droite
matrice de cooccurrence
La façon la plus simple d’utiliser un vecteur est de compter combien de fois un mot apparaît autour de lui.
text = 'Vous dites au revoir et je vous dis bonjour.'
Définir la taille de la fenêtre sur 1
similarité entre les vecteurs
similarité cosinus
Tri des mots similaires
Obtenez le vecteur de mot du mot recherché
Obtenez respectivement la similarité cosinus entre le vecteur de mot du mot recherché et tous les autres vecteurs de mot.
Résultats basés sur la similarité cosinus, affichant leurs valeurs par ordre décroissant
Améliorations des méthodes basées sur le comptage
Cliquez sur les informations mutuelles
Dans la matrice de cooccurrence, les mots courants comme le seront considérés comme ayant une forte corrélation avec des noms comme voiture
Indice PMI
, P(x) représente la probabilité que x se produise, P(y) représente la probabilité que y se produise et P(x, y) représente la probabilité que x et y se produisent simultanément.
PMI basé sur une matrice de cooccurrence
insuffisant
Lorsque le nombre de cooccurrences de deux mots est nul, log(2)(0) = −∞
point positif information mutuelle
Obtenez la matrice PPMI basée sur la matrice de cooccurrence
Réduction de dimensionnalité
Nous devons observer la répartition des données et trouver des « axes » importants
Décomposition en valeurs singulières (SVD)
SVD décompose n'importe quelle matrice en produit de 3 matrices
où U et V sont des matrices orthogonales dont les vecteurs colonnes sont orthogonaux les uns aux autres, et S est une matrice diagonale où tous les éléments diagonaux sauf les éléments diagonaux sont 0
La matrice d'origine peut être approximée en supprimant les vecteurs colonnes redondants dans la matrice U
U, S, V = np.linalg.svd(W)
Si la taille de la matrice est N*N, la complexité de calcul de SVD atteindra O(N^3). Par conséquent, des méthodes plus rapides telles que le SVD tronqué sont souvent utilisées. Le SVD tronqué atteint une vitesse élevée en tronquant les parties avec des valeurs singulières plus petites.
à partir de sklearn.utils.extmath importer randomized_svd U, S, V = randomized_svd (W, n_components=wordvec_size, n_iter=5, random_state=None)
Ensemble de données PTB
Le corpus PTB est souvent utilisé comme référence pour évaluer les méthodes proposées.
Prétraitement du corpus PTB
parenthèses pour remplacer les mots rares par le caractère spécial
Remplacez les numéros spécifiques par "N"
Le prétraitement que j'ai fait
Concaténez toutes les phrases et traitez-les comme une grande série de données chronologiques. A ce moment, un caractère spécial <eos> est inséré à la fin de chaque phrase
Affectation des hyperparamètres
taille_fenêtre = 2
motvec_size = 100
Évaluation basée sur l'ensemble de données PTB
Pour le mot de requête vous, vous pouvez voir que les pronoms personnels tels que je et nous sont classés en premier. Ce sont des mots ayant le même usage en grammaire.
Le mot de requête année a des synonymes tels que mois et trimestre.
Le mot de requête voiture a des synonymes tels que auto et véhicule.
Lorsque vous utilisez Toyota comme terme de requête, des noms de constructeurs automobiles ou des noms de marques tels que Nissan, Honda et Lexus sont apparus.
Résumer
Utilisez le corpus pour calculer le nombre de mots dans le contexte, convertissez-les en une matrice PPMI, puis obtenez de bons vecteurs de mots basés sur la réduction de dimensionnalité SVD.
mot2vec
« Si vous n’avez pas de base de jugement, ne raisonnez pas. » ——Arthur Conan Doyle, "Un scandale en Bohême"
intégration de mots
Word2Vec est un algorithme pour générer des « intégrations de mots »
En plus de Word2Vec, il existe d'autres méthodes pour générer des incorporations de mots, telles que GloVe (Global Vectors for Word Representation), FastText, etc. Ces méthodes peuvent utiliser différentes stratégies et algorithmes, mais elles visent toutes à capturer efficacement les informations sémantiques des mots dans l’espace vectoriel.
Méthodes basées sur l'inférence et réseaux de neurones
Problèmes avec les méthodes basées sur le nombre
Dans le monde réel, les corpus traitent un très grand nombre de mots. Par exemple, on dit que le vocabulaire anglais compte plus d’un million de mots. Si la taille du vocabulaire dépasse 1 million, alors l'utilisation de la méthode basée sur le comptage nécessite de générer une énorme matrice de 1 million × 1 million, mais il est évidemment irréaliste d'effectuer une SVD sur une matrice aussi grande.
Approches basées sur l'inférence utilisant des réseaux de neurones
Apprentissage sur des données mini-batch. Autrement dit, utiliser une partie des données pour apprendre et mettre à jour les poids à plusieurs reprises.
L'apprentissage des réseaux de neurones peut être effectué en parallèle à l'aide de plusieurs machines et de plusieurs GPU, accélérant ainsi l'ensemble du processus d'apprentissage.
Résumé des méthodes basées sur l'inférence
Cible
Prédire quels mots apparaîtront au milieu lorsqu'on leur donne les mots environnants (contexte), comme un cloze
méthode de raisonnement
Contexte d'entrée et le modèle génère la probabilité d'occurrence de chaque mot.
En tant que produit de l'apprentissage du modèle, nous obtiendrons une représentation distribuée du mot
Comment traiter les mots dans les réseaux de neurones
Convertir des mots en vecteurs
Les réseaux de neurones ne peuvent pas traiter directement des mots comme vous ou dites. Pour utiliser des réseaux de neurones pour traiter des mots, vous devez d'abord convertir les mots en vecteurs de longueur fixe.
Méthode de conversion
vecteur chaud
Un seul élément vaut 1, les autres éléments valent 0
Les réseaux de neurones
couche d'entrée
Couche entièrement connectée
Les poids initiaux sont aléatoires
Mot simple2vec
Inférence du modèle CBOW
structure
Caractéristiques
Il y a deux couches d'entrée
La transformation de la couche d'entrée vers la couche intermédiaire est complétée par la même couche entièrement connectée (poids W(in))
La transformation de la couche intermédiaire vers les neurones de la couche de sortie est complétée par une autre couche entièrement connectée (poids W(out))
Les neurones de la couche intermédiaire sont la « moyenne » des valeurs obtenues par chaque couche d'entrée après avoir été transformées par la couche entièrement connectée.
Les neurones de la couche de sortie sont les scores de chaque mot, et plus sa valeur est élevée Plus la valeur est grande, plus la probabilité d’occurrence du mot correspondant est élevée.
Apprentissage du modèle CBOW
Convertissez les scores en probabilités à l'aide de la fonction Softmax
Trouver l'erreur d'entropie croisée entre ces probabilités et les étiquettes supervisées
Apprenez-le comme une perte
Représentation pondérée et distribuée de word2vec
Le poids W(in) est la représentation distribuée du mot que nous voulons
Préparation des données d'étude
contexte et mots cibles
Convertir en représentation unique
Mise en œuvre du modèle CBOW
Informations Complémentaires
Modèles CBOW et probabilités
La probabilité que wt se produise après wt−1 et wt 1.
Fonction de perte L (log de vraisemblance négative) du modèle CBOW
modèle sauter-gramme
word2vec a deux modèles
CBOW
sauter-gramme
Skip-gram est un modèle qui inverse le contexte et les mots cibles traités par le modèle CBOW.
diagramme de structure de réseau skip-gram
modèles de sauts de grammes et probabilités
Le modèle skip-gram n'a qu'une seule couche d'entrée et le nombre de couches de sortie est égal au nombre de mots dans le contexte. Premièrement, les pertes de chaque couche de sortie doivent être calculées séparément, puis additionnées pour former la perte finale.
Prédire le contexte wt−1 et wt 1 en fonction du mot du milieu (mot cible) wt
La fonction de perte du modèle skip-gram peut être exprimée comme
Comparaison des fonctions de perte
Le nombre de prédictions du modèle skip-gram est égal au nombre de mots de contexte, sa fonction de perte nécessite donc la somme des pertes correspondant à chaque mot de contexte. Le modèle CBOW nécessite uniquement la perte du mot cible.
À en juger par la précision de la représentation distribuée des mots, le modèle skip-grm donne de meilleurs résultats dans la plupart des cas.
Basé sur le comptage ou basé sur l'inférence
Scénarios dans lesquels de nouveaux mots doivent être ajoutés au vocabulaire et la représentation distribuée des mots mise à jour
Les méthodes basées sur le comptage nécessitent des calculs à partir de zéro
Les méthodes basées sur l'inférence permettent un apprentissage incrémentiel des paramètres
Propriétés des représentations distribuées des mots
Les méthodes basées sur le comptage codent principalement la similarité des mots
Les méthodes basées sur l'inférence peuvent comprendre des modèles complexes entre les mots
femme roi = reine
Précision des représentations distribuées des mots
Les méthodes basées sur l'inférence et les méthodes basées sur le comptage sont indiscernables
Accélérer word2vec
N'essayez pas de tout savoir, sinon vous ne saurez rien. ——Démocrite (philosophe grec ancien)
Améliorer
étude
autre
Application de word2vec
La représentation distribuée des mots obtenue avec word2vec peut être utilisée pour trouver des mots approximatifs
apprentissage par transfert
Les connaissances acquises dans un domaine peuvent être appliquées à d'autres domaines
Lors de la résolution de tâches de traitement du langage naturel, word2vec n'est généralement pas utilisé pour apprendre la représentation distribuée des mots à partir de zéro, mais est d'abord appris sur un corpus à grande échelle (données textuelles telles que Wikipédia, Google News, etc.), puis. la représentation distribuée apprise s'applique à une seule tâche.
Dans les tâches de traitement du langage naturel telles que la classification de texte, le regroupement de texte, le marquage de parties du discours et l'analyse des sentiments, la première étape de la vectorisation des mots peut utiliser la représentation distribuée des mots appris.
Les représentations distribuées de mots fonctionnent très bien dans presque tous les types de tâches de traitement du langage naturel !
En utilisant des représentations distribuées de mots, il est également possible de convertir des documents (séquences de mots) en vecteurs de longueur fixe.
Si vous pouvez convertir le langage naturel en vecteurs, vous pouvez utiliser de nombreuses méthodes d'apprentissage automatique
Comment évaluer les vecteurs de mots
évaluation de similarité de mots créés artificiellement pour évaluer
La similitude entre un chat et un animal est de 8, et la similitude entre un chat et une voiture est de 2... De la même manière, la similitude entre les mots est notée manuellement avec un score de 0 à 10.
Comparez les scores attribués par les personnes et la similarité cosinus donnée par word2vec pour examiner la corrélation entre eux
en conclusion
Différents modèles ont des précisions différentes (choisissez le meilleur modèle en fonction du corpus)
Plus le corpus est grand, meilleurs sont les résultats (le big data est toujours nécessaire)
La dimensionnalité des vecteurs de mots doit être modérée (une dimension trop grande entraînera une mauvaise précision)
RNN
Je me souviens juste de moi miaulant et pleurant dans un endroit sombre et humide. ——"Je suis un chat" de Natsume Soseki
Modèles de probabilité et de langage
Un simple réseau de rétroaction ne peut pas pleinement apprendre les propriétés des données de séries chronologiques. En conséquence, le RNN (Recurrent Neural Network) a vu le jour.
word2vec d'un point de vue probabiliste
L'objectif initial du modèle CBOW « prédire les mots cibles à partir du contexte » peut-il être utilisé pour quelque chose ? P(wt|wt−2, wt−1) peut-il jouer un rôle dans certains scénarios pratiques ?
Les fenêtres que nous avons considérées précédemment sont toutes symétriques, puis nous ne considérons que la fenêtre de gauche.
modèle de langage
Utilisez la probabilité pour évaluer la probabilité qu’une séquence de mots se produise, c’est-à-dire dans quelle mesure la séquence de mots est naturelle.
Représentation de probabilité
Où P(A,B) = P(A|B)*P(B) = P(B|A)*P(A)
Utiliser le modèle CBOW comme modèle de langage
Chaîne de Markov
Lorsque la probabilité d’un événement dépend uniquement des N événements qui le précèdent, on parle de « chaîne de Markov d’ordre N ».
Restreindre le contexte aux 2 mots de gauche est une chaîne de Markov du second ordre
insuffisant
Si la fenêtre est trop courte, le contexte ne peut pas être combiné
Si la fenêtre est trop longue, l'ordre des mots dans le contexte sera ignoré.
CBOW est l'abréviation de "Continuous Bag-Of-Words". Bag-Of-Words signifie « un sac de mots », ce qui signifie que l'ordre des mots dans le sac est ignoré.
RNN dispose d'un mécanisme qui peut mémoriser les informations contextuelles, quelle que soit la durée du contexte. Par conséquent, des données de séries chronologiques de longueur arbitraire peuvent être traitées à l'aide de RNN.
word2vec est une méthode visant à obtenir une représentation distribuée des mots, et n'est généralement pas utilisée dans les modèles de langage.
RNN
réseau neuronal récurrent
La structure de la couche RNN
L'entrée au temps t est xt, ce qui implique que les données de séries chronologiques (x0, x1, ··· , xt, ···) seront entrées dans la couche. Puis, sous la forme correspondant à l'entrée, sortie (h0, h1, ··· , ht, ···)
La sortie comporte deux forks, ce qui signifie que la même chose a été copiée. Un fork dans la sortie deviendra sa propre entrée.
dérouler la boucle
Nous utilisons le mot « moment » pour désigner l'index des données de séries chronologiques (c'est-à-dire que les données d'entrée au temps t sont xt). Des expressions telles que « le t-ème mot » et « la t-ème couche RNN » sont utilisées, ainsi que des expressions telles que « le mot au temps t » ou « la couche RNN au temps t ».
La couche RNN reçoit à chaque instant deux valeurs, qui sont l'entrée transmise à cette couche et la sortie de la couche RNN précédente.
RNN a deux poids, à savoir le poids Wx qui convertit l'entrée x en sortie h et le poids Wh qui convertit la sortie de la couche RNN précédente en sortie au moment actuel. De plus, il existe un biais b.
D'un autre point de vue, RNN a un état h, qui est continuellement mis à jour via la formule ci-dessus. Donc h peut être appelé un état caché ou un vecteur d'état caché
Les deux méthodes de dessin schématique sont équivalentes
Rétropropagation dans le temps
rétropropagation temporelle
Pour trouver le gradient basé sur BPTT, les données intermédiaires de la couche RNN à chaque instant doivent être sauvegardées en mémoire. Par conséquent, à mesure que les données des séries chronologiques s'allongent, l'utilisation de la mémoire de l'ordinateur (et pas seulement les calculs) augmente également.
BPTT tronqué
Afin de résoudre le problème ci-dessus, lors du traitement de données de séries chronologiques longues, la pratique courante consiste à couper la connexion réseau à une longueur appropriée.
Les réseaux trop longs dans la direction de l'axe du temps sont tronqués aux emplacements appropriés pour créer plusieurs petits réseaux, puis la méthode de rétropropagation des erreurs est effectuée sur les petits réseaux découpés. Cette méthode est appelée BPTT tronqué (BPTT tronqué).
Dans BPTT tronqué, la connexion de propagation vers l'arrière du réseau est coupée, mais la connexion de propagation vers l'avant est toujours maintenue.
Commande en traitement
La première chose à faire est d'introduire les données d'entrée du bloc 1 (x0, ..., x9) dans la couche RNN.
Effectuez d’abord une propagation vers l’avant, puis vers l’arrière pour obtenir le gradient souhaité.
Ensuite, les données d'entrée du bloc suivant (x10, x11, ··· , x19) sont introduites dans la couche RNN. Le calcul de cette propagation vers l'avant nécessite le dernier état caché h9 du bloc précédent, afin que la connexion de propagation vers l'avant puisse être maintenue.
Apprentissage par mini-lots du BPTT tronqué
Au début des données d'entrée, un "offset" doit être effectué au sein des différents lots.
Avis
Pour saisir les données dans l'ordre
Pour décaler la position de départ de chaque lot (chaque échantillon) de données d'entrée
Implémentation du RNN
En considérant l'apprentissage basé sur le BPTT tronqué, le réseau neuronal cible reçoit des données de séries chronologiques de longueur T (T est n'importe quelle valeur), et ces états T peuvent être considérés comme une couche.
Appelez une couche qui traite T étapes à la fois une "couche Time RNN"
La couche qui effectue le traitement en une seule étape dans la couche Time RNN est appelée « couche RNN ».
Comme Time RNN, les couches qui traitent les données de séries chronologiques de manière holistique sont nommées en commençant par le mot « Time », qui est la convention de dénomination présentée dans ce livre. Après cela, nous implémenterons également la couche Time Affine, la couche Time Embedding, etc.
Implémentation de la couche RNN
propagation vers l'avant
Rétropropagation
Implémentation de la couche Time RNN
propagation vers l'avant
La couche temporelle RNN enregistre l'état caché h dans une variable membre pour hériter de l'état caché entre les blocs
Utilisez le paramètre stateful pour enregistrer si l'état caché h est appelé. En rétropropagation, lorsque stateful est False, l'état caché de la première couche RNN est la matrice zéro.
Rétropropagation
Nous stockons le gradient passant à l'état caché au moment précédent dans la variable membre dh. En effet, nous l'utiliserons lorsque nous discuterons de seq2seq (séquence à séquence) au chapitre 7.
Implémentation de couches de traitement des données de séries chronologiques
Image complète du RNNLM
Les modèles de langage basés sur RNN sont appelés RNNLM
structure
La couche 1 est la couche d'intégration, qui convertit les identifiants de mots en représentations distribuées de mots (vecteurs de mots). Ce vecteur de mots est introduit dans la couche RNN.
La couche RNN transmet l'état caché à la couche suivante (en haut) et transmet également l'état caché à la couche RNN suivante (à droite).
L'état caché produit par la couche RNN vers le haut passe par la couche Affine et est transmis à la couche Softmax.
Échantillon
tu dis au revoir, et je dis bonjour
Le premier mot, vous avec l'ID de mot 0, est saisi. À ce stade, en regardant la distribution de probabilité générée par la couche Softmax, nous pouvons voir que la probabilité de dire est la plus élevée, ce qui indique que le mot qui apparaît après vous est correctement prédit comme étant dit.
Le mot 2 dit. À l'heure actuelle, la sortie de la couche Softmax a une probabilité plus élevée de dire au revoir et bonjour. Parce que la couche RNN enregistre les informations passées de « vous dites » en tant que court vecteur d'état caché. Le travail de la couche RNN est de transmettre ces informations à la couche Affine ci-dessus et à la couche RNN au moment suivant.
Implémentation de la couche temporelle
Structure du réseau neuronal cible
Affine temporelle
La couche Time Affine n'utilise pas simplement les couches T Affine, mais utilise des opérations matricielles pour obtenir un traitement global efficace.
Temps Softmax
L'erreur de perte est implémentée dans Softmax. La couche Cross Entropy Error calcule l'erreur d'entropie croisée.
Les couches T Softmax avec perte calculent chacune la perte, puis les additionnent et font la moyenne, et la valeur résultante est utilisée comme perte finale.
Apprentissage et évaluation du RNNLM
Mise en œuvre du RNNLM
Évaluation du modèle de langage
Les données d'entrée sont 1
La perplexité est souvent utilisée comme indicateur pour évaluer les performances de prédiction des modèles de langage. Perplexité=1/probabilité
Les données d'entrée sont multiples
Ici, on suppose que la quantité de données est N. tn est l'étiquette de solution correcte sous la forme d'un vecteur unique, tnk représente la k-ième valeur des n-ièmes données et ynk représente la distribution de probabilité (la sortie de Softmax dans un réseau neuronal). Au fait, L est la perte du réseau neuronal
Plus la probabilité est grande, mieux c'est, et moins la confusion est grande, mieux c'est.
La perplexité représente le nombre d'options qui peuvent être choisies ensuite. Si la confusion est de 1,25, cela signifie que le nombre de candidats pour le mot suivant est d'environ 1.
Apprentissage du RNNLM
Classe de formateur du RNNLM
Encapsuler les opérations ci-dessus dans des classes
Étendu aux structures graphiques
réseau neuronal récurrent
Il existe trois couches cachées h1, h2 et h3, où h1 est calculé à partir de deux entrées x1 et x2, h2 est calculé à partir de deux autres couches d'entrée x3 et x4 et h3 est calculé à partir de deux couches cachées h1 et h2.
réseau graphique
RNN fermé
Retirez vos bagages et voyagez léger. ——Nietzsche
Quand on dit RNN, on fait davantage référence à la couche LSTM qu'au RNN du chapitre précédent. Lorsqu'on doit faire explicitement référence au RNN du chapitre précédent, on dit « RNN simple » ou « Elman ».
Problèmes avec le RNN simple
Au cours du processus d'apprentissage, la couche RNN apprend les dépendances dans le sens du temps en transmettant des « gradients significatifs » vers le passé. Mais le gradient d’apprentissage est difficile à contrôler, ce qui peut conduire à la disparition ou à l’explosion du gradient.
raison
fonction d'activation
tanh
Comme vous pouvez le voir sur le graphique, sa valeur est inférieure à 1,0 et sa valeur diminue à mesure que x s'éloigne de 0. Cela signifie qu'à mesure que le gradient rétropropagé passe par le nœud tanh, sa valeur deviendra de plus en plus petite. Par conséquent, si vous passez la fonction tanh T fois, le gradient diminuera également T fois.
RéLU
Le dégradé ne se dégrade pas
Nœud MatMul (produit matriciel)
explosion de dégradé
Comme le montre la figure, l'ampleur du gradient augmente de façon exponentielle avec le pas de temps. Si une explosion de gradient se produit, cela entraînera éventuellement un débordement et des valeurs telles que NaN (Not a Number, valeur non numérique). De ce fait, l’apprentissage du réseau de neurones ne fonctionnera pas correctement.
le dégradé disparaît
Comme le montre la figure, la taille du gradient diminue de façon exponentielle avec le pas de temps. Si la disparition du gradient se produit, le gradient deviendra rapidement plus petit. Une fois que le gradient devient faible, le gradient de poids ne peut plus être mis à jour et le modèle ne peut pas apprendre les dépendances à long terme.
Raison du changement
La matrice Wh est multipliée T fois de manière répétée. Si Wh était un scalaire, le problème serait simple : lorsque Wh est supérieur à 1, le gradient augmente de façon exponentielle ; lorsque Wh est inférieur à 1, le gradient diminue de façon exponentielle.
Si Wh est une matrice. A ce stade, les valeurs singulières de la matrice deviendront des indicateurs. En termes simples, les valeurs singulières d'une matrice représentent le degré de dispersion des données. Selon que cette valeur singulière (plus précisément le maximum de plusieurs valeurs singulières) est supérieure à 1, on peut prédire des changements dans l'ampleur du gradient.
Contre-mesures contre les gradients explosifs
Il existe une méthode établie pour résoudre l’explosion de gradient, appelée écrêtage de gradient.
On suppose ici que les gradients de tous les paramètres utilisés par le réseau de neurones peuvent être intégrés dans une variable et représentés par le symbole g. Ensuite, définissez le seuil sur seuil. A ce moment, si la norme L2 g du gradient est supérieure ou égale au seuil, le gradient est corrigé comme décrit ci-dessus.
Dégradés qui disparaissent et LSTM
Dans l’apprentissage RNN, la disparition du gradient est également un gros problème. Afin de résoudre ce problème, la structure de la couche RNN doit être fondamentalement modifiée. Ici, le sujet de ce chapitre, Gated RNN, est sur le point d'apparaître. De nombreux frameworks Gated RNN (structures de réseau) ont été proposés, parmi lesquels LSTM et GRU sont les plus représentatifs.
Interface LSTM
LSTM est l'abréviation de Long Short-Term Memory, ce qui signifie qu'il peut conserver la mémoire à court terme (Short-Term Memory) pendant une longue période.
Exprimez d’abord le calcul de tanh(h(t−1)*Wh xt*Wx b) en tant que nœud rectangulaire tanh (ht−1 et xt sont des vecteurs lignes)
Comparons l'interface (entrée et sortie) de LSTM et RNN
La différence entre l'interface de LSTM et RNN est que LSTM a également le chemin c. Ce c est appelé unité mémoire (ou simplement « unité »), ce qui équivaut au département mémoire dédié du LSTM.
La caractéristique de l'unité mémoire est qu'elle reçoit et transmet uniquement des données au sein de la couche LSTM. C'est-à-dire que du côté recevant la sortie du LSTM, la sortie du LSTM n'a que le vecteur d'état caché h. L'unité de mémoire c est invisible pour le monde extérieur et nous n'avons même pas besoin de considérer son existence.
La structure de la couche LSTM
ct stocke la mémoire du LSTM au temps t, qui peut être considérée comme contenant toutes les informations nécessaires du passé au temps t. Ensuite, sur la base du ct de cette mémoire porteuse, l'état caché ht est émis.
calculer
L'unité de mémoire actuelle ct est calculée sur la base des trois entrées c(t-1) h(t-1) et xt via « une sorte de calcul » (décrit plus loin).
L'état caché ht est calculé à l'aide du ct mis à jour, la formule est ht = tanh(ct)
Grille
Le degré d'ouverture et de fermeture de la porte est également automatiquement appris à partir des données. Le degré d'ouverture et de fermeture est représenté par un nombre réel de 0,0 à 1,0 (1,0 est complètement ouvert).
porte de sortie
L'état caché ht applique uniquement la fonction tanh à l'unité mémoire ct, et nous envisageons d'appliquer des portes à tanh(ct). Puisque cette porte gère la sortie du prochain état caché ht, elle est appelée porte de sortie.
La porte de sortie est calculée comme suit. La fonction sigmoïde est représentée par σ()
ht peut être calculé à partir du produit de o et tanh(ct). La méthode de calcul est le produit élément par élément, qui est le produit des éléments correspondants. Il est également appelé produit Hadamard.
porte de l'oubli
Maintenant, nous ajoutons une porte pour oublier les mémoires inutiles sur l'unité de mémoire c(t−1), qui est appelée ici la porte d'oubli.
Le calcul de la porte oubliée est le suivant
ct est obtenu par le produit de ce f et de l'élément correspondant de l'unité mémoire précédente ct−1
nouvelle unité de mémoire
Maintenant, nous voulons également ajouter de nouvelles informations à cette unité de mémoire qui doivent être mémorisées, pour cela nous ajoutons un nouveau nœud tanh
Le résultat calculé à partir du nœud tanh est ajouté à l'unité mémoire ct−1 à l'instant précédent.
Le rôle de ce nœud tanh n'est pas de créer un portail, mais d'ajouter de nouvelles informations à l'unité de mémoire. Par conséquent, il n’utilise pas la fonction sigmoïde comme fonction d’activation, mais utilise la fonction tanh.
porte d'entrée
Nous ajoutons une porte à g dans la figure 6-17. Cette porte nouvellement ajoutée est appelée ici la porte d'entrée.
La porte d'entrée détermine la valeur de chaque élément de la nouvelle information g. Les portes d'entrée n'ajoutent pas de nouvelles informations sans considération ; elles font plutôt des choix sur les informations à ajouter. En d’autres termes, la porte d’entrée ajoute de nouvelles informations pondérées.
La porte d'entrée est calculée comme suit
Flux gradient LSTM
La rétropropagation de l'unité de mémoire s'effectue uniquement via les nœuds " " et "×". Le nœud " " fait sortir le gradient de l'amont tel quel, donc le gradient ne change pas (dégénére). Le calcul du nœud "×" n'est pas un produit matriciel, mais le produit des éléments correspondants (produit Hadama), qui ne provoquera pas de changements de gradient.
Implémentation du LSTM
Pour les changements affines tels que x*Wx h*Wh b, il peut être intégré dans une seule formule
Les bibliothèques matricielles sont généralement plus rapides lors du calcul de « grandes matrices » et le code source est plus propre en gérant les poids ensemble.
Modèle de langage utilisant LSTM
Le modèle de langage implémenté ici est presque le même que celui du chapitre précédent. La seule différence est que là où la couche Time RNN a été utilisée dans le chapitre précédent, la couche Time LSTM est utilisée cette fois.
Autres améliorations du RNNLM
Multicouche de couches LSTM
L'approfondissement de la couche LSTM (empilement de plusieurs couches LSTM) fonctionne souvent bien.
Combien de couches sont appropriées ?
Le nombre de couches étant un hyperparamètre, il doit être déterminé en fonction de la complexité du problème à résoudre et de la taille des données d'entraînement pouvant être fournies.
Dans le cas de l'apprentissage d'un modèle de langage sur l'ensemble de données PTB, de meilleurs résultats peuvent être obtenus lorsque le nombre de couches LSTM est de 2 à 4.
Le modèle GNMT utilisé dans Google Translate se superpose à un réseau de 8 couches de LSTM.
Supprimer le surapprentissage basé sur Dropout
En approfondissant la profondeur, des modèles plus expressifs peuvent être créés, mais ces modèles souffrent souvent d'un surajustement. Pour aggraver les choses, les RNN sont plus sujets au surajustement que les réseaux neuronaux à action directe conventionnels, les contre-mesures de surajustement pour les RNN sont donc très importantes.
Contre-mesures
Ajouter des données d'entraînement
Réduire la complexité du modèle
Régularisation
Abandonner
Abandonner
Dropout sélectionne au hasard un sous-ensemble de neurones, puis les ignore et arrête de transmettre des signaux.
Position d'insertion du calque abandonné
Abandon régulier
structure d'erreur
Si Dropout est inséré dans le sens de la série chronologique, les informations seront progressivement perdues au fil du temps à mesure que le modèle apprend.
Structure correcte
Insérer un calque Dropout verticalement
Abandon des variations
En partageant le masque entre les Dropouts d'un même calque, le masque est "fixé". De cette façon, la façon dont les informations sont perdues est également « corrigée », de sorte que la perte exponentielle d'informations qui se produit lors d'un abandon régulier peut être évitée.
partage de poids
La liaison de poids peut être littéralement traduite par « liaison de poids ».
L'astuce pour lier (partager) les poids de la couche Embedding et de la couche Affine est le partage des poids. En partageant les poids entre ces deux couches, le nombre de paramètres appris peut être considérablement réduit. En plus de cela, cela améliore la précision.
Meilleure mise en œuvre du RNNLM
Recherche de pointe
Générer du texte basé sur RNN
Il n’y a pas d’article parfait, tout comme il n’y a pas de désespoir parfait. ——Haruki Murakami "Écoutez le vent chanter"
Générer du texte à l'aide de modèles de langage
Comment générer le prochain nouveau mot
Sélectionnez le mot avec la probabilité la plus élevée, le résultat est déterminé de manière unique
Les mots à forte probabilité sont faciles à sélectionner, les mots à faible probabilité sont difficiles à sélectionner.
Implémentation de la génération de texte
Meilleure génération de texte
Utiliser de meilleurs modèles linguistiques
modèle seq2seq
Seq2Seq (Séquence à séquence, modèle séquence à séquence)
Modèles pour convertir des données de séries chronologiques en d'autres données de séries chronologiques
Le principe de seq2seq
Ce modèle dispose de deux modules - Encodeur et Décodeur. Le codeur code les données d'entrée et le décodeur décode les données codées.
seq2seq se compose de deux couches LSTM, l'encodeur LSTM et le décodeur LSTM.
L'état caché h de LSTM est un vecteur de longueur fixe. La différence entre celui-ci et le modèle de la section précédente est que la couche LSTM reçoit le vecteur h. Ce petit changement unique a permis aux modèles de langage ordinaires d’évoluer vers des décodeurs capables de gérer la traduction.
Une simple tentative de conversion de données de séries chronologiques
Essayer de demander à seq2seq d'effectuer des calculs supplémentaires
Données de séries chronologiques de longueur variable
remplissage
Remplissez les données originales avec des données invalides (dénuées de sens), de Et alignez la longueur des données.
Lorsque vous utilisez le remplissage, vous devez ajouter un traitement spécifique au remplissage à seq2seq
Lorsque le remplissage est entré dans le décodeur, sa perte ne doit pas être calculée (cela peut être résolu en ajoutant une fonction Softmax avec masque de perte au calque)
Lors du remplissage d'entrée dans l'encodeur, la couche LSTM doit afficher l'entrée du moment précédent telle quelle
ensemble de données additives
Implémentation de seq2seq
Améliorations de seq2seq
Inverser les données d'entrée
Dans de nombreux cas, l’apprentissage progresse plus rapidement et la précision finale s’améliore après avoir utilisé cette technique.
Intuitivement, la propagation des gradients peut être plus fluide et plus efficace après avoir inversé les données.
voyeur
L'encodeur utilisant le casque s'appelle Peeky Decoder, et le seq2seq utilisant Peeky Decoder s'appelle Peeky seq2seq.
L'encodeur convertit la phrase d'entrée en un vecteur h de longueur fixe, qui concentre toutes les informations requises par le décodeur. C'est la seule source d'informations pour le décodeur.
La sortie h du codeur, qui concentre les informations importantes, peut être affectée à d'autres couches du décodeur
Deux vecteurs sont entrés simultanément dans la couche LSTM et la couche Affine, ce qui représente en fait la concaténation des deux vecteurs.
Application de seq2seq
Traduction automatique : convertir "texte dans une langue" en "texte dans une autre langue"
Résumé automatique : convertir "un texte long" en un "résumé court"
Système de questions et réponses : convertir "question" en "réponse"
Réponse automatique aux e-mails : convertir le « texte de l'e-mail reçu » en « texte de réponse »
chatbot
apprentissage d'algorithmes
Description automatique des images
Attention
L'attention est tout. ——Titre de l'article de Vaswani
L’attention est sans aucun doute l’une des technologies les plus importantes dans le domaine du deep learning de ces dernières années. Le but de ce chapitre est de comprendre la structure de l'attention au niveau du code, puis de l'appliquer à des problèmes pratiques pour expérimenter ses merveilleux effets.
Structure d'attention
Problèmes avec seq2seq
Un encodeur est utilisé dans seq2seq pour encoder les données de la série chronologique, puis les informations codées sont transmises au décodeur. À ce stade, la sortie du codeur est un vecteur de longueur fixe.
Les vecteurs de longueur fixe signifient que quelle que soit la longueur de l'instruction d'entrée (quelle que soit sa longueur), elle sera convertie en un vecteur de même longueur.
Améliorations de l'encodeur
La longueur de la sortie de l'encodeur doit changer en conséquence en fonction de la longueur du texte d'entrée
Parce que l'encodeur traite de gauche à droite, à proprement parler, le vecteur « chat » contient uniquement les informations des trois mots « 我的人 », « は » et « 猫 ». Compte tenu de l’équilibre global, il est préférable d’inclure uniformément les informations autour du mot « chat ». Dans ce cas, le RNN bidirectionnel (ou LSTM bidirectionnel) qui traite les données de séries chronologiques dans les deux sens est plus efficace.
Améliorations du décodeur
Auparavant, nous placions le « dernier » état caché de la couche LSTM du codeur dans l’état caché « initial » de la couche LSTM du décodeur.
Le décodeur du chapitre précédent n'utilisait que le dernier état caché de la couche LSTM de l'encodeur. Si vous utilisez hs, seule la dernière ligne est extraite et transmise au décodeur. Nous améliorons ensuite le décodeur pour pouvoir utiliser tous les hs.
Nous nous concentrons sur un certain mot (ou ensemble de mots) et convertissons ce mot à tout moment. Cela permet à seq2seq d'apprendre la correspondance entre "quels mots en entrée et en sortie sont liés à quels mots".
Exemple
Ma génération [わがはい] = je
猫[ねこ] = chat
De nombreuses études exploitent la connaissance des correspondances de mots telles que « chat = chat ». De telles informations indiquant la correspondance entre des mots (ou des phrases) sont appelées alignement. Jusqu'à présent, l'alignement a été principalement effectué manuellement, mais la technologie Attention que nous allons présenter a réussi à introduire automatiquement l'idée d'alignement dans seq2seq. C'est aussi l'évolution du « fonctionnement manuel » vers « l'automatisation mécanique ».
changements structurels
Comment calculer
L'opération de « sélection » peut-elle être remplacée par une opération différentiable ? Au lieu de « sélection unique », il est préférable de « tout sélectionner ». Nous calculons séparément le poids représentant l'importance (valeur de contribution) de chaque mot.
a Comme pour une distribution de probabilité, chaque élément est un scalaire de 0,0 à 1,0 et la somme est 1. Calculez ensuite la somme pondérée des poids représentant l’importance de chaque mot et du vecteur de mot hs pour obtenir le vecteur cible.
Lors du traitement des données de séquence, le réseau doit accorder plus d'attention aux parties importantes de l'entrée et ignorer les parties sans importance. Il pondère explicitement les parties importantes de la séquence d'entrée en apprenant les poids des différentes parties, afin que le modèle puisse être mieux payé. une attention particulière aux informations liées aux résultats. La clé du mécanisme Attention est d'introduire un mécanisme pour calculer dynamiquement le poids de chaque position dans la séquence d'entrée, de sorte qu'à chaque pas de temps, différentes parties de la séquence d'entrée soient pondérées et additionnées pour obtenir la sortie du pas de temps actuel. . Lors de la génération de chaque sortie, le décodeur accorde une attention différente aux différentes parties de la séquence d'entrée, permettant au modèle de mieux se concentrer sur les informations importantes de la séquence d'entrée.
Apprentissage du poids a
Notre objectif est d'exprimer numériquement à quel point ce h est "similaire" aux vecteurs de mots individuels de hs.
Ici, nous utilisons le produit scalaire vectoriel le plus simple.
Il existe plusieurs façons de calculer la similarité d'un vecteur. En plus des produits internes, il existe également une pratique consistant à utiliser de petits réseaux de neurones pour générer des scores.
Ensuite, s est régularisé à l'aide de l'ancienne fonction Softmax
Intégrer
Implémentation de seq2seq avec Attention
Évaluation de l'attention
Nous avons cherché à confirmer l'effet de seq2seq avec Attention en étudiant le problème de "conversion du format de date"
Problème de conversion du format de date
Apprentissage de seq2seq avec Attention
Visualisation de l'attention
Autres sujets sur Attention
RNN bidirectionnel
Si l'on considère l'équilibre global, nous espérons que le vecteur contiendra plus uniformément les informations autour du mot « chat ».
Le LSTM bidirectionnel ajoute une couche LSTM traitée dans la direction opposée au-dessus de la couche LSTM précédente.
Épissez les états cachés des deux couches LSTM à chaque instant et utilisez-les comme vecteur d'état caché final (en plus de l'épissage, vous pouvez également « faire la somme » ou « faire la moyenne », etc.)
Comment utiliser la couche Attention
La sortie de la couche d'attention (vecteur de contexte) est connectée à l'entrée de la couche LSTM à l'instant suivant. Grâce à cette structure, la couche LSTM est capable d'utiliser les informations du vecteur de contexte. En revanche, le modèle que nous avons implémenté utilise des vecteurs de contexte dans la couche Affine.
Approfondissement de seq2seq et saut de connexion
Approfondir la couche RNN
seq2seq avec attention en utilisant 3 couches de couche LSTM
connexion résiduelle
A la jonction de la connexion résiduelle, deux sorties sont ajoutées.
Étant donné que l’addition propage les gradients « tels quels » lors de la rétropropagation, les gradients des connexions résiduelles peuvent être propagés à la couche précédente sans aucun effet. De cette façon, même si la couche est approfondie, le dégradé peut se propager normalement sans disparition du gradient (ou explosion du gradient), et l'apprentissage peut se dérouler sans problème.
Application de l'attention
GNMT
L'histoire de la traduction automatique
Traduction basée sur des règles
Utiliser la traduction basée sur des cas
Traduction basée sur les statistiques
Traduction automatique neuronale
Depuis 2016, Google Translate utilise la traduction automatique neuronale pour ses services réels. Système de traduction automatique appelé GNMT
GNMT nécessite de grandes quantités de données et de ressources informatiques. GNMT utilise une grande quantité de données d'entraînement (1 modèle) apprises sur près de 100 GPU pendant 6 jours. En outre, GNMT tente également d'améliorer encore la précision en s'appuyant sur des technologies telles que l'apprentissage d'ensemble et l'apprentissage par renforcement, capables d'apprendre 8 modèles en parallèle.
Transformateur
RNN peut bien gérer les données de séries chronologiques de longueur variable. Cependant, RNN présente également des inconvénients, tels que des problèmes de traitement parallèle.
RNN doit être calculé étape par étape sur la base des résultats de calcul du moment précédent, il est donc (fondamentalement) impossible de calculer RNN en parallèle dans le sens du temps. Cela deviendra un gros goulot d'étranglement lors de l'apprentissage en profondeur dans un environnement informatique parallèle utilisant des GPU, nous sommes donc motivés pour éviter le RNN.
Transformer n'utilise pas RNN, mais utilise Attention pour le traitement. Jetons un bref coup d'œil à ce Transformer.
Attention personnelle
Transformer est basé sur l'Attention, qui utilise la technique de l'Auto-Attention, qui est importante. L'attention personnelle se traduit littéralement par « sa propre attention sur soi-même », c'est-à-dire qu'il s'agit d'une attention basée sur des données de séries chronologiques, visant à observer la relation entre chaque élément d'une donnée de série chronologique et d'autres éléments.
Utilisez un réseau neuronal entièrement connecté avec une couche cachée et une fonction d'activation ReLU. De plus, Nx sur la figure signifie que les éléments entourés par le fond gris sont empilés N fois.
MNT
NTM (Machine de Turing Neurale)
Les réseaux de neurones peuvent également acquérir des capacités supplémentaires grâce à des périphériques de stockage externes.
Basés sur Attention, les encodeurs et décodeurs implémentent des « opérations de mémoire » dans les ordinateurs. En d’autres termes, cela peut être interprété comme si l’encodeur écrit les informations nécessaires dans la mémoire et que le décodeur lit dans la mémoire. Obtenez les informations nécessaires.
Afin d'imiter le fonctionnement de la mémoire de l'ordinateur, le fonctionnement de la mémoire de NTM utilise deux Attentions,
L'attention basée sur le contenu est la même que l'attention que nous avons introduite précédemment et est utilisée pour trouver des vecteurs similaires d'un certain vecteur (vecteur de requête) à partir de la mémoire.
L'attention basée sur la position est utilisée pour avancer et reculer à partir de l'adresse mémoire (le poids de chaque emplacement dans la mémoire) sur laquelle on s'est concentré au dernier moment. Nous omettons ici la discussion de ses détails techniques, qui peuvent être réalisés grâce à une opération de convolution unidimensionnelle. La fonction de mouvement basée sur l'emplacement mémoire peut reproduire l'activité informatique unique de « lecture en avançant (une adresse mémoire) ».
NTM a résolu avec succès des problèmes de mémoire à long terme, des problèmes de tri (classement des nombres du plus grand au plus petit), etc.
Optimisation et régularisation du réseau
Aucune astuce mathématique ne peut compenser le manque d’informations [Cornelius Lanczos]
Deux difficultés majeures
Optimisation
Difficile à optimiser et gourmand en calculs
problème de généralisation
La capacité d'ajustement est trop forte et il est facile de le surajuster.
Optimisation du réseau
Difficultés d'optimisation du réseau
Diversité de la structure du réseau
Il est difficile de trouver une méthode d'optimisation générale. Différentes méthodes d'optimisation présentent également des différences relativement importantes selon les différentes structures de réseau.
Difficultés avec les espaces de faible dimension
Comment choisir les paramètres d'initialisation
S'échapper de l'optimum local
Difficultés avec les espaces de grande dimension
Comment choisir les paramètres d'initialisation
Comment s'échapper d'un point de selle
Dans certaines dimensions, c'est le point le plus élevé, dans d'autres dimensions, c'est le point le plus bas.
fond plat
Il existe de nombreux paramètres dans les réseaux neuronaux profonds et il existe un certain degré de redondance, ce qui fait que chaque paramètre a un impact relativement faible sur la perte finale.
coincé dans le minimum local
optimisation
Type de méthode de descente de gradient
descente de gradient par lots
descente de gradient stochastique
descente de gradient en mini-lots
En descente de gradient, le calcul du gradient sur l'ensemble des données d'entraînement pour chaque itération nécessite plus de ressources informatiques. De plus, les données des grands ensembles d’apprentissage sont souvent très redondantes et il n’est pas nécessaire de calculer les gradients sur l’ensemble de l’ensemble d’apprentissage.
diminution du taux d'apprentissage
Le taux d'apprentissage doit être maintenu plus élevé au début pour garantir la vitesse de convergence, et plus petit lorsqu'il converge vers le point optimal pour éviter les oscillations de va-et-vient.
taper
Déclin du temps inversé
décroissance exponentielle
décroissance exponentielle naturelle
β est le taux d'atténuation, généralement 0,96.
Il existe également des méthodes pour ajuster de manière adaptative le taux d'apprentissage, telles que AdaGrad, RMSprop, AdaDelta, etc.
Méthode AdaGrad
Parmi les techniques efficaces pour réduire le taux d'apprentissage, il y a une méthode appelée décroissance du taux d'apprentissage, qui diminue progressivement le taux d'apprentissage à mesure que l'apprentissage progresse.
AdaGrad pousse cette idée plus loin, en ajustant le taux d'apprentissage de manière appropriée pour chaque élément des paramètres tout en apprenant en même temps.
Ada vient du mot anglais Adaptive, qui signifie « approprié »
Comme le SGD précédent, W représente le paramètre de poids à mettre à jour, la dérivée partielle représente le gradient et n représente le taux d'apprentissage.
Mais une nouvelle variable h apparaît, qui stocke la somme des carrés de toutes les valeurs de gradient précédentes. Par conséquent, plus l'apprentissage est approfondi, plus l'amplitude de mise à jour est petite.
Méthode RMSProp
Si vous apprenez sans fin, le montant de la mise à jour deviendra 0
La méthode RMSProp n'ajoute pas tous les dégradés passés de manière égale, mais oublie progressivement les dégradés passés et reflète plus d'informations sur les nouveaux dégradés lors de l'opération d'addition.
Techniquement parlant, cette opération est appelée « moyenne mobile exponentielle », qui réduit de façon exponentielle l'échelle des gradients passés.
Optimisation de la direction du dégradé
Méthode élan
Dans la descente de gradient en mini-lots, si le nombre d'échantillons sélectionnés à chaque fois est relativement faible, la perte diminuera de manière oscillante.
En utilisant le gradient moyen de la dernière période de temps au lieu du gradient du moment actuel comme direction de mise à jour des paramètres.
également appelée méthode du moment
Inconvénients du SGD
f(x,y)=(1/20)*x^2 y^2
Chemin de mise à jour optimisé basé sur SGD : évolution vers la valeur minimale (0, 0) en zigzag, faible efficacité
façons d'améliorer
Comme le SGD précédent, W représente le paramètre de poids à mettre à jour, la dérivée partielle représente le gradient et n représente le taux d'apprentissage.
Mais une nouvelle variable v apparaît, qui correspond à la vitesse physique, qui peut être comprise comme la force exercée sur l'objet dans le sens du gradient.
Méthode Adam
Momentum se déplace selon les règles physiques d'une balle roulant dans un bol, et AdaGrad ajuste le rythme de mise à jour de manière appropriée pour chaque élément du paramètre. Les combiner est l'idée d'Adam
Il n’existe pas (actuellement) de méthode qui fonctionne bien sur tous les problèmes. Chacune de ces quatre méthodes a ses propres caractéristiques, et chacune a ses propres problèmes qu’elle est bonne à résoudre et des problèmes qu’elle n’est pas bonne à résoudre.
seuil de dégradé
Si le gradient augmente soudainement, l'utilisation d'un gradient important pour mettre à jour les paramètres l'éloignera du point optimal.
Lorsque le module du gradient est supérieur à un certain seuil, le gradient est tronqué.
Limitez le module du gradient à un intervalle, et tronquez-le lorsque le module du gradient est inférieur ou supérieur à cet intervalle.
taper
Tronquer par valeur
gt = max(min(gt, b), une).
Tronquer selon le moule
Initialisation des paramètres
Initialisation de la distribution gaussienne
La méthode d'initialisation gaussienne est la méthode d'initialisation la plus simple. Les paramètres sont initialisés de manière aléatoire à partir d'une distribution gaussienne avec une moyenne fixe (telle que 0) et une variance fixe (telle que 0,01).
Lorsque le nombre de connexions d'entrée d'un neurone est n(in), son poids de connexion d'entrée peut être défini pour être initialisé avec la distribution gaussienne de N(0,sqrt(1/nin)).
Si le nombre de connexions de sortie nout est également pris en compte, il peut être initialisé selon la distribution gaussienne de N(0,sqrt(2/(nin nout)))
Initialisation uniformément distribuée
L'initialisation de la distribution uniforme utilise une distribution uniforme pour initialiser les paramètres dans un intervalle donné [−r, r]. Le réglage de l'hyperparamètre r peut également être ajusté de manière adaptative en fonction du nombre de connexions des neurones.
Type de fonction d'activation
fonction logistique
tanh
Valeur initiale de Xavier
Nous avons essayé d'utiliser les valeurs de poids initiales recommandées dans l'article de Xavier Glorot et al.
Si le nombre de nœuds dans la couche précédente est n, la valeur initiale utilise une distribution gaussienne avec un écart type de (1/sqrt(n))
Valeur initiale du poids ReLU
Lorsque la fonction d'activation utilise ReLU, il est généralement recommandé d'utiliser la valeur initiale dédiée à ReLU, qui est la valeur initiale préconisée par Kaiming He et al., également appelée « valeur initiale He ».
Lorsque le nombre de nœuds dans la couche actuelle est n, la valeur initiale de He utilise une distribution gaussienne avec un écart type de (2/sqrt(n))
Prétraitement des données
différentes unités
Les différentes sources et unités de mesure de chaque caractéristique dimensionnelle rendront la plage de distribution de ces valeurs de caractéristiques très différente. Lorsque nous calculons la distance euclidienne entre différents échantillons, les caractéristiques avec une large plage de valeurs joueront un rôle dominant.
normalisation de la mise à l'échelle
La plage de valeurs de chaque caractéristique est normalisée à [0, 1] ou [−1, 1] par mise à l'échelle.
normalisation standard
Également appelée normalisation du score z
Chaque caractéristique dimensionnelle est traitée pour se conformer à la distribution normale standard (la moyenne est de 0, l'écart type est de 1).
Redondance des données
Une fois les données d'entrée blanchies, la corrélation entre les caractéristiques est faible et toutes les caractéristiques ont la même variance.
L’un des principaux moyens d’obtenir un blanchiment consiste à utiliser l’analyse des composants principaux pour supprimer la corrélation entre les composants.
Normalisation couche par couche
Lorsque vous utilisez la descente de gradient stochastique pour former un réseau, chaque mise à jour des paramètres entraînera une modification de la distribution des entrées dans chaque couche au milieu du réseau. Plus la couche est profonde, plus la répartition de son apport changera de manière évidente.
normalisation par lots
Également appelée normalisation par lots, méthode BN
Afin que chaque couche ait la largeur appropriée, la distribution des valeurs d'activation est "forcée" d'être ajustée.
Effectuez une régularisation pour que la moyenne de la distribution des données soit 0 et la variance soit 1.
Toute couche intermédiaire du réseau neuronal peut être normalisée.
avantage
Peut rendre l’apprentissage rapide (peut augmenter le taux d’apprentissage)
Moins dépendant des valeurs initiales (pas si sensible aux valeurs initiales)
Supprimer le surapprentissage (réduire le besoin d'abandon, etc.)
Couche de normes par lots
Affine->Norme de lots->ReLU
normalisation des couches
Limites de la normalisation par lots
La normalisation par lots est une opération de normalisation sur un seul neurone dans une couche intermédiaire, le nombre d'échantillons en mini-lots ne doit donc pas être trop petit, sinon il sera difficile de calculer les informations statistiques d'un seul neurone.
Si la distribution de l'entrée nette d'un neurone change dynamiquement dans un réseau neuronal, tel qu'un réseau neuronal récurrent, alors l'opération de normalisation par lots ne peut pas être appliquée.
La normalisation des couches normalise tous les neurones d'une couche intermédiaire.
La normalisation par lots est très efficace dans les réseaux de neurones convolutifs (CNN), tandis que la normalisation par couches est plus courante dans les réseaux de neurones récurrents (RNN) et les réseaux Transformer.
Optimisation des hyperparamètres
composition
Structure du réseau
connexions entre neurones
Nombre de couches
Nombre de neurones par couche
Type de fonction d'activation
Paramètres d'optimisation
Méthodes d'optimisation du réseau
taux d'apprentissage
Taille de l'échantillon pour les petits lots
Coefficient de régularisation
Données de validation (ensemble de validation)
Les performances des hyperparamètres ne peuvent pas être évaluées à l'aide de données de test
Si vous utilisez des données de test pour confirmer la « qualité » de la valeur de l'hyperparamètre, la valeur de l'hyperparamètre sera ajustée pour s'adapter uniquement aux données de test.
Les données de formation sont utilisées pour l'apprentissage des paramètres (poids et biais) et les données de validation sont utilisées pour l'évaluation des performances des hyperparamètres. Afin de confirmer la capacité de généralisation, les données du test doivent être utilisées à la fin (idéalement une seule fois)
Optimisation
recherche de grille
Ciblez le bon en essayant toutes les combinaisons d'hyperparamètres Méthodes de configuration des hyperparamètres de groupe.
Choisissez plusieurs valeurs « expérience ». Par exemple, le taux d'apprentissage α, nous pouvons définir α ∈ {0,01, 0,1, 0,5, 1,0}.
recherche aléatoire
Définir la plage d'hyperparamètres et échantillonner de manière aléatoire à partir de la plage d'hyperparamètres définie
Évaluer la précision de la reconnaissance grâce aux données de validation (mais définir une époque très petite)
Répétez ce qui précède (100 fois, etc.) et réduisez la gamme d'hyperparamètres en fonction des résultats de leur précision de reconnaissance
Optimisation bayésienne
Allocation dynamique des ressources
régularisation du réseau
Objectif : Supprimer le surapprentissage
perte de poids
La perte de poids est une méthode fréquemment utilisée pour supprimer le surapprentissage. Cette méthode pénalise les poids importants lors du processus d’apprentissage.
En termes simples, la fonction de perte devient
λ est un hyperparamètre qui contrôle la force de la régularisation
méthode de rejet
Méthode d'abandon
Si le modèle de réseau devient très complexe, il sera difficile de le traiter en utilisant uniquement la désintégration du poids.
La méthode de suppression aléatoire de neurones au cours du processus d’apprentissage choisit de supprimer les neurones de manière aléatoire à chaque fois. Le moyen le plus simple consiste à définir une probabilité fixe p. Pour chaque neurone, il existe une probabilité p de déterminer s’il faut le conserver.
augmentation des données
Faire pivoter, retourner, mettre à l'échelle, traduire, ajouter du bruit
lissage des étiquettes
Ajoutez du bruit aux étiquettes de sortie pour éviter le surajustement du modèle
Méthode d’apprentissage indépendante du modèle
Apprentissage d'ensemble
Intégrez plusieurs modèles grâce à une certaine stratégie pour améliorer la précision de la prise de décision grâce à la prise de décision de groupe. Le principal problème de l’apprentissage d’ensemble est de savoir comment intégrer plusieurs modèles. Les stratégies d'intégration les plus couramment utilisées incluent la moyenne directe, la moyenne pondérée, etc.
Autoformation et formation collaborative
Tous appartiennent à l’apprentissage semi-supervisé
Auto entrainement
L'auto-entraînement consiste d'abord à utiliser des données étiquetées pour entraîner un modèle, et à utiliser ce modèle pour prédire les étiquettes d'échantillons non étiquetés, à ajouter des échantillons avec une confiance de prédiction relativement élevée et leurs pseudo-étiquettes prédites à l'ensemble d'entraînement, puis à recycler le nouveau modèle. et continuez à répéter ce processus.
formation collaborative
La co-formation est une méthode améliorée d’auto-formation
Deux classificateurs basés sur des points de vue différents se favorisent mutuellement. De nombreuses données ont des perspectives différentes et relativement indépendantes.
En raison de l'indépendance conditionnelle des différentes perspectives, les modèles formés sur différentes perspectives équivalent à comprendre le problème sous différentes perspectives et présentent une certaine complémentarité. La formation collaborative est une méthode qui utilise cette complémentarité pour réaliser une auto-formation. Tout d'abord, deux modèles f1 et f2 sont formés sur l'ensemble d'apprentissage selon des perspectives différentes, puis f1 et f2 sont utilisés pour prédire sur l'ensemble de données non étiqueté. Des échantillons avec une confiance de prédiction relativement élevée sont sélectionnés pour être ajoutés à l'ensemble d'apprentissage, et. deux perspectives différentes sont recyclées et répètent ce processus.
apprentissage multi-tâches
Les modèles généraux d'apprentissage automatique sont destinés à une seule tâche spécifique, telle que la reconnaissance de chiffres manuscrits, la détection d'objets, etc. Les modèles pour différentes tâches sont appris séparément sur leurs ensembles de formation respectifs.
Si deux tâches sont liées, il y aura des connaissances partagées entre elles, et ces connaissances seront utiles aux deux tâches. Ces connaissances partagées peuvent être des représentations (caractéristiques), des paramètres de modèles, ou des algorithmes d'apprentissage, etc.
taper
apprentissage par transfert
S'il existe une tâche connexe qui possède déjà une grande quantité de données d'entraînement, bien que la distribution de ces données d'entraînement soit différente de celle de la tâche cible, en raison de l'échelle relativement grande des données d'entraînement, nous supposons que nous pouvons en apprendre davantage. des connaissances généralisables, alors ces connaissances seront utiles pour les tâches cibles seront d'une certaine aide. Comment transférer les connaissances généralisables contenues dans les données d'entraînement des tâches associées vers la tâche cible est le problème à résoudre par l'apprentissage par transfert.
L'apprentissage par transfert fait référence au processus de transfert de connaissances entre deux domaines différents, en utilisant les connaissances acquises dans le domaine source (domaine source) DS pour faciliter les tâches d'apprentissage dans le domaine cible (domaine cible) DT. Le nombre d’échantillons d’apprentissage dans le domaine source est généralement beaucoup plus important que celui du domaine cible.
Classification
apprentissage par transfert inductif
Un modèle est appris sur l'ensemble de données d'entraînement qui minimise le risque attendu (c'est-à-dire le taux d'erreur sur la distribution des données réelles).
Dériver un apprentissage par transfert
Apprendre un modèle qui minimise les erreurs sur un ensemble de tests donné
Le réglage fin est une méthode d’application de l’apprentissage par transfert. Il s'agit généralement de l'utilisation de nouveaux ensembles de données spécifiques à une tâche pour effectuer une formation supplémentaire sur la base d'un modèle déjà formé afin d'améliorer les performances du modèle sur une tâche spécifique. Le but du réglage fin est d'utiliser les connaissances générales acquises par le modèle pré-entraîné sur des données à grande échelle pour accélérer et optimiser le processus d'apprentissage sur des tâches spécifiques.
apprentissage tout au long de la vie
question
Une fois la formation terminée, le modèle reste fixe et n'est plus mis à jour de manière itérative.
Il est encore très difficile pour un modèle de réussir dans plusieurs tâches différentes en même temps.
L'apprentissage tout au long de la vie, également appelé apprentissage continu, fait référence à la capacité d'apprentissage continu comme les humains, en utilisant l'expérience et les connaissances acquises dans des tâches historiques pour aider à apprendre de nouvelles tâches qui émergent constamment, et ces expériences et connaissances sont continuellement accumulées et ne changeront pas en raison de de nouvelles tâches et oublier les anciennes connaissances.
Dans l'apprentissage tout au long de la vie, on suppose qu'un algorithme d'apprentissage tout au long de la vie a appris un modèle sur les tâches historiques T1, T2, · · · , Tm Lorsqu'une nouvelle tâche Tm 1 apparaît, cet algorithme peut apprendre un modèle basé sur les tâches passées apprises. m tâches. connaissances pour aider la m 1ème tâche, tout en accumulant des connaissances sur toutes les tâches m 1.
Ce cadre est très similaire à l’apprentissage par transfert inductif, mais le but de l’apprentissage par transfert inductif est d’optimiser les performances de la tâche cible sans se soucier de l’accumulation de connaissances. L’objectif de l’apprentissage tout au long de la vie est l’apprentissage continu et l’accumulation de connaissances. De plus, contrairement à l’apprentissage multitâche, l’apprentissage tout au long de la vie n’implique pas l’apprentissage simultané de toutes les tâches.
méta-apprentissage
Selon le théorème du repas gratuit, aucun algorithme d’apprentissage universel n’est efficace sur toutes les tâches. Par conséquent, lorsque nous utilisons des algorithmes d'apprentissage automatique pour mettre en œuvre une certaine tâche, nous devons généralement « discuter du sujet » et choisir le modèle, la fonction de perte, l'algorithme d'optimisation et les hyperparamètres appropriés en fonction des tâches spécifiques.
La capacité d’ajuster dynamiquement vos propres méthodes d’apprentissage est appelée méta-apprentissage, également connue sous le nom d’apprentissage de l’apprentissage.
Un autre problème d'apprentissage automatique lié au méta-apprentissage est l'apprentissage sur petits échantillons.
Deux méthodes typiques de méta-apprentissage
Méta-apprentissage basé sur un optimiseur
La différence entre les différents algorithmes d'optimisation réside dans les différentes règles de mise à jour des paramètres. Par conséquent, un méta-apprentissage naturel consiste à apprendre automatiquement une règle de mise à jour des paramètres, c'est-à-dire à modéliser le processus de descente de gradient via un autre réseau neuronal (tel qu'un réseau neuronal récurrent). réseau).
Méta-apprentissage indépendant du modèle
Il s'agit d'un algorithme de méta-apprentissage simple, indépendant du modèle et des tâches.