[PYTHON] Insoutenable manque d'attention dans le traitement du langage naturel

"Vous n'entendez que la dernière partie de mes mots."

En fait, cet article montre que non seulement les humains mais aussi les réseaux neuronaux étaient les mêmes.

Frustratingly Short Attention Spans in Neural Language Modeling

L'excuse est: «Parce que c'est suffisant pour prédire votre prochain mot», mais cela semble être la même chose dans les relations humaines et la recherche.

Dans ce volume, parallèlement à l’introduction des documents susmentionnés et d’autres documents connexes, je voudrais examiner le fait que seule la dernière personne est vraiment nécessaire et, si oui, pourquoi. ..

Les articles référencés sont gérés sur le GitHub suivant. Il est mis à jour quotidiennement, donc si vous êtes intéressé par les tendances de la recherche, veuillez faire Star & Watch! ..

arXivTimes ax.PNG

Qu'est-ce que l'attention

L'attention est une méthode permettant de se concentrer sur des points importants du passé (= Attention) lorsqu'il s'agit de données continues. L'image est que lorsque vous répondez à une question, vous faites attention à un mot-clé spécifique dans la question de l'autre personne. Comme le montre cet exemple, il s'agit d'une méthode largement utilisée dans le traitement du langage naturel.

La figure ci-dessous montre que lors de la prédiction de la prochaine couche cachée $ h ^ * $ (boîte rouge), les 5 dernières couches cachées ($ h_2-h_6 $) sont référencées. $ A_1-a_5 $ écrit sur la flèche de chaque couche cachée dans le passé devient "Attention", et il devient "poids" quel point dans le passé est important.

temp.png From Figure 1: Memory-augmented neural language modelling architectures.

Proposition dans l'article: Partageons le rôle du calque caché

Maintenant, avec l'avènement de cette Attention, le rôle joué par la couche cachée dans RNN a augmenté. Outre le rôle originel de «prédire le mot suivant», il doit également jouer un rôle d'Attention, c'est-à-dire «d'informations utiles pour prédire l'avenir». De plus, l'attention elle-même est calculée à partir de la couche cachée, vous devez donc également avoir l'information "si ce sont des informations qui devraient être notées à l'avenir".

En d'autres termes, la couche masquée joue les trois rôles suivants dans le RNN qui a introduit Attention.

  1. Stockage d'informations pour prédire le mot suivant
  2. Stockage des informations indiquant si elles doivent ou non être notées à l'avenir (calcul de l'attention)
  3. Stockage d'informations utiles pour les prévisions futures

Une situation que l'on peut appeler une opération unique dans un réseau neuronal. Ne vaut-il pas mieux partager un peu le travail? C'est ce que propose ce document.

temp2.png

Orange joue le rôle de (p) 1, vert (k) joue le rôle de 2 et bleu (v) joue le rôle de 3. Ce sont simplement une combinaison de vecteurs, qui sont implémentés en tant que x3 300 dimensions si l'original était de 100 dimensions.

Lorsque j'ai vérifié cela avec le corpus de Wikipedia et le corpus de livres pour enfants appelé Children's Book Test, le résultat était que l'effet était généralement plus élevé que le modèle existant, mais il est devenu clair lors de la vérification. Il y avait un fait.

Attention ne regarde-t-il que l'emplacement le plus récent?

image

Cette figure montre le poids de l'attention au moment de la prédiction, échantillonné au hasard à partir du corpus Wikipédia utilisé dans l'expérience. De la droite, il est de -1 à -15, mais -1 est un avant, puis deux, trois, et ainsi de suite, et plus la couleur est foncée, plus elle est importante.

Si vous regardez cela, vous pouvez voir que -1, c'est-à-dire le plus récent, est très important et n'a guère été mentionné depuis.

temp3.png

C'est un diagramme plus détaillé, mais vous pouvez voir que les points avec des poids élevés sont concentrés autour de -1 à -5. En fait, la taille de la fenêtre d'Attention (à quelle distance elle regarde) était de 5.

Cela signifie t-il ...?

temp4.png

C'est un RNN qui utilise le n-gramme ordinaire (*), et si seuls les 5 derniers sont attirés de toute façon, les 5 dernières couches cachées peuvent être utilisées telles quelles pour la prédiction.

