Rubrique connexe : Résumé des données d'apprentissage automatique de Li Hongyi en 2020
Annuaire d'articles
4. CNN
Réseau neuronal convolutif (P17)
Tout d'abord, M. Li Hongyi a expliqué pourquoi CNN est utilisé pour traiter les images.
Q : Évidemment, DNN peut également traiter des images, alors pourquoi utiliser CNN ?
R : Le DNN ordinaire utilise une couche entièrement connectée avec un nombre particulièrement élevé de paramètres. Par conséquent, DNN peut être simplifié en CNN en fonction des caractéristiques de l'image, sur la base des observations suivantes (caractéristiques) :
- Certains modèles sont beaucoup plus petits que l'image entière, et un neurone n'a besoin de découvrir que ces modèles, pas l'image entière. Par exemple : dans la reconnaissance faciale, certains sont responsables de l'identification des yeux, certains sont responsables de l'identification des nez, certains sont responsables de l'identification des bouches, etc. Associez quelques petites régions à un petit nombre de paramètres.
- Le même motif peut apparaître dans différentes régions de l'image. Par exemple : en reconnaissance faciale, la position du nez sur la carte peut être différente, il peut être au milieu, il peut être en haut, ou il peut être en bas. Faites à peu près la même chose avec le même ensemble de paramètres.
- Le sous-échantillonnage de l'image ne modifiera pas les objets de l'image. Le sous-échantillonnage rend l'image plus petite et réduit les paramètres.
La couche de convolution est pour la fonctionnalité 1 et la fonctionnalité 2, et la couche Max Pooling est pour la fonctionnalité 3.
AlphaGO a également utilisé CNN pour jouer au Go, car la carte Go satisfait également les deux caractéristiques de 1 et 2.
Le professeur Li Hongyi a d'abord présenté le processus CNN dans son ensemble, puis a présenté respectivement l'opération de convolution et l'opération de mise en commun maximale.
Le CNN global est le suivant :
une image traverse plusieurs fois la couche convolutive + la couche de mise en commun, puis est aplatie et classée via un réseau de neurones à propagation directe entièrement connecté (classificateur).
Il existe certains filtres dans l'opération de convolution, également appelés noyaux de convolution, qui sont équivalents aux neurones du réseau neuronal et doivent être appris.
Les filtres sont des matrices, qui sont responsables de l'extraction des caractéristiques de l'image et de l'exécution de la carte des caractéristiques (
carte des caractéristiques )M×Multipliez les éléments dans les positions correspondantes dans la matrice de N , puis accumulez les produits.Il est recommandé de regarder la vidéo pour comprendre.
Dans la figure ci-dessous,3 = 1 × 1 + 0 × ( − 1 ) + 0 × ( − 1 ) + 0 × ( − 1 ) + 1 × 1 + 0 × ( − 1 ) + 0 × ( − 1 ) + 0 × ( − 1 ) + 1 × 1 3=1\times1+0\times(-1)+0\times(-1 )+0\times(-1)+ 1\fois1+0\fois(-1)+0\fois(-1)+0\fois(-1)+1\fois13=1×1+0×( - 1 )+0×( - 1 )+0×( - 1 )+1×1+0×( - 1 )+0×( - 1 )+0×( - 1 )+1×1
CNN faisant une convolution équivaut à supprimer certains poids dans la couche entièrement connectée de DNN, par exemple :3 × 3 3\times33×Un filtre de 3 équivaut à ne connecter que 9 entrées au lieu de se connecter complètement.
Par conséquent, un noyau de convolution est un paramètre partagé de plusieurs neurones, ce qui réduit les paramètres de CNN par rapport à DNN.
La couche de regroupement maximal (Max Pooling) effectue un sous-échantillonnage.
Par exemple : le chiffre ci-dessus est divisé en 2 × 2 2\times22×2 régions pour le sous-échantillonnage, sélectionnez chacune2 × 2 2\times22×La plus grande valeur dans la zone de 2 est utilisée comme valeur de cette zone.
Après cela, M. Li Hongyi a expliqué comment créer CNN dans Keras (car il s'agit de la vidéo précédente, donc Keras a été utilisé et PyTorch a été utilisé dans les devoirs de 2020) et la taille de l'image d'entrée après avoir traversé chaque couche de CNN.
Bien que les outils utilisés soient différents, les paramètres du CNN sont calculés et la taille de l'image après chaque couche du CNN est calculée de la même manière.
Par exemple:
- La taille de l'image d'entrée est de 1 × 28 × 28 1\times28\times281×2 8×2 8 (image en niveaux de gris monocanal, la longueur est de 28 pixels, la largeur est de 28 pixels).
- Il passe par la première couche de convolution, la couche de convolution a 25 noyaux de convolution, chaque taille de noyau de convolution est de 3 × 3 3\times33×3 , alors la taille de l'image de sortie est25 × 26 × 26 25\times26\times262 5×2 6×2 6 , chaque noyau de convolution a3 × 3 = 9 3\times3=93×3=9 paramètres, donc un total de25 × 3 × 3 = 225 25\times3\times3=2252 5×3×3=2 2 5 paramètres.
- Il passe par la première couche de regroupement maximale et la taille de l'image de sortie est de 25 × 13 × 13 25\times13\times132 5×1 3×1 3 .
- Il traverse une deuxième couche convolutive avec 50 noyaux convolutifs chacun de taille 3 × 3 3\times33×3 , alors la taille de l'image de sortie estde 50 × 11 × 11 50\times11\times115 0×1 1×1 1 , chaque noyau de convolution a25 × 3 × 3 = 225 25\times3\times3=2252 5×3×3=2 2 5 paramètres, donc un total de50 × 25 × 3 × 3 = 11250 50\times25\times3\times3=112505 0×2 5×3×3=1 1 2 5 0 paramètres.
- Il passe par la deuxième couche de regroupement maximale et la taille de l'image de sortie est de 50 × 5 × 5 50\times5\times55 0×5×5 .
Après cela, M. Li Hongyi a présenté ce que chaque couche de CNN pourrait apprendre (quelques modèles étranges), et enfin, a présenté certaines applications de CNN, telles que : Deep Dream, Deep Style, AlphaGo, reconnaissance vocale, traitement de texte, etc.
5. GNN
* Nouveau contenu en 2020, les assistants pédagogiques
sont encore un peu confus, alors écoutez-le. Plus tard, après l'avoir revu, le blogueur a estimé que c'était mieux que la plupart des vidéos sur GNN sur Internet.Laissons d'abord un trou et revenons plus tard pour mettre à jour.
Réseau neuronal graphique (1_2) (facultatif) (P18)
Réseau neuronal graphique (2_2) (facultatif) (P19)
6. Semi-encadré
Parce que ce qui suit se concentrera sur RNN, la relation entre ce P et RNN n'est pas très grande, mais je pense qu'il peut être plus cohérent d'apprendre cette partie d'abord, puis de regarder RNN, donc je vais le mentionner séparément et l'écrire en premier.
Semi-supervisé(P22)
Tout d'abord, M. Li Hongyi a présenté la signification de l'apprentissage supervisé et de l'apprentissage semi-supervisé, et pourquoi il existe un apprentissage semi-supervisé.
Apprentissage supervisé : jeu
de données étiqueté { ( xr , y ^ r ) } r = 1 R \{(x^r, \hat{y}^r)\}^R_{r=1}{ ( xr ,y^r )}r = 1R
Apprentissage semi-supervisé :
jeu de données étiqueté { ( xr , y ^ r ) } r = 1 R \{(x^r, \hat{y}^r)\}^R_{r=1}{ ( xr ,y^r )}r = 1R, pas d'indice { ( xu ) } u = RR + U \{(x^u)\}^{R+U}_{u=R}{ ( xtu )}u = RR + U, et U>>R U>>Rtu>>
L'apprentissage semi-supervisé R est divisé en deux types :
- Apprentissage transductif : les données non étiquetées sont des données de test (données de test)
- Apprentissage inductif : les données non étiquetées ne sont pas des données de test (données de test)
Q : Pourquoi un apprentissage semi-supervisé ?
R : Dans la vraie vie, il est facile de collecter des données dans l'apprentissage automatique, mais il n'est pas facile de collecter des données étiquetées .
L'enseignant Li Hongyi a présenté comment faire un apprentissage semi-supervisé pour le modèle génératif dans le modèle génératif.
Le modèle de génération supervisée a été mentionné dans P11, étant donné un échantillon d'apprentissage étiqueté xr ∈ C 1 , C 2 x^r \in C_1,C_2Xr∈C1,C2
- Trouver la probabilité a priori maximale P ( C i ) P(C_i)P ( Cje) et la probabilité dépendante de la classeP ( x ∣ C i ) P(x\mid C_i)P ( x∣Cje)
- P ( x ∣ C je ) P(x\mid C_i)P ( x∣Cje) est une distribution gaussienne, en moyenneμ i \mu^imi et varianceΣ \SigmaΣ invarianceP ( C 1 ) , P ( C 2 ) , µ 1 , µ 2 , Σ P(C_1),P(C_2),\mu^1,\mu^2,\
SigmaP ( C1) ,P ( C2) ,m1 ,m2 ,Après Σ , vous pouvez calculer P ( C 1 ∣ X ) = P ( X ∣ C 1 ) P ( C 1 ) P ( X ∣ C 1 ) P ( C 1 ) + P ( X ∣ C 2 ) P ( C 2 ) P(C_1\mid x)=\frac{P(x\mid C_1)P(C_1)}{P(x|C_1)P(C_ 1)+P(x |C_2)P(C_2)}P ( C1∣x )=P ( x ∣ C1) P ( C1)+P ( x ∣ C2) P ( C2)P ( x∣C1) P ( C1)
Dans l'apprentissage semi-supervisé, il y a des problèmes avec les modèles génératifs. Comme illustré dans la figure ci-dessous, supposons que le vert dans la figure ci-dessous correspond à des données sans étiquette. La ligne continue est la distribution gaussienne calculée sur les données étiquetées , alors qu'en réalité la distribution gaussienne pourrait ressembler à la ligne pointillée si ces données non étiquetées avaient des étiquettes.
En d'autres termes, les données non étiquetées xux^uXuSoit P ( C 1 ) , P ( C 2 ) , µ 1 , µ 2 , Σ P(C_1),P(C_2),\mu^1,\mu^2,\SigmaP ( C1) ,P ( C2) ,m1 ,m2 ,Σ , et même affecter la frontière de décision.
Algorithme de modèle génératif semi-supervisé (algorithme EM) :
paramètres d'initialisation θ = P ( C 1 ) , P ( C 2 ) , μ 1 , μ 2 , Σ \theta = {P(C_1),P(C_2),\mu^1,\mu^2,\Sigma}je=P ( C1) ,P ( C2) ,m1 ,m2 ,Σ
Step 1 (Espérance-step) selon le modèleθ \thetaθCalculer la probabilité a posteriori des données non étiquetéesP θ ( C 1 ∣ xu ) P_\theta(C_1\mid x^u)Pje( C1∣Xu )
Pas 2(Pasmaximal) 更新模型:
P ( C 1 ) = N 1 + ∑ xu P ( C 1 ∣ xu ) NP\left(C_{1}\right)=\frac{N_{1}+\sum_{x^{u}} P\left(C_{1} \mid x^{u}\right)}{N }P( C1)=NN1+∑XtuP( C1∣Xtu )μ 1 = 1 N 1 ∑ xr ∈ C 1 xr + 1 ∑ xu P ( C 1 ∣ xu ) ∑ xu P ( C 1 ∣ xu ) xu \mu^{1}=\frac{1}{N_{1}} \sum_{x^{r} \in C_{1}} x^{r}+\frac{1}{\sum_ {x^{u}} P\left(C_{1} \mid x^{u}\right)} \sum_{x^{u}} P\left(C_{1} \mid x^{u}\right) x^{u}m1=N11Xr ∈C1∑Xr+∑XtuP( C1∣Xtu )1Xtu∑P( C1∣Xtu )XParmi eux
,NNN est le nombre total d'échantillons,N 1 N_1N1est dans la catégorie C 1 C_1C1nombre d'échantillons.Retour à l'étape 1
Remarque : L'algorithme finira par converger, mais les paramètres initialisés affecteront le résultat.
Q : Pourquoi l'algorithme EM est-il réalisable ? Quel est le support théorique derrière cela?
R :
1. Utiliser des données étiquetées pour maximiser la vraisemblance - solution analytique
log L ( θ ) = ∑ xr log P θ ( xr , y ^ r ) \log L(\theta)=\sum_{x^{r}} \log \textcolor{red}{P_{\theta}\left(x^{r}, \hat{y}^{r}\right)}journal _L ( je )=Xr∑journal _Pje( xr ,y^r )P θ ( xr , y ^ r ) = P θ ( xr ∣ y ^ r ) P ( y ^ r ) \textcolor{red}{P_{\theta}\left(x^{r}, \hat{y}^{r}\right) }=P_{\theta}\left(x^{r}\mid good{y}^{r}\right) P\left(\hat{y}^{r} \droit )Pje( xr ,y^r )=Pje( xr∣y^r )P(y^r )
2. Utiliser à la fois des données étiquetées et des données non étiquetées pour maximiser la vraisemblance -solution itérative
log L ( θ ) = ∑ xr log P θ ( xr ) + ∑ xu log P θ ( xu ) \log L(\theta)=\sum_{x^{r}} \log P_{\theta}\left(x^{r}\right)+\s um_{x ^{u}} \log \textcolor{blue}{P_{\theta}\left(x^{u}\right)}journal _L ( je )=Xr∑journal _Pje( xr )+Xtu∑journal _Pje( xtu )P θ ( xu ) = P θ ( xu ∣ C 1 ) P ( C 1 ) + P θ ( xu ∣ C 2 ) P ( C 2 ) \textcolor{blue}{P_{\theta}\left(x^{u}\right)}=P_{\theta}\left(x^{u} \mid C_{1}\right) P\left(C_{1}\right)+P _{\theta}\left(x^{u} \mid C_{2}\right) P\left(C_{2}\right)Pje( xtu )=Pje( xtu∣C1)P( C1)+Pje( xtu∣C2)P( C2)
xux^uXtu peux appartenir à la catégorieC 1 C_1C1ou C 2 C_2C2
Ensuite, M. Li Hongyi a présenté la séparation à faible densité.
La séparation à faible densité est un monde "noir et blanc", c'est-à-dire qu'il existe une ligne de démarcation très claire entre les deux catégories.
La méthode la plus simple de séparation à faible densité est l'auto-formation
Donné : Ensemble de données étiqueté { ( xr , y ^ r ) } r = 1 R \{(x^r, \hat{y}^r)\}^R_{r=1}{ ( xr ,y^r )}r = 1R, pas d'indice { ( xu ) } u = RR + U \{(x^u)\}^{R+U}_{u=R}{ ( xtu )}u = RR + U
répéter:
- Former un modèle f ∗ f^* à partir de données étiquetéesF∗
- Mettre f ∗ f^*F∗ APPLICATION À 无标签数据集,获得{ ( xu , yu ) } u = RR + U \{(x^u,y^u)\}^{R+U}_{u=R}{ ( xtoi ,ytu )}u = RR + U,C'est you^uyu est une pseudo étiquette
- Prenez des données de l'ensemble de données non étiqueté et ajoutez-les à l'ensemble de données étiqueté. (Remarque : vous pouvez définir les données non étiquetées que vous choisissez de retirer, ou vous pouvez attribuer des pondérations différentes à chaque donnée)
Q : Cette méthode est-elle utile pour les problèmes de régression ?
R : Ça ne marche pas. Étant donné que la régression est la valeur prédite, définissez une pseudo-étiquette yuy^uyu n'affecte pasf ∗ f^*F∗。
L'autoformation s'apparente aux modèles génératifs d'apprentissage semi-supervisé . La différence est :
- l'auto-formation est une étiquette dure (Hard label), c'est-à-dire que la catégorie doit être 0 ou 1. (soit noir, soit blanc)
- Le modèle de génération de l'apprentissage semi-supervisé est soft label (Soft label), c'est-à-dire que la catégorie peut être un nombre décimal compris entre 0 et 1, tel que : 0,3, 0,7, etc.
Régularisation basée sur l'entropie :
xu → θ ∗ → yux^u \rightarrow \theta^* \rightarrow y^uXtu→je∗→ytu
用tu ^ tuyuÉquation E ( yu ) = − ∑ mymu ln ( ymu ) E(y^u)=- \sum \limits_{m}y_m^u\ln(y^u_m)E ( ettu )=−m∑ymtuln(ymtu) peut évaluer la distributionyuy^uyLe degré de concentration de u . Nous voulonsE ( yu ) E(y^u)E ( etu )Plus c'est petit, mieux c'est.Par exemple, nous avons : L = ∑ xr C ( yr , y ^ r ) + λ ∑ xu E ( yu ) L = \textcolor{blue}{\sum_{x^{r}} C\left(y^{r}, \hat{y}^{r}\right) }+\lambda \textcolor{orange}{ \sum_{x^{u}} E\left(y^{u}\right) }L=Xr∑C( yr ,y^r )+jeXtu∑E( yu )
La partie bleuecorrespond aux données étiquetées etla partie orangeaux données non étiquetées.
Il existe également une méthode bien connue de séparation à faible densité, qui est le modèle de machine à vecteurs de support semi-supervisé (SVM semi-supervisé).Le professeur Li Hongyi a donné une brève conférence ici.
Le sujet suivant dans l'apprentissage semi-supervisé est l'hypothèse de lissage (Smoothness Assumption)
L'esprit de l'hypothèse de douceur est "celui qui est proche du vermillon est rouge, et celui qui est proche de l'encre est noir", c'est-à-dire qu'il est supposé que des x similaires ont la même étiquette y ^ \hat{y }y^. Une définition plus précise est :
- xxLa distribution de x n'est pas uniforme
- si x 1 x ^ 1X1 etx 2 x ^ 2X2 est très proche dans une zone à haute densité, alorsy ^ 1 \hat{y}^1y^1和y ^ 2 \hat{y}^2y^2 sont les mêmes.
Un exemple est le suivant :
x 1 x^1X1 etx 2 x ^ 2X2 sont reliés par un chemin à haute densité, ils ont donc la même étiquette ;
x 2 x ^ 2X2 etx 3 x ^ 3X3 ne peuvent pas être connectés par un chemin à haute densité, ils ont donc des étiquettes différentes.
Q : Comment faire en sorte que la machine effectue un apprentissage semi-supervisé basé sur l'hypothèse de fluidité ?
R : Il existe deux méthodes :
Regroupement, étiquetage Note
: En traitement d'images, si vous utilisez directement le regroupement d'images, l'effet n'est souvent pas bon. Une pratique courante consiste à utiliser un auto-encodeur profond pour extraire les caractéristiques de l'image avant le regroupement.Méthode basée sur
un graphique Construire un graphique : traiter tous les points de données comme un point sur le graphique. Sur le graphique, si deux points sont connectés, ils sont d'un seul type.
Par exemple : hyperliens vers des pages Web, citations vers des articles.
Q : Dans une méthode basée sur les graphes, comment construire un graphe ?
A : 1. Définir xix^iXje etxjx^jXLa similarité mesure s entre j ( xi , xj ) s(x^i, x^j)s ( xje ,Xj )
- Ajoutez des arêtes de deux manières :
- K voisin le plus proche (K voisin le plus proche), comme indiqué dans la figure de gauche ci-dessous, chaque point est désigné pour être connecté à ses K points les plus similaires
- e-Voisinage, comme indiqué à droite, chaque point est désigné pour être connecté à un point dont la similarité est supérieure à e
- Attribuez des poids aux arêtes et s ( xi , xj ) s(x^i, x^j)s ( xje ,Xj )proportionnel à
s ( xi , xj ) s(x^i, x^j)s ( xje ,Xj )peut être défini par la fonction de base radiale gaussienne (GRBF) :
s ( xi , xj ) = exp ( − γ ∥ xi − xj ∥ 2 ) s\left(x^{i}, x^{j}\right)=\exp \left(-\gamma\left\|x^{i}-x^ {j}\right\|^{2}\right)s( xje ,Xj )=exp( -c _∥∥Xje−Xj∥∥2 )
Q : Comment utiliser une méthode basée sur des graphes pour laisser la machine effectuer un apprentissage semi-supervisé ?
UN:
- Qualitativement :
dans les méthodes basées sur les graphes, les données étiquetées influencent leurs voisines et les étiquettes se propagent à travers le graphe.
Par exemple : Au départ, il n'y a qu'un point bleu et un point rouge Après propagation, une branche connexe est colorée en bleu, et une branche connexe est colorée en rouge.
- Quantitativement parlant :
Définissez le lissage des étiquettes sur le graphique :
S = 1 2 ∑ i , jwi , j ( yi − yj ) 2 = y TL y S=\frac{1}{2} \sum_{i, j} w_{i, j}\left(y^{i}-y^{j}\right)^{2}=\mathtt{y}^TL\mathtt{ y}S=21je , j∑wje , je( yje−yj )2=yT Ly
SSS agit sur toutes les données (avec ou sans étiquettes), et plus il est petit, plus il est lisse.
y = [ … yi … yj … ] T \mathtt{y}=[\ldots y^i \ldots y^j\ldots]^Ty=[ …yje…yj… ]T是( R + U ) (R+U)( R+U ) -vecteur dimensionnel
L = D − WL=DWL=D−W est le Laplacien du graphe (Graph Laplacian), qui est( R + U ) × ( R + U ) (R+U)\times(R+U)( R+U )×( R+U ) matrice
WWW est la matrice de poids,DDD est la matrice des degrés. WWpour l'image ci-dessus (ignorer les balises)W etJJD est la suivante :
La fonction de perte finale est la suivante :
L λ = ∑ xr C ( yr , y ^ r ) + λ S L_\lambda=\sum_{x^{r}} C\left(y^{r}, \hat{y}^{r}\right)+\textcolor{red}{\lambda S}Lje=Xr∑C( yr ,y^r )+λ S
équivaut à ajouter un terme de régularisationλ S \textcolor{red}{\lambda S}λ S
Remarque : L'opération de lissage n'a pas à agir sur la sortie du réseau de neurones, mais peut agir sur n'importe quelle couche du réseau de neurones.
Enfin, M. Li Hongyi a présenté la meilleure représentation, qui sera abordée dans Apprentissage non supervisé (P23).
L'esprit central de Better Representation est le suivant : éliminer l'ivraie et conserver l'essence, simplifier le complexe. C'est-à-dire une meilleure représentation par l'observation (facteur latent)
7. RNN
L'ordre de ces chapitres de RNN est un peu déroutant, et il est organisé ici dans l'ordre de l'apprentissage personnel.
Réseau neuronal récurrent (Partie I)(P20)
Tout d'abord, introduisez un problème d'application courant dans les tâches de traitement du langage naturel : le remplissage des emplacements
Remplissage de créneau :
l'utilisateur prononce une phrase, extrait les points clés et le remplit dans le créneau correspondant. Par exemple, remplissez "Taipei" pour "destination" et "2 novembre" pour "heure d'arrivée".
Bien sûr, ce problème peut être résolu avec un réseau de neurones à propagation directe.
Tout d'abord, un mot doit être représenté par un vecteur, qui peut être appelé vectorisation de mot, codage de mot ou incorporation de mot. L'encodage one-hot le plus simple (encodage one-hot, également appelé codage 1 sur N) est utilisé ici : il s'agit d'une longueur NNUn vecteur de N , seulement1 11 nombre vaut 1, les autresN − 1 N-1N−1 chiffre est tout 0. L'encodage à chaud rend chaque mot indépendant des autres mots dans leurs dimensions respectives.
Habituellement, ce NNN est la taille du vocabulaire. Pour les mots qui apparaissent en dehors du vocabulaire, une dimension "autre" supplémentaire peut être introduite.
Remarque : Voir P22 pour d'autres méthodes d'incorporation de mots.
Utilisez le réseau de neurones à propagation directe pour résoudre le problème de remplissage d'emplacement
Entrée : un mot (plus précisément, son vecteur)
Sortie : la distribution de probabilité que ce mot appartient à un certain emplacement
Par exemple : entrée "Taipei", sortie à laquelle il appartient y 1 y_1y1= probabilité de dest, appartenant à y 2 y_2y2= probabilité d'heure de départ
M. Li Hongyi a présenté RNN à partir de l'insuffisance du réseau neuronal à propagation directe et a expliqué son processus de fonctionnement avec des exemples
Problèmes avec le réseau neuronal à propagation directe :
Si l'entrée n'est pas "arriver à Taipei le 2 novembre" mais "quitter Taipei le 2 novembre", alors "Taipei" est la destination dans la première phrase et le lieu de départ dans la deuxième phrase.
Par conséquent, le réseau neuronal à propagation directe doit avoir une fonction de stockage pour se souvenir si le mot qui apparaît avant "Taipei" est "arriver" ou "partir", et RNN est né de cela. Ajouter des unités de stockage au réseau neuronal à propagation directe ( a 1 a_1
dans la figureun1、un 2 un_2un2), après l'exécution de chaque étape, la sortie de la couche cachée sera stockée dans un 1 a_1un1、un 2 un_2un2milieu. Lors de la saisie du mot suivant, il commencera par un 1 a_1un1、un 2 un_2un2Lire les données dans comme l'une des entrées.
Le même réseau comme celui-ci sera utilisé à plusieurs reprises, et le graphique de cycle sera étendu selon la séquence temporelle comme indiqué dans la figure ci-dessous :
tandis que la valeur dans l'unité de stockage sera mise à jour en continu, à partir de 1 a^1un1 changerun 2 un ^ 2un2 , à partird'un 2 un ^ 2un2 changerun 3 un ^ 3un3 ... la sortie du RNN n'est pas la même que la sortie du réseau neuronal à propagation directe en raison de l'existence de l'unité de mémoire.
Remarque : Pour plus de détails, veuillez consulter [Pytorch Official Tutorial] Construire RNN1 à partir de zéro - la tâche de classification du RNN au niveau lettre
En ce qui concerne la structure de boucle ici, il existe deux modes de boucle :
- Réseau Elman : l'unité de stockage stocke l'état de la dernière couche cachée au pas de temps précédent
- Jordan Network : l'unité de stockage stocke l'état de la couche de sortie au pas de temps précédent
La différence est illustrée dans la figure ci-dessous :
Il peut y avoir certaines variantes de RNN, telles que : RNN plus profond, RNN bidirectionnel, LSTM, GRU, etc.
RNN plus profond : le RNN à chaque pas de temps peut être très profond, avec plusieurs unités de stockage.
RNN bidirectionnel : après que deux RNN ont traité la phrase en avant et en arrière, la sortie correspondant au même mot est directement épissée pour obtenir la sortie du RNN bidirectionnel.
Parce que LSTM est très important, M. Li Hongyi se concentrera ensuite sur LSTM.
LSTM est une variante de RNN. Lorsqu'il s'agit de RNN, il fait généralement référence à LSTM.
Le cadre général de LSTM est le suivant :
- Porte d'entrée : L'entrée doit être écrite dans la cellule mémoire, mais elle doit d'abord passer par une porte d'entrée (porte d'entrée). La porte d'entrée a un signal de commande (ce signal de commande provient d'autres parties du réseau) pour contrôler la porte.Ce n'est que lorsque la porte est ouverte que la valeur d'entrée peut être écrite dans l'unité de stockage de mémoire.
- Porte de sortie : la valeur dans la cellule mémoire doit être sortie, mais uniquement lorsque la porte de sortie (porte de sortie) est ouverte, la valeur dans la cellule mémoire peut être sortie.
- Forget Gate : La valeur dans la cellule mémoire peut être formatée, et lorsque la porte Forget est ouverte, la valeur dans la cellule mémoire peut être effacée.
Q : Quand ces portes sont-elles ouvertes et quand sont-elles fermées ?
R : Le modèle apprend par lui-même.
LSTM introduit un élément de stockage de mémoire (c), avec 3 portes (Input Gate, Forget Gate, Output Gate), 4 entrées (zf z_f dans la figure ci-dessouszf、zi z_izje、zo z_ozo、zzz ), 1 sortie (aaun ).
Le processus est le suivant :
- zzz devient g ( z ) g(z)après transformationg ( z )
- zi z_izjeAprès avoir traversé la porte d'entrée (Input Gate), il devient f ( zi ) f(z_i)f ( zje)
- g (z) g(z)g ( z )与f ( zi ) f(z_i)f ( zje) multiplié parg ( z ) f ( zi ) g(z)f(z_i)g ( z ) f ( zje)
- zf z_fzfAprès avoir traversé la porte oubliée, elle devient f ( zf ) f(z_f)f ( zf) , et la valeur d'origineccMultipliez c pour devenir cf ( zf ) cf(z_f)c f ( zf)
- cf ( zf ) cf(z_f)c f ( zf)和g ( z ) f ( zi ) g(z)f(z_i)g ( z ) f ( zje) après l'action, la valeur ccdans la cellule mémoirec est mis à jour enc ' c'c′ , obtenir h ( c ′ ) h(c')après transformationh ( c′ )
- zo z_ozoAprès avoir traversé la porte de sortie (Output Gate), il devient f ( zo ) f(z_o)f ( zo)
- f ( zo ) f(z_o)f ( zo) eth ( c ′ ) h(c')h ( c′ )pour obtenir la sortiea = h ( c ′ ) f ( zo ) a=h(c')f(z_o)un=h ( c′ )f(zo)
Explication :
Généralement σ ( ⋅ ) \sigma(·)σ ( ⋅) Courbe en forme de S, c'est-à-dire la fonction sigmoïde, la sortie est comprise entre 0 et 1, indiquant le degré d'ouverture de la porte.
Afin de faciliter la compréhension, le professeur Li Hongyi a cité un autre exemple. Ensuite, il a expliqué xtx^t en détailXt与zf z_fzf、zi z_izje、zo z_ozo、zzLa relation entre z .
Pour la même entrée xt x_tXt, multiplié par différents poids W f W_fOf、W je W_iOje、WWW、W de W_oOodevient quatre valeurs différentes :
- zf = W fxtz^f=W_fx^tzF=OfXt , est l'entrée de la porte oubliée (Forget Gate), après avoir traversé la porte oubliée, elle devientf ( zf ) = σ ( zf ) = σ ( W fxt ) f(z^f)=\sigma(z^f)=\sigma(W_fx^t)f ( zf )=s ( zf )=s ( WfXt )
- zi = W ixtz^i=W_ix^tzje=OjeXt , est l'entrée de la porte d'entrée (Input Gate), après avoir traversé la porte d'entrée, elle devientf ( zi ) = σ ( zi ) = σ ( W ixt ) f(z^i)=\sigma(z^i)=\sigma(W_ix^t)f ( zje )=s ( zje )=s ( WjeXt )
- z = W xtz=Wx^tz=L xt est l'entrée réelle (différente de l'entrée de la porte d'entrée), qui devientg ( z ) g(z)g ( z )
- zo = W oxtz^o=W_ox^tzo=OoXt , est l'entrée de la porte de sortie (Output Gate), après avoir traversé la porte de sortie, elle devientf ( zo ) = σ ( zo ) = σ ( W oxt ) f(z^o)=\sigma(z^o)=\sigma(W_ox^t)f ( zo )=s ( zo )=s ( WoXt )
La correspondance des autres parties est illustrée dans la figure ci-dessous :
La partie entourée par la case rouge est la mise à jour de l'entrée et de la porte d'entrée, qui est chargée de juger s'il faut accepter une nouvelle entrée :
- ziz ^ jezje pèseW je W_iOje, plus le vecteur biais bi b_ibje, après la porte d'entrée, il devient it = σ ( W izi + bi ) i_t = \sigma(W_iz^i+b_i)jet=s ( Wjezje+bje)
- zzz fois le poidsW c W_cOc, plus le vecteur biais bc b_cbc, après tanh ( ⋅ ) \tanh(·)louche ( _) , devientc ~ t = σ ( W cz + bc ) \tilde{c}_t=\sigma(W_cz+b_c)c~t=s ( Wcz+bc) . ccicic est l'abréviation de la cellule ci-dessus, qui est une unité de stockage
- 把ça i_tjetet c ~ t \tilde{c}_tc~tMultiplication élément par élément (produit de Hadamard, opérateur ⊙ \odot⊙ ou∗ *∗ ), obtenez-le ∗ c ~ t i_t*\tilde{c}_tjet∗c~t, puis entrez dans la cellule
La partie entourée en bleu est la mise à jour de la porte d'oubli. Elle est chargée de juger s'il faut mettre à jour la valeur dans la cellule. Si elle est mise à jour, elle doit oublier la valeur précédente et écrire la nouvelle valeur :
- Le vecteur de stockage ct − 1 c_{t-1} de l'étape précédente est stocké dans la cellulect − 1
- zfz^fzf fois le poidsW f W_fOf, plus le vecteur biais bf b_fbf, après la porte oubliée, il devient ft = σ ( W fzf + bf ) f_t=\sigma(W_fz^f+b_f)Ft=s ( WfzF+bf)
- Dans la cellule, mettre ct − 1 c_{t-1}ct − 1et ft f_tFtMultipliez également par élément, puis avec le it ∗ c ~ t i_t*\tilde{c}_t que nous venons de mentionnerjet∗c~tL'addition devient un nouveau vecteur de stockage ct = ct − 1 ∗ ft + it ∗ c ~ t c_t=c_{t-1}* f_t+i_t*\tilde{c}_tct=ct − 1∗Ft+jet∗c~t
La partie entourée en orange est la mise à jour de la porte de sortie, qui est chargée de juger s'il faut sortir la valeur finale :
- nouveau ct c_tctPassez d'abord un tanh ( ⋅ ) \tanh(·)louche ( _) fonction, devienttanh ( ct ) \tanh(c_t)louche ( ct)
- zoz^ozo Wo W_oOo, plus le vecteur biais bo b_obo, après la porte de sortie, devient ot = σ ( W ozo + bo ) o_t=\sigma(W_oz^o+b_o)ot=s ( Wozo+bo)
- mettre tanh ( ct ) \tanh(c_t)louche ( ct) etot o_totMultipliez élément par élément pour obtenir le nouvel état de calque caché ht = ot ∗ tanh ( ct ) h_t=o_t*\tanh(c_t)ht=ot∗louche ( ct)
- État de la couche masquée ht h_thtGrâce à une fonction softmax, obtenez la sortie finale yt = softmax ( ht ) y_t=softmax(h_t)yt=soft m a x ( h _ _ _t)
Un peu plus compliqué, LSTM introduit le résultat ctc^t stocké dans Memory Cellct et état de la couche cachéehth^tht , formant un « judas ». Autrement dit, l'entrée d'origine est uniquementxtx^tXt , devient maintenant[ ct − 1 , ht − 1 , xt ] [c^{t-1}, h^{t-1}, x^t][ ct - 1 ,ht - 1 ,Xt ], alors :
- zf = W f [ ct − 1 , ht − 1 , xt ] z^f=W_f[c^{t-1}, h^{t-1}, x^t]zF=Of[ ct - 1 ,ht - 1 ,Xt ]est l'entrée de la porte oubliée
- zi = W je [ ct − 1 , ht − 1 , xt ] z^i=W_i[c^{t-1}, h^{t-1}, x^t]zje=Oje[ ct - 1 ,ht - 1 ,Xt ]est l'entrée de la porte d'entrée
- z = W [ ct − 1 , ht − 1 , xt ] z=W[c^{t-1}, h^{t-1}, x^t]z=W [ ct - 1 ,ht - 1 ,Xt ], est l'entrée réelle (qui n'est pas la même que l'entrée de la porte d'entrée)
- zo = W o [ ct − 1 , ht − 1 , xt ] z^o=W_o[c^{t-1}, h^{t-1}, x^t]zo=Oo[ ct - 1 ,ht - 1 ,Xt ]est l'entrée de la porte de sortie
Réseau neuronal récurrent (Partie II)(P21)
Puis sur le dernier P, continuez à parler du réseau de neurones cyclique, voici comment le RNN apprend.
La première est la fonction de perte.Voici juste un exemple pour dire que la fonction de perte est la somme des pertes d'entropie croisée de la valeur prédite et de la valeur réelle.
Alors comment s'entraîner, la méthode de descente de gradient est toujours utilisée, et la propagation vers l'arrière est utilisée, mais voici BPTT (Backpropogation through time):
Bien que RNN soit bon, il rencontrera quelques problèmes lors de la formation (explosion de gradient, disparition de gradient) Le professeur Li Hongyi a donné un exemple pour illustrer le problème de l'explosion de gradient.
Comme la surface d'erreur est trop raide, il est facile de s'envoler lors de la mise à jour des paramètres.
Ensuite, M. Li Hongyi a fourni des compétences de résolution.
Q : Quelle est la solution ?
UN:
- Clipping : lorsque la mise à jour du dégradé dépasse une certaine valeur, laissez-la être égale à cette valeur. Ce problème peut être atténué dans une certaine mesure.
- LSTM Peut résoudre la disparition du gradient, mais pas l'explosion du gradient.
Q : Pourquoi le gradient de fuite peut-il être résolu ?
R :
a. La valeur mémorisée et la valeur d'entrée sont ajoutées au lieu d'être multipliées.
b. L'influence des résultats de calculs précédents sur LSTM est toujours présente et ne disparaîtra que si la porte de l'oubli est fermée.
Gated Recurrent Unit (GRU) est plus simple que LSTM, avec seulement deux portes. Si le surajustement de LSTM est trop grave, vous pouvez essayer GRU.
Autres variantes : RNN dans le sens des aiguilles d'une montre, réseau récurrent structurellement contraint (SCRN)- Initialiser le RNN + ReLU général avec la matrice unitaire
Lorsque la matrice unitaire n'est pas utilisée, l'effet sigmoïde est meilleur que ReLU.
Le professeur Li Hongyi a parlé davantage des scénarios d'application de RNN.
Plusieurs à un : l'entrée est une séquence de vecteurs et la sortie n'est qu'un seul vecteur.
Par exemple:
- Analyse des sentiments : saisissez une phrase, l'attitude de sortie est "positive" ou "négative"
- Extraction de termes clés : saisissez un document et affichez ses mots clés
Plusieurs à plusieurs (Plusieurs à plusieurs):
- L'entrée et la sortie sont des séquences vectorielles, mais la sortie est plus courte.
Par exemple:
- Reconnaissance vocale (reconnaissance vocale): voix d'entrée, texte de sortie
- CTC (Classification temporelle connexionniste)
- L'entrée et la sortie sont des séquences vectorielles sans aucune restriction.
Par exemple:
- Traduction automatique
En plus des séquences, d'autres applications :
- Analyse syntaxique
Auto-encodeurs séquence à séquence (texte, parole)
- Chatbot
- Génération de sous-titres vidéo
- Génération de légende d'image
Modèle basé sur l'attention
- Compréhension écrite
- Réponse visuelle aux questions
- Réponse aux questions vocales
Plus de matériel d'apprentissage :
- L'efficacité déraisonnable des réseaux de neurones récurrents:http://karpathy.github.io/2015/05/21/rnn-effectiveness/
- Comprendre les réseaux LSTM:http://colah.github.io/posts/2015-08-Understanding LSTMs/
Enfin, M. Li Hongyi a décrit la relation entre RNN et l'apprentissage structuré.
RNN et apprentissage structuré vs
RNN, LSTM :
- RNN unidirectionnel ne peut pas considérer la séquence entière
- Le coût et l'erreur ne sont pas nécessairement liés
- profondeur
HMM, CRF, Perceptron structuré/SVM:
- Avec l'algorithme de Viterbi, toute la séquence peut être considérée (le RNN bidirectionnel peut surmonter)
- le coût est une borne supérieure de l'erreur
Le RNN et l'apprentissage structuré peuvent être combinés et profiter des avantages des deux.
Par exemple:
- Par exemple, CNN/LSTM/DNN + HMM HMM
implique : P ( x , y ) = P ( y 1 ∣ start ) ∏ l = 1 L − 1 P ( yl + 1 ∣ yl ) P ( end ∣ y L ) ∏ l = 1 LP ( xl ∣ yl ) P(x , y)=Left(y_{1} \mid start \right) \pro d\limits_{l=1}^{L-1} Gauche(y_{l+1} \mid y_{l}\right) Gauche(fin \mid y_{L}\right) \prod\limits_{l=1}^{L} \textcolor{#0000FF}{Gauche(x_{l}\mid y_{l}\right)}P ( x ,y )=P( y1∣commencer ) _ _ _ _l = 1∏L - 1P( yl + 1∣yje)P( fin _ _∣yL)l = 1∏LP( xje∣yje)
Le dernier élément peut être calculé avec RNN :
P ( xl ∣ yl ) = P ( xl , yl ) P ( yl ) = P ( yl ∣ xl ) P ( xl ) P ( yl ) \textcolor{#0000FF}{P\left(x_{l} \mid y_{l}\right)} = \frac{P(x_l,y_l)}{P( y_l)}=\ frac{\textcolor{#FF0000}{P(y_l\mid x_l)}P(x_l)}{\textcolor{vert}{P(y_l)}}P( xje∣yje)=P ( etje)P ( xje,yje)=P ( etje)P ( etje∣Xje) P ( xje)
Par exemple, P ( yl ∣ xl ) \textcolor{#FF0000}{P(y_l\mid x_l)}P ( etje∣Xje) peut être obtenu par RNN ;P ( yl ) \textcolor{green}{P(y_l)}P ( etje) peut être obtenue par comptage.- Annotation sémantique : LSTM bidirectionnel+CRF/SVM structuré
Enfin, M. Li Hongyi a utilisé GAN (Generative Adversarial Network) pour expliquer pourquoi l'apprentissage structuré est faisable.
La tendance future des réseaux de neurones pourrait être de devenir profonds et structurés. Ici, l'enseignant Li Hongyi a présenté un autre de ses cours - Apprentissage automatique et apprentissage profond et structuré (MLDS). Ce cours ne révise que légèrement le contenu de DNN et CNN, en se concentrant sur l'apprentissage en profondeur et l'apprentissage structuré.
Apprentissage non supervisé - Incorporation de mots(P23)
Le contenu de l'apprentissage semi-supervisé P22 a été écrit ci-dessus, je vais donc continuer à écrire P23 ici, en prenant l'incorporation de mots comme exemple pour parler d'apprentissage non supervisé.
Tout d'abord, M. Li Hongyi a présenté le codage 1 sur N et l'intégration de mots (Word Embedding)
Codage 1 sur N, également connu sous le nom de codage à chaud (codage à chaud), un vecteur représente un mot, une seule dimension est 1 et les autres dimensions sont 0.
Par exemple:
- pomme = [ 1 0 0 0 0]
- sac = [ 0 1 0 0 0]
- chat = [ 0 0 1 0 0]
- chien = [ 0 0 0 1 0]
- éléphant = [ 0 0 0 0 1]
Avantages : Simple et pratique
Inconvénients : Grande dimension, prend beaucoup de place et ne peut pas exprimer la relation entre deux mots. Par exemple, chat et chien sont tous deux des animaux, les deux mots doivent être relativement proches et la relation entre chat et sac doit être relativement éloignée, mais cette méthode de codage ne peut pas refléter cette relation.
Une méthode idéale est l'intégration de mots, qui réduit la dimensionnalité des mots et les intègre dans un espace vectoriel à haute latitude, de sorte que des mots similaires soient plus proches dans l'espace vectoriel.
Le processus de génération de vecteurs de mots n'est pas supervisé. Nous savons seulement que l'entrée est un tas de texte, mais nous ne savons pas ce que le réseau de neurones produira.
Q : Comment calculer l'incorporation de mots ?
R : L'encodeur automatique n'est pas réalisable, il peut être compris dans le contexte d'un vocabulaire.
Q : Comment utiliser le contexte ?
R : Il existe deux types de méthodes :
- Méthode basée sur le nombre (basée sur le nombre)
si le mot wi w_iwjeet wj w_jwjeapparaissent souvent ensemble, alors leur vecteur de mots V ( wi ) V(w_i)V ( wje) sommeV ( wj ) V(w_j)V ( wje) doit être proche. J'espère que le produit interne de deux vecteurs de motsV ( wi ) ⋅ V ( wj ) V(w_i)·V(w_j)V ( wje) ⋅V ( wje) avec le motwi w_iwjeet wj w_jwjeLe nombre d'occurrences réunies dans le même document N ij N_{ij}Nje jpertinent.
Une méthode couramment utilisée ici est : vecteur de gant- La méthode basée sur la prédiction
est basée sur wi − 1 w_{i-1}wje − 1wi w_iwje
Mot d'entrée wi − 1 w_{i-1}wje − 1Le codage 1 sur N, via le réseau neuronal, produit chaque mot sous la forme wi w_iwjeLa probabilite.
Vous pouvez sortir les neurones de la première couche cachée de ce réseau de neurones [ z 1 z 2 … ] [z_1 z_2 \ldots][ z1z2… ] , en l'utilisant comme le motwwLe vecteur mot de w représenteV ( w ) V(w)V ( w )
peut être développé davantage, selon les deux mots précédentswi − 2 w_{i-2}wje − 2、wi − 1 w_{i-1}wje − 1prédire wi w_iwje, les paramètres de chaque dimension sont communs (les lignes de même couleur dans la figure ci-dessous indiquent le même poids), sinon un mot aura deux vecteurs de mots .
Q : Comment s'entraîner aux méthodes basées sur la prédiction ?
A : Minimiser la perte d'entropie croisée de la valeur prédite et de la valeur cible. Il existe plusieurs variantes de structures de réseau, dont les plus courantes se répartissent en deux catégories :
- Le modèle de sac de mots continu (CBOW)
prédit les mots en fonction du contexte
- Skip gram
prédit son contexte étant donné un mot
Remarque : Le réseau de neurones ici n'est pas un DNN, généralement une seule couche cachée.
Enfin, M. Li Hongyi a présenté quelques phénomènes et applications intéressants dans l'intégration de mots, tels que l'analogie, l'intégration multilingue, l'intégration multi-domaines, l'intégration de documents, etc.