ProRealTime
Un problème de pc ? Une choix de logiciel ou de hardware à faire ? Besoin de conseils pour acheter ou optimiser votre station de trading ?

Introduction au Deep Learning

par ScottieFF » 12 Mar 2017 08:59

Comme promis, j'ouvre cette file pour partager mon intérêt pour l'intelligence artificielle, le machine learning et le deep learning.
Il s'agit de présenter le sujet de facon simple pour chacun puisse comprendre les principes, sans autre finalité que de découvrir ce sujet scientifique ardu, et ces applications pratiques quasi infinies.

Je commence par reposter les ouvertures de la semaine sur le sujet et quelques pointeurs sur des ressources disponibles pour aller plus loin.
J'invite évidemment tous les amateurs, à partager leurs connaissances à la suite.

Re: Introduction au Deep Learning

par ScottieFF » 12 Mar 2017 09:01

Depuis la fin de la dernière guerre mondiale, les scientifiques travaillent a rendre l'ordinateur intelligent. L'objectif ultime de l'époque était de créer une machine à notre image, c'est a dire ayant nos capacités de perception et surtout notre intelligence. Les romanciers et les scénaristes ont évidemment été plus rapides à imaginer notre futur avec les machines.

Pour le meilleur:
Spoiler:

Ou pour le pire:
Spoiler:

Mais il faut bien reconnaitre que 70 ans plus tard tout cela n'est encore qu'un fantasme. Car en parallele, notre connaissance du cerveau humain a elle aussi progressé (faiblement c'est vrai, mais quand meme), et notre organe pensant semble toujours plus complexe au plus on l'étudie. Donc la tache est trop ardue. Et comment reproduire artificiellement quelle chose que l'on ne comprend pas vraiment? Pas facile n'est ce pas?
Eh bien on ne se laisse pas abattre, et on découpe le problème en taches plus simples.

Si on commencait par doter nos ordinateurs de capacité d'apprentissage?
C'est le machine learning.
Le principe est assez simple: Au lieu d'écrire un programme qui execute une série d'instructions déterminées avec des données en entrée et en sortie, on donne un très grand nombre de données au programme pour qu'il apprenne a y reconnaître des caractéristiques particulières qui seraient difficiles voire impossibles à décrire a priori. L'exemple le plus simple d'application du machine learning est la reconnaissance visuelle.
Reconnaître un chat dans une vidéo Youtube est une tache que nous pouvons tous réaliser sans aucun effort, mais qui restait impossible pour un ordinateur il n'y a encore pas si longtemps. Parce qu'on ne savait décrire ce qu'était un chat de façon a la fois suffisamment générique et suffisamment précise pour que le programme ne se trompe pas. Donc au lieu de ça, on lui fait analyser des vidéos de chat (et là ça tombe bien, c'est pas ca qui manque :D ) pour qu'il détermine lui même comment les reconnaître.
Et si l'approche n'est pas récente, c'est la qualité des algorithmes d'apprentissage qui fait maintenant toute la différence.
Et cet exemple de chat n'est pris au hasard: c'est vraiment l'experience qui a été réalisé en Juin 2012 par Google avec un réseau de 16000 ordinateurs qui ont analysé pas moins 10 millions d'images de chat à partir de vidéo youtube. Et maintenant le programme repere les chats dans les nouvelles vidéos de façon quasi infaillible.
Alors c'est vrai, reconnaitre un chat sur Youtube peut paraitre une activité un peu futile a apprendre a un ordinateur (bien qu'elle représente une part non négligeable de l'activité humaine de nos jours), mais on imagine bien tous les usages de la reconnaissance visuelle: pour aider la conduite des véhicules sans chauffeur ou pour donner l'alerte automatiquement en analysant la vidéo d'une camera de surveillance.
Cette science précise est le Deep learning dont je vous propose de reparler un peu plus demain.

Re: Introduction au Deep Learning

par ScottieFF » 12 Mar 2017 09:03

Comme je l'évoquais hier, le Machine learning est une méthode particulière d'apprentissage informatique. Cette méthode est issue de travaux débutés dans les années 60 tentant de reproduire le principe de fonctionnement neuronal du cerveau.
Le modèle informatique du neurone est représenté par une fonction plus ou moins complexe de transformation de plusieurs données en entrée pour générer une donnée en sortie que l'on peut schématiser de la façon suivante:


