Le Blog > Comment utiliser Bert avec des longs textes ?

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
- Voir https://arxiv.org/pdf/1810.04805.pdf
- 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.
- Voir https://arxiv.org/pdf/1909.11942.pdf
- Voir https://arxiv.org/pdf/1907.11692.pdf
- Une Ă©poque est passĂ©e quand lâalgorithme a vu tous les exemples du jeu dâentraĂźnement une seule fois.