3 janvier 2022

Comment un TabTransformer pré-entraîné se comporte dans le monde réel.

Les contributeurs
Aucun élément trouvé.
S'abonner à la newsletter
Partager cet article

Nous avons récemment écrit un billet de blog sur le TabTransformer et ses idées fondamentales. C'est un nouveau modèle d'apprentissage profond prometteur pour les données tabulaires, mais nous voulions aussi des résultats sur les données et les problèmes que nous rencontrons sur le terrain.

Prix du Boston House avec de la mayonnaise

Les données sur lesquelles nous avons effectué nos tests proviennent de la Fédération belge des notaires (FedNot), qui possède un vaste ensemble de données sur les prix des logements en Belgique. Il s'agit donc d'un peu comme les données sur les prix de l'immobilier à Boston, un ensemble de données classique pour l'apprentissage automatique, mais en mieux et en belge.

Les données proviennent de différentes sources. Nous avons combiné des ensembles de données publiques comme OpenStreetMap avec des bases de données internes pseudonymisées de FedNot.

Pour prédire la valeur d'une maison donnée, nous utiliserons un sous-ensemble des caractéristiques disponibles :

  • Description physique de la maison: hauteur du bâtiment, surface de la parcelle, surface du bâtiment, type de bâtiment (ouvert, semi-ouvert, fermé)
  • Un élément de la dimension temporelle: les jours écoulés entre la vente de la maison et la date de référence du 1er janvier 2014.
  • Informations sur l'emplacement: coordonnées géographiques, code postal, province, région

Pour nos expériences ultérieures, nous échantillonnons les données et les divisons en trois parties :

  1. 5000 lignes pour un ensemble d'apprentissage supervisé.
  2. 3000 lignes pour l'ensemble de test sur lequel nous évaluerons les modèles.
  3. Quelque 300 000 lignes pour l'apprentissage non supervisé . Cela signifie que nous ignorons les prix pour cette partie. Si vous vous sentez mal à l'aise à cause de cet ensemble de données surprenant, lisez ce qui suit.

Un modèle pas comme les autres

Voyons maintenant ce qu'est ce T a b T r a n s f o r m e r .

L'architecture TabTransformer.(papier)

Le principal argument de vente de ce modèle est qu'il contient des blocs de transformation. Tout comme dans le NLP, les blocs de transformation apprennent des enchâssements contextuels. Cependant, dans ce cas, les entrées ne sont pas des mots mais des caractéristiques catégorielles.

De plus, vous pouvez entraîner le transformateur avec les mêmes techniques non supervisées qu'en NLP ! (Voir GPT, BERT, ...) Nous utiliserons les 300k exemples non étiquetés pour pré-entraîner les couches du transformateur (donc, sans le prix). Cela devrait améliorer les performances lorsque nous n'avons que peu de données étiquetées.

Vous pouvez en savoir plus sur ce modèle dans notre précédent article de blog.

Grâce à Phil Wang, il existe une implémentation de l'architecture du modèle TabTransformer dans PyTorch. Nous allons l'utiliser.

Il ne reste plus qu'à mettre en œuvre la phase de pré-entraînement non supervisée. Dans l'article sur TabTransformer, ils proposent de suivre l'approche d'ELECTRA.

Adaptation de la préformation ELECTRA pour le transformateurTab.

C'est ce qu'il faut faire pour utiliser la technique de préformation Electra :

  1. Prenons le module de transformation que nous voulons pré-entraîner
  2. Alimentez-le avec les données (non étiquetées), MAIS modifiez certains des mots d'entrée.
  3. Nous ajoutons maintenant un classificateur binaire au module de transformation, qui apprend à repérer les tokens qui ont été modifiés et ceux qui sont restés originaux.

Cette approche est également appelée "détection des jetons remplacés".

Electra étant proposé comme une technique de pré-entraînement des modèles linguistiques, l'article sur TabTransformer remarque à juste titre que nous devons apporter deux modifications à la technique d'origine.

À l'étape 2 d'Electra, ils entraînent un modèle de générateur personnalisé pour générer des jetons de remplacement plausibles. En effet, il est trop facile de détecter un mot remplacé par un mot aléatoire.

Toutefois, pour les données tabulaires, les jetons sont des caractéristiques catégorielles, de sorte que nous pouvons simplement remplacer une caractéristique par une autre classe de cette caractéristique catégorielle. Quitter le modèle de générateur.

Voici à quoi ressemble l'étape 2 du cadre Electra dans une classe PyTorch Dataset:

Dans l'étape 3 de l'article Electra, le classificateur situé au-dessus du module de transformation est le même pour tous les tokens. C'est logique car tous les mots proviennent de la même distribution.

Dans le cas de données tabulaires, nous pouvons améliorer cela et créer un classificateur distinct pour chacune des colonnes.

Une façon efficace de procéder consiste à définir une couche convolutionnelle par profondeur qui définit un filtre par groupe de profondeur. Chaque groupe correspond alors à une colonne du tableau :

