www.ITNetwork.fr

Le Blog > Comment utiliser Bert avec des longs textes ?

— Hugo Abraham

Comment utiliser Bert avec des longs textes ?

Bert est l’architecture de deep learning dont on susurre le nom partout sans comprendre comment il fonctionne. Il a atteint une certaine domination en NLP et permet une comprĂ©hension fine des sĂ©quences. Bert permet de classer, de rĂ©sumer, il rĂ©pond Ă  des question, et bien plus encore. Mais ces succĂšs ont un coĂ»t, Bert est gourmand en temps de calculs et lourd en paramĂštres. Il est en consĂ©quence irrĂ©aliste de vouloir l’appliquer sur des sĂ©quences aussi longues que des livres. De mĂȘme utiliser un modĂšle moins gourmand Ă  l’échelle du livre c’est se priver de la finesse d’analyse de Bert. Comment rĂ©concilier ces deux impĂ©ratifs ?

Comment utiliser Bert avec des longs textes ?

Depuis sa publication(1) en 2018, le modĂšle Bidirectional Encoder Representations from Transformers (Bert pour les intimes) a rĂ©volutionnĂ© le traitement du langage humain. Il permet une bien meilleure comprĂ©hension des textes par le modĂšle (nous reviendrons sur les raisons de cette supĂ©rioritĂ©) que ses prĂ©dĂ©cesseurs comme le LSTM et il a grandement amĂ©liorĂ© les performances sur les tĂąches de classement, de traduction, d’extraction de rĂ©ponses, etc. Ces avantages ont pourtant un coĂ»t, classique en deep learning, un nombre de paramĂštre Ă©normes. La version basique en compte 110 millions, la version large 340 millions ! Et encore, ce nombre dĂ©pend de la longueur des sĂ©quences de texte qui composent le jeu d’entraĂźnement (512 jetons(2) dans l’article). Ce nombre pose immĂ©diatement un problĂšme: il faut Ă©normĂ©ment d’exemples pour entraĂźner le modĂšle. Pour aggraver encore le constat, considĂ©rez le temps d’entraĂźnement et d’exĂ©cution d’un modĂšle de 1000, 10 000, 100 000 jetons ! Pourtant de tels textes existent, ce sont des contrats, des lois, des rapports d’expertise. Comment alors utiliser les derniĂšres avancĂ©es du natural language processing (NLP) ?

Le transfert learning et quelle librairie utiliser ?

Comme souvent, on utilise le transfert learning. Il permet de commencer avec un algorithme qui comprend dĂ©jĂ  les bases du langage. Pour Bert et ses successeur (AlBert(3), RoBerta(4), et tous les jeux de mots accessibles), la libraire de modĂšles prĂ©-entraĂźnĂ©s la plus complĂšte est HuggingFace. Au lieu d’amasser un jeu de donnĂ©es Ă©norme, on prĂ©fĂ©rera travailler avec un Bert prĂ©-entraĂźnĂ©, typiquement sur une tĂąche de complĂ©tion de phrase. On masque un jeton et on demande au modĂšle de le dĂ©masquer. Ceci permet une bonne modĂ©lisation du langage car les liens statistiques entre les jetons sont appris par dĂ©duction de sens. Le mot qui manque est Ă©valuĂ© par rapport Ă  tous les autres de la phrase. Il y a pourtant un inconvĂ©nient au prĂ©-entraĂźnement, il faut fournir des sĂ©quences de la longueur qui a servi Ă  entraĂźner le modĂšle; ni plus longue, ni plus courte. Souvent cela signifie des sĂ©quences de 512 jetons maximum. Voici encore notre problĂšme : comment concilier le transfert d’apprentissage et les longs textes ?

Transformer un texte en image

L’idĂ©e est simple; il s’agit de n’utiliser Bert que pour une analyse locale des textes. Les analyses sont ensuite collectĂ©es et la classification globale du texte est rĂ©alisĂ©e par un autre rĂ©seau de neurones, un LSTM ou un ResNet. Dans la premiĂšre Ă©tape il s’agit de dĂ©terminer l’activation par une sĂ©quence extraite du texte de chaque classe de document. C’est Ă  dire que l’on n’applique pas de softmax Ă  la derniĂšre couche de Bert. Les sĂ©quences sont choisies de sorte Ă  ce qu’elles se chevauchent suffisamment pour que des jetons Ă©loignĂ©s puissent communiquer. Dans la seconde Ă©tape le rĂ©seau agrĂšge les rĂ©sultats et classifie le texte. Ainsi des types proches, diffĂ©rant seulement par certaines caractĂ©ristiques prĂ©sentent dans une partie du document peuvent ĂȘtre distinguĂ©s par le modĂšle. De telles diffĂ©rences seraient noyĂ©es par une simple moyenne de prĂ©diction, ou un vote majoritaire. Dans un cas que nous avons traitĂ©, nous avons concatĂ©nĂ©s les rĂ©sultats de Bert pour crĂ©er une matrice de \(n_{sĂ©quences} × n_{types}\) que nous avons utilisĂ©s comme une image. Un ResNet 110 prĂ©-entrainĂ© apprenait alors trĂšs rapidement (quelques Ă©poques(5) seulement,) Ă  classer les types avec une prĂ©cision supĂ©rieure Ă  90%. On peut ĂȘtre Ă©tonnĂ© de l’efficacitĂ© de cette mĂ©thode, surtout de la seconde Ă©tape. Elle s’explique par la particularitĂ© des rĂ©seaux convolutifs : ils se concentrent sur la texture et les frĂ©quences d’apparition de motifs. C’est la raison de leur utilisation en traitement de l’image. Ici, c’est exactement ce que l’on souhaite, dĂ©tecter des motifs rĂ©currents et la “texture” des textes, c’est-Ă -dire les motifs d’activation des sĂ©quences.

Comment utiliser Bert pour de longs textes ? En ne l’utilisant pas pour de longs textes. Au contraire, laissons-le sur les cours passages oĂč il performe, et laissons la classification globale Ă  d’autres. Passer par une reprĂ©sentation visuelle pour une rĂ©gression ou une classification est assez courant et recommandĂ©. Peu de rĂ©seaux sont aujourd’hui aussi Ă©tudiĂ©s que les rĂ©seaux convolutifs, les utiliser c’est en bĂ©nĂ©ficier. Nous aurons donc d’autres occasions de voir cette mĂ©thode.

Notes

  1. Voir https://arxiv.org/pdf/1810.04805.pdf
  2. On distingue les jetons des mots. Les jetons sont les unitĂ©s de sens pour l’algorithme. Il est ainsi important de sĂ©parer un verbe en deux jetons : radical et conjugaison. Le modĂšle peut alors facilement saisir les liens de sens entre deux conjugaisons d’un mĂȘme verbe.
  3. Voir https://arxiv.org/pdf/1909.11942.pdf
  4. Voir https://arxiv.org/pdf/1907.11692.pdf
  5. Une Ă©poque est passĂ©e quand l’algorithme a vu tous les exemples du jeu d’entraĂźnement une seule fois.