h^*_t = tanh \left( 
W^N 
\begin{bmatrix}
 h^1_t \\ 
 \vdots \\
 h^{N-1}_{t-N+1} 
\end{bmatrix}
\right)

Extrait de l'équation13

En conséquence, on dit que la précision dépasse le RNN élaboré et que la précision est plus mince que la méthode proposée dans cette étude.

temp5.png (La valeur est la perplexité, le plus bas sera le mieux. Key-Value-Predict est la méthode proposée pour cette recherche, et 4 grammes est un modèle qui utilise simplement la couche cachée du passé)

Qu'est-ce que c'est!

asrhya.jpg depuis Shadow Hearts 2

Le rideau se ferme sous la forme de.

Deux problèmes qui créent l'insupportable manque d'attention

Tout d'abord, il y a deux problèmes possibles à cette fin.

Le problème avec la configuration du problème est que c'était une tâche qui ne nécessitait pas une longue dépendance au départ, c'était donc le résultat. C'était également le cas dans une étude précédemment signalée à Stanford par Deep Mind.

De Vers l'acquisition de la capacité à lire et à comprendre les phrases-Tendances de la recherche sur la compréhension des machines-.

machine-comprehension-9-638.jpg

On dit que Deep Mind a réussi à créer mécaniquement un ensemble de données d'apprentissage à partir de CNN News, mais lorsque j'ai vérifié ces données ...

machine-comprehension-11-638.jpg

C'est une histoire que j'ai pu submerger le réseau neuronal avec un modèle simple. Quand je l'ai recherché, il y avait peu de problèmes qui nécessitaient une longue dépendance et une compréhension du contexte, et même un modèle simple était capable d'enregistrer une précision suffisante.

machine-comprehension-12-638.jpg

