Comment aborder les problèmes d'apprentissage automatique

Publié: 2022-03-11

L'une des tâches principales des ordinateurs est d'automatiser les tâches humaines. Certaines de ces tâches sont simples et répétitives, comme « déplacer X de A à B ». Cela devient beaucoup plus intéressant lorsque l'ordinateur doit prendre des décisions sur des problèmes beaucoup plus difficiles à formaliser. C'est là que nous commençons à rencontrer des problèmes d'apprentissage automatique de base.

Les problèmes d'apprentissage automatique couvrent l'illustration

Historiquement, de tels algorithmes étaient construits par des scientifiques ou des experts qui avaient une connaissance intime de leur domaine et reposaient en grande partie sur des règles. Avec l'explosion de la puissance de calcul et la disponibilité d'ensembles de données volumineux et diversifiés, l'attention s'est déplacée vers une approche plus informatique.

Les concepts d'apprentissage automatique les plus populaires de nos jours ont à voir avec les réseaux de neurones, et d'après mon expérience, cela a donné l'impression à de nombreuses personnes que les réseaux de neurones sont une sorte d'arme miracle pour tous les problèmes d'inférence. En fait, c'est assez loin de la vérité. Aux yeux du statisticien, ils forment une classe d'approches d'inférence avec leurs forces et leurs faiblesses associées, et cela dépend entièrement du problème que les réseaux de neurones soient la meilleure solution ou non.

Bien souvent, il existe de meilleures approches.

Dans cet article, nous allons décrire une structure pour attaquer les problèmes d'apprentissage automatique. Il n'est pas possible d'entrer dans trop de détails sur des modèles d'apprentissage automatique spécifiques, mais si cet article suscite de l'intérêt, des articles ultérieurs pourraient offrir des solutions détaillées à certains problèmes d'apprentissage automatique intéressants.

Mais d'abord, essayons de montrer pourquoi vous devriez être plus prudent que de penser automatiquement "réseau de neurones" face à un problème d'apprentissage automatique.

Avantages et inconvénients des réseaux de neurones

Avec les réseaux de neurones, l'inférence se fait via un « réseau » pondéré. Les pondérations sont calibrées au cours du processus dit « d'apprentissage », puis, par la suite, appliquées pour attribuer les résultats aux intrants.

Aussi simple que cela puisse paraître, tous les poids sont des paramètres du réseau calibré, et généralement, cela signifie trop de paramètres pour qu'un humain puisse les comprendre.

Illustration d'entrée-sortie de la théorie des réseaux de neurones

Nous pourrions donc tout aussi bien considérer les réseaux de neurones comme une sorte de boîte noire d'inférence qui relie l'entrée à la sortie, sans modèle spécifique entre les deux.

Examinons de plus près les avantages et les inconvénients de cette approche.

Avantages des réseaux de neurones

  • L'entrée est la donnée elle-même. Des résultats utilisables même avec peu ou pas d'ingénierie de fonctionnalités.
  • Compétence formable. En l'absence d'ingénierie de fonctionnalités, il n'est pas nécessaire d'avoir des compétences aussi difficiles à développer que l'intuition ou l'expertise du domaine. Des outils standard sont disponibles pour les inférences génériques.
  • La précision s'améliore avec la quantité de données. Plus il voit d'entrées, meilleures sont les performances d'un réseau de neurones.
  • Peut surpasser les modèles classiques lorsqu'il n'y a pas d'informations complètes sur le modèle. Pensez au sentiment public, pour commencer.
  • L'inférence ouverte peut découvrir des modèles inconnus. Si vous utilisez un modèle et que vous n'y tenez pas compte, il ne détectera pas le phénomène correspondant. Les réseaux de neurones pourraient.

Exemple de réseau neuronal réussi : l'IA de Google a trouvé une planète en orbite autour d'une étoile lointaine - là où la NASA ne l'a pas fait - en analysant les données accumulées du télescope.

