# 3: Développement d'un modèle d'apprentissage automatique du début à la fin

Il s'agit de la partie 3 du didacticiel en 6 parties, Le guide PM étape par étape pour créer des produits basés sur l'apprentissage automatique.

Vous devez être familier avec tous les concepts techniques, alors maintenant nous pouvons passer à l'essentiel de transformer une idée en un modèle réel en production.

La modélisation en un coup d'œil

À un niveau élevé, la construction d'un bon modèle ML est comme la construction de tout autre produit: vous commencez par l'idéation, où vous vous alignez sur le problème que vous essayez de résoudre et sur certaines approches potentielles. Une fois que vous avez une direction claire, vous prototypez la solution, puis la testez pour voir si elle répond à vos besoins. Vous continuez d'itérer entre l'idéation, le prototypage et les tests jusqu'à ce que votre solution soit suffisamment bonne pour être commercialisée, moment auquel vous la produisez pour un lancement plus large. Plongeons maintenant dans les détails de chaque étape.

Étant donné que les données font partie intégrante du ML, nous devons superposer les données au-dessus de ce processus de développement de produit, de sorte que notre nouveau processus se présente comme suit:

  • Idéation. Alignez le problème clé à résoudre et les entrées de données potentielles à considérer pour la solution.
  • Préparation des données. Collectez et obtenez les données dans un format utile pour un modèle à digérer et à apprendre.
  • Prototypage et test. Construisez un modèle ou un ensemble de modèles pour résoudre le problème, testez leur performance et répétez jusqu'à ce que vous ayez un modèle qui donne des résultats satisfaisants.
  • Productisation. Stabilisez et faites évoluer votre modèle ainsi que la collecte et le traitement de vos données pour produire des résultats utiles dans votre environnement de production.

Idéation

Le but de cette phase est de s'aligner en équipe sur le problème clé que le modèle résout, la fonction objectif et les entrées potentielles du modèle.

  • Alignez sur le problème. Comme discuté, l'apprentissage automatique doit être utilisé pour résoudre un vrai problème commercial. Assurez-vous que toutes les parties prenantes de votre équipe et de l'entreprise conviennent du problème que vous résolvez et de la manière dont vous utiliserez la solution.
  • Choisissez une fonction objective. En fonction du problème, décidez quel devrait être l'objectif du modèle. Y a-t-il une fonction objective que le modèle tente de prédire? Y a-t-il une mesure de la «vérité» que vous essayez d'obtenir et que vous pouvez vérifier par rapport aux données de la «vérité du terrain», par exemple les prix des maisons, les variations des cours des actions, etc.? Alternativement, essayez-vous simplement de trouver des modèles dans les données? Par exemple, regrouper des images en groupes qui ont quelque chose en commun?
  • Définissez des mesures de qualité. Comment mesureriez-vous la qualité du modèle? Il est parfois difficile de prévoir ce qu'est une qualité acceptable sans vraiment voir les résultats, mais une idée directionnelle de l'objectif est utile.
  • Réfléchissez aux entrées potentielles. Votre objectif est de décider quelles données pourraient vous aider à résoudre le problème / prendre des décisions. La question la plus utile à poser est: "Comment un expert de l'espace aborderait-il ce problème?" Pensez à quelles seraient les variables / éléments de données sur lesquels une personne baserait sa solution. Tous les facteurs susceptibles d'affecter le jugement humain doivent être testés - à ce stade, aller aussi loin que possible. La compréhension des facteurs clés peut nécessiter une connaissance problématique de l'espace commercial, ce qui est l'une des raisons pour lesquelles il est important que les gens d'affaires / produits soient fortement impliqués à ce stade. L'équipe de données devra traduire ces entrées potentielles en fonctionnalités de modèle. Veuillez noter que pour transformer les entrées en fonctionnalités, un traitement supplémentaire peut être nécessaire - plus d'informations à ce sujet ci-dessous.

Préparation des données