Le code d'une série de classificateurs binaires. Voir aussi cette discussion.

Le pré-entraînement ne couvre que le bloc du transformateur dans le TabTransformer. Après le pré-entraînement, nous devons encore affiner le MLP final où la sortie du transformateur est combinée avec les caractéristiques continues.

Ce réglage fin s'effectue à l'aide des données supervisées qui contiennent également les prix des logements.

Le moment suprême

Pardonnez mon français, mais voici la section où nous testons si TabTransformer bat LightGBM à plate couture.

Nous avons choisi LightGBM comme référence pour deux raisons. Tout d'abord, parce qu'il s'agit en général d'un excellent modèle. Ensuite, c'est le meilleur modèle sur l'ensemble des données dont nous n'avons pas réservé la plus grande partie à l'apprentissage non supervisé.

Avec cette expérience, nous voulons vérifier si le pré-entraînement non supervisé du TabTransformer est une réussite ou un échec.

Nous suivons la configuration de l'article sur TabTransformer et échantillonnons des ensembles d'entraînement étiquetés (obscènement) de petite taille, allant de 25 à 2000 points de données. En raison de la petite taille des ensembles de données, nous échantillonnons plusieurs versions (par exemple, nous utilisons 70 ensembles d'entraînement différents de 25 points).

Pour chacun de ces ensembles, nous entraînons le modèle LightGBM et affinons le transformateur TabTransformer préalablement entraîné.

Ensuite, nous utilisons l'ensemble de test que nous avons séparé au début pour mesurer les erreurs absolues. Ces erreurs sont représentées sur cette figure :

Avant de discuter de ces résultats, il y a deux autres questions que vous pourriez vous poser :

Ce type de données existe-t-il au moins ?

Imaginez un cas où l'obtention des étiquettes est très coûteuse, ou prend beaucoup de temps, ou peut nuire aux personnes. Par exemple, si nous essayons de prédire si un avion va s'écraser, il est préférable d'avoir le moins d'étiquettes possible.

Pourquoi entraîner un modèle d'apprentissage profond sur des ensembles de données de cette taille ?

La raison la plus importante pour laquelle nous envisageons un modèle d'apprentissage profond dans cette situation est que nous pouvons effectuer le pré-entraînement et garder la couche MLP finale aussi petite que possible. Dans l'article sur TabTransformer, les auteurs s'entraînent également sur les mêmes tailles d'ensembles de données.

Très bien, regardons les résultats. Une première conclusion est que LightGBM est le vainqueur incontesté du maillot jaune au classement général.

MAIS, lorsque nous examinons les deux plus petits ensembles de données, nous concluons que TabTransformer remporte le maillot vert du sprinter. Sur 25 points de données, l'erreur de TabTransformer est plus petite et sur 50 points de données, LGBM a des valeurs aberrantes que TabTransformer n'a pas.

Ce résultat n'est peut-être pas à la hauteur des espérances, mais il est tout de même étonnant, car il signifie que le pré-entraînement non supervisé sur des données tabulaires a fonctionné !

Si nous creusons un peu plus, nous pouvons également expliquer ces résultats. Jetez un coup d'œil aux importances des caractéristiques du modèle LGBM :

Apparemment, les cinq caractéristiques les plus importantes sont les caractéristiques numériques et les sept caractéristiques les moins importantes sont les caractéristiques catégorielles.

Rappelez-vous que pendant la phase de pré-entraînement du TabTransformer, le modèle ne pouvait apprendre que les relations entre les caractéristiques catégorielles. Il est donc logique que même le meilleur module de transformation ne puisse jamais rivaliser avec la puissance d'une utilisation optimale des caractéristiques continues.

Conclusions et remarques finales

  • La première conclusion est que de bonnes données sont au moins aussi importantes que de bons modèles. Dans ce cas, il est préférable d'avoir de meilleures données et davantage d'étiquettes. Voir également cet exposé d'Andrew Ng sur cette vision centrée sur les données.
  • Deuxièmement, un modèle complexe avec beaucoup de belles théories peut toujours être pire que des idées (assez) simples comme les machines à gradient boosté. Le "A pour l'effort" n'existe pas dans le domaine de la modélisation.
  • Pour terminer sur une note positive, nous avons réussi à effectuer un pré-entraînement sur des données tabulaires. Ainsi, lorsque vous avez beaucoup de données non étiquetées et seulement quelques étiquettes, TabTransformer est compétitif avec l'état de l'art !

Postes connexes

Voir tout le contenu
Aucun résultat n'a été trouvé.
Il n'y a pas de résultats correspondant à ces critères. Essayez de modifier votre recherche.
Grand modèle linguistique
Modèles de fondation
Entreprise
Personnes
Données Structurées
Chat GPT
Durabilité
Voix et son
Développement frontal
Protection des données et sécurité
IA responsable/éthique
Infrastructure
Hardware et capteurs
MLOps
IA générative
Natural Language Processing
Vision par ordinateur