Inconvénients des réseaux de neurones

  • Ils nécessitent beaucoup de données (annotées !). Premièrement, cette quantité de données n'est pas toujours disponible. La convergence est lente. Un modèle solide (par exemple, en physique) peut être calibré après quelques observations - avec les réseaux de neurones, cela est hors de question. L'annotation représente beaucoup de travail, sans compter qu'elle n'est pas infaillible en soi.
  • Aucune information sur la structure interne des données. Êtes-vous intéressé par la base de l'inférence ? Pas de chance ici. Il existe des situations où l'ajustement manuel des données améliore l'inférence d'un bond, mais un réseau de neurones ne pourra pas aider à cela.
  • Problèmes de surajustement. Il arrive souvent que le réseau ait plus de paramètres que ne le justifient les données, ce qui conduit à une inférence sous-optimale.
  • Les performances dépendent des informations. S'il existe des informations complètes sur un problème, un modèle solide a tendance à surpasser un réseau de neurones.
  • Il y a des problèmes d'échantillonnage. L'échantillonnage est toujours une question délicate, mais avec un modèle, on peut rapidement développer une notion d'échantillonnage problématique. Les réseaux de neurones n'apprennent qu'à partir des données, donc s'ils obtiennent des données biaisées, ils auront des conclusions biaisées.

Un exemple d'échec : Un proche m'a parlé d'une grande entreprise (que je ne peux pas nommer) qui travaillait sur la détection de véhicules militaires sur des photos aériennes. Ils avaient des images où il y avait de tels véhicules et d'autres qui n'en avaient pas. La plupart des images de la première classe ont été prises un jour de pluie, tandis que les secondes ont été prises par temps ensoleillé. En conséquence, le système a appris à distinguer la lumière de l'ombre.

En résumé, les réseaux de neurones forment une classe de méthodes d'inférence qui ont leurs avantages et leurs inconvénients.

Le fait que leur popularité surpasse toutes les autres méthodes statistiques aux yeux du public a probablement plus à voir avec la gouvernance d'entreprise qu'autre chose.

Former les gens à utiliser des outils standard et des méthodes de réseau neuronal standardisées est un processus beaucoup plus prévisible que la chasse aux experts du domaine et aux artistes de divers domaines. Ceci, cependant, ne change rien au fait que l'utilisation d'un réseau de neurones pour un problème simple et bien défini revient en réalité à tirer sur un moineau avec un canon : cela nécessite beaucoup de données, nécessite beaucoup de travail d'annotation et, en retour, pourrait juste sous-performer par rapport à un modèle solide. Pas le meilleur forfait.

Pourtant, il y a un énorme pouvoir dans le fait qu'ils "démocratisent" les connaissances statistiques. Une fois qu'une solution d'inférence basée sur un réseau de neurones est considérée comme un simple outil de programmation, elle peut aider même ceux qui ne se sentent pas à l'aise avec des algorithmes complexes. Donc, inévitablement, beaucoup de choses sont maintenant construites qui n'existeraient pas autrement si nous ne pouvions fonctionner qu'avec des modèles sophistiqués.

Approche des problèmes d'apprentissage automatique

Lorsque vous abordez des problèmes d'apprentissage automatique, voici les étapes que vous devrez suivre :

  • Définition des critères d'acceptation
  • Nettoyer vos données et maximiser leur contenu informatif
  • Choisir l'approche d'inférence la plus optimale
  • Entraînez-vous, testez, répétez

Voyons ces éléments en détail.

Différentes étapes d'un problème d'apprentissage automatique

Définition des critères d'acceptation

Vous devriez avoir une idée de la précision de votre cible dès que possible, dans la mesure du possible. Cela va être la cible vers laquelle vous travaillez.

Nettoyer vos données et maximiser leur contenu informatif

C'est l'étape la plus critique. Tout d'abord, vos données ne doivent contenir aucune (ou peu) d'erreurs. Le nettoyer de ceux-ci est une première étape essentielle. Remplacez les valeurs manquantes, essayez d'identifier les modèles qui sont manifestement faux, éliminez les doublons et toute autre anomalie que vous pourriez remarquer.

Quant à l'information, si vos données sont très informatives (au sens linéaire), alors pratiquement n'importe quelle méthode d'inférence vous donnera de bons résultats. Si les informations requises ne s'y trouvent pas, le résultat sera du bruit. Maximiser les informations signifie principalement trouver toutes les relations non linéaires utiles dans les données et les linéariser. Si cela améliore les entrées de manière significative, tant mieux. Si ce n'est pas le cas, d'autres variables devront peut-être être ajoutées. Si tout cela ne porte pas ses fruits, la précision de la cible peut en souffrir.

Avec un peu de chance, il y aura des variables simples qui seront utiles. Vous pouvez identifier des variables utiles si vous, par exemple, les tracez par rapport à la ou aux variables cibles d'apprentissage et trouvez que le tracé ressemble à une fonction (c'est-à-dire qu'une plage étroite dans l'entrée correspond à une plage étroite dans la sortie). Cette variable peut ensuite être linéarisée - par exemple, si elle trace comme une parabole, soustrayez certaines valeurs et prenez la racine carrée.

