gzip+kNN ~ BERT

D’un coté, un programme de 14 lignes avec un outil préhistorique.
De l’autre, un monstre de technologie made in Google boosté aux GPUS.

0 paramètre contre 110 millions de paramètres.
L’intelligence contre la puissance de calcul.
La frugalité contre la débauche de ressources.
La Fontaine aurait adoré.

Classification de textes

La classification de textes est une tâche importante. Elle permet de classer des informations et de proposer des contenus adaptés, en attribuant des étiquettes prédéfinies à un texte (“humour”, “natation”, “roman”, “notice”). C’est une technique classique en traitement du langage, et une fonction de base pour le fonctionnement des agents conversationnels. 

Les réseaux de neurones ont changé la donne. Les performances se sont considérablement améliorées depuis une dizaine d’années. Conçu par Google, BERT est le plus connu et probablement le plus utilisé. Ce type d’algorithme d’apprentissage automatique est très gourmand en données, et ses millions de paramètres doivent être soigneusement réglés à partir du traitement d’énormes corpus de texte. Cet ajustage requiert est glouton et consomme de grandes quantités de ressources, notamment en puissance de calcul et capacité mémoire. Ces programmes sont donc extrêmement complexes … et coûteux à entraîner.

 

Overkill ?

Il est légitime de se demander si la classification de textes, relativement bien maîtrisée aujourd’hui, peut ếtre réalisée en utilisant des approches plus légères. C’est ce qu’a fait une équipe de scientifiques canadien.

 

Résumé

Deep neural networks (DNNs) are often used for text classification due to their high accuracy. However, DNNs can be computationally intensive, requiring millions of parameters and large amounts of labeled data, which can make them expensive to use, to optimize, and to transfer to out-of-distribution (OOD) cases in practice. In this paper, we propose a non-parametric alternative to DNNs that’s easy, lightweight, and universal in text classification: a combination of a simple compressor like gzip with a k-nearest-neighbor classifier. Without any training parameters, our method achieves results that are competitive with non-pretrained deep learning methods on six in-distribution datasets. It even outperforms BERT on all five OOD datasets, including four low-resource languages. Our method also excels in the few-shot setting, where labeled data are too scarce to train DNNs effectively. Code is available

 
 

Astucieux, efficace, court

Ils ont construit un programme très astucieux, très efficace et très court.

Ce programme est astucieux car il utilise un outil de compression de texte bien connu et très fiable. Il s’agit de GZIP. C’est un programme de compression très commun dans le monde informatique, dont la fonction est de réduire l’empreinte d’un fichier sur le disque dur. GZIP est antérieur à WINZIP ou 7-ZIP. Sa première implémentation date de 1992. Il utilise deux algorithmes de compression (LZ77 et le codage de Huffman) qui datent respectivement de 1977-78 et de 1952.

Ce programme est efficace, car il montre des performances très proches des meilleurs programmes dits “intelligents” dont BERT. Il le surpasse même dans certains cas.

Ce programme est court, enfin. Son écriture en Python tient en 14 lignes. Il est composé d’un calcul de normalisation très simple et fait principalement appel au programme GZIP.  Il est donc très facile à analyser, à comprendre et à maintenir.

 

Rafraichissant

Cette approche ne demande aucun paramètre et aucun entraînement. En ce temps de frénésie liée aux technologies d’apprentissage automatique, c’est un point à souligner.

 

L’idée

Ce programme fonctionne sur une hypothèse et une idée, toutes les deux simples.

L’hypothèse est la suivante : si deux textes traitent un même sujet, alors les mots employés et leurs articulations seront similaires. Autrement dit, le contenu en information sera proche. Les mathématiciens ont des outils qui permettent de quantifier un contenu informationnel, grâce à la complexité de Kolmogorov. Si j’appelle C la fonction qui permet d’estimer ce contenu informationnel, alors l’algorithme se ramène à calculer un écart de contenu informationnel entre le texte qu’on cherche à classer (T), et des textes de références bien identifiés (T1, T2) :

Opérations réalisées : C(T+T1) - C(T) > C(T+T2) - C(T) ?

L’idée est d’utiliser un outil de compression de texte pour estimer cet écart de contenu informationnel. C’est ici que GZIP est utilisé. Son processus de compression analyse les textes pour identifier des motifs récurrents et des similarités dont le programme tire ensuite parti pour réduire la taille du texte en le codant. Une fois ces écarts calculés, un algorithme classique dit des plus proches voisins (kNN) est utilisé.

 

Ironie

Au-delà de l’anecdote, cette performance fait réfléchir.

En sciences, il y a souvent plusieurs façons de résoudre un problème. L’approche utilisée par l’équipe canadienne s’appuie sur unr observation : certains algorithmes de compression exploitent les régularités d’un texte et la structure interne des phrases. Ces motifs peuvent-ils être utilisés pour classer efficacement des textes, autrement dit la compression permet-elle de construire une métrique efficace ? La réponse est oui, et ils l’ont prouvé.

Un compresseur de texte comme GZIP est capable de classer efficacement des textes. Notons que cette voie de recherche n’est pas nouvelle. Un avantage de ces approches est l'explicabilité : les algorithmes sont connus et maîtrisés, on comprend les traitements et on peut étudier les représentations internes. Les réseaux de neurones sont, rappelons-le, des boîtes noires dont le fonctionnement est obscur.

David contre Goliath. Les résultats obtenus avec une utilisation démesurée de ressources (puissance de calcul, espace mémoire, matériel spécifique), tout en faisant appel à des techniques complexes en ingénierie des données (donc en ressources humaines) ne sont pas vraiment meilleurs que des résultats obtenus avec une méthode beaucoup plus économe.

 
GZIP qui fait jeu égal avec BERT : l’ironie est flagrante !
Suivre la mode n’est, en aucun cas, la garantie de faire les meilleurs choix.
 

Quelques liens.

GZIP + KNN > BERT for Text Classification??

Quelques discussions sur YCombinator ici, ici et .

Des doutes sur le calcul des performances ?

Précédent
Précédent

La fin du code ?

Suivant
Suivant

Des avancées stupéfiantes