Approfondissement des meilleures pratiques en PNL – Apprendre langue

  • Sonia Leong Dessin De Manga - Manuel Pratique: Manuel Pratique. 101 Astuces Pour Apprendre Les Meilleures Techniques, Créer Vos Personnages Et Animer Vos Créations
    Binding : Taschenbuch, Label : LTA, Publisher : LTA, Format : Blaues Buch, medium : Taschenbuch, numberOfPages : 176, publicationDate : 2023-06-08, releaseDate : 2023-06-08, authors : Sonia Leong, translators : Marie-Noëlle Pichard, ISBN : 2299004505

Cet article donne un aperçu des meilleures pratiques pertinentes pour la plupart des tâches de traitement du langage naturel.

Mise à jour du 26 juillet 2017: Pour un contexte supplémentaire, la discussion de HackerNews à propos de ce post.

Table des matières:

Cet article regroupe les meilleures pratiques d'utilisation des réseaux de neurones dans le traitement du langage naturel. Il sera mis à jour périodiquement à mesure que de nouvelles informations deviennent disponibles et afin de suivre l'évolution de notre compréhension de Deep Learning pour NLP.

Il y a eu un courir blague Dans la communauté des PNL, un LSTM avec attention produira des performances de pointe pour toutes les tâches. Bien que cela ait été vrai au cours des deux dernières années, la communauté des PNL s'éloigne lentement de cette base de référence désormais standard pour se tourner vers des modèles plus intéressants.

Cependant, en tant que communauté, nous ne voulons pas passer (re) découvrir de manière indépendante les deux années à venir. suivant LSTM avec attention. Nous ne voulons pas réinventer des astuces ou des méthodes qui ont déjà fait leurs preuves. Alors que de nombreuses bibliothèques Deep Learning existantes codent déjà les meilleures pratiques pour travailler avec les réseaux de neurones en général, telles que les schémas d'initialisation, de nombreux autres détails, en particulier des considérations spécifiques à une tâche ou à un domaine, sont laissés au praticien.

Ce poste ne vise pas à garder une trace de l'état de l'art, mais plutôt à recueillir les meilleures pratiques pertinentes pour un large éventail de tâches. En d’autres termes, plutôt que de décrire une architecture particulière, cet article vise à recueillir les caractéristiques des architectures à la base. Bien que bon nombre de ces fonctionnalités soient très utiles pour faire évoluer les technologies de pointe, j'espère qu'une connaissance plus étendue de ces fonctionnalités conduira à des évaluations plus solides, à une comparaison plus significative des niveaux de base et à une inspiration en façonnant notre intuition de ce qui fonctionne.

