nico2rdj / BERT-NLP

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BERT sur SQuAD 2.0

bert

📄 Différents Fine-Tuning de BERT sur le dataset SQuAD 2.0

Projet NLP

Manuel d'utilisation

  • Se placer Ă  la fin du jupyter notebook dans la cellule ci-dessous et mettre le paragraphe dans la variable doc et la question dans la variable q : example

Détails de l'implémentation de BERT et XLNet

  • Pour le preprocessing, nous avons utilisĂ© la libraire transformers avec la fonction SquadV2Processor pour rĂ©cupĂ©rer les questions et rĂ©ponses puis squad_convert_examples_to_features pour convertir les celles-ci en features que l'on donne en entrĂ©e de BERT.

Le format des entrées est le suivant :
input

  • Ces entrĂ©es reprĂ©sente :

    • attention mask
    • entrĂ©e contenant la question et la rĂ©ponse sous forme id de token
    • position du dĂ©but de la rĂ©ponse
    • position de la fin de la rĂ©ponse
  • Pour BERT, nous avons utilisĂ© l'architecture Fine-Tuned BertForQuestionAnswering de base avec des poids prĂ©entraĂ®nĂ©s

bert-ft

  • Pour XLNet, il s'agit d'une architecture basĂ©e sur BERT qui est autoregressive:
    • Dans la prĂ©diction du mot masquĂ©, on se sert du context en allant vers l'avant mais aussi en allant en arrière xlnet

Dataset: SQuAD 2.0

  • Nous utilisons le dataset Squad 2.0 comportant un jeu de donnĂ©es de questions et de rĂ©ponses associĂ©es. La grande particularitĂ© de ce dataset, et ce qui le diffĂ©rencie la première version de SQuAD, concerne la possibilitĂ© d'avoir une question sans rĂ©ponse. Il nous faut donc Ă  la fois trouver la position d'une rĂ©ponse dans un texte lorsqu'elle existe, mais aussi ne pas donner de rĂ©ponse lorsque la question n'en a pas.

  • Par consĂ©quent, de simples modèles (ex: Bert) qui performent avec plus de 85% sur SQuAD doivent ĂŞtre finetunĂ©s pour dĂ©passer les 66% sur SQuADv2

  • Nous avons essayĂ© deux modèles diffĂ©rents en Fine Tuned la dernière couche:

    • L'un avec une couche Dense classique
    • L'autre avec une couche LSTM

RĂ©sultats sur le dataset SQuAD 2.0

Pour les résultats, nous avons comparé plusieurs modèles sur plusieurs métriques, mais nous avons gardé le F1 score afin de comparer au mieux nos résultats.

  • Couche Dense classique:

Pour la couche Dense classique, comme nous l'avons dit précédemment, les résultats sont plus faibles sur SQuAD v2 avec un score de 66%. Cette couche n'est donc pas suffisante, nous avons donc décidé de tester d'autres modèles.

  • LSTM:

Une idée, assez peu utilisé mais qui peut s'averer pertinente est celle des LSTM. On obtient avec cette méthode un score de ...%.

  • CNN:

On a voulu utiliser un CNN en sortie de Bert, plus précisément un CNN 1d, qui va prendre en entrée la concaténation des 4 dernières couches de Bert. Nous avons obtenu un score de ...% (en cours d'entrainement).

score

License

Contributors

  • Fares Embouazza
  • Nicolas Martin

About


Languages

Language:Jupyter Notebook 100.0%