Dans ce référentiel, nous formons trois modèles de langue sur le corps canonique de Penn Treebank (PTB). Ce corpus est divisé en ensembles de formation et de validation d'environ 929k et 73k jetons, respectivement. Nous mettons en œuvre (1) un modèle de trigramme traditionnel avec une interpolation linéaire, (2) un modèle de langage probabiliste neuronal comme décrit par (Bengio et al., 2003), et (3) un réseau neuronal récurrent régularisé (RNN) avec des unités de mémoire à long terme (LSTM) suivant (Zaremba et al., 2015). Nous expérimentons également une série de modifications du modèle LSTM et réalisons une perplexité de 92,9 sur l'ensemble de validation avec un modèle multicouche.
Dans la tâche de classification des sentiments de Sentiment Treebank de Stanford, nous avons un corpus de phrases prélevées à partir de critiques de films. Chaque phrase a été étiquetée soit positive, négative ou neutre; Nous suivons (Kim, 2014) en supprimant les exemples neutres et en formulant la tâche en tant que décision binaire entre les phrases positives et négatives.
Pour chaque variante de modèle, nous formalisons la prédiction
pour le cas de test
comme

où
est une fonction d'activation,
sont nos poids savants,
est notre vecteur de fonctionnalité pour la saisie
, et
est un vecteur de biais. Notez que dans cet ensemble de problèmes, 

pour tous
Étant donné que nous ne considérons que des entrées de sentiment positives et négatives dans l'ensemble de données SST-2. Nous utilisons Pytorch pour toutes les implémentations de modèles, et tous les modèles sont formés pour 10 époques chacun en utilisant des lots de taille 10, un taux d'apprentissage de 1E-4, l'optimiseur ADAM et la fonction de perte de vraisemblance de logarition négative. La seule exception à cette configuration était pour les Bayes naïfs multinomiaux, qui était adapté à une époque avec un paramètre d'apprentissage
= 1,0.
Laisser 

être le vecteur de comptage des fonctionnalités pour le cas de formation
avec étiquette de classification
.
est l'ensemble des fonctionnalités, et
représente le nombre d'occurrences de fonctionnalité
dans le cas de formation
. Définir les vecteurs de comte de
comme
=
+
, pour le paramètre de lissage
. Nous suivons Wang et Manning pour binariser les dénombrements;
= 
. En ce qui concerne l'équation (1),
est le ratio log-co-notage entre le nombre d'exemples positifs et négatifs,
= log (
/ /
) où
et
sont le nombre de cas de formation positive et négative dans l'ensemble de données de formation,
est le nombre d'occurrences d'entrée
, et
est une fonction d'indicateur binaire qui mappe
à 1 s'il est supérieur à 0 et 0 autrement. Nous considérons uniquement les unigrammes comme des fonctionnalités.
Nous apprenons des matrices de poids et de biais
et
tel à optimiser

où
est
- Vector dimensionnel représentant des dénombrements en unigramme de sacs de mots pour chaque échantillon de formation. Dans notre implémentation, nous représentons
et
avec une seule couche entièrement connectée, qui mappe directement à une couche de sortie de deux unité sous activation sigmoïde.
Dans l'architecture CBOW, chaque mot dans une entrée de phrase de la longueur du mot
est mappé à un
- Vector d'incorporation dimensionnel. Les vecteurs d'intégration pour tous les mots sont moyennés pour produire un seul vecteur de fonctionnalité
Cela représente toute l'entrée. En particulier,

où 

et 

, et
=
pour tous
sont les dimensions de l'intégration de la phrase et des intérêts des mots, respectivement. Ce codage
est ensuite transmis dans une seule couche entièrement connectée qui mappe directement à deux unités de sortie, représentant des classes de sortie, sous l'activation de Softmax.
Laisser 

être le
-Le vecteur de mot dimensionnel correspond au
-th mot dans la phrase d'entrée. Après avoir rembourré toutes les phrases dans un lot d'entrée sur la même longueur
, où
est la phrase de longueur maximale de toutes les phrases du lot, chaque phrase est ensuite représentée comme

où
est l'opération de concaténation. Laisser
représenter la concaténation des mots
,
, ...,
. Dans les réseaux de neurones convolutionnels, nous appliquons des opérations de convolution 

Avec la taille du filtre
Pour produire des caractéristiques, où la taille du filtre est effectivement la taille de la fenêtre des mots à condamner. Laisser
être une fonction générée par cette opération. Alors