Le but de cette phase est de collecter des données brutes et de les obtenir sous une forme qui peut être branchée en tant qu'entrée dans votre modèle prototype. Vous devrez peut-être effectuer des transformations complexes sur les données pour y parvenir. Par exemple, supposons que l'une de vos fonctionnalités soit le sentiment des consommateurs à l'égard d'une marque: vous devez d'abord trouver des sources pertinentes où les consommateurs parlent de la marque. Si le nom de la marque comprend des mots couramment utilisés (par exemple «Apple»), vous devez séparer le bavardage de la marque du bavardage général (sur le fruit) et l'exécuter à travers un modèle d'analyse des sentiments, et tout cela avant de commencer à construire votre prototype. Toutes les fonctionnalités ne sont pas aussi complexes à construire, mais certaines peuvent nécessiter un travail important.

Regardons cette phase plus en détail:

  • Collectez les données de votre prototype de la manière la plus rapide possible. Tout d'abord, identifiez vos données manquantes. Dans certains cas, vous devrez peut-être décomposer les entrées nécessaires pour accéder au niveau «blocs de construction» des données brutes qui sont plus facilement disponibles, ou aux données qui sont un proxy proche de ce dont vous avez besoin et plus faciles à obtenir. Une fois identifié, trouvez le moyen le plus rapide et le plus simple d'obtenir vos données. Méthodes non évolutives telles qu'un téléchargement manuel rapide, l'écriture d'un grattoir rudimentaire ou l'achat d'un échantillon de données même si un peu cher peut être l'approche la plus pratique. Investir trop dans la mise à l'échelle de votre acquisition de données à ce stade n'a généralement pas de sens, car vous ne savez pas encore à quel point les données seraient utiles, quel format serait le meilleur, etc. Les gens d'affaires devraient être impliqués - ils peuvent aider à réfléchir à des moyens pour trouver des données qui ne sont pas facilement disponibles ou simplement les obtenir pour l'équipe (les fonctions commerciales pertinentes à impliquer dépendent des besoins en données et de la structure de l'organisation - les partenariats, le développement commercial ou le marketing peuvent être utiles ici). Notez que dans le cas d'un algorithme d'apprentissage supervisé, vous avez besoin de données non seulement pour les fonctionnalités du modèle; vous avez besoin de points de données de «vérité terrain» pour la fonction objective de votre modèle afin de former, puis de vérifier et de tester votre modèle. Revenons à l'exemple des prix des maisons - afin de construire un modèle qui prédit les prix des maisons, vous devez lui montrer certaines maisons avec des prix!
  • Nettoyage et normalisation des données. À ce stade, la responsabilité incombe en grande partie à votre équipe de science / ingénierie des données. Un travail important est impliqué dans la traduction des idées et des ensembles de données brutes en entrées de modèle réelles. Les ensembles de données doivent être vérifiés et nettoyés pour éviter d'utiliser des données incorrectes, des valeurs aberrantes non pertinentes, etc. Il peut être nécessaire de transformer les données à une échelle différente afin de faciliter le travail avec les autres ensembles de données ou leur alignement. Surtout lorsqu'il s'agit de textes et d'images, un prétraitement des données pour extraire les informations pertinentes est généralement requis. Par exemple, le fait de brancher trop d'images de grande taille dans un modèle entraîne une énorme quantité d'informations qui ne peuvent pas être traitées, vous devrez donc peut-être réduire la qualité, travailler avec une partie de l'image ou utiliser uniquement les contours des objets. Dans le cas du texte, vous devrez peut-être détecter les entités qui vous concernent dans le texte avant de décider de l'inclure, d'effectuer une analyse des sentiments, de trouver des n-grammes communs (séquences fréquemment utilisées d'un certain nombre de mots) ou d'effectuer une variété d'autres transformations. Ceux-ci sont généralement pris en charge par les bibliothèques existantes et ne nécessitent pas que votre équipe réinvente la roue, mais cela prend du temps.

Prototypage et test