Je suppose que vous connaissez les réseaux de neurones appliqués à la PNL (sinon, je recommande l'excellent apprêt de Yoav Goldberg) et que vous vous intéressez à la PNL en général ou à une tâche particulière. L'objectif principal de cet article est de vous familiariser avec les meilleures pratiques pertinentes afin que vous puissiez apporter une contribution utile le plus rapidement possible.

Je vais d'abord donner un aperçu des meilleures pratiques pertinentes pour la plupart des tâches. Je décrirai ensuite les pratiques pertinentes pour les tâches les plus courantes, en particulier la classification, l’étiquetage des séquences, la génération de langage naturel et la traduction automatique neurale.

Avertissement: Traiter quelque chose comme meilleur entrainement est notoirement difficile: Meilleur selon quoi? Et s'il y avait de meilleures alternatives? Ce post est basé sur ma compréhension (nécessairement incomplète) et mon expérience. Dans ce qui suit, je ne traiterai que des pratiques qui ont été signalées comme étant bénéfiques indépendamment par au moins deux groupes différents. Je vais essayer de donner au moins deux références pour chaque meilleure pratique.

Embeddings Word

L'incorporation de Word est sans doute la meilleure pratique la plus connue de l'histoire récente de la PNL. Il est bien connu que l’utilisation d’embeddages pré-formés est utile (Kim, 2014). La dimensionnalité optimale des mots incorporés dépend principalement d'une tâche: une dimensionnalité plus petite convient mieux à des tâches plus syntaxiques telles que la reconnaissance d'entités nommées (Melamud et al., 2016) ou le balisage de partie de la parole (POS) (Plank et al., 2016), alors qu'une dimensionnalité plus large est plus utile pour des tâches plus sémantiques telles que l'analyse des sentiments (Ruder et al., 2016).

Profondeur

Bien que nous n'allions pas atteindre les profondeurs de la vision par ordinateur pendant un certain temps, les réseaux de neurones en PNL se sont progressivement approfondis. Des approches de pointe utilisent désormais régulièrement des Bi-LSTM profonds, généralement constitués de 3 à 4 couches, par ex. pour le marquage POS (Plank et al., 2016) et le marquage du rôle sémantique (He et al., 2017). Les modèles pour certaines tâches peuvent être encore plus profonds, cf. Le modèle NMT de Google avec 8 couches d'encodeur et 8 couches de décodeur (Wu et al., 2016). Dans la plupart des cas, toutefois, les améliorations de performances du modèle plus profondes que deux couches sont minimes (Reimers & Gurevych, 2017).

Ces observations valent pour la plupart des problèmes de marquage de séquence et de prédiction structurée. Pour la classification, les modèles profonds ou très profonds ne fonctionnent bien qu'avec une entrée au niveau du caractère et les modèles superficiels au niveau des mots sont encore à la pointe de la technologie (Zhang et al., 2015; Conneau et al., 2016; Le et al. ., 2017).

Connexions de couche

Pour la formation de réseaux neuronaux profonds, certaines astuces sont essentielles pour éviter le problème de gradient en voie de disparition. Différentes couches et connexions ont été proposées. Ici, nous discuterons de trois: i) couches de route, ii) connexions résiduelles et iii) connexions denses.

Couches de route Les couches routières (Srivastava et al., 2015) sont inspirées par les portes d'un LSTM. Supposons d’abord un MLP à une couche, qui applique une transformation affine suivie d’une non-linéarité (g ) à son entrée ( mathbf x ):

( mathbf h = g ( mathbf W mathbf x + mathbf b) )

Une couche d’autoroute calcule alors la fonction suivante:

( mathbf h = mathbf t odot g ( mathbf W mathbf x + mathbf b) + (1- mathbf t) odot mathbf x )

où ( odot ) est la multiplication élémentaire, ( mathbf t = sigma ( mathbf W _T mathbf x + mathbf b _T) ) est appelé transformer porte, et ((1- mathbf t) ) est appelé le porter porte. Comme on peut le constater, les couches d’autoroutes ressemblent aux portes d’un LSTM en ce qu’elles porter certaines dimensions de l’entrée directement dans la sortie.

Les couches routières ont été principalement utilisées pour obtenir des résultats de pointe en matière de modélisation du langage (Kim et al., 2016; Jozefowicz et al., 2016; Zilly et al., 2017), mais ont également été utilisées pour: d'autres tâches telles que la reconnaissance de la parole (Zhang et al., 2016). La page de Sristava contient plus d'informations et de code concernant les couches d'autoroute.

Connexions résiduelles Les connexions résiduelles (He et al., 2016) ont d'abord été proposées pour la vision par ordinateur et ont été le facteur principal pour gagner ImageNet 2016. Les connexions résiduelles sont encore plus simples que les couches d'autoroute et apprennent la fonction suivante:

( mathbf h = g ( mathbf W mathbf x + mathbf b) + mathbf x )

qui ajoute simplement l'entrée de la couche en cours à sa sortie via une connexion raccourcie. Cette simple modification atténue le problème du gradient de disparition, car le modèle peut utiliser par défaut la fonction d'identité si la couche n'est pas bénéfique.

