Introduction autour du deep learning et son application aux IoT - Partie 1

Contexte et résumé

Cet article a pour but d’expliquer les bases du deep learning et à quel point il peut s’appliquer aux IoT et aux villes intelligentes. Plus précisément, je me suis intéressé à la mise en œuvre des algorithmes d’apprentissage profond en utilisant des ensembles de données provenant d’IoT.

 

Deep Learning

« La technologie du deep learning apprend à représenter le monde. C’est-à-dire comment la machine va représenter la parole ou l’image par exemple » Cette phrase de Yann LeCun résume parfaitement ce qu’est le deep learning. Et si elle le résume aussi bien, c’est qu’il en est à la base avec son homologue Geoffrey Hinton Ces deux éminents chercheurs ont depuis, été recrutés respectivement chez Facebook et Google.

Le deep learning est souvent considéré comme un ensemble d’algorithmes qui ‘imite le cerveau’. Autrement dis, un algorithme qui est « basé sur plusieurs couches ». Il permet de modéliser et de construire une hiérarchie de concept dite complexe sur des concepts plus simples, mais nous y reviendrons plus tard.

Il a été placé sous le feu des projecteurs lorsque les chercheurs de Google ont fourni à partir de YouTube 10 millions d’images aléatoires et non labélisées dans leur système de deep learning. Ils ont ensuite chargé le système de reconnaître des éléments de base de l’image et comment ces éléments s’imbriquaient. L’architecture comprenait 1000 ordinateurs et 16000 processeurs et a pu identifier les images qui partageaient des caractéristiques similaires, en, effet, après 3 jours intensifs d’apprentissage, le système a pu reconnaître un chat, ainsi que le visage d’une personne avec un taux de réussite de 70%, un taux record pour l’époque ! Cette expérience a montré tout le potentiel du deep learning, amenant de gros investissements de géants comme Google et Microsoft Research, qui début 2015, dans le cadre d’un challenge scientifique, ont annoncé avoir obtenu respectivement un taux d’erreur de 4.94% et de 4.8% dans la reconnaissance d’image.

Aujourd’hui, nous le rencontrons sans nous en rendre compte, par exemple, lorsque l’on regarde la fiche d’un livre sur Amazon, le site va nous proposer un article susceptible de nous intéresser et ce en apprenant au fur et à mesure de nos recherches.

 

Comment un ordinateur fonctionne et comment imiter la pensée ?

Afin de comprendre la signification des algorithmes d’apprentissage profond, il est important de comprendre comment les ordinateurs fonctionnent. Depuis le début, les chercheurs ont tenté de créer des ordinateurs qui pensent. Jusqu’à récemment, cet effort s’est basé sur des règles en adoptant une approche « descendante ». Cette approche consiste à écrire suffisamment de règles afin de couvrir toutes les circonstances possibles. Mais elle est limitée par le nombre de règles.

Afin de surmonter ces limitations, une approche « ascendante » a été proposée. L’idée ici est d’apprendre par l’expérience. L’expérience est assurée par des données labellisées. Ces données sont introduites dans le système et celui-ci est entraîné sur la base des réponses. Cette approche est par exemple appliquée pour le filtrage des spams. Cependant, la plupart des données (images, flux vidéo, son, etc.) ne sont pas labellisées et si elles le sont, pas correctement.

L’autre problème se situe au niveau du traitement dans un domaine non fini. Par exemple, prenons l’exemple du jeu d’échec, il est complexe, mais fini, car il possède un nombre fini de pièces (32 pièces) et un ensemble fini d’actions (64 cases). Mais dans la pratique, nous avons potentiellement un grand nombre, voire infini, d’alternatives.

Un problème comme jouer aux échecs peut être « décrit » à un ordinateur avec un ensemble de règles formalisées.

En revanche, de nombreux problèmes du monde réel sont faciles à comprendre par des personnes (intuitif), mais difficilement descriptibles pour un ordinateur (à la différence des échecs). Des exemples de ces problèmes sont par exemple la reconnaissance de mots, de phrases ou alors reconnaître une image. Ils sont difficiles à décrire à un ordinateur, car le domaine n’est pas fini. Ainsi, la description du problème souffre de ce qu’on appelle la malédiction de la dimensionnalité, c’est-à-dire que lorsque le nombre de dimensions augmente, le volume de l’espace augmente si vite que les données disponibles deviennent rares. Les ordinateurs ne peuvent pas être formés sur des données rares. Ces scénarios ne sont pas faciles à décrire, car il n’y a pas suffisamment de données pour représenter correctement toutes les combinaisons. Et pourtant, de tels problèmes sont fréquents dans la vie quotidienne.

 