Le but de cette étape est d'arriver à un prototype de modèle, de le tester et de l'itérer jusqu'à ce que vous arriviez à un modèle qui donne suffisamment de bons résultats pour être prêt pour la production.

  • Construisez un prototype. Une fois que les données sont en bon état, l'équipe de science des données peut commencer à travailler sur le modèle réel. Gardez à l'esprit qu'il y a beaucoup d'art dans la science à ce stade. Cela implique beaucoup d'expérimentation et de découverte - sélectionner les fonctionnalités les plus pertinentes, tester plusieurs algorithmes, etc. Ce n'est pas toujours une tâche d'exécution simple, et donc le calendrier pour arriver à un modèle prêt pour la production peut être très imprévisible. Il y a des cas où le premier algorithme testé donne d'excellents résultats, et des cas où rien de ce que vous essayez ne fonctionne bien.
  • Validez et testez le prototype. À ce stade, vos scientifiques des données effectueront des actions qui garantissent que le modèle final est aussi bon qu'il peut l'être. Ils évalueront les performances du modèle sur la base des métriques de qualité prédéfinies, compareront les performances des différents algorithmes qu'ils ont essayés, ajusteront tous les paramètres qui affectent les performances du modèle et éventuellement tester les performances du modèle final. Dans le cas d'un apprentissage supervisé, ils devront déterminer si les prévisions du modèle par rapport aux données de vérité sur le terrain sont suffisamment bonnes pour vos besoins. Dans le cas d'un apprentissage non supervisé, il existe différentes techniques pour évaluer les performances, en fonction du problème. Cela dit, il existe de nombreux problèmes où le simple fait de regarder les résultats aide beaucoup. Dans le cas du clustering par exemple, vous pouvez facilement tracer les objets que vous clusterisez sur plusieurs dimensions, ou même consommer des objets qui sont une forme de média pour voir si le clustering semble intuitivement raisonnable. Si votre algorithme marque des documents avec des mots clés, les mots clés ont-ils un sens? Existe-t-il des lacunes flagrantes où le marquage échoue ou des cas d'utilisation importants manquent? Cela ne remplace pas les méthodes plus scientifiques, mais en pratique aide à identifier rapidement les opportunités d'amélioration. C'est également un domaine où une autre paire d'yeux aide, alors assurez-vous de ne pas laisser cela à votre équipe de science des données.
  • Répéter. À ce stade, vous devez décider avec votre équipe si des itérations supplémentaires sont nécessaires. Comment fonctionne le modèle par rapport à vos attentes? Fonctionne-t-il suffisamment bien pour constituer une amélioration significative par rapport à l'état actuel de votre entreprise? Y a-t-il des domaines où il est particulièrement faible? Un plus grand nombre de points de données est-il requis? Pouvez-vous penser à des fonctionnalités supplémentaires qui amélioreront les performances? Existe-t-il d'autres sources de données qui amélioreraient la qualité des intrants du modèle? Etc. Un remue-méninges supplémentaire est souvent nécessaire ici.

La production

Vous arrivez à cette étape lorsque vous décidez que votre modèle prototype fonctionne suffisamment bien pour résoudre votre problème commercial et peut être lancé en production. Notez que vous devez d'abord déterminer les dimensions sur lesquelles vous souhaitez mettre votre modèle à l'échelle si vous n'êtes pas prêt à vous engager dans une production complète. Supposons que votre produit soit un outil de recommandation de films: vous souhaiterez peut-être n'ouvrir l'accès qu'à une poignée d'utilisateurs, mais fournir une expérience complète à chaque utilisateur, auquel cas votre modèle doit classer chaque film de votre base de données par pertinence pour chacun des utilisateurs. . Il s'agit d'un ensemble d'exigences de mise à l'échelle différent de celui de fournir des recommandations uniquement pour les films d'action, mais d'ouvrir l'accès à tous les utilisateurs.