Par exemple, on pourrait à partir des données taille, poids et température d'une personne chercher à déterminer la probabilité qu'elle soit malade ou en bonne santé. Chacune des caractéristiques en entrée va etre affecté d'un certain poids. La température va par exemple avoir un poids plus important que la taille pour déterminer si quelqu'un est en bonne santé. Le résultat
à lui aussi un poids représentant la probabilité de la maladie dans mon exemple. Dans la réalité la réponse est binaire, il s'agit donc plutot d'un seuil a partir duquel la fonction va considérer la personne malade. Comme dans votre cerveau, chaque neurone ne sait donner qu'une réponse binaire.
On va bien dans cet exemple que le nombre d'informations en entrée est très insuffisant, et qu'une seule étape d'analyse ne sera pas suffisante non plus pour répondre par oui ou non a la question.
On va donc faire appel à un réseau de neurones


A gauche input layer: les caractéristiques du patient
A droite output layer: les diagnostics
Entre les deux les couches intermédiaires (hidden layers)
On peut noter que les neurones d'une meme couche n'interagissent pas entre eux, ils n’interagissent qu'avec la couche précédente et suivante.
Le principe est donc d'analyser les données en plusieurs étapes (ou couches) successives dont chacune donne un niveau d'abstraction supplémentaire à l'analyse et sert de point de départ à l'étape suivante. A l'arrivée une réponse binaire pour chaque diagnostic de notre patient.

Alors comment avec un tel modèle la machine apprend t'elle?
Le principe est faire fonctionner l'analyse avec une grande variété de donnée en entrée (l'historique des patients d'un hopital pour rester sur mon exemple) et d'indiquer à chaque fois le résultat à obtenir (la maladie dont les différents patients souffraient). Le programme va alors ajuster les poids et probabilités de chaque étape par itération pour obtenir les meilleurs résultats possibles.
A l'issue, on pourra utiliser le système avec chaque nouvelle série de données (chaque nouveau patient) et le systeme déterminera automatiquement le bon diagnostic.

Dis comme ca parait simple (du moins j’espère :roll: ), mais on verra demain qu'il y a quand même pas mal de difficultés à faire cet exercice dans la réalité.

Re: Introduction au Deep Learning

par ScottieFF » 12 Mar 2017 09:04

Comme je l'ai dit, le principe du réseau de neurones est ancien, et son principal problème jusqu'à récemment qu'il fallait beaucoup de neurones et de nombreuses couches intermédiaires pour résoudre un problème réel ce qui rendait le temps d'apprentissage beaucoup trop long et la quantité des données nécessaire pour effectuer cette apprentissage trop importante. Donc les résultats étaient globalement mauvais. La seule solution était de faire appel à un expert (humain) pour prémâcher le travail au système, qui du coup apparaissait beaucoup moins intelligent.
Et pour les usages fondamentaux de l'IA comme la reconnaissance d'image d'autres méthodes étaient préférées par les scientifiques. Seuls quelques irreductibles continuaient à travailler sur le réseau de neurones, mais la plupart s'accordaient la trouver la methode bonne théoriquement mais inutilisable dans la pratique.
Et la démonstration en était donné chaque année lors d'un concours de reconnaissance visuelle ou les autres méthodes donnaient systématiquement un taux d'erreur certes élevé (20 a 25%) mais inférieur au réseau de neurones.
Mais une révolution a eu lieu en 2012 date à laquelle c'est le réseau de neurones qui est subitement apparue plus efficace que les autres, faisant tomber le taux à 15%.
Alors pourquoi particulièrement en 2012? On va dire qu'il y a eu une conjonction de facteurs: la puissance des CPUs (des GPUs pour etre précis, c'est a dire des CPUs spécialisés dans les cartes graphiques - on parle ici analyse d'image, pas étonnant que la cpu de la carte graphique soit adaptée a cette tache) qui augmente chaque année a atteint le seuil critique nécessaire à cet exercice, mais aussi la montée en puissance du big data c'est a dire le stockage très important de données pouvant être exploiter par les ordinateurs. Plus particulièrement la creation de la base Imagenet
par l'Université de Stanford qui a mis a disposition une immense base d'image classifiée. C'est cette base qui servi à l'apprentissage des premiers réseaux profonds (Deep Learning) Depuis lors une course poursuite a lieu entre les GAFA (Google, Amazon, Facebook, Apple) pour la maitrise du Deep learning et l'application de ces résultats au development de leur business.
Google semble le plus a la pointe dans le domaine: Après la reconnaissance des chats dans les vidéos en 2012, il a concu l'année derniere une machine capable de battre le champion du monde du jeu de GO. On se souvient que l'ordinateur bat depuis quelques temps deja le meilleur joueur d'echecs, initialement avec une méthode toute simple qui consiste à étudier toutes les possibilités pour déterminer la meilleure à chaque coup. La particularité du jeu de GO est que le plateau fait 19 lignes et 19 colonnes soit 361 intersections sur lesquels les joueurs posent a tour de role une pierre blanche ou noire. Le nombre de combinaison a étudier en début de partie est de l'ordre de 10^600 ( un 1 avec 600 zeros derriere) ce qui rend l'analyse systématique complètement impossible. L'ordinateur doit absolument devenir "intelligent", et c'est le deep learning qui lui donne cette capacité.