Pour les variables bruyantes (une plage étroite d'entrée correspond à une large plage de sortie), nous pouvons essayer de les combiner avec d'autres variables.

Pour avoir une idée de la précision, vous pouvez mesurer les probabilités de classe conditionnelles pour chacune de vos variables (pour les problèmes de classification) ou appliquer une forme très simple de régression, comme la régression linéaire (pour les problèmes de prédiction). Si le contenu informatif de l'entrée s'améliore, votre inférence s'améliorera également, et vous ne voulez tout simplement pas perdre trop de temps à ce stade à calibrer un modèle lorsque les données ne sont pas encore prêtes. Alors continuez à tester aussi simplement que possible.

Choisir l'approche d'inférence la plus optimale

Une fois que vos données sont dans une forme décente, vous pouvez opter pour la méthode d'inférence (les données peuvent encore être peaufinées plus tard, si nécessaire).

Faut-il utiliser un modèle ? Eh bien, si vous avez de bonnes raisons de croire que vous pouvez construire un bon modèle pour la tâche, alors vous devriez probablement le faire. Si vous ne le pensez pas, mais qu'il existe de nombreuses données avec de bonnes annotations, vous pouvez alors utiliser un réseau de neurones en mode mains libres. Dans les applications pratiques d'apprentissage automatique, cependant, il n'y a souvent pas assez de données pour cela.

La précision du jeu par rapport à la couverture rapporte souvent énormément. Les approches hybrides sont généralement tout à fait acceptables. Supposons que les données soient telles que vous puissiez obtenir une précision proche de 100 % sur 80 % d'entre elles avec un modèle simple ? Cela signifie que vous pouvez rapidement obtenir des résultats démontrables, et si votre système peut identifier quand il fonctionne sur le territoire ami à 80 %, alors vous avez essentiellement couvert la majeure partie du problème. Votre client n'est peut-être pas encore pleinement satisfait, mais cela vous permettra de gagner rapidement sa confiance. Et rien ne vous empêche de faire quelque chose de similaire sur les données restantes : avec un effort raisonnable, vous couvrez maintenant, disons, 92 % des données avec une précision de 97 %. Certes, sur le reste des données, c'est un pile ou face, mais vous avez déjà produit quelque chose d'utile.

Pour la plupart des applications pratiques, cela est très utile. Supposons que vous soyez dans le secteur des prêts et que vous souhaitiez décider à qui accorder un prêt, et tout ce que vous savez, c'est que pour 70 % des clients, votre algorithme est très précis. Génial, il est vrai que les 30 % restants de vos candidats nécessiteront davantage de traitement, mais 70 % peuvent être entièrement automatisés. Ou : supposons que vous essayez d'automatiser le travail des opérateurs pour les centres d'appels, vous ne pouvez faire un bon travail (rapide et salissant) que sur les tâches les plus simples, mais ces tâches couvrent 50 % des appels ? Génial, le centre d'appels économise de l'argent s'il peut automatiser 50 % de ses appels de manière fiable.

Pour résumer : si les données ne sont pas suffisamment informatives ou si le problème est trop complexe pour être traité dans son intégralité, sortez des sentiers battus. Identifiez les sous-problèmes utiles et faciles à résoudre jusqu'à ce que vous ayez une meilleure idée.

Une fois que votre système est prêt, apprenez, testez et bouclez-le jusqu'à ce que vous soyez satisfait des résultats.

Entraînez-vous, testez, répétez

Après les étapes précédentes, il reste peu d'intérêt. Vous avez les données, vous avez la méthode d'apprentissage automatique, il est donc temps d'extraire les paramètres via l'apprentissage, puis de tester l'inférence sur l'ensemble de test. La documentation suggère que 70 % des dossiers devraient être utilisés pour la formation et 30 % pour les tests.

Si vous êtes satisfait des résultats, la tâche est terminée. Mais, plus probablement, vous avez développé de nouvelles idées au cours de la procédure, et celles-ci pourraient vous aider à gagner en précision. Peut-être avez-vous besoin de plus de données ? Ou juste plus de nettoyage de données ? Ou un autre modèle ? Dans tous les cas, il y a de fortes chances que vous soyez occupé pendant un certain temps.

Alors, bonne chance et bon travail à venir !

En rapport:
  • Machines et confiance : comment atténuer les biais de l'IA
  • Stars Realigned : Améliorer le système de notation IMDb