Contribute Media
A thank you to everyone who makes this possible: Read More

Témoignage : comment j'ai survécu à ma thèse en machine learning avec Python ?

Description

Je propose un témoignage sur mon utilisation de Python durant mes travaux de thèse pour développer un réseau de neurones récurrents doté d'unités LSTM, Long Short Term Memory. Face à des outils comme Keras, Tensorflow, pytorch etc., j'ai choisi d'implémenter ma propre solution avec Python, sans solliciter de solutions existantes car ces solutions ne me semblaient pas satisfaisante pour répondre à la question de l'interprétabilité dominante dans mes travaux de thèse. J'ai donc décidé de "mettre les mains dans le cambouis " pour mieux comprendre les boites noires que sont les réseaux de neurones et ainsi mener a bien ma thèse et acquérir la légitimité nécessaire pour parler de Machine Learning.

Ce beau challenge s'est alors accompagné de nombreuses péripéties : 1) Comprendre ce qu'est un LSTM. Pour cela, j'ai surtout implémenté ce que j'en comprenais : d'abord un bloc à une cellule, puis un réseau doté d'une couche d'entrée et de sortie, puis un réseau avec plusieurs blocs et cellules. 2) Ecrire des équations en python. J'ai ainsi découvert les mathématiques en python lors de mon implémentation de matrices de dérivées partielles nécessaire à l'apprentissage du réseau de neurones. 3) Développer en Python des concepts poussés, tels que : utiliser une structure de classe pour l'architecture, développer des distances mathématiques entre des vecteurs numériques, implémenter et générer des graphes, etc..

Une fois mon réseau neuronal fonctionnel (qui apprend et qui prédit avec de bonnes performances), je me suis ensuite intéressée à comment Python pouvait m'aider à expliciter ce qui se passe dans mon réseau avec par exemple Matplotlib, numpy, la librairie sickit learn... Et souvent j'ai passé des semaines à vérifier mes résultats ! En effet, un code qui compile n'est pas synonyme de réseau qui apprend, et cela est une réalité dont j'ai surtout pris la mesure lors de mes développements.

Dans cette démarche d'expérience et de challenge, j'ai dû par conséquent persévéré de nombreuses fois, ce qui est encore le cas aujourd'hui (dans la mesure du possible). En effet, partir de zéro permet d'aborder les questions autrement. Certes il m'a fallu plus de temps et d'énergie pour construire mon réseau mais une fois cela réalisé, j'en maîtrisais toutes les briques et je pouvais aller plus loin dans son exploitation, sa modification et fouiller son raisonnement (les valeurs d'activation) plus profondément. Tel est le sentiment que j'en avais.

Details

Improve this page