Comment faire des algorithmes d’apprentissage profond ?

L’apprentissage profond est donc impliqué dans les cas de problèmes « durs/intuitifs » qui ont peu ou pas de règles et possédant une forte dimensionnalité. Ici, le système doit apprendre à faire face à des circonstances imprévues, sans connaître les règles à l’avance. De nombreux systèmes existent, comme la reconnaissance vocale de Siri et le travail sur la reconnaissance de visage par Facebook. Les systèmes d’apprentissage profond sont désormais possibles à mettre en œuvre pour trois raisons : la puissance élevée des CPU/GPU, des algorithmes performants et l’existence des sets de données. Au cours des prochaines années, ces facteurs vont conduire à d’autres applications.

Ces algorithmes sont calqués sur le fonctionnement du cerveau. Le cerveau peut être considéré comme un ordinateur analogique travaillant de manière massivement parallèle contenant environ 10 puissance 10 processeurs « simples » (neurones) – chacun nécessitant quelques millisecondes à répondre à une entrée. Pour modéliser le fonctionnement du cerveau, en théorie, chaque neurone peut être conçu comme un petit appareil électronique ayant une fonction de transfert similaire à un neurone biologique. Nous pourrions alors connecter chaque neurone à beaucoup d’autres et ainsi imiter le fonctionnement du cerveau. En pratique, ce modèle n’est pas facile à mettre en œuvre et il est difficile à entraîner.

Donc, nous faisons quelques simplifications dans le modèle imitant le cerveau. Le réseau de neurones qui en résulte est appelé « feedforward – backforward network ». Les simplifications/contraintes sont : nous changeons la connectivité entre les neurones de sorte qu’ils soient dans des couches distinctes. Chaque neurone d’une couche est connecté à chaque neurone de la couche suivante. Les signaux circulent dans une seule direction. Et finalement, nous simplifions la conception du neurone en fonction des entrées. Un tel réseau est plus pratique à construire et à utiliser.

deep learning feedforward

Ainsi :

  1. a) Chaque neurone reçoit un signal provenant des neurones de la couche précédente
  2. b) Chacun de ces signaux est multiplié par une valeur pondérée.
  3. c) Les entrées pondérées sont additionnées et passent à travers une fonction de limitation qui adapte la sortie à une plage fixe de valeurs.
  4. d) La sortie de cette fonction est diffusée à tous les neurones de la couche suivante.

deep learning backforward network

L’algorithme d’apprentissage le plus commun pour les réseaux de neurones artificiels est appelé back propagation (BP) qui signifie « Rétropropagation des erreurs ». Pour utiliser le réseau de neurones, nous appliquons les valeurs d’entrée à la première couche permettant aux signaux de se propager à travers le réseau. Un réseau BP apprend par l’exemple, c’est-à-dire que nous devons fournir un ensemble de données que se compose de quelques exemples d’entrées et la sortie correcte pour chaque cas. Donc, nous utilisons ces exemples d’entrées-sorties pour montrer au réseau ce qui est attendu comme comportement. Il permet au réseau de s’adapter en ajustant le poids par la propagation de l’erreur à travers le réseau. Chaque liaison entre les neurones a une valeur de poids unique. L’intelligence du réseau réside dans la valeur de ces poids. A chaque itération des erreurs circulant vers l’arrière, les poids sont ajustés. L’ensemble du processus est répété pour chacun des cas d’exemples. Ainsi, pour détecter un objet, le développeur doit entraîner le réseau de neurones en envoyant de nombreuses versions numérisées de données (par exemple des images) contenant ces objets. Si le réseau ne reconnait pas précisément un modèle particulier, les poids doivent être ajustés. L’objectif final de cet apprentissage est d’obtenir un réseau capable de reconnaître systématiquement le motif à reconnaitre (ex un chat).

 

La suite de l’article dans une deuxième partie

 

Mickael Faust

Référent Technique Mobilité/IOT, SQLI Lyon

2 commentaires
  1. Mickael FAUST dit :

    Bonjour billbaroud, effectivement il s’agit ici de faire un tour introductif sur le deep learning et IoT.
    Cette 1er article fait parti d’un lot, la 2e partie vient de paraître et la 3e ne devrait pas tarder (https://www.technologies-ebusiness.com/enjeux-et-tendances/introduction-autour-deep-learning-application-aux-iot-partie-2)

    Mais bien sûr on en reste pas là et d’autres articles, début 2018, viendront apporter des exemples d’application plus concret et plus technique sur tout ça.

    En tout cas merci d’avoir lu et commenté !! Je prend bonne note !

    Répondre

votre commentaire

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Inscription newsletter

Ne manquez plus nos derniers articles !