Voyons maintenant les aspects plus techniques de la production d'un modèle:

  • Augmentez la couverture des données. Dans de nombreux cas, vous prototypez votre modèle sur la base d'un ensemble de données plus limité que celui que vous utiliseriez réellement en production. Par exemple, vous prototypez le modèle sur un certain segment de clients, puis vous devez l'élargir à l'ensemble de votre clientèle.
  • Mettre à l'échelle la collecte de données. Une fois que vous avez vérifié quelles données sont utiles pour le modèle, vous devez créer un moyen évolutif de collecte et d'ingestion de données. Dans la phase de prototypage, il était bien de rassembler les données manuellement et de manière ad hoc, mais pour la production, vous souhaitez automatiser autant que possible.
  • Actualisez les données. Créez un mécanisme qui actualise les données au fil du temps - soit met à jour les valeurs existantes ou ajoute de nouvelles informations. Sauf si, pour une raison quelconque, vous n'avez pas besoin de conserver les données historiques, votre système doit avoir un moyen de stocker des quantités croissantes de données au fil du temps.
  • Maquettes. Il y a à la fois une science des données et un aspect technique. Du point de vue de la science des données, si vous avez modifié les données sous-jacentes, par exemple en augmentant le nombre de segments de clientèle que vous incluez, vous devez recycler et retester vos modèles. Un modèle qui fonctionne bien sur un certain ensemble de données ne fonctionnera pas toujours sur un ensemble de données plus large ou autrement différent. Sur le plan architectural, le modèle doit pouvoir évoluer pour s'exécuter plus fréquemment sur des quantités croissantes de données. Dans l'exemple de recommandations de films, il y aurait probablement plus d'utilisateurs, plus de films et plus d'informations sur les préférences de chaque utilisateur au fil du temps.
  • Vérifiez les valeurs aberrantes. Bien que le modèle dans son ensemble puisse très bien évoluer, il peut y avoir des populations petites mais importantes pour lesquelles le modèle ne fonctionne pas bien. Par exemple, vos recommandations de films peuvent très bien fonctionner pour les utilisateurs en moyenne, mais pour les parents, vous diffuserez principalement des films pour enfants car ils choisissent des films pour les enfants dans leur compte. Il s'agit d'un problème de conception de produit - vous devez séparer les recommandations pour le parent des recommandations pour leurs enfants dans le produit, mais ce n'est pas quelque chose que le modèle vous dira.

Ce que j'ai décrit jusqu'à présent est un flux conceptuel. En réalité, les lignes sont souvent floues et vous devez souvent faire des allers-retours entre les phases. Vous pouvez obtenir des résultats insatisfaisants de vos efforts de sourcing de données et devoir repenser l'approche, ou produire le modèle et voir qu'il fonctionne si mal avec les données de production que vous devez revenir au prototypage, etc.

Une note sur l'externalisation

La construction de modèles implique souvent des tâches très fastidieuses et sisyphiques telles que la génération de données étiquetées et le test du modèle. Par exemple, étiqueter des centaines ou des milliers de points de données avec les bonnes catégories comme entrée pour un algorithme de classification, puis tester si la sortie du modèle de classification est correcte. Il est très utile de mettre en place un moyen à la demande d'externaliser ces tâches à mesure qu'elles se présentent. D'après mon expérience, vous pouvez obtenir des résultats décents de Mechanical Turk si vous demandez à plusieurs personnes d'effectuer la même tâche simple et de prendre la réponse la plus fréquente ou une sorte de moyenne. Il existe des plateformes comme CrowdFlower qui donnent des résultats plus fiables, mais elles sont également plus chères. Certaines tâches nécessitent davantage de pré-formation des personnes qui les exécutent (par exemple, si la tâche est spécifique à votre espace et / ou nécessite des connaissances préalables), auquel cas vous voudrez peut-être consulter des plates-formes telles que Upwork.

Maintenant que vous comprenez le processus de construction d'un modèle, nous allons ensuite discuter de qui fait quoi dans ce processus et comment construire une organisation qui serait la plus efficace pour y arriver.

Si vous avez trouvé cet article intéressant, pourriez-vous s'il vous plaît cliquer sur le cœur vert ci-dessous pour me le faire savoir, ou le partager avec quelqu'un d'autre qui pourrait le trouver utile? Cela ferait totalement ma journée!