lundi , 10 décembre 2018
Home » Tutoriel » Machine learning : ce que les développeurs et les analystes doivent savoir

Machine learning : ce que les développeurs et les analystes doivent savoir

Il y a beaucoup de choses dans une application réussie de machine learning (apprentissage automatique) que la science des données.

Machine learning subit une révolution en raison des nouvelles technologies et méthodes. Machine learning est un processus consistant à utiliser un programme pour développer des capacités, comme la capacité de distinguer les spams, en analysant les données au lieu de programmer les étapes exactes, ce qui libère l’utilisateur de toute décision sur le fonctionnement de l’algorithme. Machine learning est un outil puissant, non seulement parce que plus d’un million de personnes se concentrent chaque jour sur des étapes de programmation fastidieuses, mais aussi parce qu’il trouve parfois de meilleures solutions que les humains engagés dans un effort manuel.

Machine learning a des applications dans la plupart des industries, où il présente une grande opportunité d’améliorer les processus existants. Cependant, de nombreuses entreprises ont du mal à suivre les innovations. Il est difficile de trouver des spécialistes en données scientifiques, mais la pénurie de compétences ne dit pas tout, surtout pour les entreprises qui ont fait des investissements, mais qui n’ont pas réalisé leur potentiel. Les obstacles les plus importants sont liés à un fossé entre les scientifiques de données ayant les compétences pour mettre en œuvre les méthodes et les chefs d’entreprise qui peuvent conduire les changements organisationnels nécessaires.

Réussir le machine learning dans une organisation nécessite toute une stratégie impliquant à la fois des spécialistes et des non-spécialistes. Ils doivent se concentrer sur l’organisation, analyser la rentabilisation pour déterminer où le machine learning peut apporter de la valeur et gérer les risques d’une nouvelle méthodologie. Par exemple, une équipe de science des données peut être intéressée à utiliser le machine learning, mais choisir de ne pas le faire en raison de contraintes de temps, d’aversion au risque ou de manque de familiarité. Dans ces situations, une meilleure approche pourrait consister à créer un projet distinct, en mettant l’accent sur la création de bases pour de futurs projets. Une fois que l’organisation a des exemples concrets d’apprentissage automatique, la barre des implémentations futures est nettement inférieure.

L’implication se présente quand les non-spécialistes dans l’entreprise doivent participer à la vision de machine learning pour en faire un succès, et cela commence par une compréhension commune. Apprendre l’analyse et les mathématiques derrière la science des données prend des années, mais il est important que les chefs d’entreprise, les analystes et les développeurs comprennent au moins où appliquer la technologie, comment elle est appliquée et ses concepts de base.

Le machine learning nécessite une approche différente d’un problème : vous laissez l’algorithme de machine learning résoudre le problème. C’est un changement de mentalité pour les personnes qui ont l’habitude de penser à travers les étapes fonctionnelles. Il faut être sûr que le programme de machine learning produira des résultats et comprendre que la patience peut être nécessaire.

Machine learning et deep learning (apprentissage en profondeur)

Pourquoi le machine learning est-il si puissant ? Il existe de nombreux processus différents (facilités par des algorithmes) pour faire fonctionner le machine learning, qu’on va discuter en détail ci-dessous, mais ceux à la pointe utilisent des réseaux de neurones qui partagent une structure similaire à celle d’un cerveau biologique. Les réseaux de neurones ont plusieurs couches de connectivité, et quand il y a beaucoup de couches complexes, on parle de réseau de neurones profonds.

Les réseaux de neurones profonds ont eu un succès limité jusqu’à récemment, lorsque les scientifiques ont profité du GPU couramment utilisé pour l’affichage de graphiques 3D. Ils ont réalisé que les GPU ont une énorme puissance de calcul parallèle et les ont utilisés pour former des réseaux de neurones. Les résultats ont été si efficaces que les titulaires ont été pris au dépourvu. Le processus de formation d’un réseau de neurones profonds est connu sous le nom d’apprentissage en profondeur (deep learning).

Le deep learning a pris de l’âge en 2012, lorsqu’une équipe canadienne a intégré le premier algorithme de réseau de neurones formé par un GPU à un concours de reconnaissance d’images de premier plan et a battu la concurrence de très loin. L’année suivante, 60% des nouvelles équipes utilisaient le deep learning, et l’année suivante (2014), presque toutes les équipes l’utilisaient.

Depuis lors, nous avons vu des réussites remarquables sortir de la Silicon Valley, donnant aux entreprises comme Google, Amazon, PayPal et Microsoft de nouvelles capacités pour servir leurs clients et comprendre leurs marchés. Par exemple, Google a utilisé son système DeepMind pour réduire de 40% l’énergie nécessaire au refroidissement de ses centres de données. Chez PayPal, le deep learning est utilisé pour détecter la fraude et le blanchiment d’argent.

En dehors de ce centre de gravité, il y a eu d’autres réussites. Par exemple, l’école de médecine Icahn de Mount Sinai a utilisé les GPU Nvidia pour créer un outil appelé Deep Patient qui est capable d’analyser les antécédents médicaux d’un patient afin de prédire près de 80 maladies jusqu’à un an avant le début du traitement. La compagnie d’assurance japonaise, AXA, a pu augmenter son taux de prédiction des accidents d’auto de 40% à 78% en appliquant un modèle de deep learning.

Apprentissage supervisé et apprentissage non supervisé

A la base, il existe deux types d’apprentissage automatique : l’apprentissage supervisé et non supervisé. Parfois, ces types sont décomposés plus en détail (par exemple, l’apprentissage semi-supervisé et l’apprentissage par renforcement), mais cet article se concentrera sur les bases.

Les types de machine learning.

Dans le cas de l’apprentissage supervisé, vous formez un modèle pour faire des prédictions en lui transmettant des exemples avec des entrées et des sorties connues. Une fois que le modèle a vu suffisamment d’exemples, il peut prédire une sortie probable d’intrants similaires.

Par exemple, si vous voulez un modèle qui peut prédire la probabilité qu’une personne souffrira d’une maladie, vous aurez besoin des enregistrements historiques d’une population aléatoire de personnes dont les enregistrements indiquent des facteurs de risque et qu’ils ont souffert de la maladie. Les résultats de la prédiction sont meilleurs si les données utilisées pour la formation sont de qualité. Un data scientist retient souvent certaines données de la formation et les utilise pour tester l’exactitude des prédictions.

Avec l’apprentissage non supervisé, vous voulez un algorithme pour trouver des modèles dans les données et vous n’avez pas d’exemples à lui donner. Dans le cas de clustering, l’algorithme classerait les données en groupes. Par exemple, si vous exécutez une campagne marketing, un algorithme de clustering pourrait trouver des groupes de clients qui ont besoin de différents messages marketing et découvrir des groupes spécialisés dont vous n’avez pas forcément eu connaissance.

Dans le cas d’une association, vous voulez que l’algorithme trouve des règles qui décrivent les données. Par exemple, l’algorithme peut avoir trouvé que les gens qui achètent de la bière le lundi achètent aussi des couches. Avec ces informations, vous pourriez rappeler aux clients de la bière le lundi d’acheter des couches et essayer de vendre des marques spécifiques.

Comme indiqué ci-dessus, les applications de machine learning prennent une vision au-delà de la compréhension des mathématiques et des algorithmes. Ils exigent un effort conjoint entre des personnes qui comprennent l’entreprise, des personnes qui comprennent les algorithmes et des leaders qui peuvent se concentrer sur l’organisation.

Le flux de travail (workflow) de machine learning

La mise en œuvre d’un modèle de machine learning implique un certain nombre d’étapes au-delà de la simple exécution de l’algorithme. Pour que le processus fonctionne à l’échelle d’une organisation, les analystes et les développeurs doivent être impliqués dans certaines étapes. Le flux de travail est souvent appelé un cycle de vie et peut être résumé avec les cinq étapes suivantes. Notez que certaines étapes ne s’appliquent pas à l’apprentissage non supervisé.

  1. Collecte de données : pour que l’apprentissage en profondeur (deep learning) fonctionne bien, vous avez besoin d’une grande quantité de données précises et cohérentes. Parfois, les données doivent être collectées et associées à partir de sources distinctes. Bien que ce soit la première étape, c’est souvent le plus difficile.
  2. Préparation des données : dans cette étape, un analyste détermine quelles parties des données deviennent des entrées et des sorties. Par exemple, si vous essayez de déterminer la probabilité pour un client d’annuler un service, vous joindrez des ensembles de données distincts, sélectionnez les indicateurs pertinents dont le modèle a besoin et éliminez les ambiguïtés de ces indicateurs.
  3. Formation : dans cette étape, les spécialistes prennent le relais. Ils choisissent le meilleur algorithme et le modifient itérativement en comparant ses valeurs prédites aux valeurs réelles pour voir si cela fonctionne bien. Selon le type d’apprentissage, vous pouvez vous attendre à connaître son niveau de précision. Dans le cas de l’apprentissage en profondeur (deep learning), cette étape peut nécessiter beaucoup de calculs et plusieurs heures de GPU.
  4. Inférence : si l’objectif était que le modèle effectue une prédiction (par exemple, un apprentissage supervisé), le modèle peut être déployé de sorte qu’il réponde rapidement aux requêtes. Vous lui donnez les mêmes entrées que vous avez sélectionnées lors de la préparation des données, sauf que la sortie est une prédiction.
  5. Retour : il s’agit d’une étape facultative, dans laquelle les informations issues de l’inférence sont utilisées pour mettre à jour le modèle afin d’améliorer sa précision.

L’exemple ci-dessous montre les parties d’un flux de travail pour un modèle d’apprentissage supervisé. Un grand magasin de données sur Kinetica, une base de données accélérée par GPU, contient les données d’apprentissage auxquelles un modèle tirant parti des fonctionnalités ML de la contient les données de formation accessibles par un modèle tirant parti des fonctionnalités ML de la base de données dans le cadre de l’étape d’apprentissage. Le modèle est ensuite déployé sur un système de production où une application demande des réponses à faible latence. Les données de l’application sont ajoutées à l’ensemble des données de formation pour améliorer le modèle.

Mise en œuvre d’apprentissage supervisé.

Il est également important d’utiliser la bonne plate-forme d’analyse car certains workflows de machine learning peuvent créer des goulots d’étranglement entre les utilisateurs professionnels et les équipes de data science. Par exemple, des plates-formes comme Spark et Hadoop peuvent avoir besoin de déplacer de grandes quantités de données dans des nœuds de traitement GPU avant de pouvoir commencer à travailler, ce qui peut prendre plusieurs minutes ou quelques heures, tout en limitant l’accessibilité pour les utilisateurs professionnels. Une base de données puissante alimentée par GPU comme Kinetica peut accélérer les charges de travail de machine learning en éliminant le mouvement des données et en apportant le traitement directement aux données. Dans ce scénario, les résultats peuvent être renvoyés en quelques secondes, ce qui permet un processus interactif.

Kinetica élimine l’étape de transfert de données.

Les algorithmes de machine learning

Avant que les GPUs suralimentent la formation des réseaux de neurones profonds, les implémentations ont été dominées par une variété d’algorithmes, dont certains ont été plus longs que les ordinateurs. Ils ont encore leur place dans de nombreux cas d’utilisation en raison de leur simplicité et de leur rapidité. Commencer par enseigner la régression linéaire pour la prédiction des variables continues et la régression logistique pour la prédiction des catégories. K-means clustering est également un algorithme couramment utilisé pour l’apprentissage non supervisé.

Les réseaux de neurones profonds, les algorithmes derrière le deep learning, ont les mêmes applications que la plupart des algorithmes traditionnels de machine learning, mais peuvent évoluer vers des cas d’utilisation beaucoup plus sophistiqués et complexes. L’inférence est relativement rapide, mais la formation est intensive en calcul, nécessitant souvent plusieurs heures de GPU.

Le diagramme suivant montre une représentation graphique d’un modèle de deep learning pour la reconnaissance d’image. Dans cet exemple, l’entrée est une image et les nœuds sont des neurones qui détectent progressivement des entités plus complexes jusqu’à ce qu’elles produisent un code indiquant le résultat.

Réseau de neurones profonds.

L’exemple de reconnaissance d’image est appelé un réseau de neurones convolutifs (CNN) car chaque neurone contient des masques d’image et utilise une technique appelée convolution pour appliquer le masque aux données d’image. Il existe d’autres types de réseaux de neurones profonds comme les réseaux de neurones récurrents (RNN) qui peuvent fonctionner avec des données de séries chronologiques pour faire des prévisions financières et des réseaux génériques multicouches qui fonctionnent avec des variables simples.

Une chose importante à considérer est que, contrairement à de nombreux algorithmes traditionnels de machine learning, les réseaux de neurones profonds sont difficiles ou impossibles à effectuer de l’ingénierie inverse. Plus précisément, vous ne pouvez pas toujours déterminer comment une inférence est faite. C’est parce que l’algorithme peut peupler des poids dans plusieurs milliers de neurones et trouver des solutions qui ne peuvent pas toujours être comprises par les humains. La notation de crédit est un exemple où les réseaux de neurones profonds ne devraient pas être appliqués si vous voulez comprendre comment la notation est déterminée.

Les frameworks de machine learning

Écrire des modèles de machine learning à partir de zéro peut être fastidieux. Pour rendre les implémentations plus faciles, des frameworks sont disponibles qui masquent les complexités et abaissent les obstacles pour les data scientists et les développeurs. Les logos suivants appartiennent à certains des frameworks de machine learning les plus populaires.

Frameworks de machine learning.

Google, par exemple, propose un framework populaire appelé TensorFlow, qui est célèbre pour sa capacité à prendre en charge la reconnaissance d’images et de la parole, et fournit une suite d’outils pour la visualisation de modèles dans TensorBoard (voir ci-dessous).

Visualisation TensorFlow.

TensorFlow a été conçu pour faciliter la formation de réseaux de neurones profonds en parallèle et sur plusieurs GPU, mais il prend également en charge les algorithmes traditionnels. Il peut fonctionner en combinaison avec de grandes plateformes de données comme Hadoop et Spark pour des charges de travail massivement parallèles. Dans les situations où le mouvement des données peut être un goulot d’étranglement, la plate-forme Kinetica utilise l’intégration native de TensorFlow pour amener les charges de travail accélérées par GPU directement aux grands ensembles de données.

TensorFlow fait une abstraction entre le modèle (appelé un estimateur) et l’algorithme (appelé un optimiseur), permettant à un utilisateur de choisir parmi plusieurs algorithmes lors de la formation d’un modèle. Par exemple, un spécialiste pourrait écrire un modèle d’apprentissage supervisé en utilisant la régression linéaire simple comme algorithme, puis comparer sa précision à un algorithme de réseau de neurones profonds.

Des histoires qui se répètent

L’essor de machine learning a des parallèles frappants avec l’essor d’Internet. Pendant des décennies, les deux ont été étudiés par des chercheurs universitaires et ont vu une utilisation commerciale limitée. L’Internet, fondé sur un réseau mis en service en 1969, a connu une certaine maturité dans les années 90, ce qui a perturbé les industries avec des entreprises en place qui ont réagi lentement jusqu’à ce que leurs entreprises soient marginalisées. Maintenant, beaucoup de ces entreprises qui ont pris de l’importance avec l’Internet adoptent le machine learning, tandis que les titulaires essaient de comprendre sa signification et d’extraire de la valeur de leurs investissements dans la science des données.

Tout projet de logiciel qui donne à une entreprise un aperçu de ses activités nécessite une étroite collaboration entre les utilisateurs professionnels et les personnes ayant les compétences nécessaires pour traduire les exigences commerciaux en code. Un grand nombre d’entreprise ayant investi dans les logiciels sont familiers avec ce paradigme. La plus grande différence est que si le machine learning nécessite une définition du problème, son but est de trouver une solution.

L’adoption généralisée de machine learning nécessite au moins un niveau de compréhension de la part des analystes et des développeurs de logiciels lorsqu’ils interagissent avec les équipes de science des données. Il faut aussi que les chefs d’entreprise aient une vision de la façon dont ils tireront profit de l’apprentissage automatique pour résoudre des problèmes préalablement traités avec des règles soigneusement définies. L’utilisation réussie de machine learning n’exige pas que la plupart des personnes impliquées comprennent les détails du fonctionnement de machine learning. Mais, ils ont besoin de comprendre suffisamment pour poser les bonnes questions aux experts en science des données.

À lire aussi

Comment augmenter la vitesse de vos builds de déploiement continu AWS Lambda ?

Parallélisez vos builds Maven, rendez-les reproductibles, et lancez le volume à 11 en utilisant Docker …