Contexte
Pour le second article du Journal Club de Lixo, nous discuterons de l’article Deep Bayesian Active Learning with Image Data paper de Gal and al., qui a été présenté en 2017 pour l’International Conference on Machine Learning.
A Lixo et pour de nombreuses applications qui utilisent du machine learning et des réseaux de neurones, une manière directe d’améliorer les performance d’un modèle est d’annoter plus de données et d’ajouter ces données au dataset d’entrainement. Cependant, annoter des données est coûteux, prend du temps et requière une expertise métier. L’Active Learning pour des applications liées à des images consiste, à partir d’un grand pool d’image non annotées, à trouver les images qui ont le plus de valeur et qui vont permettre d’améliorer le plus les performance du modèle si on les annote.
Pourquoi avoir choisi ce papier?
C’est un papier qui est directement lié à de nombreux cas d’usages industriels: comment améliorer un modèle existant en limitant les coûts et le temps d’annotation. Si l’Active Learning a été un sujet de recherche depuis plusieurs années, ce papier pose les fondations de l’Active Learning dans le cas des réseaux de neurones appliqués sur des données images.
Pourquoi est-il innovant?
Les auteurs proposent une nouvelle méthode pour quantifier l’incertitude d’un réseau de neurone en utilisant Drop Out, une technique usuellement utilisé pour la régularisation. Drop Out consiste à fermer de manière aléatoire des neurons pendant l’entrainement pour éviter l’overfitting.
L’idée de Gal et al est d’utiliser Drop Out pour avoir plusieurs instances du même réseau. Pendant l’inférence, nous allons fermer de manière aléatoire certains neurons pour chaque instance de notre réseau, avec des seeds différentes. Nous allons donc avoir plusieurs réseaux qui viennent de la même distribution, sans que ce soit les même réseaux. Et une fois que nous avons instancié ces différents réseaux, l’idée est de comparer leur sorties. Si pour une image donnée les réseaux sont en désaccord (par exemple pour un problème de classification, un réseau prédit un chat, un autre un chien et un autre une voiture), alors nous pouvons considérer que le modèle est incertain à propos de l’image et que l’image contient de l’information intéressante pour l’apprentissage de notre modèle, nous devrions donc l’ajouter à notre dataset d’entrainement. Cette méthode s’appelle Bayesian Active Learning by Disagreement (BALD). Les auteurs proposent également plusieurs autres critères, en continuant d’utiliser Drop Out pour récupérer des instances de la même distribution de réseaux.
Le papier focalise le benchmark sur des données images, avec le dataset MNSIT et ISIC 2016 Melanoma. C’est intéressant d’avoir ce benchmark sur des datasets d’images car les méthodes d’active learning peuvent être sensible à la distribution des données et à l’architecture des modèles.
La procédure de benchmark consiste à entrainer un modèle sur des images choisies aléatoirement, puis d’utiliser BALD (ou autre méthode) pour déterminer les 10 prochaines images à choisir dans le pool d’images, de réentrainer un modèle avec ces images et d’itérer. Leur méthode montre des meilleures performances avec moins d’images comparé à un choix d’image aléatoire.
Quelles sont les limites?
Tâche simple de classification
Leur benchmark se focalise sur des tâches de classification simples avec des données simples. Il aurait été intéressant d’avoir des données plus compliquées ainsi que des tâches plus complexes comme la détection d’objet, la segmentation d’image ou l’éstimation de pose. De plus les auteurs utilisent une architecture VGG16 avec quelques couches dropout à la fin du réseau, il aurait été intéressant de voir si les résultats restaient les même avec d’autres architectures, comme ResNet.
Seulement une architecture
Les auteurs utilisent un simple VGG16 avec des couches Drop Out à la fin du réseau. Il aurait été interessant de voir si les résultats restaient les mêmes avec d’autres architectures.
Latence
Cette méthode requiert de faire plusieurs passe d’inférence pour estimer l’incertitude du modèle. Si nous utilisons 5 instances de notre réseau avec des seed de Drop Out différentes, nous multiplions la latence pour une image par un facteur 5. A Lixo, par exemple, nous ne pouvons pas directement utiliser cette méthode sur nos machines embarquées puisqu’elles fonctionnent en temps réel.
Ne considère pas les images par batch
Un autre potentiel problème avec ce framework est que nous évaluons la pertinence des images une par une sans notion de diversité inter images. Dans le cas d’un pool d’images avec plusieurs images très similaires, cette méthode peut retourner des images quasi identiques sur une même itération. Des approches plus récentes prennent en compte cette limitation pour éviter de sélectionner des images similaires, par exemple Kirsch et al.
La taille des batch est trop petite
L’article utilise 10 images par batch d’active learning. A Lixo, nous utilisons l’active learning pour mieux choisir les images que l’on souhaiterait annoter. Une petite taille de batch est optimale pour l’algorithme, mais dans la pratique, il est très difficile et coûteux de faire des entraînements avec de l’annotation d’images intercalée. Le coût des entraînements avec un petit batch est d’autant plus important si on considère des architectures plus complexes que VGG16.
Conclusion
Chez Lixo, nous améliorons de manière continue nos modèles tout en limitant le coût et le temps utilisé pour l’annotation. L’Active Learning est un excellent framework pour répondre à cette problématique et ce papier pose les bases de l’active learning dans le cadre de réseaux de neurones appliqués aux images. Le papier se focalise sur une tâche simple de classification, mais chez Lixo nous avons confirmé que nous pouvons utiliser les idées du papier dans des cas d’usages plus spécifiques et complets (la detection d’objet for l’industrie du déchet) et limiter le nombre d’image à annoter pour améliorer le modèle.
De manière plus globale, la clé pour améliorer les performance d'un modèle dans un contexte industriel, est souvent d'être "data-centric" (travailler sur les données plutôt que sur le model lui même). Une autre approche complémentaire à l'active learning pour utiliser une grande quantité de données non annotées est le semi supervised learning. Cela fera peut-être l'objet d'un blogpost dans le futur.
Pour en savoir plus:
- Deep Bayesian Active Learning with Image Data, Yarin Gal, Riashat Islam, Zoubin Ghahramani (2017)
- Dropout: A Simple Way to Prevent Neural Networks from Overfitting, Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, Ruslan Salakhutdinov (2014)
- BatchBALD: Efficient and Diverse Batch Acquisition for Deep Bayesian Active Learning, Andreas Kirsch, Joost van Amersfoort, Yarin Gal (2019).