Si le fait de concevoir un ordinateur capable de nous battre aux jeux de plateau peut sembler inoffensif voire amusant, il y a une vrai inquiétude chez certains dans le fait que ces technologies soient développés par des entreprises privées. Car le principal débouché commercial touche à l'analyse des données personnelles et son exploitation. Certains imaginent même un futur relativement proche dans lequel les machines seront nettement plus intelligentes que l'homme quel que soit l'activité considérée, ce qui donnera un pouvoir extrêmement important et dangereux aux sociétés qui en maîtriseront la technologie (rappelons nous que se sont des machines qui font la guerre à notre place désormais).
Bon la ca finit sur une note un peu sombre, je me note d'essayer le rattraper le coup demain :D

Re: Introduction au Deep Learning

par ScottieFF » 12 Mar 2017 09:05

Donc le Deep learning a réellement explosé en 2012, je pense que le terme exploser n'est pas exageré, puisqu'en seulement 5 ans on le retrouve partout dans notre vie quotidienne: Les assistants à base de reconnaissance vocal en sont issus (Siri, Cortana par exemple) et ne sont très probablement que le début d'une interaction toujours plus intime entre l'homme et la machine. Un très bon film qui montre une direction possible (voire probable) de cette évolution est "Her" de Spike Jonze qui raconte l'histoire d'un homme tombant amoureux de son ordinateur. Je vous le conseille si vous ne l'avez pas encore vu, c'est très bien fait.

Aujourd'hui, l'évolution de réseau de neurones atteint un niveau incroyable. On parle de systèmes ayant de centaines de millions de neurones pour les plus récents. Malgré cela le cerveau artificiel est encore environ 1000x moins riche en neurones que le cerveau humain, mais a la vitesse actuelle, on estime que l'IA devrait rejoindre le cerveau humain vers 2045. Le nombre de connexion entre les neurones sera encore très inférieur, mais le cerveau artificiel sera beaucoup plus spécialisé et pourra travailler sans interruption, ses capacités seront donc certainement assez proche.

Je disais hier que de voir les plus grandes sociétés de l'Internet s'accaparer les technologies de l'intelligence artificielle en effrayait plus d'un.
Alors que faire pour lutter contre ca?
Elon Musk, le célebre milliardaire fondateur de Tesla et SpaceX fait partie des inquiets et il a trouvé une solution: Financer un centre de recherche indépendant pour développer une Intelligence Articielle disponible a tous appelée OpenIA (openai.com). Son idée est que si la technologie est ouverte à tous, cela devrait lutter contre hégémonie des plus grands groupes. Espérons que cela soit le cas.

Re: Introduction au Deep Learning

par ScottieFF » 12 Mar 2017 09:12

clodreb a écrit:Hello la foule de la file,

pour ceux que le sujet sur le deep learning intéresse, il y a une vulgarisation pas mal du tout à l'adresse suivante : https://medium.com/@alexis.anzieu/samuser-avec-le-machine-learning-a40159bb0546#.tjrttk5um

ça explique le principe qui a permis de faire de la reconnaissance faciale chez google and Co.

c'est pas mal du tout comme introduction au sujet .

Re: Introduction au Deep Learning

par ScottieFF » 12 Mar 2017 09:17


Re: Introduction au Deep Learning

par ScottieFF » 12 Mar 2017 09:24

La leçon inaugurale de Yann Le Cun au Collège de France - vraiment passsionnant

Ca dure 1h10 mais vous pouvez zapper les 10 premieres minutes (bavardage de présentation)

C'est le grand spécialiste français et il fait une super vulgarisation
http://www.college-de-france.fr/site/yann-lecun/inaugural-lecture-2016-02-04-18h00.htm

Re: Introduction au Deep Learning

par ScottieFF » 12 Mar 2017 09:34

Bonne video sur l'apprentissage des jeux par Google Deepmind


Re: Introduction au Deep Learning

par ScottieFF » 12 Mar 2017 10:06

Application de l'IA dans le quotidien



ProRealTime

Alors partagez-le 5 fois c'est bon pour la santé