En d'autres termes, dans ce cas également, c'était une tâche à laquelle il était possible de répondre suffisamment même avec un modèle simple, il est donc possible qu'une haute précision puisse être enregistrée même avec un modèle simple, et l'attention se situait dans une courte distance. Pour aborder ce point, des ensembles de données nécessitant un degré élevé de compréhension ont été récemment développés. [SQuAD] de Stanford (https://rajpurkar.github.io/SQuAD-explorer/) et [WikiText] de Salesforce (https://metamind.io/research/the-wikitext-long-term-dependency-language) -Un grand nombre d'ensembles de données tels que model-dataset /) ont été publiés l'année dernière seulement (y a-t-il des données japonaises ...?).

L'autre point est que les longues dépendances peuvent ne pas être correctement capturées. Cela peut être dû en partie au manque de données qui nécessite de telles dépendances comme décrit ci-dessus, mais il semble y avoir place à prendre en compte en termes de configuration du réseau et d'autres facteurs.

Récemment, la tendance est d'avoir une mémoire externe.

Des tentatives sont également faites pour modifier la structure afin de pouvoir saisir les dépendances à plus long terme.

Il s'agit d'une étude de la voix, et dans le cas de la voix, la densité de données est assez élevée (la musique normale a près de 40 000 données par seconde). Par conséquent, il est plus nécessaire de saisir la dépendance à long terme. En ce sens, la structure qui convient pour capturer la dépendance à long terme peut sortir en premier dans la voix. (Au début de cet article, il y a une phrase telle que "WaveNet, mais je pense que CNN ne peut toujours pas attraper une dépendance à long terme", et je me sens chaud.)

Le réseau proposé a pour rôle d'empiler les RNN en forme de pyramide et de prendre en charge une dépendance plus longue dans la partie supérieure. L'image est que les rôles sont divisés en fonction de la longueur de la dépendance en charge.

p4.PNG

Par ailleurs, une synthèse vocale utilisant ce modèle a également été proposée.

Des tentatives ont été faites pour explorer les structures cellulaires pour remplacer le LSTM, qui est souvent utilisé dans les RNN, mais des recherches ont montré que le LSTM, une version simplifiée de celui-ci, est assez bien fait et qu'il n'est pas facile de le dépasser. Il est montré.

Par conséquent, j'ai l'impression qu'il vaut mieux imaginer toute la configuration réseau, y compris l'externalisation de la mémoire.

De cette manière, des recherches sont toujours en cours à partir de différents points. Le développement au-delà de cette fin sera mis à jour régulièrement.

Recommended Posts

Insoutenable manque d'attention dans le traitement du langage naturel
Vérification des performances du prétraitement des données dans le traitement du langage naturel
Types de prétraitement dans le traitement du langage naturel et leur puissance
Traiter le nom de la carte Yugioh en langage naturel --Yugiou Data Science 2. PNL
[WIP] Pré-traitement des notes dans le traitement du langage naturel
Remplissage facile des données pouvant être utilisées dans le traitement du langage naturel
Python: traitement du langage naturel
RNN_LSTM2 Traitement du langage naturel
Python: apprentissage profond du traitement du langage naturel: principes de base
Python: Apprentissage en profondeur dans le traitement du langage naturel: Implémentation d'un système de sélection de phrases de réponses
Modèle utilisant un réseau neuronal convolutif dans le traitement du langage naturel
Vue d'ensemble du traitement du langage naturel et de son prétraitement des données
Traitement du langage naturel 1 Analyse morphologique
Traitement du langage naturel 2 similitude de mots
■ [Google Colaboratory] Prétraitement du traitement du langage naturel et janome
[Traitement du langage naturel] J'ai essayé de visualiser les remarques de chaque membre de la communauté Slack
Étudiez le traitement du langage naturel avec Kikagaku
100 traitements du langage naturel frappent le chapitre 4 Commentaire
100 Language Processing Knock Chapitre 1 en Python
Traitement du langage naturel pour les personnes occupées
[Traitement du langage naturel] Prétraitement avec le japonais
Logivan du langage artificiel et traitement du langage naturel (traitement du langage artificiel)
100 traitement du langage knock-59: analyse de la formule S
Résumé de l'installation de l'analyseur de traitement du langage naturel
Résumé du traitement multi-processus du langage de script
Dockerfile avec les bibliothèques nécessaires pour le traitement du langage naturel avec python
[Word2vec] Visualisons le résultat du traitement en langage naturel des avis des entreprises
Langage naturel: ChatBot Part2-Sequence To Sequence Attention
Réponses et impressions de 100 chocs de traitement linguistique - Partie 1
100 traitement du langage knock-91: Préparation des données d'analogie
Traitement du langage 100 knocks-44: Visualisation des arbres dépendants
100 traitement de langue knock-22: Extraction du nom de la catégorie
100 Knocking Natural Language Processing Chapitre 1 (Mouvement préparatoire)
100 Language Processing Knock-26: suppression du balisage accentué
Vous devenez ingénieur en 100 jours ――Jour 66 ――Programmation ――À propos du traitement du langage naturel
3. Traitement du langage naturel par Python 2-1. Réseau de co-occurrence
Apprenez les bases de la classification de documents par traitement du langage naturel, modèle de sujet
3. Traitement du langage naturel par Python 1-1. Word N-gram
J'ai essayé le traitement du langage naturel avec des transformateurs.
Statut de chaque système de traitement Python en 2020
Mémo de produits pratique autour du traitement du langage naturel
[Python] [Traitement du langage naturel] J'ai essayé le Deep Learning ❷ fait de toutes pièces en japonais ①
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
100 Commandes de traitement du langage Knock UNIX apprises au chapitre 2
100 Traitement du langage Knock Expressions régulières apprises au chapitre 3
Afficher le résultat du traitement de la géométrie en Python
100 Language Processing Knock-32 (utilisant des pandas): Prototype de verbe
Traitement du langage 100 knocks-45: Extraction de modèles de cas verbaux
100 traitement du langage knock-75 (en utilisant scicit-learn): poids de l'identité
100 traitements du langage frappent l'analyse morphologique apprise au chapitre 4
Profitons du traitement du langage naturel à l'aide de l'API COTOHA
100 traitements linguistiques frappent 03 ~ 05
100 coups de traitement linguistique (2020): 40
100 coups de traitement linguistique (2020): 32
100 coups de traitement linguistique (2020): 47
100 coups de traitement linguistique (2020): 22
100 coups de traitement linguistique (2020): 26
100 coups de traitement linguistique (2020): 34
100 coups de traitement linguistique (2020): 28