Comment définir un problème d’IA
Définition d'un problème d'IA
Une meilleure façon de poser une question sur l’IA/ML
Avec plus de 25 ans d’expérience en génie logiciel, j’ai répondu à de nombreuses questions de développeurs qui commencent à s’intéresser à l’intelligence artificielle (IA) et à l’apprentissage automatique (ML), alors j’ai pensé partager quelques conseils sur la publication de questions sur l’IA/ML sur des forums de discussion tels que Slack et Discord.
Contexte
Une idée fausse courante chez certains utilisateurs est qu’ils peuvent simplement “poster” une question. Cependant, les forums de discussion sont différents en principe des forums en ligne tels que StackOverflow. Un forum de discussion a tendance à être plus individuel, il nécessite donc plus de temps et d’efforts pour répondre à une question. Il est donc préférable de prendre un peu de temps au préalable pour décrire correctement le problème, en particulier lors de l’envoi d’un message direct (DM). Sinon, il est probable que vous receviez une réponse erronée (ce qui est assez courant).
Soyez attentif aux antécédents et à l’expérience des utilisateurs qui vous donnent des conseils. De nombreux utilisateurs de Discord sont des lycéens et des étudiants de premier cycle sans expérience en IA/ML ou en génie logiciel. Je mentionne mes références sur mon profil (divulgation complète).
La première étape pour résoudre un problème d’IA/ML est de pouvoir décrire et comprendre le problème en détail.
- Lama 2 apprend à coder
- Comment comparer un processeur quantique bruyant à un ordinateur classique
- Cyberattaque ferme les principaux télescopes financés par la NSF pendant plus de 2 semaines
Aperçu
Voici un aperçu de mes conseils pour décrire un problème d’IA/ML [1] :
- Donnez une description de vos antécédents et de votre expérience.
- Décrivez le problème, y compris la catégorie du problème de ML.
- Décrivez en détail le jeu de données et soyez prêt à partager votre(s) jeu(x) de données.
- Décrivez les étapes de préparation des données et d’ingénierie des caractéristiques que vous avez effectuées.
- Décrivez les modèles que vous avez essayés.
- Privilégiez le texte et les tableaux plutôt que les graphiques et les diagrammes.
- Évitez de demander aux utilisateurs de vous aider à déboguer votre code.
Comme certains utilisateurs accèdent à Discord à l’aide de dispositifs mobiles, il est préférable de partager la description de votre problème et/ou des extraits de code via GitHub Gist, Pastebin, etc., et de partager le lien sur le forum.
Il est généralement préférable de partager des fichiers via DM ou de créer un fil de discussion afin que les autres utilisateurs n’aient pas à rechercher vos fichiers et messages dans les différents canaux. Gardez à l’esprit que le contenu des canaux Discord n’est pas structuré, il peut donc être difficile de rechercher les canaux pour trouver vos messages originaux.
Si quelqu’un se propose de vous aider, il peut être utile de copier/coller votre message original si vous lui envoyez un DM.
Si vous rencontrez des problèmes de codage, il est préférable de partager un lien vers le code/source de l’algorithme et de dire que vous rencontrez des problèmes avec la mise en œuvre plutôt que de publier des extraits de code et de demander “qu’est-ce qui ne va pas avec mon code ?”
Détails
Vous devriez fournir brièvement ce qui suit (1 à 2 phrases par élément) dans votre publication sur le forum :
1. Donnez une description de vos antécédents et de votre expérience.
Il est préférable d’informer les utilisateurs dès le début si vous êtes au lycée, à l’université, en école supérieure, chercheur, professionnel expérimenté, etc.
De nombreux utilisateurs de Discord ne réalisent pas que de nombreuses questions nécessitent beaucoup de temps de recherche pour fournir une réponse. Il est donc juste que vous donniez une brève description de vos antécédents.
J’ai appris cette leçon après avoir passé un temps considérable à essayer d’aider des débutants (inconnus pour moi) qui ont ensuite résolu le mauvais problème en utilisant le mauvais algorithme.
2. Décrivez le problème.
En quelques phrases, décrivez le problème, y compris le type de problème de ML s’il est connu (numérique : classification, régression ; image : classification d’objets, détection d’objets, reconnaissance d’objets ; texte : analyse de sentiment, modélisation de sujets, génération de texte, etc.).
Cette étape peut inclure une revue de la littérature. Cependant, si vous parvenez à trouver des articles résolvant le même problème, cela devrait fonctionner pour le moment.
Une partie de la formulation du problème consiste à décider si vous traitez de l’apprentissage supervisé, non supervisé, par renforcement, etc. [1].
Quel est l’objectif du modèle ? Classer, prédire, détecter, traduire, etc.
Quel est l’objectif du projet? Recherche, ingénierie, application commerciale, hobby, etc.
3. Décrivez en détail l’ensemble de données et soyez prêt à le partager.
Décrivez l’ensemble de données, y compris les caractéristiques d’entrée et la (les) caractéristique(s) cible(s).
Il est préférable de partager des statistiques sommaires des données, y compris le décompte des caractéristiques discrètes ou catégorielles, y compris la caractéristique cible.
Il est préférable de partager l’ensemble de données complet (si vous souhaitez que quelqu’un vous aide, vous devez être ouvert et honnête).
Si, pour une raison quelconque, vous ne pouvez pas partager l’ensemble de données, vous devez le déclarer clairement et expliquer pourquoi vous ne pouvez pas le partager.
Veuillez noter que les utilisateurs de Discord sont plus que disposés à consacrer du temps pour donner des conseils gratuits, mais il est contraire à l’éthique de poser des questions vagues dans le but d’obtenir des conseils gratuits sur un projet commercial ou de recherche pour lequel vous êtes rémunéré. Si tel est le cas, vous devez être diligent et le mentionner clairement à plusieurs reprises dès le départ (ne vous attendez pas à ce que les autres utilisateurs de Discord aillent fouiller vos publications originales).
4. Décrivez les étapes de préparation des données et d’ingénierie des caractéristiques que vous avez effectuées.
Les étapes et techniques de préparation et de nettoyage des données varieront en fonction de l’ensemble de données.
Les étapes les plus courantes sont: corriger les erreurs structurelles, traiter les données manquantes ou en double, et filtrer les valeurs aberrantes.
L’ingénierie des caractéristiques peut être utilisée pour aider un algorithme et améliorer les performances du modèle, ce qui comprend la création de nouvelles caractéristiques, la combinaison de classes rares, la suppression des caractéristiques inutilisées et l’ajout de variables factices.
Certains algorithmes d’apprentissage automatique fonctionnent beaucoup mieux si toutes les variables sont mises à l’échelle dans la même plage en utilisant des techniques de normalisation ou de standardisation.
5. Décrivez les modèles que vous avez essayés (vous devriez en avoir essayé au moins un).
Après avoir effectué la préparation des données et l’ingénierie des caractéristiques, la première étape devrait consister à évaluer plusieurs modèles de référence qui seront utilisés ultérieurement pour la comparaison. Les modèles finaux que vous sélectionnez doivent avoir de meilleures performances sur votre ensemble de données que les modèles de référence.
6. Privilégiez le texte et les tableaux plutôt que les graphiques.
Il est préférable de ne pas tracer plus d’une mesure sur un graphique, car les bibliothèques telles que matplotlib ajusteront automatiquement les axes pour mieux montrer la différence des valeurs (pour des exemples, voir Comment diagnostiquer le surajustement et le sous-ajustement).
Voici quelques problèmes courants avec les diagrammes et les graphiques:
- Les tableaux sont utilisés pour comparer les modèles et partager des statistiques sommaires.
- Les tracés et les graphiques peuvent être utilisés pour visualiser les résultats du modèle, mais ne doivent pas être utilisés pour évaluer et comparer les résultats des algorithmes.
- Les tracés et les graphiques sont difficiles à voir sur les appareils mobiles (de nombreux utilisateurs accèdent à Discord sur des appareils mobiles).
- Les tracés et les graphiques peuvent être trompeurs, intentionnellement ou non (voir les leçons sur Comment mentir avec les statistiques).
- De nombreuses bibliothèques, telles que Matplotlib, réajusteront automatiquement les axes lorsque cela est possible pour montrer la différence des valeurs, ce qui a des avantages et des inconvénients.
La meilleure pratique (et l’approche utilisée par la plupart des outils d’apprentissage automatique) consiste à calculer plusieurs mesures de performance (voir les métriques d’erreur en apprentissage automatique) plutôt que de tracer des graphiques.
Le seul graphique couramment utilisé en apprentissage automatique est un graphique de perte d’entraînement/val pour vérifier la convergence du processus d’entraînement du modèle. Les tableaux sont généralement utilisés pour comparer les modèles et partager des statistiques sommaires. Si vous décidez de présenter les résultats sous forme de graphique, il est préférable d’inclure un tableau des valeurs réelles des mesures de performance.
Étant donné que les modèles d’IA/ML sont dynamiques/stochastiques, vous obtiendrez des résultats légèrement différents à chaque fois que vous entraînez et ajustez votre modèle. Par conséquent, vous devez exécuter l’ensemble du processus (entraîner et ajuster le modèle, puis évaluer le modèle en calculant les mesures de performance) plusieurs fois (disons 10x). Enfin, calculez la moyenne des valeurs métriques. Il peut également être utile de calculer des statistiques sommaires sur les mesures telles que la moyenne, la médiane et l’écart type.
Voici quelques articles de J. Brownlee qui montrent quelques façons de présenter les résultats de ML :
Prévision de séries temporelles multivariées avec les LSTMs dans Keras
Comment développer des modèles de prévision de séries temporelles multivariées à plusieurs étapes pour la pollution de l’air
7. Évitez de demander aux utilisateurs de déboguer le code.
En général, le problème n’est généralement pas l’implémentation de l’algorithme mais la préparation des données et l’ingénierie des caractéristiques de votre ensemble de données.
Si vous vous retrouvez embourbé dans le débogage du code, cela devrait être un signal d’alarme indiquant que vous devez refactoriser ou, plus probablement, choisir un modèle plus simple (le rasoir d’Occam).
Références
[1] S. Russell et P. Norvig, Intelligence Artificielle : Un approche moderne, 4e éd., Upper Saddle River, NJ : Prentice Hall, ISBN : 978–0–13–604259–4, 2021 (principalement Section 19.9).
[2] E. Alpaydin, Introduction à l’apprentissage automatique, 3e éd., MIT Press, ISBN : 978–0262028189, 2014 (principalement Chapitre 19).
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Les scientifiques séquencent la dernière partie du génome humain le chromosome Y
- Système ML basé sur la lumière pourrait donner des LLMs plus puissants et efficaces
- 3 façons intelligentes d’utiliser ChatGPT pour accélérer votre prochain projet de science des données
- Data Science pour le bien Au-delà des profits, vers un monde meilleur
- Streamlit et MongoDB Stocker vos données dans le cloud
- Perspectives légales et éthiques sur l’IA générative
- Prédiction de la maladie rénale chronique une nouvelle perspective