Si tu utilises un framework comme tensorflow, tu n’as pas besoin d’avoir un très gros bagage. La retropropagation, les fonctions d’erreurs, tout est codé.
Là où tu aura du taff, est définir tes inputs, comprendre comment on joue avec la topo du réseau et définir tes dataset.
Je dirais en fait que tu as autant besoin d etre une brute en math quand tu fais du deeplearning que tu as besoin de connaitre en detail le fonctionnement d un cpu quand tu fais du dev java.
Tant que tu fais des choses standards/simples c est pas vraiment indispensable.
Par contre si tu veux aller un peu plus loin et essayer de faire des choses un peu novatrices avoir un certain niveau en math peut etre utile. Meme si dans l absolu il ne faut pas hesiter à “experimenter” des choses sans forcement comprendre les fondements mathematique derriere. D ailleurs certaines avancées en deeplearning ont été faite comme ca avec des experimentations et ont été formalisées mathematiquement que par la suite (parfois plusieurs années apres…). Avoir des connaissances en math peut aussi te permettre de ne pas perdre du temps sur des experimentations qui sont forcement vouées à l’echec parce qu elles n ont absoluement aucun sens mathematiquement.
Et puis il faut aussi bien differencier l utilisation du deeplearning pour l integrer dans un produit et la recherche en deeplearning. Tous les dev java n ont pas besoin d etre capable de reecrire une jvm from scratch tout comme les gens qui veulent utiliser du deeplearning n ont pas besoin de reinventer les concepts comme le dropout, le batchnorm, le weightdecay, le rnn, etc.
D un coté il y a des gens qui font de la recherche et qui eux ont donc plutot interet a avoir un “petit” niveau en math et de l autre ceux qui utilisent ces recherches pour les appliquer à un probleme precis.
Je t invite aussi quand meme à jeter un oeil au message tout en haut du thread, tu devrais y trouver quelques liens qui peuvent t interresser.
Merci @Ewi et @blind_man . Ça me rassure un peu. Et en parallèle au boulot on m’a décrit de façon pratique une regression linéaire : quand on voit le graphique typique de cela c’est déjà beaucoup plus parlant.
fastai 2019 part2 dispo
Cette 2eme serie de cours a une approche totalement opposée à la 1ere serie et permet de voir en detail les concepts de base et comment les implementer. Donc ces cours sont en fait autant des cours de deeplearning que des cours de python (particulierement d’optimisation).
Après faut pas oublier que le ML c’est comme sortir un char d’assaut. Dans bien des cas, tu en as pas besoin et une ACP, un markov ou un kalman feront l’affaire.
Dans mon labo, ma devise est : dis moi ton problème, je te dirai comment te passer de ML.
Je viens tomber sur un article sur les principes de predictions avec un exemple simple et effectivement comme vous disiez tout les 2 sans nécessairement de ML. Il a écrit 2 autres articles autour de ces sujets.
J’avoue… Quand je vois TF2 je pense d’abord à Team Fortress 2 plutôt que Tensor Flow… Voilà c’est dit puis professionnellement personne ici ne le verra…
Petit billet qui résume pas mal l’impasse/malaise que le deep learning soulève.
L’exemple de la voiture qui apprend à se garder est assez symptomatique : on fait plus rapide, plus fiable et plus efficace avec des SMA, du kalman ou autre approche.
C’est vraiment très fun comme truc. (le lien direct chez unity)
J ai joué un peu avec les exemples la semaine dernière en les modifiant et j’ai été agréablement surpris par la vitesse d’entrainement (entre 1h et 2h sur une 2080ti)
Mes 2 petits tests (pour le moment… ) :
https://drschizzo.github.io/github.io/foodcollector/index.html
Dans cet exemple les agents doivent manger les cubes vert et laisser les cubes rouges. Ils peuvent aussi tirer sur les autres agents pour les immobiliser. J’ai entraîné deux fois le modèle. Les agents représentés en rose sont entraînés avec une récompense différente pour les tirs et une structure de modèle un peu différente (ils sont BEAUCOUP plus efficace que les jaunes ) Vous pouvez aussi diriger l’agent en bleu (fleche et espace pour tirer) mais peu de chance que vous arriviez à battre l’IA…
Et donc pour faire ca il y a absolument 0 code pour la logique du déplacement des agents. Tout est contrôlé entièrement par le modèle qui est entraîné par reinforcement learning. Il reçoit des entrée, il sort une décision et il reçoit au fil du temps des récompenses suivant ses actions. Dans cet exemple il reçoit +1 si il attrape de la bouffe, -1 si il attrape du poison, +0.5 si il touche un ennemi, -0.2 si il loupe un tir et donc juste avec ça ça suffit pour que le modèle apprenne ce qu’il doit faire.
Le modèle prends juste en entré des infos « générique » du type « est ce que j’ai scanné de la bouffe ou du poison a proximité ». Il lance en fait juste devant lui 4 ou 5 rayons à une certaine distance et il reçoit en réponse le type de l objet que le rayon a éventuellement touché (en gros c est comme si l agent avait une sorte de lidar).
https://drschizzo.github.io/github.io/hallway/
Dans ce 2eme exemple il y a un symbole qui apparait au milieu et l’agent doit aller activer le bon interrupteur en fonction du symbole.
A la base dans l exemple fourni par unity les interrupteurs apparaissent toujours au même endroit dans les coins en haut et juste ils inversaient au hasard leur position.
Je me suis dit que ça serait plus intéressant que l’agent apprenne à activer des interrupteurs n’importe où.
L’agent en bleu a été entraîné dans un environnement qui avait des le début les interrupteurs qui apparaissaient n’importe où.
L’agent en rose a été entraîné avec une technique permettant de faire varier l’environnement au fil de l’entrainement. Il est donc entraîné dans un 1er temps avec juste les interrupteurs fixe qui inversent leur position et au fur et a mesure de ses progrès dans l entrainement les interrupteurs étaient positionnés en random. On voit qu’Il a beaucoup mieux appris que le 1er.
Le package de ML fournit un objet specifique pour la perception qu’ils appellent le RayPerceptionSensorComponent3D qui gere justement le type de perception « lidar » que je decris dans le post. Par contre tu peux tres bien utiliser un sphere collider et passer manuellement l’« observation » des collisions à ton agent. L’avantage d’utiliser le RayPerceptionSensor c’est que le package te gère tout tout seul pour toi et tu as pas mal d’option dessus pour gérer la distance des rayons, leur nombre, le rayon de « scan », etc.
Sinon des différents tests que j’ai fait pour le moment j’ai l’impression que les observations que tu vas fournir à ton modele et la valeur des recompenses sont asez dur à regler parce que tu peux avoir vraiment des resultats tres differents avec des modifications mineures (heureusement l’entrainement est assez rapide et tu as beaucoup de metrique que tu peux suivre sur tensorboard donc ca permet de faire pas mal de tests).
Apres au niveau des observations l’idée est quand meme d’essyer de passer à l’agent le minimum d’observation pour qu’il arrive à resoudre la tache. Ca permet à priori qu’il soit plus facilement capable de fonctionner dans un environnement un peu different.
Puis j’ai lancé en Keras / Tensorflow https://github.com/CleanPegasus/Traffic-Sign-Classifier qui est en fait une des participation à un concours de 2011 sur la signalisation routière qui est un bon exemple, mais dont les docs de données amont manquent.
Et enfin j’ai lu et lancé lien sur la reconnaissance d’image avec Keras
J"ai pas regardé en detail tes liens mais par contre fais quand meme attention parce que le deep learning avance assez vite. Il faut donc essayer de trouver des resources les plus recentes possibles. Au fil du temps les bonnes pratiques evoluent et les choses ont tendance à pas mal se simplifier au fil des evolutions des differentes lib (tensorflow, pytorch, keras, fastai)
Et sinon le ML sur unity ne te permettra pas de lire des mots sur des etiquettes pourries par contre c est tres fun et ca peut donner une bonne intuition sur certains concepts du deep learning.
Après avoir regardé la vidéo citée par Twin qui est effectivement très claire car centrée sur la compréhension des concepts sur des données facilement appréhendables que sont les commentaires de commit à classer dans 3 catégories…
… J’ai regardé celle ci d’un quart d’heure sur la classification du vin, la recherche d’une horloge et la classification de produit. Un peu haché mais finalement explique bien les concepts. Et au moins il ne se cache pas de ne pas expliquer les fonctions mathématiques et ça me va.
« Mes premiers pas en deeplearning avec Keras (Loïc Mathieu) »
… Et enfin un tutorial de 40 minutes de Thibault Neveu qui me paraissait hors sujet par rapport à mes besoins, une voiture qui se dirige, mais qui est vraiment très très bien expliqué et tout à fait représentatif . C’est la première fois que je comprends maintenant toutes les étapes Python en Keras. Il ne faut pas se fier à sa jeunesse ni à l’aspect petit bureau, c’est très bien expliqué et il a déjà du CV puisqu’il est chercheur en IA.
« Keras pour les débutants: On fait une voiture autonome! (Thibault Neveu) »
Il utilise Unity pour sa démo, et a fait d’autres tutoriaux dans le domaine de l’IA.