Zoomers vs Boomers – Utilisation de transformateurs pour classer les utilisateurs de Twitter par génération et effectuer une analyse générationnelle
Nous voulions concevoir un modèle qui exploite les différences générationnelles à la fois dans le style de tweet textuel et les tendances des métadonnées (telles que la fréquence de tweet ou le nombre de mots). En outre, les récents développements révolutionnaires dans le traitement du langage naturel qui utilisent des modèles d’apprentissage profond appelés transformateurs () ont été exploités pour représenter des séquences sous forme de plongements, ou des vecteurs qui contiennent des informations contextualisées sur les mots et les phrases qu’ils représentent. Pour ces raisons, notre classificateur a affiné une version pré-formée du célèbre modèle de représentations d’encodeur bidirectionnel de Google (BERT) pour notre tâche de classification et a assemblé ses résultats avec nos métadonnées et les fonctionnalités générées. Notre modèle peut être divisé en deux étapes comme suit:
- Dans la première étape, un modèle BERT pré-formé à partir de la bibliothèque de transformateurs huggingface Python a été chargé avec une couche linéaire supplémentaire pour la classification. Ce modèle a été réglé pour optimiser la précision de la classification et les logits de classe et les incorporations de séquence résultants ont été utilisés comme caractéristiques pour l’étape suivante.
- Dans la deuxième étape, les fonctionnalités de métadonnées ont été utilisées aux côtés des incorporations et des logits produits par le modèle BERT réglé pour former des modèles classiques d’apprentissage automatique tels que les forêts aléatoires et les classificateurs boostés par gradient.
Étape 1: génération de logits et incorporations à partir de BERT
La bibliothèque huggingface en Python a fourni un accès à des modèles BERT pré-formés et affinés pour des applications spécifiques à des tâches qui ont été formées sur des milliards de documents. En particulier, BertForSequenceClassification fourni un module PyTorch composé de l’encodeur BERT avec une couche linéaire entièrement connectée ajoutée sur la sortie groupée pour la tâche de classification. Ainsi, nous n’avons eu qu’à charger le modèle, à l’entraîner pour maximiser la précision de la classification sur nos données de texte Twitter, et enfin à extraire ses logits prédits (le vecteur à la dernière couche du classificateur représentant des prédictions non normalisées) et les incorporations (les vecteurs de la couche précédant les logits représentant les informations contextualisées de chaque jeton). Les quatre logits extraits représentaient à quel point le modèle était sûr qu’un échantillon de dix tweets appartenait à chacune des quatre classes, et les plongements étaient des vecteurs qui représentaient grossièrement les tweets d’un profil dans son ensemble. Des vecteurs plus proches les uns des autres dans l’espace d’intégration représentaient des similitudes contextuelles.
Nous avons généré des logits et des plongements pour l’ensemble d’entraînement en le divisant en huit morceaux et en affinant un nouveau modèle sur sept morceaux à la fois. Chacun des huit modèles a été utilisé pour générer des incorporations et des logits pour le bloc de rétention. Cela a été fait pour éviter les fuites d’informations puisque le modèle avait vu les étiquettes des données sur lesquelles il a été formé et peut produire des logits trop sûrs ou des intégrations trop spécifiques s’ils ont également été utilisés pour la formation. Chaque modèle a été évalué par rapport au bloc de maintien après réglage sur les sept blocs d’entraînement. Les résultats de la dernière couche de sortie contenaient les logits du profil d’exclusion et les résultats de la couche précédente contenaient une incorporation unique pour chaque jeton. Le début d’une nouvelle séquence a été marqué par le premier [CLS] jeton de classification, et il a produit une incorporation qui était représentative de la séquence entière (). C’était l’incorporation qui a été extraite pour être utilisée comme fonctionnalités pour notre modèle assemblé.
Tout d’abord, les fonctions suivantes ont été définies pour régler le module BERT PyTorch et extraire les incorporations et les logits de la sortie du module:
Ensuite, après avoir importé les bibliothèques nécessaires et divisé notre ensemble de formation en 8 morceaux, BERT a été réglé sur 7 morceaux de formation à la fois, tronquant ou remplissant les tweets concaténés d’un profil à 512 jetons (maximum autorisé par BERT), pour générer des fonctionnalités pour chacun des 8 morceaux comme suit:
Une fois que les logits et les plongements ont été générés pour les huit morceaux de l’ensemble de formation, un classificateur BERT réglé final a été formé sur l’ensemble de la formation et utilisé pour générer des logits et des plongées pour l’ensemble de test. Les caractéristiques de l’ensemble de test ont été générées par la formation sur l’ensemble de l’ensemble de formation et ont évalué le classificateur comme suit:
Ce classificateur d’apprentissage en profondeur a atteint une précision de 50% sur l’ensemble de test seul, mais ce score a été amélioré en assemblant les fonctionnalités extraites avec nos métadonnées et d’autres fonctionnalités conçues à l’étape 2 du modèle.
Nous avons visualisé la séparabilité de nos intégrations de tweets en utilisant la réduction de dimensionnalité t-SNE. Comme illustré ci-dessous, les plongements BERT affinés réduits à deux dimensions ont déjà commencé à montrer un motif. En particulier, il y avait beaucoup de séparabilité entre les intégrations de génération Z et les intégrations de baby-boomers, tandis que les tweets des utilisateurs de génération X et de la génération Y produisaient des intégrations similaires.
Ces informations étaient corroborées par la matrice de confusion du classificateur BERT sur l’ensemble de test, illustrée ci-dessous. La génération Z avait la précision de classification la plus élevée, et il y avait le plus de confusion entre la génération Y et la génération X.
Étape 2: Ensemble de classificateurs
À ce stade, chaque échantillon de profil Twitter était étiqueté avec des fonctionnalités de métadonnées ainsi que quatre logits et 768 éléments d’intégration du classificateur BERT. Ces données combinées ont été utilisées comme entrée dans des algorithmes de classification d’apprentissage automatique classiques, que nous avons utilisés pour tenter d’obtenir une meilleure précision que le modèle texte uniquement. Après quelques ajustements hyperparamétriques, plusieurs modèles différents ont atteint des précisions qui ont atteint bien au milieu des années 50, y compris la régression logistique, les forêts aléatoires et le renforcement du gradient.
Nous avons ensuite utilisé l’importance des fonctionnalités des modèles de renforcement de gradient et de forêt aléatoire pour éliminer les fonctionnalités d’intégration qui n’étaient pas utiles. Parmi toutes les fonctionnalités d’intégration, seul un petit pourcentage qui a été signalé comme le plus important a été conservé. L’avantage était double: cela réduisait considérablement le temps de formation de notre modèle et augmentait également les performances.
Notre modèle final était un classificateur de renforcement de gradient plutôt simple basé sur la bibliothèque CatBoost, qui surpassait XGBoost et LightGBM pour cet ensemble de données particulier. La validation croisée a été utilisée pour régler la profondeur, et le nombre d’itérations a été augmenté tandis que le taux d’apprentissage a été diminué pour optimiser notre précision. Ce fut le résultat du modèle assemblé, qui a produit une précision de 59,76%:
D’autres approches basées sur la PNL qui impliquaient l’utilisation de n-grammes ont été considérées, qui ont créé des fonctionnalités utilisant les 1000 premiers jetons de un à quatre caractères les plus courants qui sont apparus dans les échantillons de tweet. Cette approche n’a pas été très fructueuse, car les logits et les intégrations du BERT ont surpassé toutes les fonctionnalités de n-gramme. Cela peut être dû à un ensemble clairsemé de n-grammes, et pourrait être amélioré en collectant plus d’échantillons de tweets auprès de différents utilisateurs; Cependant, il met également en évidence la puissance des transformateurs en tant qu’outils NLP, car BERT a pu produire des fonctionnalités séparables sur le même ensemble de tweets.