Bonjour et bienvenue.
Dans cette vidéo,
nous allons examiner comment appliquer les
réseaux neuronaux récurrents à la modélisation linguistique.
La modélisation linguistique est une passerelle vers de
nombreuses applications d'apprentissage profond passionnantes
telles que la reconnaissance vocale, la
traduction automatique et le sous-titrage d'images.
À son plus simple, Language Modeling est le processus
d'attribution de probabilités à des séquences de mots.
Ainsi, par exemple, un modèle de langue pourrait analyser
une séquence de mots et prédire
quel mot est le plus susceptible de suivre.
Donc, avec la séquence,
c'est « un » que vous voyez ici.
Un modèle de langue peut
prédire ce que pourrait être le mot suivant.
De toute évidence, il existe de nombreuses options pour le
mot qui pourrait être utilisé comme le suivant dans la chaîne.
Mais un modèle formé peut
prédire avec une probabilité
de 80 pour cent d'être correct que le mot
« exemple » est le plus susceptible de suivre.
Cela se résume à un problème d'analyse séquentielle des données.
La séquence de mots forme
le contexte et le mot le plus récent est les données d'entrée.
En utilisant ces deux informations,
vous devez générer à la fois un mot prédit
et un nouveau contexte qui contient le mot d'entrée.
Les réseaux neuronaux récurrents
conviennent parfaitement à ce type de problème.
À la première étape,
un réseau récurrent peut recevoir un mot en
entrée le long des contextes initiaux.
Il génère une sortie.
Le mot de sortie avec
une séquence actuelle de mots comme contexte
sera ensuite réintroduit dans
le réseau au cours de la deuxième étape de temps.
Un nouveau mot serait prédit et
ces étapes sont répétées jusqu'à ce que la phrase soit terminée.
Maintenant, regardons de plus près un
réseau LSTM pour modéliser le langage.
Dans ce réseau, nous utiliserons
un réseau RNN avec deux unités LSTM empilées.
Pour former un tel réseau,
nous devons passer chaque mot de la phrase
au réseau et laisser le réseau générer une sortie.
Par exemple, après avoir passé les mots,
« This » et « Is », si nous passons le mot,
« an » dans la troisième étape de temps,
nous nous attendons à ce que le réseau génère
le mot « example » comme sortie.
Mais notez que nous ne pouvons pas
facilement passer un mot au réseau.
Nous devons le convertir en un vecteur de nombres d'une manière ou d'une autre.
Nous pouvons utiliser Word Embedding à cette fin.
Examinons rapidement ce qui se passe dans Word Embedding.
Une façon intéressante de traiter les mots est à travers
une structure connue sous le nom d'Embedding Word.
Un mot Embedding est
un vecteur n-dimensionnel de nombres réels pour chaque mot.
Le vecteur est généralement grand,
par exemple 200 de longueur.
Vous pouvez voir à quoi cela pourrait ressembler
avec le mot « exemple » ici.
Vous pensez à Word Embedding comme
un type d'encodage pour le texte aux nombres.
Maintenant, la question est de
savoir comment trouver les valeurs appropriées pour ces vecteurs ?
Dans notre modèle RNN,
les vecteurs aussi connus sous
le nom de matrice du vocabulaire sont
initialisés aléatoirement pour tous les mots
que nous allons utiliser pour la formation.
Ensuite, pendant la formation du réseau récurrent,
les valeurs vectorielles sont mises à jour en fonction
du contexte dans lequel le mot est inséré.
Ainsi, les mots qui sont utilisés dans des contextes similaires
se retrouvent avec des positions similaires dans l'espace vectoriel.
Cela peut être visualisé à l'aide
d'un algorithme de réduction de dimensionnalité.
Jetez un oeil à l'exemple illustré ici.
Après avoir formé le RNN,
si nous visualisons les mots en
fonction de leurs vecteurs d'intégration,
les mots sont regroupés,
soit parce qu'ils sont synonymes, soit
qu'ils sont utilisés à des endroits similaires dans une phrase.
Par exemple, les mots
« zéro » et « none » sont proches sémantiquement,
il est donc naturel qu'ils soient rapprochés les uns des autres.
Bien que l'Italie et l'Allemagne ne soient pas synonymes,
ils peuvent être échangés en
plusieurs phrases sans déformer la grammaire.
Regardons maintenant le RNN que nous avons utilisé.
Imaginez que les données d'entrée sont
un lot avec une seule séquence de mots.
Pensez-y comme un lot qui comprend une seule phrase,
une phrase qui comprend 20 mots.
Supposons que la taille du vocabulaire des mots est de
10 000 mots et que la longueur
de chaque vecteur incorporant est de 200.
Nous devons rechercher ces 20 mots dans
la matrice d'intégration initialisée aléatoirement
, puis les alimenter dans la première unité LSTM.
S' il vous plaît noter qu'un seul mot à chaque étape de temps
est introduit dans le réseau et un mot serait la sortie.
Mais pendant 20 pas de temps,
la sortie serait de 20 mots.
Dans notre réseau, nous avons deux unités LSTM avec des
tailles cachées arbitraires de 256 et 128.
Ainsi, la sortie de
la deuxième unité LSTM serait une matrice de taille 20 par 128.
Maintenant, nous avons besoin d'un calque max doux pour
calculer la probabilité des mots en sortie.
Il écrase ce vecteur de 128 dimensions de
valeurs réelles à un vecteur de 10 000 dimensions,
qui est une taille de vocabulaire.
Cela signifie que la sortie du réseau à
chaque étape de temps comme un vecteur de probabilité de longueur 10.000.
Donc, le mot de sortie est celui
avec la valeur de probabilité maximale dans le vecteur.
Maintenant, nous pouvons comparer la séquence de
20 mots de sortie avec les mots de vérité au sol.
Enfin, calculer l'écart en
tant que valeur quantitative,
dite valeur de perte et
retour propager les erreurs dans le réseau,
et bien sûr, nous ne formerons pas
le modèle en utilisant une seule séquence.
Nous allons utiliser un lot de séquences
pour l'entraîner et calculer l'erreur.
Donc, au lieu de nourrir une séquence,
nous pouvons alimenter le réseau en plusieurs itérations,
peut-être même un lot de 60 phrases par exemple.
Maintenant, la question clé à poser est,
qu'apprend le réseau lorsque l'erreur est
propagée à chaque itération ?
Eh bien, comme indiqué précédemment,
les poids continuent à se mettre à jour en
fonction de l'erreur du réseau dans la formation.
Tout d'abord, la matrice d'intégration
sera mise à jour à chaque itération.
Deuxièmement, il y a un tas de matrices de poids liées
aux portes dans les unités LSTM qui seront changées.
Enfin, les pondérations liées au calque soft-max,
qui joue d'une manière ou d'une autre le rôle
de décodage des mots encodés dans le calque d'intégration.
Vous devriez maintenant avoir une bonne compréhension de la façon d'
utiliser LSTM pour la modélisation linguistique.
Merci d'avoir regardé cette vidéo.