La planification de projets de ML est différente de la planification de projets d'ingénierie logicielle typiques. Les projets de ML sont généralement non linéaires et présentent des degrés d'incertitude variables. Ils nécessitent une approche itérative et un état d'esprit expérimental.
Incertitude du projet
La planification à un stade précoce peut être difficile, car la meilleure approche n'est généralement pas évidente au début d'un projet. Cette incertitude inhérente rend difficile l'estimation des délais.
Un concours récent de Kaggle illustre l'incertitude des projets de ML. Au cours des premières semaines d'une compétition, 350 équipes y ont participé. Les meilleures équipes ont pu augmenter la qualité de la prévision de référence de 35% à 65%. Au cours des deux semaines suivantes, le nombre d'équipes travaillant sur le problème est passé de 350 à 1 400. Cependant, le meilleur modèle n'a obtenu qu'une qualité de prédiction de 68%.
La figure 3 illustre l'incertitude du développement du ML en montrant l'augmentation significative des efforts, mais seulement des gains minimes en termes de qualité du modèle.
Figure 3. Sur une période de deux semaines, le nombre d'équipes travaillant sur le problème a été multiplié par quatre, mais la qualité du modèle est restée presque la même, ce qui souligne la difficulté d'estimer l'effort d'une solution de ML.
En d'autres termes, plus d'un millier d'équipes, chacune testant différentes transformations de données, architectures et hyperparamètres, n'ont réussi à produire qu'un modèle avec une qualité de prédiction de 68 %.
Un exemple du secteur illustre la non-linéarité des projets de ML, où la sortie n'est pas proportionnelle aux entrées. Deux équipes ont mis plusieurs mois à entraîner un modèle pour obtenir une qualité de prédiction de 90 %. Toutefois, plusieurs équipes ont mis plus de cinq ans à préparer le modèle pour la production avec une qualité de prédiction de 99,9 %.
Ces exemples soulignent que le ML prêt pour la production est un processus exploratoire qui nécessite à la fois un état d'esprit scientifique et d'ingénierie.
Approche expérimentale
Dans la plupart des cas, le développement de ML ressemble davantage à la réalisation d'expériences qu'à l'ingénierie logicielle traditionnelle. Le ML nécessite de tester différentes fonctionnalités, d'essayer plusieurs architectures et d'ajuster les hyperparamètres de manière optimale. Par définition, les tests ne sont pas toujours couronnés de succès. Il est donc préférable de planifier en utilisant un framework expérimental.
Examinons un plan d'ingénierie logicielle type pour voir en quoi il diffère d'un plan de projet de ML.
Planifier des projets d'ingénierie logicielle
Dans un plan d'ingénierie logicielle typique, vous définissez les exigences, décrivez les composants, estimez l'effort et planifiez le travail. Il existe un chemin clairement défini vers une solution. Par exemple, les ingénieurs savent souvent avec un degré de certitude élevé les tâches qu'ils doivent accomplir pour créer une application qui répond aux spécifications de conception.
Lorsqu'il prédit le temps qu'il faudra pour accomplir une tâche, il peut estimer le travail en fonction de projets similaires. Bien que des difficultés surviennent invariablement (dépendances inconnues ou exigences changeantes, par exemple), ce qui peut parfois rendre l'estimation difficile, il existe généralement un chemin clair vers la solution.
En revanche, les projets de ML ne comportent généralement pas de chemin unique vers la réussite.
Planifier des projets de ML
Pour la plupart des projets de ML, vous trouverez la meilleure solution en testant plusieurs approches dans un processus d'essais et d'erreurs. Vous ne connaissez généralement pas la solution optimale à votre problème avant d'essayer de le résoudre. Par exemple, l'architecture de la solution optimale peut être un modèle linéaire simple, un réseau de neurones ou un arbre de décision. Vous ne pourrez découvrir la meilleure solution qu'en essayant chacune des approches.
Cette ambiguïté rend la planification difficile. Comme nous l'avons vu précédemment, il est difficile de prédire l'effort qu'un projet de ML nécessitera. Ce n'est qu'en essayant de résoudre le problème que vous pourrez mieux évaluer le temps et les ressources nécessaires à une solution.
Voici les stratégies recommandées pour planifier le travail de ML:
Planifiez le travail. Définissez des délais clairs pour accomplir des tâches ou essayer une solution particulière. Par exemple, vous pouvez allouer deux semaines pour déterminer si vous pouvez accéder au bon type de données. Si vous pouvez obtenir les données, vous pouvez consacrer deux semaines supplémentaires pour voir si un modèle simple indique qu'une solution de ML est réalisable. Si un modèle simple échoue, vous pouvez consacrer deux semaines supplémentaires à essayer un réseau neuronal. À la fin de chaque période, vous disposerez de plus d'informations pour déterminer s'il est utile de continuer à consacrer des ressources au problème.
Affinez les exigences du projet. Si une solution de ML semble prometteuse, mais qu'elle n'est pas une fonctionnalité essentielle pour votre produit ou service, réduisez son champ d'application. Par exemple, lorsque vous planifiez le travail du prochain trimestre, vous pouvez envisager d'essayer une solution très simple. Dans les trimestres suivants, vous pouvez planifier l'amélioration itérée de la solution. De nombreuses équipes ont mis en œuvre une solution de ML en effectuant des améliorations incrémentielles sur une période plus longue pour obtenir des solutions de ML efficaces.
Projet d'un stagiaire ou d'un nouvel employé Diriger et guider un stagiaire ou un nouvel employé pour tenter une solution de ML peut être un bon moyen de commencer à explorer un nouvel espace dont les résultats sont inconnus. Une fois le projet terminé, vous aurez une meilleure idée des efforts qu'une solution de ML nécessitera et des approches potentiellement prometteuses à poursuivre, ou si les ressources doivent être investies ailleurs.
Avec n'importe quelle stratégie, il est judicieux d'échouer rapidement. Essayez d'abord les approches les moins coûteuses, mais potentiellement les plus rentables. Si l'approche fonctionne, vous avez trouvé une bonne solution. Si ce n'est pas le cas, vous n'avez pas perdu beaucoup de temps et de ressources.
À mesure que les équipes acquièrent de l'expérience et de l'exposition à l'exécution de tests, elles pourront mieux estimer l'effort qu'un test peut nécessiter, ce qui rend la planification plus prévisible. Toutefois, le résultat d'un test est presque toujours inconnu. Par conséquent, le nombre de tests nécessaires pour trouver la meilleure solution ne peut pas être estimé à l'avance.
Aborder les approches de planification avec un état d'esprit expérimental permet de préparer votre équipe à la réussite. Lorsqu'une approche mène à une impasse, au lieu d'être découragés, les membres de l'équipe comprennent que cela fait partie du processus de recherche d'une solution de ML. Plus important encore, en discutant de l'incertitude inhérente au développement du ML avec les personnes concernées, vous pouvez définir des attentes plus réalistes.
Testez vos connaissances
À retenir
Apprendre à planifier plusieurs approches de ML de manière probabiliste prend du temps et nécessite de l'expérience. Votre plan de projet peut nécessiter des mises à jour fréquentes. Considérez-le comme un document dynamique en constante évolution à mesure que votre équipe teste plusieurs approches. En vous concentrant sur les idées clés suivantes, vous augmenterez vos chances de réussite:
- Évaluez le coût et les chances de réussite de chaque approche.
- Essayez un portefeuille d'approches.
- Identifiez les enseignements tirés et essayez d'améliorer le système un élément après l'autre.
- Planifiez les défaillances.
Parfois, une approche précoce peut déboucher sur une percée. Quelqu'un peut découvrir un bug dans le pipeline de génération de données ou dans la répartition entraînement/validation. Grâce à une bonne planification et à une documentation approfondie, vous augmentez la probabilité de trouver un modèle qui résout votre problème métier plus tôt que prévu.