Connexions denses Plutôt que de simplement ajouter des couches de chaque couche à la suivante, les connexions denses (Huang et al., 2017) (prix du meilleur article à CVPR 2017) ajoutent des connexions directes de chaque couche à toutes les couches suivantes. Augmentons la sortie du calque (h ) et l'entrée du calque (x ) avec les indices (l ) indiquant le calque actuel. Les connexions denses alimentent ensuite la sortie concaténée de toutes les couches précédentes en tant qu'entrée vers la couche actuelle:

( mathbf h ^ l = g ( mathbf W[mathbfx^1; ldots; mathbfx^l] + mathbf b) )

où ([cdot; cdot]) représente la concaténation. Les connexions denses ont été utilisées avec succès en vision par ordinateur. Ils se sont également avérés utiles pour l'apprentissage multitâche de différentes tâches de la PNL (Ruder et al., 2017), tandis qu'une variante résiduelle qui utilise la sommation s'est révélée surperformer systématiquement les connexions résiduelles pour la traduction automatique neurale (Britz et al., 2017).

Abandonner

Alors que la normalisation par lots dans la vision par ordinateur a rendu d'autres régulateurs obsolètes dans la plupart des applications, le décrochage (Srivasta et al., 2014) est toujours le régularisateur idéal pour les réseaux de neurones profonds en PNL. Un taux d'abandon scolaire de 0,5 s'est avéré efficace dans la plupart des scénarios (Kim, 2014). Ces dernières années, des variations d'abandon telles que l'abandon adaptatif (Ba & Frey, 2013) et évolutif (Li et al., 2016) ont été proposées, mais aucune d'entre elles n'a été largement adoptée dans la communauté. Le principal problème qui entrave le décrochage dans la PNL est qu’il ne pourrait pas être appliqué à des connexions récurrentes, car les masques de regroupement agrégés mettraient effectivement à jour les intégrations au fil du temps.

Abandon récurrent Les abandons récurrents (Gal & Ghahramani, 2016) résolvent ce problème en appliquant le même masque de retrait à travers les pas de temps au niveau du calque (l ). Cela évite d'amplifier le bruit de perte tout au long de la séquence et conduit à une régularisation efficace pour les modèles de séquence. Des abandons récurrents ont été utilisés, par exemple, pour obtenir des résultats de pointe en matière d'étiquetage de rôle sémantique (He et al., 2017) et de modélisation du langage (Melis et al., 2017).

Apprentissage multitâche

Si des données supplémentaires sont disponibles, l'apprentissage multitâche (MTL) peut souvent être utilisé pour améliorer les performances de la tâche cible. Jetez un coup d'œil à ce billet de blog pour plus d'informations sur MTL.

Objectifs auxiliaires Nous pouvons souvent trouver des objectifs auxiliaires utiles pour la tâche qui nous tient à cœur (Ruder, 2017). Bien que nous puissions déjà prédire les mots environnants afin de pré-former les intégrations de mots (Mikolov et al., 2013), nous pouvons également l'utiliser comme objectif auxiliaire lors de la formation (Rei, 2017). Un objectif similaire a également été utilisé par (Ramachandran et al., 2016) pour les modèles séquence à séquence.

Couches spécifiques à une tâche Bien que l'approche standard de MTL pour NLP soit un partage de paramètres difficile, il est avantageux de permettre au modèle d'apprendre des couches spécifiques à une tâche. Cela peut être fait en plaçant la couche de sortie d'une tâche à un niveau inférieur (Søgaard & Goldberg, 2016). Une autre méthode consiste à créer des sous-espaces privés et partagés (Liu et al., 2017; Ruder et al., 2017).

Attention

L'attention est le plus souvent utilisée dans les modèles séquence à séquence pour prendre en compte les états du codeur, mais peut également être utilisée dans tout modèle de séquence pour examiner les états passés. En utilisant notre attention, nous obtenons un vecteur de contexte ( mathbf c _i ) basé sur des états cachés ( mathbf s _1, ldots, mathbf s _m ) pouvant être utilisé avec le état caché ( mathbf h _i ) pour la prédiction. Le vecteur de contexte ( mathbf c _i ) à la position est calculé comme une moyenne des états précédents pondérés par les scores d'attention ( mathbf a _i ):