où
est un terme biais et
est la fonction d'unité linéaire rectifiée (RELU). Application de la taille de la longueur du filtre
sur toutes les fenêtres possibles des mots de notre phrase d'entrée produit la carte des fonctionnalités

Dans notre mise en œuvre, nous pouvons convoquer des tailles de filtres 

puis concaténer les caractéristiques de chacun
en un seul vecteur. Nous appliquons une opération de regroupement maximum sur le temps (Collobert et al, 2011) à ce vecteur de cartes de fonctionnalités concaténées, indiquées
et obtenir
= Max (
). Nous appliquons ensuite l'abandon avec
= 0,50 à
Comme la régularisation mesure contre le sur-ajustement, passez-le dans une couche entièrement connectée et calculez le softmax sur la sortie.
Enfin, nous avons également mis en œuvre avec une série de modifications à l'architecture CNN pour donner une légère amélioration des performances sur l'ensemble de données SST-2. Dans cette implémentation, nous utilisons les vecteurs pré-formés du gant de Stanford (Pennington et al., 2014), nous apportons ces changements:
Après (Kim, 2014), nous utilisons deux copies de la table d'intégration de mots pendant les étapes de convolution et de pool maximum - une qui est non statique ou mise à jour pendant la formation en tant que module régulier dans le modèle, et un autre qui est omis de l'optimiseur et conservé comme statique tout au long de la formation. Dans la passe avant du modèle, ces deux ensembles d'incorporation sont concaténés ensemble le long de la dimension «canal», puis sont passés dans les trois couches convolutionnelles en tant que tenseur unique, avec deux valeurs pour chacune des 300 dimensions dans le modèle de gant.
Après avoir produit le vecteur de caractéristique combiné représentant les fonctionnalités en aval Max des trois noyaux convolutionnels, nous ajoutons simplement le nombre de mots non ramené de l'entrée en une seule dimension supplémentaire, produisant un tenseur de 301 dimensions qui est ensuite mappé à la sortie de 2 unités. Du point de vue de l'ingénierie, nous constatons que cela améliore légèrement les performances de l'ensemble de données SST-2, où, en moyenne, les phrases positives sont légèrement plus longues que celles négatives - 19,41 mots contre 19,17. Il n'est pas clair si cela se tiendrait sur différents ensembles de données, ou s'il est spécifique au SST-2. (Bien qu'il ne soit pas non plus clair que cela ne serait pas, et semble impliquer une question intéressante de corpus-linguistique - les phrases «positives» sont-elles généralement plus longues que celles «négatives»?)
En plus des deux modifications décrites ci-dessus, nous avons également expérimenté un large éventail d'autres modifications de l'architecture CNN, notamment:
Combinant le modèle CBOW avec l'architecture CNN en concaténant les vecteurs CNN maxpooled avec le vecteur CBOW moyen avant de mapper aux unités de sortie finales.
Remplacé les intégres des gants par les intégres Googlenews (Mikolov et al., 2013). Cette idée est venue de l'idée qu'il pourrait y avoir une spécificité de domaine utile pour PTB car ces intérêts ont été formés sur des articles de presse.
Implémenté les intérêts «multicanaux» tels que décrits par (Kim, 2014) dans le contexte des architectures CNN. Au lieu d'utiliser simplement une seule couche d'intégration qui est mise à jour pendant l'entraînement, la matrice de poids pré-formée est copiée en deux couches d'intégration distinctes: une qui est mise à jour pendant l'entraînement, et une autre qui est omise de l'optimiseur et autorisée à rester inchangée pendant l'entraînement. Au cours d'un mot de passe avant, les indices de mots sont mappés à chaque tableau séparément, puis les deux tenseurs sont concaténés le long de la dimension d'incorporation pour produire un tenseur d'intégration à 600 dimensions pour chaque jeton.
Expérimenté avec différentes approches du lot. Au lieu de modéliser le corpus comme une seule séquence ininterrompue pendant la formation (comme avec BPTTIterator de TorchText), nous avons essayé de diviser le corpus en phrases individuelles, puis de produire des cas de formation séparés pour chaque jeton dans chaque phrase. Par exemple, pour la phrase «j'aime les chats noirs», nous avons produit cinq contextes:
un. " <SOS> i"
né " <SOS> j'aime"
c. " <SOS> j'aime le noir"
d. " <SOS> j'aime les chats noirs"
e. " <SOS> j'aime les chats noirs <EOS> "
Et le modèle est formé pour prédire le dernier jeton dans chaque contexte au pas de temps T des premiers jetons T -1. Nous avons utilisé la fonction pack_padded_sequence de Pytorch pour gérer les entrées de longueur variable au LSTM. Pratiquement, cela était attrayant car il est plus facile d'ingérer une gamme plus large de fonctionnalités du contexte avant un mot - par exemple, il devient facile d'implémenter les LSTM bidirectionnels avec un passage à la fois en avant et en arrière sur le contexte T -1, qui, à notre connaissance, serait difficile ou impossible sous le régime de formation original appliqué par BPTTIterator . Nous avons réalisé après avoir essayé cela, cependant, qu'il ne sera jamais compétitif avec la représentation continue par BPTTIterator du corpus parce que les phrases du corpus sont regroupées par article - et donc également à un niveau thématique / conceptuel. Cela signifie que le modèle peut apprendre des informations utiles à travers les limites de la phrase sur le type de mot qui devrait venir ensuite.
Expérimenté avec différentes stratégies de régularisation, telles que la variation des pourcentages d'abandon, l'application de décrochage aux couches d'intégration initiales, etc.
Aucune de ces modifications ne s'est améliorée sur le LSTM initial unique, 1000 unités. Notre modèle le plus performant était celui décrit dans la section 3.4. Les perplexités que nous avons réalisées avec chacun de nos modèles de section 3 sont décrites dans le tableau 1.
| Modèle | Perplexité |
|---|---|
| Trigramme linéairement interpolé | 178.03 |
| Modèle de langue neuronale (5 grammes) | 162.2 |
| LSTM à 1 couche | 101.5 |
| Connexions LSTM + à 3 couches | 92.9 |
Bien que le LSTM multicouche avec les connexions bat la ligne de base LSTM simple, nous n'avons pas pu reproduire les performances de perplexité de validation 78,4 décrites par (Zaremba et al., 2015) en utilisant le même corpus et les architectures similaires. À savoir, lors de l'utilisation des configurations décrites dans l'article (les architectures à 2 couches, 650 et 1500 unités), nos modèles surfigmentent dans 5-6 époques, même lors de l'application de décrochage d'une manière qui correspondait à l'approche décrite dans l'article. En revanche, (Zaremba et al., 2015) mentionnent la formation pour jusqu'à 55 époques.)
Nous avons formé quatre classes de modèles - un modèle de trigramme traditionnel avec une interpolation linéaire, avec des poids apprises par maximisation des attentes; un modèle de langage de réseau neuronal simple suivant (Bengio et al., 2003); une ligne de base LSTM à couche unique; et une extension de ce modèle qui utilise trois couches de tailles différentes, sauter des connexions pour les deux premières couches et la régularisation comme décrit par (Zaremba et al., 2015). Le modèle final atteint une perplexité de 92,9, contre 78,4 et 82,7 rapportés par (Zaremba et al., 2015) en utilisant des hyperparamètres à peu près équivalents.
Y. Bengio, R. Ducharme, P. Vincent, C. Jauvin. «Un modèle de langue probabiliste neuronale.» Journal of Machine Learning Research 3, pages 1137–1155. 2003.
D. Jurafsky. «Modélisation du langage: introduction aux n-grammes.» Conférence. Université de Stanford CS124. 2012.
Y. Kim. «Réseaux de neurones convolutionnels pour la classification des phrases.» Actes de la Conférence de 2014 sur les méthodes empiriques en matière de traitement du langage naturel (EMNLP), pages 1746–1751. 2014.
T. Mikolov, K. Chen, G. Corrado, J. Dean. «Estimation efficace des représentations des mots dans l'espace vectoriel.» ARXIV PRÉALLAGE ARXIV: 1301.3781. 2013.
J. Pennington, R. Socher, C. Manning. "Gant: vecteurs mondiaux pour la représentation des mots." Actes de la Conférence de 2014 sur les méthodes empiriques en matière de traitement du langage naturel (EMNLP), pages 1532-1543. 2014.
W. Zaremba, I. Sutskever, O. Vinyals. 2015. «Régularisation du réseau neuronal récurrent». » ARXIV PRÉALLAGE ARXIV: 1409.2329. 2015.