Pourquoi de la bouffe ? Bah déjà ca attire le manant mais en plus après cet article vous voudrez créer une IA détecteur de hot dog. (Si.) CTO dans une start-up en province française (autant dire que quand ca parle d’IA on pense JAMAIS à nous), j’ai récemment pris le temps (oui il faut se forcer à le prendre) de retirer le voile de magie noire qui entourait les buzz words du moment dans le business de la tech, je cite le Deep Learning, l’IA et autres nouveaux outils de la Data Science qui se démocratisent.
En réalité, nous baignons dedans depuis un petit moment puisque certains membres de notre équipe ont réalisés des réseaux de neurones dans le cadre de la recherche, et qui ont aidé à traiter certaines données. Mais je n’ai jamais prit le temps personnellement (ouch pas bien) de vraiment m’y plonger pour voir si nous pourrions nous en servir en production, dans le workflow principal.
Pourtant cela avait l’air sympa, je voyais passer dans ma veille des prouesses incroyables, presque impossible à réaliser avec des algorithmes standards (à moins d’y passer toute sa vie). Mais tout cela me semblait trop “académique” et “universitaire” pour prendre du temps, maitriser la technologie et l’utiliser en production.
Bon ça c’était le discours avant 2017. Parce qu’en 2017, Apple a présenté sont ingénieux framework CoreML et cela à changé la donne.
Apple à réussi à simplifier un processus fastidieux et obscure en quelques ligne de codes : du génie. En effet, à quoi bon s’extasier devant une technologies et des avancées incroyables si les développeurs qui réalisent de la valeur sur le marché du logiciel sont incapable de s’en servir, où n’ont tout simplement pas 2 mois devant eux pour maitriser les frameworks de machine learning complexe ?
TL:DR; A quoi ça sert ce “Machine Learning”, à quoi ca va me servir ?
C’est un peu stylé, mais en vrai ce ne sont que des fonctions mathématiques derrière tout cela (le fun retombe).** Non mais restez, ce n’est pas compliqué du tout ! Au contraire vous allez vous amuser et peut-être bien devenir le créateur d’une IA mangeuse de données qui contrôlera un *outputjson* (oui oui ça rigole pas). Si vous voulez une définition pour briller en soirée : https://en.wikipedia.org/wiki/Machine_learning
Le Machine Learning, vous veut du bien, il va vous éviter de coder plein de if
Vous le savez aujourd’hui tout est données, les “data” sont partout et en tant que développeur vous passez votre temps à recevoir / envoyer du json du xml, des images, du texte, du son, de la vidéo etc. Lorsque vous réalisez un logiciel, (peu importe le domaine dans lequel vous travaillez), son objectif est de transmettre de la donnée au minimum, de la stocker, de la traiter et de la présenter. Et si ce n’est pas le cas aujourd’hui, demain cela sera le cas. Parce que l’on veut tout connecter, les objets du quotidiens, les machine dans les usines pour controler le rendement, la caisse enregistreuse de votre boulangerie est connectée.
Puisque tout est connecté on va recevoir de la donnée, la stocker et idéalement en faire quelque chose d’utile (faire de la pub, hein Google, Facebook), enfin qui rapporte de l’argent.
Cette donnée va être raffinée, et présentée à des décideurs qui vont s’en servir pour prendre des décisions mieux éclairées. L’information c’est de l’argent puisque le savoir permet d’avoir un temps d’avance sur les autres.
Le truc c’est que le ML c’est tout pile son terrain de jeu, les données c’est son data… euh dada (humoriste). Le ML est fait pour manipuler de la donnée cohérente sous forme de nombre, il apprend et offre une prédiction par rapport à ce qu’il a emmagasiné, sympa non ? Et il le fait avec une facilité déconcertante.
Vous allez pouvoir :
- Prédire le prix de la pomme en Amérique du sud en 2030
- Classer une image dans un catégorie
- Transcrire ce qu’un humain dit dans un micro
- Detecter et tracker un objet dans une vidéo
- Recommander des produits à vos utilisateurs en fonctions de centaines de facteurs si vous le souhaitez
- Empêcher la fraude sur votre système de manière ultra fiable.
- Détecter un visage / une personne
- Générer du texte dans le style d’un auteur mort depuis 3 siècles sans pression
- Classer des termes dans des catégories (utile classer vos produits automatiquement sur votre e-commerce par exemple :o)
- Et vraiment plein d’autres applications de dingue, la limite c’est votre imagination. Mais je vous laisse parcourir https://www.kaggle.com/datasets pour vous inspirer.
Et comment ça marche sous le capot ?
En réalité le terme Machine Learning regroupe toute une catégorie d’algorithme qui consiste à laisser une part “d’apprentissage” pour un programme.
Si je veux caricaturer, *et je le veux parce que sérieusement, en tant que développeur il vous faut absolument garder cela en tête pour avoir du recul sur ce sujet, *ce sont des **fonctions mathématiques qui cherchent à réduire un écart **entre deux données, on est loin des buzz words.
Bon alors vous allez me dire “ca existe depuis un bail les fonctions de ce genre, pourquoi tout le monde s’excite sur ca aujourd’hui ?”.
En un mot emprunt de virilité : la puissance de calcul. Aujourd’hui on peut mettre pleins de fonctions mathématique (neurone) en réseaux (network) et tenter de modifier leur variables automatiquement via un apprentissage afin que la somme de toutes ces fonctions vous fournissent un résultat qui vous plait.
Le machine learning sous sa forme “Réseau de neurones” ce sont tout simplement des fonctions de type perceptron (ca à l’air compliqué mais non : https://www.youtube.com/watch?v=ntKn5TPHHAk) mise en réseaux sous forme de couche. Chaque couche contient des neurones, et chaque couche envoi ses résultats à la couche suivante qui receptionne, calcule et renvoi plus loin etc.
La machine apprend dans le sens où elle va essayer, via l’entrainement, de corriger les poids appliqués aux perceptrons pour fournir un résultat le plus proche possible de vos données d’entrainement.
L’exemple le plus connu dans le monde de la Data Science est de prédire le prix d’une maison par rapport à plusieurs paramètres qui font varier le prix dans un quartier.
Vous avez l’historique
Assez parlé, du concret 🎸
Franchement, je ne vais pas refaire un tuto sur le machine learning ici, il y en a plein de vraiment très bien, donc je vais me contenter de vous fournir mes heures de recherche sur le net de manière structurés et sûr. Cela vous évitera de partir dans tout les sens.
- Un peu sponso mais on a repris et traduit l’article d’un autre monsieur qui a réalisé un excellent article ici
- S’amuser avec le machine Learning ! La série d’article traduite par Alexis qui nous vient de @ageitgey est juste parfaite pour débuter. Elle démystifie, explique et vulgarise à la perfection, en lisant chaque partie de A à Z il n’y a aucune raison que vous soyez perdu. C’est top !
- Enchainez avec Machine Learning Mastery, qui va vous permettre de monter graduellement en compétence. Ce site est simplement brillant, il vous met en confiance, et vous indique par où commencer, comment commencer et explique bien mieux que moi les principes de base. C’est à lire comme un livre, les tutoriels sont de bonne facture et vous indique comment réaliser la plupart des opérations communes en machine learning avec du code (Traitement d’image, de texte, de données statistiques, réseaux à mémoire et récurrents, etc.)
Se faire un environnement de travail qui fonctionne
Tout d’abord il faut savoir que pour faire du machine learning, il faut faire du python.
Alors personnellement je n’aime pas trop ce langage, mais heureusement vous n’êtes pas obligé d’en connaitre les arcanes pour utiliser les derniers framework de Machine Learning.
Voici comment installer un environnement qui marche (c’est bête hein, mais quand ca marche c’est mieux) :
-
Installer Conda (miniconda ou anaconda)
-
Prenez gentiment ce fichier d’environnement qui installera toutes les dépendances dont vous avez besoin pour débuter
name: machineLearning channels:
- defaults
dependencies:
- pip
- python=3.6.6
- pip:
- keras
- tensorflow
- numpy
- panda
- jupyter
- scipy
- matplotlib
- defaults
dependencies:
-
Lancer dans un terminal
conda env create -f env.yml
-
Puis activer l’environnement avec
source activate machineLearning
Hop tout est ok, vous pouvez commencer à entrainer des réseaux pour votre plus grand plaisir. N’oubliez pas que si vous avez un Mac avec le dernier Xcode, Create ML est un excellent moyen d’experimenter et les vidéos WWDC d’Apple sont encore plus simple à appréhender
Franchement on s’amuse et on va rapidement embeter son entourage avec des detecteurs à chaton, a blague nulle, ou un générateur de Tweet débile. C’est fun et ca permet à votre esprit de s’ouvrir à une toute nouvelle forme de créativité. (En plus on utilise des buzzwords ultra stylés comme “inférence”, “I.A”, “Machine Learning”, etc.)
Mais c’est dingue tout ce que ça peut faire ! Et moi en tant que dev je sers encore à quelque chose ? 🤔
Ahah ! C’est bien toute la question ! Aujourd’hui un data scientist va être mieux payé que vous, pour faire des tours de magie avec des données.
Les développeurs “à l’ancienne” on en aura toujours besoin, mais ce ne sera plus faire un logiciel qui aura de la valeur sur le marché, mais plutôt être capable de valoriser des données produites par du logiciel.
Personnellement en m’initiant au monde magique du ML j’ai vraiment pris du plaisir à découvrir de quoi tout cela était capable et cette nouvelle facette de mon job qui est plus orienté data que orienté objet, mais je ne pourrait pas faire que cela de mes journées. Je pense que c’est un domaine à connaitre parce qu’il va vous apporter un énorme avantage dans le monde du travail et meme au niveau de la valeur de ce que vous produisez, avec le ML vous êtes capable d’ajouter de l’intelligence dans tout et n’importe quoi.
Et comme Google aime à le dire : “Dans les années à venir, les utilisateurs s’attendent à utiliser l’IA tous les jours, tout comme ils espéraient disposer d’une version mobile d’un site Web au début des années 2010” —
Pour faire simple, dans quelques années, on s’attendra à ce que vous sachiez faire du machine learning en tant que skill de développeur tout comme aujourd’hui on s’attend à ce que vous sachiez faire de la programmation objet. C’est un nouveau paradigme selon moi, on passe sur de la programmation orientée donnée / flux.
Entrainez quelques réseaux, amuser vous à detecter les sentiments d’une phrase, detecter un chat dans une image. Avec CreateML ou Keras il n’y a rien de plus simple.
Enjoy ! 🔥