Appliquer l'apprentissage en profondeur aux problèmes du monde réel

3 leçons de notre travail à Merantix

La montée de l'intelligence artificielle ces dernières années est fondée sur le succès de l'apprentissage en profondeur. Trois moteurs majeurs ont provoqué la percée des réseaux de neurones (profonds): la disponibilité d'énormes quantités de données de formation, une puissante infrastructure de calcul et les progrès du milieu universitaire. Ainsi, les systèmes d'apprentissage en profondeur commencent à surpasser non seulement les méthodes classiques, mais aussi les repères humains dans diverses tâches telles que la classification d'images ou la reconnaissance faciale. Cela crée le potentiel de nombreuses nouvelles entreprises perturbatrices tirant parti de l'apprentissage en profondeur pour résoudre des problèmes du monde réel.

Chez Merantix, à Berlin, nous travaillons sur ces nouvelles analyses de rentabilisation dans diverses industries (actuellement l'automobile, la santé, la finance et la publicité).

Le milieu universitaire diffère souvent du monde réel (source: mimiandeunice.com).

Il n'a jamais été aussi simple de former un réseau de neurones. Cependant, il est rare que vous puissiez simplement prendre le code d'un didacticiel et le faire fonctionner directement pour votre application. Fait intéressant, bon nombre des ajustements les plus importants sont à peine discutés dans la littérature universitaire, mais en même temps essentiels pour faire fonctionner votre produit.

L'application du deep learning à des problèmes du monde réel peut être compliquée (source: pinsdaddy.com).

Par conséquent, j'ai pensé qu'il serait utile pour d'autres personnes qui envisagent d'utiliser l'apprentissage profond dans leur entreprise de comprendre certains de ces ajustements et astuces.

Dans cet article de blog, je souhaite partager trois enseignements clés, qui nous ont aidés chez Merantix lors de l'application de l'apprentissage en profondeur à des problèmes du monde réel:

  • Apprentissage I: la valeur de la pré-formation
  • Apprentissage II: mises en garde concernant les distributions d'étiquettes dans le monde réel
  • Apprentissage III: comprendre les modèles de boîte noire

Un petit avertissement:

  • Ce n'est pas une liste complète et il existe de nombreux autres ajustements importants.
  • La plupart de ces apprentissages s'appliquent non seulement à l'apprentissage en profondeur mais également à d'autres algorithmes d'apprentissage automatique.
  • Tous les apprentissages sont indépendants de l'industrie.
  • La plupart des idées contenues dans le post font référence à des problèmes d'apprentissage supervisé.

Ce message est basé sur mon discours que j'ai prononcé le 10 mai lors du Meetup Berlin.AI (les diapositives sont ici).

Apprentissage I: la valeur de la pré-formation

Dans le monde académique de l'apprentissage automatique, on se concentre peu sur l'obtention d'ensembles de données. Au contraire, c'est même le contraire: afin de comparer les techniques d'apprentissage en profondeur avec d'autres approches et de garantir qu'une méthode surpasse les autres, la procédure standard consiste à mesurer les performances d'un ensemble de données standard avec la même procédure d'évaluation. Cependant, dans des scénarios réels, il s'agit moins de montrer que votre nouvel algorithme réduit de 1% les performances par rapport à une autre méthode. Il s'agit plutôt de construire un système robuste qui résout la tâche requise avec une précision suffisante. Comme pour tous les systèmes d'apprentissage automatique, cela nécessite une formation étiquetée à partir de laquelle l'algorithme peut apprendre.

Pour de nombreux problèmes du monde réel, il est malheureusement assez coûteux d'obtenir des données d'entraînement bien étiquetées. Pour approfondir cette question, considérons deux cas:

  1. Vision médicale: si nous voulons construire un système qui détecte les ganglions lymphatiques dans le corps humain dans des images de tomodensitométrie (TDM), nous avons besoin d'images annotées où le ganglion lymphatique est étiqueté. C'est une tâche assez longue, car les images sont en 3D et il est nécessaire de reconnaître de très petites structures. En supposant qu'un radiologue gagne 100 $ / h et puisse annoter soigneusement 4 images par heure, cela implique que nous engageons des coûts de 25 $ par image ou 250k $ pour 10000 images étiquetées. Étant donné que nous demandons à plusieurs médecins d'étiqueter la même image pour garantir une exactitude de diagnostic proche de 100%, l'acquisition d'un ensemble de données pour la tâche médicale donnée dépasserait facilement ces 250 000 $.
  2. Notation de crédit: si nous voulons construire un système qui prend des décisions de crédit, nous devons savoir qui est susceptible de faire défaut afin que nous puissions former un système d'apprentissage automatique pour les reconnaître à l'avance. Malheureusement, vous savez seulement avec certitude si quelqu'un fait défaut par défaut quand cela se produit. Ainsi, une stratégie naïve consisterait à accorder des prêts de 10 000 $ à tout le monde. Cependant, cela signifie que chaque personne en défaut nous coûtera 10 000 $. Cela met un prix très cher sur chaque point de données étiqueté.

De toute évidence, il existe des astuces pour réduire ces coûts, mais le message global est que les données étiquetées pour des problèmes réels peuvent être coûteuses à obtenir.

Comment pouvons-nous surmonter ce problème?

Pré-formation

Aide à la pré-formation (source: massivejoes.com).

L'idée de base de la pré-formation est que nous formons d'abord un réseau neuronal (ou un autre algorithme d'apprentissage automatique) sur un ensemble de données bon marché et volumineux dans un domaine connexe ou sur des données bruyantes dans le même domaine. Même si cela ne résoudra pas directement le problème d'origine, cela donnera au réseau de neurones une idée approximative de votre problème de prédiction. Maintenant, dans une deuxième étape, les paramètres du réseau neuronal sont encore optimisés sur un ensemble de données beaucoup plus petit et coûteux du problème que vous essayez réellement de résoudre. Cette procédure en deux étapes est illustrée dans la figure ci-dessous.

Lorsque les données d'entraînement sont difficiles à obtenir: commencez par pré-former le réseau neuronal sur un ensemble de données volumineux et bon marché dans un domaine connexe; deuxièmement, affinez-le sur un ensemble de données coûteux et bien étiqueté. Cela se traduira par une amélioration des performances par rapport à une simple formation sur le petit ensemble de données.

Lors du réglage fin, le nombre de classes peut changer: les gens pré-entraînent souvent un réseau de neurones sur un ensemble de données comme ImageNet avec 1000 classes, puis le règlent avec précision sur leur problème spécifique qui a probablement un nombre différent de classes. Cela signifie que la dernière couche doit être réinitialisée. Le taux d'apprentissage est alors souvent défini un peu plus haut sur la dernière couche car il doit être appris à partir de zéro, tandis que les couches précédentes sont entraînées avec un taux d'apprentissage inférieur. Pour certains ensembles de données comme ImageNet, les fonctionnalités (la dernière couche entièrement connectée) apprises sont si génériques qu'elles peuvent être retirées du commerce et directement utilisées pour un autre problème de vision par ordinateur.

Comment obtenir des données pour la pré-formation?

Sources de données pour la pré-formation

  1. Modèles pré-formés: il existe de nombreux modèles formés sur le Web. Le premier point est le soi-disant Model Zoos. Ce sont des sites Web qui contiennent une collection de divers modèles formés par des universitaires, des entreprises et des amateurs d'apprentissage en profondeur. Voir ici, ici ou ici.
  2. Ensembles de données publics: il existe de nombreux ensembles de données sur le Web. Ne perdez donc pas de temps à collecter vous-même l'ensemble de données, mais vérifiez plutôt s'il existe déjà quelque chose qui pourrait aider à résoudre le problème particulier sur lequel vous travaillez. Voir ici, ici ou ici.
  3. Exploration de données: s'il n'y a ni modèle public ni ensemble de données pré-formé, il pourrait y avoir un moyen effronté de générer un ensemble de données sans l'étiqueter à la main. Vous pouvez créer un soi-disant robot d'exploration qui les collecte automatiquement à partir de sites Web spécifiques. De cette façon, vous créez un nouvel ensemble de données.
Sources de données pour la pré-formation.

Données faiblement étiquetées

Au fur et à mesure que nous affinons des données précisément étiquetées, il est possible de se pré-former sur des données dites faiblement étiquetées. Par cela, nous nous référons à des données dont les étiquettes ne sont pas toujours correctes (c'est-à-dire que 90% des étiquettes peuvent être correctes et 10% erronées). L'avantage est que ce type de données peut souvent être obtenu sans qu'aucun humain ne soit impliqué dans l'étiquetage, mais automatiquement. Cela rend ces données relativement bon marché par rapport aux données où un humain a besoin d'étiqueter chaque image. Pour donner un exemple: au cours de ma thèse, j'ai exploré un ensemble de données de 500 000 images de visages de Wikipédia et IMDb. Nous combinons la date de naissance d'une personne dans le profil et tout indice dans la légende des photos lorsqu'elle a été prise. De cette façon, nous pouvons attribuer un âge approximatif à chaque image. Notez que dans certains cas, l'année dans la légende ci-dessous l'image peut avoir été fausse ou la photo peut montrer plusieurs personnes et le détecteur de visage a sélectionné le mauvais visage. Ainsi, nous ne pouvons garantir que, dans tous les cas, l'étiquette d'âge est correcte. Néanmoins, nous avons montré que la pré-formation sur cet ensemble de données faiblement étiqueté a aidé à améliorer les performances par rapport à la simple formation sur un ensemble de données plus petit étiqueté avec précision.

Une logique similaire peut être appliquée au problème de vision médicale où il est nécessaire que plusieurs médecins étiquettent indépendamment la même image afin d'être sûr à 100% que l'étiquetage est correct. Il s'agit de l'ensemble de données pour le réglage fin. De plus, on peut collecter un ensemble de données plus grand avec des étiquettes faibles qui a été annoté par une seule personne. Ainsi, nous pouvons réduire le coût total de l'étiquetage et toujours nous assurer que le réseau neuronal a été formé sur un ensemble d'images diversifié.

En résumé, l'augmentation des performances ne signifie pas nécessairement que vous avez besoin d'annotations humaines qui sont souvent coûteuses, mais vous pourriez obtenir un ensemble de données étiqueté gratuitement ou à des coûts considérablement inférieurs.

Apprentissage II: mises en garde concernant les distributions d'étiquettes du monde réel

Distributions du monde réel (source: r4risk.com.au).

Maintenant que nous avons obtenu des données pour le pré-réglage et le réglage fin, nous pouvons continuer et commencer à former nos réseaux de neurones. Voici une autre grande différence entre le monde universitaire et le monde réel.

Dans le monde universitaire, les ensembles de données sont généralement équilibrés. Cela signifie que pour les problèmes de classification supervisés, il y a généralement autant d'échantillons par classe. Ci-dessous, vous trouverez deux exemples: MNIST est un ensemble de données très connu de chiffres manuscrits contenant approximativement autant d'échantillons de chaque chiffre. Food 101 est un autre exemple d'un ensemble de données académiques qui contient exactement 1000 images de chacune des 101 catégories d'aliments.

MNIST et Food101 sont tous deux des ensembles de données équilibrés.

Distribution asymétrique des étiquettes

Encore une fois, je veux illustrer ce problème en mettant l'accent sur deux exemples concrets:

  1. Vision médicale: les données d'entraînement à l'imagerie médicale sont très biaisées. La majorité des patients sont en bonne santé, tandis que seule une petite fraction des patients souffre d'une certaine maladie.
  2. Notation de crédit: en fait, la majorité des clients rembourse le prêt alors que seulement 1 à 2% des personnes font défaut.
Distributions d'étiquettes déséquilibrées dans le monde réel.

Comme illustré ci-dessus, les distributions des étiquettes sont très asymétriques dans ces deux cas. Ceci est typique de la plupart des applications du monde réel. En fait, il est très rare qu'il y ait autant d'échantillons de chaque catégorie.

Coût déséquilibré des erreurs de classification

Malheureusement, cela empire encore: dans les ensembles de données académiques, le coût d'une mauvaise classification est généralement le même pour chaque classe. Ceci est encore très différent dans de nombreuses applications du monde réel:

  1. Vision médicale: diagnostiquer une personne malade qui est en bonne santé n'est pas si mal si le médecin revérifie puis se rend compte que la personne est réellement en bonne santé. Cependant, ne pas identifier un patient malade et le laisser partir sans aucun traitement est très dangereux.
  2. Notation de crédit: rejeter un prêt pour quelqu'un qui aurait remboursé n'est pas mauvais, car cela signifie que vous ne perdriez que les intérêts. Cependant, accorder un prêt à une personne en défaut de paiement est très coûteux, car vous devrez couvrir le coût de la totalité du prêt.

Ceci est illustré dans la figure ci-dessous.

Coût déséquilibré des erreurs de classification pour les applications réelles.

Comment faire face à ce problème?

Après avoir réalisé que les classes ne sont souvent pas équilibrées et que le coût d'une mauvaise classification n'est pas non plus, nous devons trouver des techniques pour y faire face. La littérature couvrant ce sujet est plutôt limitée, et on trouve principalement des articles de blog et des questions de débordement de pile touchant certaines des idées.

Notez que les classes déséquilibrées et le coût des erreurs de classification sont fortement liés, car cela signifie que pour certains des échantillons, nous avons non seulement peu de données de formation, mais aussi faire des erreurs est encore plus cher.

J'ai regroupé les techniques qui aident à rendre notre modèle particulièrement bon pour classer ces exemples rares en quatre catégories:

1. Plus de données

L'approche évidente est d'essayer de collecter plus de données sur les classes rares. Pour l'exemple de la vision médicale, cela implique que nous essayons de nous concentrer sur la collecte d'images de patients qui ont une certaine maladie que nous essayons de diagnostiquer. Si cela n'est pas possible parce qu'il est trop cher, il pourrait y avoir d'autres façons d'obtenir des données de formation, comme mentionné dans la section précédente. Notez que vous devez être prudent lorsque vous ajustez la distribution des étiquettes de formation, car cela aura un impact sur la façon dont le modèle prédit à l'inférence: si vous augmentez le nombre de patients malades dans votre ensemble de formation, le modèle prédira également la maladie plus souvent.

Collecte de plus de données de classes rares. Soyez prudent lorsque la distribution des étiquettes pendant la formation et l'inférence ne correspond pas.

2. Changer l'étiquetage

Si vous ne pouvez pas obtenir plus de données sur les classes rares, une autre approche consiste à repenser la taxonomie. Pour l'application pratique, il peut ne pas être nécessaire de faire la différence entre la maladie A ou B tant que vous reconnaissez que c'est l'une des deux. Dans ce cas, vous pouvez simplement rejoindre les deux classes. Soit déjà au moment de la formation pour simplifier la procédure de formation, soit lors de l'inférence, ce qui signifie que vous ne pénalisez pas si la maladie A ou B se confond.

La fusion de deux ou plusieurs classes pendant la formation ou l'évaluation peut simplifier le problème.

3. Échantillonnage

Si vous ne pouvez ni obtenir plus de données ni modifier l'étiquetage, cela signifie que vous devez travailler avec les données d'origine. Comment pouvez-vous toujours vous assurer que le modèle devient particulièrement bon dans les classes rares? Vous changez simplement la façon dont l'algorithme voit les exemples pendant la formation. Normalement, les échantillons sont échantillonnés de manière uniforme. Cela signifie que l'algorithme voit chaque exemple également probable pendant la formation.

Il existe plusieurs méthodes d'échantillonnage différentes qui contribuent à améliorer les performances de l'étiquette pour certaines classes rares.

  • Ignorer. Ignorer certains échantillons de la classe la plus fréquente est probablement la méthode la plus simple. Cela peut être fait jusqu'à ce qu'il y ait (à peu près) autant d'échantillons de chaque classe.
  • Sur ou sous-échantillon. Le suréchantillonnage signifie que les échantillons de la classe rare sont montrés à l'algorithme avec une fréquence plus élevée tandis que le sous-échantillonnage fait référence au contraire: les échantillons de la classe la plus fréquente sont montrés moins. Du point de vue de l'algorithme, les deux méthodes conduisent au même résultat. L'avantage de cette technique par rapport à la précédente est qu'aucun échantillon n'est ignoré.
  • Exploitation minière négative. Le troisième groupe de méthodes d'échantillonnage est un peu plus complexe mais en fait le plus puissant. Au lieu de sur-ou sous-échantillonnage, nous choisissons les échantillons intentionnellement. Bien que nous ayons beaucoup plus d'échantillons de la classe fréquente, nous nous soucions le plus des échantillons les plus difficiles, c'est-à-dire les échantillons qui sont mal classés avec les probabilités les plus élevées. Ainsi, nous pouvons régulièrement évaluer le modèle pendant la formation et enquêter sur les échantillons pour identifier ceux qui sont mal classés plus susceptibles. Cela nous permet de sélectionner judicieusement les échantillons qui sont montrés à l'algorithme plus souvent.

4. Pondération de la perte

En appliquant les méthodes 1 à 3 décrites dans cette section, nous avons tout fait pour nos données en termes d'amélioration de la distribution des classes. Par conséquent, nous pouvons maintenant nous concentrer sur l'algorithme lui-même. Heureusement, il existe des méthodes qui peuvent être appliquées pendant l'entraînement afin de mettre plus d'attention aux classes rares. Une manière très simple consiste à augmenter le poids de la perte d'échantillons de classes rares.

La perte des classes rares est plus pondérée.

Apprentissage III: comprendre les modèles de boîte noire

Une boîte noire (source: Les Simpsons).

Comme déjà mentionné dans la section sur la pré-formation, l'objectif le plus important dans le monde universitaire est d'atteindre ou de surpasser les performances de pointe, quel que soit le modèle. Lorsque vous travaillez sur des applications réelles, il ne suffit souvent pas de concevoir un modèle qui fonctionne bien.

Au lieu de cela, il est important de pouvoir

  • comprendre pourquoi et comment un modèle peut faire de mauvaises prédictions,
  • donner une idée de pourquoi notre modèle peut fonctionner mieux que n'importe quelle solution précédente,
  • assurez-vous que le modèle ne peut pas être trompé.

Avant l'essor des réseaux de neurones profonds, la plupart des modèles étaient relativement faciles à raisonner. Considérer ce qui suit:

  • Modèles linéaires: les classificateurs ou régresseurs linéaires fournissent de manière valable une relation directe entre chaque caractéristique et la prédiction. Il est donc relativement simple de raisonner sur le mécanisme de décision du modèle.
  • Arbres de décision: la beauté des arbres de décision réside dans le fait que l'on peut simplement suivre l'arbre pour comprendre comment la décision a été prise. Généralement, les nœuds supérieurs couvrent les fonctionnalités les plus importantes. Cela devient un peu plus difficile quand on parle de forêts à décision aléatoire, néanmoins la structure arborescente permet un raisonnement relativement bon.

Malheureusement, il est beaucoup plus difficile de comprendre le mécanisme de décision des réseaux de neurones profonds. Ils sont hautement non linéaires et peuvent facilement avoir plus de 100 millions de paramètres. Il est donc difficile de trouver une explication simple de la manière dont une décision est prise.

Comparaison des méthodes classiques d'apprentissage automatique et d'apprentissage en profondeur.

Cela devient un défi important dans les applications du monde réel, car les réseaux de neurones profonds pénètrent rapidement dans de nombreux domaines de notre vie: conduite autonome, diagnostic médical, prise de décision financière, et bien d'autres. La plupart de ces applications conduisent directement à des résultats qui affectent considérablement nos vies, nos actifs ou nos informations sensibles. Par conséquent, de mauvaises décisions par des algorithmes peuvent blesser des personnes ou causer des dommages financiers.

L'accident de Tesla (à gauche) et un article sur l'IA devenant raciste (à droite).

Malheureusement, ces échecs peuvent non seulement se produire par accident, mais aussi être causés par des attaquants. Pour démontrer la pertinence de ce sujet, la recherche a montré qu'en ajoutant simplement du bruit aléatoire simple à une image normale, le résultat de la classification d'un réseau neuronal profond peut être modifié (figure de gauche) tandis que l'image semble inchangée pour tout être humain. De même, il est possible d'intégrer des images complètement artificielles tout en recevant une prédiction très confiante (figure de droite).

Ajouter peu de bruit aléatoire à une image (à gauche) ou même à des images complètement artificielles (à droite) peut facilement tromper les réseaux de neurones.

Dans la vraie vie, en général, vous voulez comprendre la raison pour laquelle votre système ne se comporte pas comme il se doit.

Chez Merantix, nous prenons ces problèmes très au sérieux et pensons qu'ils deviendront encore plus importants à l'avenir, car des systèmes d'apprentissage plus approfondis seront utilisés dans des applications critiques du monde réel.

Récemment, nous avons ouvert une boîte à outils de visualisation d'apprentissage en profondeur appelée Picasso (Medium Post, Github). Comme nous travaillons avec une variété d'architectures de réseaux de neurones, nous avons développé Picasso pour faciliter la visualisation des visualisations standard à travers nos modèles dans nos différentes verticales: y compris les applications dans l'automobile, par exemple pour comprendre quand la segmentation de la route ou la détection d'objet échoue; la publicité, comme comprendre pourquoi certaines créations reçoivent des taux de clics plus élevés; et l'imagerie médicale, telle que l'analyse des régions d'une image CT ou X qui contiennent des irrégularités. Ci-dessous, j'ai inclus une démo de notre visualiseur Picasso open source.

Démo du visualiseur Picasso.

Conclusion

Dans ce billet de blog, j'ai partagé trois apprentissages qui sont importants pour nous chez Merantix lors de l'application de l'apprentissage en profondeur à des problèmes du monde réel. J'espère que ces idées seront utiles à d'autres personnes qui envisagent d'utiliser l'apprentissage en profondeur dans leur entreprise. Comme mentionné au début, il existe de nombreux autres ajustements, astuces et apprentissages (modèles en cascade, augmentation intelligente, mesures d'évaluation sensibles, construction de pipelines de formation réutilisables, inférence efficace et réduction de la taille du modèle, etc.) lors de la réalisation de l'apprentissage en profondeur pour le monde réel. applications. N'hésitez pas à nous contacter si vous souhaitez discuter de certains ajustements ou d'une application spécifique de l'apprentissage en profondeur.

Remerciements

  • Jonas pour avoir aidé avec les illustrations.
  • Hanns, Bosse, Matthias, Jonas, Stefan, Katja et Adrian pour la révision et la discussion de cet article.