Le deep learning pour les nuls

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.

Tensor flow sort (enfin) de sa bêta : https://medium.com/tensorflow/tensorflow-2-0-is-now-available-57d706c2a9ab

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… :smiley:

On devait pas finir un tournoi GZ ?

1 J'aime

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.

2 J'aimes

Le « petit » package unity de machine learning passe en version 1

https://www.linkedin.com/posts/dannylange_ai-simulation-unity3d-ugcPost-6667152896137805824-AFhW

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… :slight_smile: ) :

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 :slight_smile: ) Vous pouvez aussi diriger l’agent en bleu (fleche et espace pour tirer) mais peu de chance que vous arriviez à battre l’IA… :slightly_smiling_face:

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.

2 J'aimes

C’est presque aussi efficace que du réactif :innocent:
Pour la perception, pourquoi ne pas faire simplement un Sphere Collider en mode triggers ?

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.

A oui, j’avais pas compris, je croyais que tu lançais « a la main » des rayons pour simuler un lidar.

Ha : je ne me souvenais plus de ce topic.

Je suis tombé sur ce cours en français très bien expliqué sur https://blog.engineering.publicissapient.fr/tag/tensorflow/:

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

Je comprends un peu mieux mais légèrement, je nage dans les modèles et leurs utilisations.

En fait si je me suis mis c’est pour commencer à détecter dans des étiquettes pas forcément bien écrit des mots de produits et codes produits.

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.

1 J'aime

Unity vient d’ailleurs de publier une vidéo tuto sur le sujet https://youtu.be/gYwWolRFt98

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.

Hello,

J’ai eu envie / besoin de jouer avec des modèles de ML pour un projet perso, comme je suis une bille en code, j’ai utilisé le logiciel dataiku (il y a une version « perso gratuite » https://www.dataiku.com/), qui rend super accessible le ML (interface graphique, plein de presets pour les modèles, possibilité de comparer les résultats de plusieurs modèles / paramètrages, etc…)
On peut aussi faire du DL, mais ça demande de mettre les doigts dans le python, je ne me suis pas encore plongé dedans.

Je ne sais pas si c’est adapté pour des vrais codeurs qui veulent contrôler à 100% leur process, mais pour mes bricolages, j’ai gagné tellement de temps !

disclaimer : je n’ai pas d’actions chez eux - malheureusement, ils cartonnent - si mon message ressemble à de la pub, c’est simplement que j’ai kiffé !

1 J'aime

Tiens, Python est largement majoritaire dans le domaine du Deep Learning mais je viens de tomber sur un long article sur le domaine pour R. :slight_smile:

L’article est très bien expliqué notamment tout l’aspect du deep learning non spécifique à R.

Une 2e partie est attendue. Mon interrogation est qu’ils ne citent pas ni utilisent de library d’IA pour R. Peut-être qu’ils en parleront dans la 2e partie. Si j’ai bien compris dans cette 1ere partie il s’agit de la présentation et de la préparation des données, mais pas de la mise en œuvre.

La 2e partie. En fait c’est sans library spécialisée mais avec celles de bases en R en stats et autres ? C’est fonctionnellement identique à Tensorflow/Keras ? J’ai lu les 2 articles mais en diagonale pour tout ce qui est formule de maths.

Comme le titre de tes articles le disent clairement, ils presentent comment créer un reseau de neurone « from scratch ». C’est donc des articles qui presentent vraiment les concepts de base de fonctionnement d’un reseau de neurones. C’est donc interressant si tu veux te plonger vraiment serieusement dans le domaine. C’est par contre à l’opposé de ce que propose des librairies de plus au niveau type keras (ou fastai) qui elles sont faites pour te masquer au maximum l’aspect tres technique.
Les deux sont interressants mais c’est clairement pas le meme objectif. Pour clarifier si tu veux par exemple faire un modele de reconnaissnce d’image entierrement à la main comme presenté dans l’article ca te prendra tres certainement pres d’un an d’apprentissage. Si tu veux en faire un avec Keras ca te prendra quelques lignes de code.

Un point d’entrée pour Keras en R :

2 J'aimes

Je vois, je vois : ce qui explique les études de plusieurs mois sur des domaines d’application pas encore defrichés du Deep Learning.

Il faut surtout voir la portée de ton modèle. Si tu veux différencier des pommes et des oranges, ça va être assez rapide et facile, même from scratch ( c’est le type de projets qu’on donne en master ).

Faire du from scratch aujourd’hui n’a de sens que d’un point de vu pédagogique ou pour contribuer au amélioration du fonctionnement des RNA.

En temps que simple utilisateur, les libs grand public sont juste exceptionnelle.

2 J'aimes