( begin align begin split
mathbf c _i & = sum limits_j a_ ij mathbf s _j \
mathbf a _i & = text softmax (f_ att ( mathbf h _i, mathbf s _j))
end split end align )

La fonction d'attention (f_ att ( mathbf h _i, mathbf s _j) ) calcule un score d'alignement non normalisé entre l'état masqué actuel ( mathbf h _i ) et l'état masqué précédent. state ( mathbf s _j ). Dans ce qui suit, nous aborderons quatre variantes de l’attention: i) attention supplémentaire, ii) attention multiplicative, iii) attention personnelle et iv) attention valeur-clé.

Attention additive Le mécanisme d'attention initial (Bahdanau et al., 2015) utilise un réseau à feed-forward de couche à une seule couche pour calculer l'alignement d'attention:

(f_ att ( mathbf h _i, mathbf s _j) = mathbf v _a ^ top text tanh ( mathbf W _a[mathbfh_i; mathbfs_j]) )

où ( mathbf v _a ) et ( mathbf W _a ) sont des paramètres d’attention appris. De manière analogue, nous pouvons également utiliser les matrices ( mathbf W _1 ) et ( mathbf W _2 ) pour apprendre des transformations distinctes pour ( mathbf h _i ) et ( mathbf s _j ), qui sont ensuite additionnés:

(f_ att ( mathbf h _i, mathbf s _j) = mathbf v _a ^ top text tanh ( mathbf W _1 mathbf h _i + mathbf W _2 mathbf s _j) )

Attention multiplicative L'attention multiplicative (Luong et al., 2015) simplifie l'opération d'attention en calculant la fonction suivante:

(f_ att (h_i, s_j) = h_i ^ top mathbf W _a s_j )

La complexité de l’attention additive et multiplicative est similaire, bien que l’attention multiplicative soit plus rapide et plus efficace dans la pratique car elle peut être mise en œuvre plus efficacement à l’aide de la multiplication matricielle. Les deux variantes ont des performances similaires pour les petites dimensions (d_h ) des états du décodeur, mais l’attention additive fonctionne mieux pour les grandes dimensions. Une façon de pallier ce problème consiste à mettre à l'échelle (f_ att ( mathbf h _i, mathbf s _j) ) par (1 / sqrt d_h ) (Vaswani et al., 2017 ).

L'attention ne peut pas uniquement être utilisée pour traiter l'encodeur ou les états cachés antérieurs, mais également pour obtenir une distribution par rapport à d'autres fonctionnalités, telles que l'incorporation de mots d'un texte utilisé pour la compréhension en lecture (Kadlec et al., 2017). Cependant, l'attention ne s'applique pas directement aux tâches de classification qui ne nécessitent pas d'informations supplémentaires, telles que l'analyse des sentiments. Dans de tels modèles, l'état caché final d'un LSTM ou d'une fonction d'agrégation tel que le pooling maximal ou la moyenne est souvent utilisé pour obtenir une représentation de phrase.

Attention personnelle Sans aucune information supplémentaire, cependant, nous pouvons toujours extraire les aspects pertinents de la phrase en lui permettant de s'occuper d'elle-même en utilisant son propre attention (Lin et al., 2017). L’auto-attention, également appelée intra-attention, a été utilisée avec succès dans diverses tâches, notamment la compréhension de la lecture (Cheng et al., 2016), l’implication textuelle (Parikh et al., 2016) et la synthèse abstraite (Paulus et al., 2017).

Nous pouvons simplifier l’attention supplémentaire pour calculer le score d’alignement non normalisé pour chaque état caché ( mathbf h _i ):

(f_ att ( mathbf h _i) = mathbf v _a ^ top text tanh ( mathbf W _a mathbf h _i) )

Sous forme matricielle, pour les états cachés ( mathbf H = mathbf h _1, ldots, mathbf h _n ), nous pouvons calculer le vecteur d’attention ( mathbf a ) et le représentation finale de la phrase ( mathbf c ) comme suit:

( begin align begin split
mathbf a & = text softmax ( mathbf v _a text tanh ( mathbf W _a mathbf H ^ top)) \
mathbf c & = mathbf H mathbf a ^ top
end split end align )

Plutôt que d'extraire un seul vecteur, nous pouvons effectuer plusieurs bonds d'attention en utilisant une matrice ( mathbf V _a ) au lieu de ( mathbf v _a ), ce qui nous permet d'extraire une matrice d'attention ( mathbf A ):

( begin align begin split
mathbf A & = text softmax ( mathbf V _a text tanh ( mathbf W _a mathbf H ^ top)) \
mathbf C & = mathbf A mathbf H
end split end align )

En pratique, nous appliquons la contrainte d'orthogonalité suivante pour pénaliser la redondance et encourager la diversité des vecteurs d'attention sous la forme de la norme de Frobenius au carré:

( Omega = | ( mathbf A mathbf A ^ top – mathbf I | ^ 2_F )

Une attention similaire à plusieurs têtes est également utilisée par Vaswani et al. (2017).

Attention valeur-clé Enfin, l'attention de la valeur clé (Daniluk et al., 2017) est une variante récente de l'attention qui sépare la forme de la fonction en conservant des vecteurs séparés pour le calcul de l'attention. Il a également été jugé utile pour différentes tâches de modélisation de documents (Liu & Lapata, 2017). En particulier, l’attention valeur-clé divise chaque vecteur caché ( mathbf h _i ) en une clé ( mathbf k _i ) et une valeur ( mathbf v _i ): ([mathbfk_i; mathbfv_i] = mathbf h _i ). Les touches sont utilisées pour calculer la distribution de l'attention ( mathbf a _i ) en utilisant l'attention supplémentaire:

( mathbf a _i = text softmax ( mathbf v _a ^ top text tanh ( mathbf W _1 [mathbfk_i-L; ldots; mathbfk_i-1] + ( mathbf W _2 mathbf k _i) mathbf 1 ^ top)) )

où (L ) est la longueur de la fenêtre d’attention et ( mathbf 1 ) est un vecteur de uns. Les valeurs sont ensuite utilisées pour obtenir la représentation de contexte ( mathbf c _i ):

( mathbf c _i = [mathbfv_i-L; ldots; mathbfv_i-1] mathbf a ^ top )

Le contexte ( mathbf c _i ) est utilisé avec la valeur actuelle ( mathbf v _i ) pour la prédiction.

Optimisation

L'algorithme et le schéma d'optimisation sont souvent l'une des parties du modèle qui est utilisé tel quel et traité comme une boîte noire. Parfois, même de légères modifications de l’algorithme, par ex. La réduction de la valeur ( beta_2 ) dans Adam (Dozat & Manning, 2017) peut avoir une grande incidence sur le comportement d'optimisation.

Algorithme d'optimisation Adam (Kingma & Ba, 2015) est l'un des algorithmes d'optimisation les plus populaires et les plus largement utilisés. Il constitue souvent l'optimiseur idéal pour les chercheurs en PNL. On pense souvent qu'Adam surpasse clairement la descente de gradient stochastique à la vanille (SGD). Cependant, bien qu'il converge beaucoup plus rapidement que SGD, il a été observé que SGD avec recuit de taux d'apprentissage surpasse légèrement Adam (Wu et al., 2016). Des travaux récents montrent en outre que SGD avec une dynamique bien réglée surpasse Adam (Zhang et al., 2017).

Schéma d'optimisation Bien qu'Adam règle en interne le taux d'apprentissage pour chaque paramètre (Ruder, 2016), nous pouvons explicitement utiliser l'annelage de style SGD avec Adam. En particulier, nous pouvons effectuer un recuit du taux d’apprentissage avec redémarrage: nous fixons un taux d’apprentissage et formons le modèle jusqu’à la convergence. Nous réduisons ensuite de moitié le taux d’apprentissage et redémarrons en chargeant le meilleur modèle précédent. Dans le cas d'Adam, cela fait que l'optimiseur oublie ses vitesses d'apprentissage par paramètre et recommence à zéro. Denkowski & Neubig (2017) montrent qu'Adam avec deux redémarrages et que le recuit de la vitesse d'apprentissage est plus rapide et qu'il est meilleur que le SGD avec le recuit.

Assemblage

La combinaison de plusieurs modèles dans un ensemble en faisant la moyenne de leurs prédictions est une stratégie éprouvée pour améliorer les performances du modèle. Bien que prévoir avec un ensemble coûte cher au moment du test, les progrès récents en distillation nous permettent de compresser un ensemble coûteux dans un modèle beaucoup plus petit (Hinton et al., 2015; Kuncoro et al., 2016; Kim & Rush, 2016).

L'assemblage est un moyen important de garantir la fiabilité des résultats si la diversité des modèles évalués augmente (Denkowski & Neubig, 2017). Bien que l'efficacité de la vérification de différents points de contrôle d'un modèle (Jean et al., 2015; Sennrich et al., 2016) se soit avérée efficace, cela se fait au détriment de la diversité des modèles. Les taux d'apprentissage cycliques peuvent aider à atténuer cet effet (Huang et al., 2017). Toutefois, si les ressources sont disponibles, nous préférons regrouper plusieurs modèles formés de manière indépendante afin de maximiser la diversité des modèles.

Optimisation hyperparamètre

Plutôt que de prédéfinir ou d'utiliser des hyperparamètres standard, il suffit de régler les hyperparamètres de notre modèle pour obtenir des améliorations significatives par rapport aux niveaux de base. Les progrès récents de l'optimisation bayésienne en font un outil idéal pour l'optimisation en boîte noire des hyperparamètres dans les réseaux de neurones (Snoek et al., 2012) et bien plus efficace que la recherche sur grille très utilisée. Le réglage automatique des hyperparamètres d'un LSTM a conduit à des résultats de pointe dans la modélisation du langage, surpassant les modèles beaucoup plus complexes (Melis et al., 2017).

Astuces LSTM

Apprendre l'état initial Nous initialisons généralement les états LSTM initiaux avec un vecteur (0 ). Au lieu de corriger l'état initial, nous pouvons l'apprendre comme n'importe quel autre paramètre, ce qui peut améliorer les performances et est également recommandé par Hinton. Reportez-vous à cet article de blog pour une implémentation de Tensorflow.

Lier des embeddings d'entrée et de sortie Les intégrations d'entrée et de sortie représentent le plus grand nombre de paramètres du modèle LSTM. Si le LSTM prédit les mots comme dans la modélisation du langage, les paramètres d'entrée et de sortie peuvent être partagés (Inan et al., 2016; Press & Wolf, 2017). Ceci est particulièrement utile sur les petits jeux de données qui ne permettent pas d'apprendre un grand nombre de paramètres.

Gradient norme Clipping Une façon de réduire le risque d'explosion de gradients consiste à écrêter leur valeur maximale (Mikolov, 2012). Cela n'améliore toutefois pas les performances de manière constante (Reimers & Gurevych, 2017). Plutôt que de découper chaque gradient indépendamment, le découpage de la norme globale du gradient (Pascanu et al., 2013) apporte des améliorations plus significatives (une implémentation de Tensorflow est disponible ici).

Projection vers le bas Pour réduire davantage le nombre de paramètres de sortie, l'état masqué du LSTM peut être projeté à une taille plus petite. Cela est particulièrement utile pour les tâches comportant un grand nombre de sorties, telles que la modélisation du langage (Melis et al., 2017).

Dans ce qui suit, nous discuterons des meilleures pratiques spécifiques à une tâche. La plupart d'entre eux fonctionnent mieux pour un type de tâche particulier. Certaines d'entre elles peuvent encore être appliquées à d'autres tâches, mais doivent être validées avant. Nous aborderons les tâches suivantes: classification, étiquetage de séquence, génération de langage naturel (NLG) et, en tant que cas particulier de NLG, la traduction automatique neurale.

Classification

Plus que pour les tâches séquentielles, où les CNN n'ont que récemment trouvé application en raison d'opérations de convolution plus efficaces, les CNN ont été populaires pour les tâches de classification dans la PNL. Les meilleures pratiques suivantes concernent les CNN et capturent certains de leurs choix optimaux d'hyperparamètre.

Filtres CNN Combinaison de tailles de filtre proches de la taille de filtre optimale, par ex. (3,4,5) obtient les meilleurs résultats (Kim, 2014; Kim et al., 2016). Le nombre optimal de cartes de caractéristiques est compris entre 50 et 600 (Zhang et Wallace, 2015).

Fonction d'agrégation 1-max-pooling surpasse le pool moyen et (k ) – pool maximum (Zhang & Wallace, 2015).

Marquage de séquence

L'étiquetage de séquence est omniprésent dans la PNL. Bien que bon nombre des meilleures pratiques existantes concernent une partie particulière de l'architecture du modèle, les directives suivantes traitent des choix possibles pour la sortie du modèle et l'étape de prédiction.

Système de marquage Pour certaines tâches, qui peuvent affecter des étiquettes à des segments de texte, différents schémas de marquage sont possibles. Ceux-ci sont: BIO, qui marque le premier jeton dans un segment avec un B- balise, tous les jetons restants dans la plage avec un _I-_tag, et les jetons en dehors des segments avec un O- étiquette; IOB, qui est similaire à BIO, mais utilise seulement B- si le jeton précédent est de la même classe mais ne fait pas partie du segment; et IOBES, qui distingue en outre des entités à un seul jeton (S-) et le dernier jeton d'un segment (E-). L'utilisation d'IOBES et de BIO donne des performances similaires (Lample et al., 2017)

Couche de sortie CRF S'il existe des dépendances entre les sorties, comme dans la reconnaissance d'entité nommée, la couche softmax finale peut être remplacée par un champ aléatoire conditionnel à chaîne linéaire (CRF). Il a été démontré que cela apportait des améliorations cohérentes pour les tâches nécessitant la modélisation de contraintes (Huang et al., 2015; Max & Hovy, 2016; Lample et al., 2016).

Décodage contraint Plutôt que d'utiliser une couche de sortie CRF, le décodage sous contrainte peut être utilisé comme une approche alternative pour rejeter les séquences erronées, c'est-à-dire telles qu'elles ne produisent pas de transitions BIO valides (He et al., 2017). Le décodage sous contrainte présente l’avantage que des contraintes arbitraires peuvent être appliquées de cette manière, par ex. contraintes spécifiques à la tâche ou syntaxiques.

Génération de langage naturel

La plupart des meilleures pratiques existantes peuvent être appliquées à la génération de langage naturel (GNL). En fait, bon nombre des astuces présentées jusqu’à présent découlent des avancées de la modélisation du langage, la tâche la plus prototypique de la PNL.

Couverture de modélisation La répétition est un gros problème dans de nombreuses tâches de NLG car les modèles actuels ne permettent pas de se souvenir des résultats qu’ils ont déjà produits. La modélisation explicite de la couverture dans le modèle est un bon moyen de résoudre ce problème. Une liste de contrôle peut être utilisée, si elle est connue à l'avance, des entités à mentionner dans le résultat, par ex. ingrédients dans les recettes (Kiddon et al., 2016). Si l’attention est utilisée, nous pouvons garder trace d’un vecteur de couverture ( mathbf c _i ), qui est la somme des distributions d’attention ( mathbf a _t ) sur les pas de temps précédents (Tu et al. , 2016; voir et al., 2017):

( mathbf c _i = somme limite ^ i-1 _ t = 1 mathbf a _t )

Ce vecteur capture l'attention que nous avons portée à tous les mots de la source. Nous pouvons maintenant conditionner une attention supplémentaire sur ce vecteur de couverture afin d'encourager notre modèle à ne pas prêter attention aux mêmes mots:

(f_ att ( mathbf h _i, mathbf s _j, mathbf c _i) = mathbf v _a ^ top text tanh ( mathbf W _1 mathbf h _i + mathbf W _2 mathbf s _j + mathbf W _3 mathbf c _i) )

En outre, nous pouvons ajouter une perte auxiliaire qui capture le comportement d'attention spécifique à une tâche que nous souhaitons susciter: pour le NMT, nous souhaitons un alignement approximatif un à un; nous pénalisons donc le modèle si le vecteur de couverture final est supérieur ou inférieur à un à chaque indice (Tu et al., 2016). Pour résumer, nous voulons seulement pénaliser le modèle s'il assiste de manière répétée au même endroit (voir et al., 2017).

Traduction automatique neurale

Bien que la traduction neuronale (NMT) soit un exemple de NLG, le NMT reçoit une telle attention que de nombreuses méthodes ont été développées spécifiquement pour cette tâche. De même, de nombreuses meilleures pratiques ou choix d’hyperparamètres s’appliquent exclusivement à elle.

Incorporation de la dimensionnalité Les encapsulations 2048 dimensions offrent les meilleures performances, mais ne le font que de manière marginale. Même les imbrications à 128 dimensions fonctionnent étonnamment bien et convergent presque deux fois plus rapidement (Britz et al., 2017).

Profondeur d'encodeur et de décodeur Le codeur n'a pas besoin d'être plus profond que (2-4 ) couches. Les modèles plus profonds surpassent les modèles moins profonds, mais plus de (4 ) couches ne sont pas nécessaires pour le décodeur (Britz et al., 2017).

Directionnalité Les codeurs bidirectionnels surpassent de peu les codeurs unidirectionnels. Sutskever et al. (2014) ont proposé d'inverser la séquence source afin de réduire le nombre de dépendances à long terme. L'inversion de la séquence source dans les codeurs unidirectionnels est supérieure à celle de la contrepartie non inversée (Britz et al., 2017).

Stratégie de recherche de faisceau Les tailles de faisceau moyennes autour de (10 ​​) avec une pénalité de normalisation de longueur de (1.0 ) (Wu et al., 2016) offrent les meilleures performances (Britz et al., 2017).

Traduction de sous-mots Senrich et al. (2016) ont proposé de scinder les mots en sous-mots en fonction d'un codage par paire d'octets (BPE). BPE fusionne de manière itérative des paires de symboles fréquents, ce qui aboutit à la fusion de n-grammes de caractères fréquents dans un seul symbole, éliminant ainsi efficacement les mots hors vocabulaire. Alors qu'il était à l'origine destiné à gérer des mots rares, un modèle avec des sous-mots surpasse les systèmes de mots entiers, 32 000 constituant une taille de vocabulaire efficace pour les sous-mots (Denkowski & Neubig, 2017).

J'espère que cet article vous a aidé à démarrer votre apprentissage d'une nouvelle tâche de PNL. Même si vous en connaissez déjà la plupart, j'espère que vous avez encore appris quelque chose de nouveau ou actualisé vos connaissances en matière de conseils utiles.

Je suis sûr d'avoir oublié de nombreuses pratiques exemplaires qui méritent de figurer sur cette liste. De même, il existe de nombreuses tâches, telles que l'analyse, l'extraction d'informations, etc., sur lesquelles je ne connais pas suffisamment les recommandations. Si vous avez une meilleure pratique qui devrait figurer sur cette liste, faites-le moi savoir dans les commentaires ci-dessous. Veuillez fournir au moins une référence et votre identifiant pour l'attribution. Si cela devient très collaboratif, je pourrais ouvrir un référentiel GitHub plutôt que de collecter des retours ici (je ne pourrai pas accepter les PR soumis directement à la source HTML générée de cet article).

Crédit pour l'image de couverture va à Bahdanau et al. (2015).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *