Une fois l'entraînement du réseau terminé, il te reste presque toujours un tas de neurones inutiles : des neurones qui ne contribuent quasiment pas à la performance du réseau, mais qui continuent à consommer de la mémoire.
Autrement dit, il existe un pourcentage élevé de neurones qui, si on les retire du réseau entraîné, n'affecteront pas la performance de façon notable :

Et bien sûr, je ne dis pas ça au hasard ou sans fondement.
J'ai vérifié ça expérimentalement, encore et encore, sur mes différents projets.
Voici l'idée de base.
Une fois l'entraînement terminé, on fait passer le dataset dans le modèle (sans backpropagation cette fois) et on analyse l'activation moyenne de chaque neurone.
On observe alors souvent que de nombreuses activations de neurones restent proches de zéro.

Ces neurones peuvent donc être supprimés du réseau (on parle de pruning), car ils auront très peu d'impact sur la sortie du modèle.
Pour ça, on peut fixer un seuil de pruning (λ) et supprimer tous les neurones dont l'activation est inférieure à ce seuil.
Ça a aussi du sens intuitivement.
Plus précisément, si un neurone atteint rarement une activation élevée, on peut raisonnablement supposer qu'il ne contribue pas à la sortie du modèle, et on peut donc le supprimer sans risque.
Le tableau suivant compare la précision du modèle pruné à celle du modèle original (complet), pour différents seuils de pruning (λ) :

Remarque un truc ici.
Avec un seuil de pruning λ=0.4, la précision de validation du modèle ne baisse que de 0,62 %, mais le nombre de paramètres chute, lui, de 72 %.

C'est une réduction énorme, alors que les deux modèles restent quasiment aussi bons !
Bien sûr, il y a un compromis, puisqu'on ne fait pas aussi bien que le modèle original.
Mais dans beaucoup de cas, surtout quand on déploie des modèles de ML en production, la précision n'est pas la seule métrique qui compte.

D'autres métriques opérationnelles, comme l'efficacité, la vitesse ou la consommation mémoire, entrent aussi en jeu, et de façon décisive.
C'est pour ça que les techniques de compression de modèles sont si importantes dans ces cas-là.
Si tu veux creuser le sujet, on en parle en détail dans ce dossier complémentaire : Model Compression : une étape critique vers un Machine Learning efficace.
Aujourd'hui, on n'a vu qu'une seule technique (l'activation pruning), mais le mini-cours en couvre 6, avec leur implémentation en PyTorch.
Envie d'aller plus loin ? DataXp t'attend : formations et parcours pour progresser en data science, machine learning et IA.
👉 À toi de jouer : quelles sont, selon toi, d'autres façons de rendre les modèles de ML plus adaptés à la production ?


