Apprentissage automatique - Guide rapide

L'intelligence artificielle (IA) d'aujourd'hui a dépassé de loin le battage médiatique de la blockchain et de l'informatique quantique. Cela est dû au fait que d'énormes ressources informatiques sont facilement disponibles pour l'homme ordinaire. Les développeurs en profitent désormais pour créer de nouveaux modèles d'apprentissage automatique et pour reformer les modèles existants pour de meilleures performances et de meilleurs résultats. La disponibilité facile du calcul haute performance (HPC) a entraîné une augmentation soudaine de la demande de professionnels de l'informatique ayant des compétences en apprentissage automatique.

Dans ce tutoriel, vous apprendrez en détail sur -

Quel est le nœud de l'apprentissage automatique?

  • Quels sont les différents types d'apprentissage automatique?

  • Quels sont les différents algorithmes disponibles pour développer des modèles d'apprentissage automatique?

  • Quels outils sont disponibles pour développer ces modèles?

  • Quels sont les choix de langage de programmation?

  • Quelles plates-formes prennent en charge le développement et le déploiement d'applications d'apprentissage automatique?

  • Quels IDE (environnement de développement intégré) sont disponibles?

  • Comment améliorer rapidement vos compétences dans ce domaine important?

Lorsque vous marquez un visage sur une photo Facebook, c'est l'IA qui s'exécute dans les coulisses et identifie les visages sur une image. Le marquage de visage est désormais omniprésent dans plusieurs applications qui affichent des images avec des visages humains. Pourquoi juste des visages humains? Il existe plusieurs applications qui détectent des objets tels que des chats, des chiens, des bouteilles, des voitures, etc. Nous avons des voitures autonomes circulant sur nos routes qui détectent des objets en temps réel pour diriger la voiture. Lorsque vous voyagez, vous utilisez GoogleDirectionspour connaître les situations de circulation en temps réel et suivre le meilleur chemin suggéré par Google à ce moment-là. Ceci est encore une autre implémentation de la technique de détection d'objets en temps réel.

Prenons l'exemple de Google Translateapplication que nous utilisons généralement lors de la visite de pays étrangers. L'application de traduction en ligne de Google sur votre mobile vous aide à communiquer avec la population locale qui parle une langue qui vous est étrangère.

Il existe plusieurs applications de l'IA que nous utilisons pratiquement aujourd'hui. En fait, chacun de nous utilise l'IA dans de nombreuses parties de sa vie, même à notre insu. L'IA d'aujourd'hui peut effectuer des tâches extrêmement complexes avec une grande précision et rapidité. Laissez-nous discuter d'un exemple de tâche complexe pour comprendre quelles capacités sont attendues dans une application d'IA que vous développeriez aujourd'hui pour vos clients.

Exemple

Nous utilisons tous Google Directionslors de notre voyage n'importe où dans la ville pour un trajet quotidien ou même pour des voyages interurbains. L'application Google Directions suggère le chemin le plus rapide vers notre destination à ce moment-là. Lorsque nous suivons cette voie, nous constatons que Google a presque 100% raison dans ses suggestions et nous économisons notre temps précieux sur le voyage.

Vous pouvez imaginer la complexité impliquée dans le développement de ce type d'application étant donné qu'il existe plusieurs chemins vers votre destination et que l'application doit juger de la situation du trafic sur chaque chemin possible pour vous donner une estimation du temps de trajet pour chacun de ces chemins. En outre, considérez le fait que Google Directions couvre le monde entier. Sans aucun doute, de nombreuses techniques d'IA et d'apprentissage automatique sont utilisées sous le capot de ces applications.

Compte tenu de la demande continue pour le développement de telles applications, vous comprendrez maintenant pourquoi il y a une demande soudaine de professionnels de l'informatique avec des compétences en IA.

Dans notre prochain chapitre, nous apprendrons ce qu'il faut pour développer des programmes d'IA.

Le voyage de l'IA a commencé dans les années 1950, lorsque la puissance de calcul ne représentait qu'une fraction de ce qu'elle est aujourd'hui. L'IA a commencé avec les prédictions faites par la machine d'une manière qu'un statisticien fait des prédictions à l'aide de sa calculatrice. Ainsi, tout le développement initial de l'IA reposait principalement sur des techniques statistiques.

Dans ce chapitre, examinons en détail ce que sont ces techniques statistiques.

Techniques de statistique

Le développement des applications d'intelligence artificielle d'aujourd'hui a commencé par l'utilisation des techniques statistiques traditionnelles séculaires. Vous devez avoir utilisé l'interpolation linéaire dans les écoles pour prédire une valeur future. Il existe plusieurs autres techniques statistiques de ce type qui sont appliquées avec succès dans le développement de programmes dits d'IA. Nous disons «soi-disant» parce que les programmes d'IA que nous avons aujourd'hui sont beaucoup plus complexes et utilisent des techniques bien au-delà des techniques statistiques utilisées par les premiers programmes d'IA.

Certains des exemples de techniques statistiques qui sont utilisées pour développer des applications d'IA à l'époque et qui sont encore en pratique sont répertoriés ici -

  • Regression
  • Classification
  • Clustering
  • Théories des probabilités
  • Arbres de décision

Ici, nous n'avons répertorié que quelques techniques primaires qui suffisent pour vous permettre de démarrer sur l'IA sans vous effrayer de l'immensité que l'IA exige. Si vous développez des applications d'IA basées sur des données limitées, vous utiliserez ces techniques statistiques.

Cependant, aujourd'hui, les données sont abondantes. Pour analyser le type de données énormes que nous possédons, les techniques statistiques ne sont pas d'une grande utilité car elles ont leurs propres limites. Des méthodes plus avancées telles que le deep learning sont donc développées pour résoudre de nombreux problèmes complexes.

Au fur et à mesure que nous avancerons dans ce didacticiel, nous comprendrons ce qu'est l'apprentissage automatique et comment il est utilisé pour développer des applications d'IA aussi complexes.

Considérez la figure suivante qui montre un graphique des prix de l'immobilier par rapport à sa taille en pieds carrés.

Après avoir tracé divers points de données sur le graphique XY, nous dessinons une ligne de meilleur ajustement pour faire nos prédictions pour toute autre maison compte tenu de sa taille. Vous allez transmettre les données connues à la machine et lui demander de trouver la ligne la mieux adaptée. Une fois que la meilleure ligne d'ajustement est trouvée par la machine, vous testerez son aptitude en introduisant une taille de maison connue, c'est-à-dire la valeur Y dans la courbe ci-dessus. La machine va maintenant renvoyer la valeur X estimée, c'est-à-dire le prix attendu de la maison. Le diagramme peut être extrapolé pour connaître le prix d'une maison de 3000 pi2 voire plus. C'est ce qu'on appelle la régression dans les statistiques. En particulier, ce type de régression est appelé régression linéaire car la relation entre les points de données X et Y est linéaire.

Dans de nombreux cas, la relation entre les points de données X et Y peut ne pas être une ligne droite, et il peut s'agir d'une courbe avec une équation complexe. Votre tâche serait maintenant de trouver la meilleure courbe d'ajustement qui peut être extrapolée pour prédire les valeurs futures. Un tel tracé d'application est illustré dans la figure ci-dessous.

La source:

https://upload.wikimedia.org/wikipedia/commons/c/c9/

Vous utiliserez les techniques d'optimisation statistique pour trouver l'équation de la meilleure courbe d'ajustement ici. Et c'est exactement ce qu'est le Machine Learning. Vous utilisez des techniques d'optimisation connues pour trouver la meilleure solution à votre problème.

Ensuite, regardons les différentes catégories de Machine Learning.

L'apprentissage automatique est globalement classé sous les rubriques suivantes:

L'apprentissage automatique a évolué de gauche à droite, comme indiqué dans le diagramme ci-dessus.

  • Au départ, les chercheurs ont commencé par l'apprentissage supervisé. C'est le cas de la prévision des prix des logements évoquée plus haut.

  • Cela a été suivi d'un apprentissage non supervisé, où la machine est amenée à apprendre par elle-même sans aucune supervision.

  • Les scientifiques ont en outre découvert que cela peut être une bonne idée de récompenser la machine lorsqu'elle fait le travail de la manière attendue et que l'apprentissage par renforcement est arrivé.

  • Très vite, les données disponibles de nos jours sont devenues si gigantesques que les techniques conventionnelles développées jusqu'à présent n'ont pas réussi à analyser les mégadonnées et à nous fournir les prévisions.

  • Ainsi, est venu l'apprentissage profond où le cerveau humain est simulé dans les réseaux de neurones artificiels (ANN) créés dans nos ordinateurs binaires.

  • La machine apprend désormais par elle-même en utilisant la puissance de calcul élevée et les énormes ressources mémoire disponibles aujourd'hui.

  • On observe maintenant que le Deep Learning a résolu de nombreux problèmes auparavant insolubles.

  • La technique est maintenant encore plus avancée en donnant des incitations aux réseaux de Deep Learning sous forme de récompenses et vient enfin le Deep Reinforcement Learning.

Étudions maintenant chacune de ces catégories plus en détail.

Enseignement supervisé

L'apprentissage supervisé est analogue à la formation d'un enfant à la marche. Vous tiendrez la main de l'enfant, lui montrerez comment faire avancer son pied, vous marcherez vous-même pour une démonstration et ainsi de suite, jusqu'à ce que l'enfant apprenne à marcher seul.

Régression

De même, dans le cas de l'apprentissage supervisé, vous donnez des exemples concrets connus à l'ordinateur. Vous dites que pour une valeur de caractéristique donnée x1, la sortie est y1, pour x2 c'est y2, pour x3 c'est y3, et ainsi de suite. Sur la base de ces données, vous laissez l'ordinateur déterminer une relation empirique entre x et y.

Une fois que la machine est entraînée de cette manière avec un nombre suffisant de points de données, vous demandez maintenant à la machine de prédire Y pour un X donné.En supposant que vous connaissez la valeur réelle de Y pour ce X donné, vous pourrez en déduire si la prédiction de la machine est correcte.

Ainsi, vous testerez si la machine a appris en utilisant les données de test connues. Une fois que vous êtes convaincu que la machine est capable de faire les prédictions avec un niveau de précision souhaité (disons 80 à 90%), vous pouvez arrêter la formation continue de la machine.

Maintenant, vous pouvez utiliser la machine en toute sécurité pour faire les prédictions sur des points de données inconnus, ou demander à la machine de prédire Y pour un X donné pour lequel vous ne connaissez pas la valeur réelle de Y. Cet entraînement relève de la régression dont nous avons parlé plus tôt.

Classification

Vous pouvez également utiliser des techniques d'apprentissage automatique pour les problèmes de classification. Dans les problèmes de classification, vous classez les objets de nature similaire dans un seul groupe. Par exemple, dans un ensemble de 100 élèves, disons, vous aimeriez peut-être les regrouper en trois groupes en fonction de leur taille - courte, moyenne et longue. En mesurant la taille de chaque élève, vous les placerez dans un groupe approprié.

Désormais, lorsqu'un nouvel élève arrive, vous le placerez dans un groupe approprié en mesurant sa taille. En suivant les principes de l'entraînement à la régression, vous entraînerez la machine à classer un élève en fonction de sa caractéristique - la hauteur. Lorsque la machine apprendra comment les groupes sont formés, elle sera en mesure de classer correctement tout nouvel étudiant inconnu. Encore une fois, vous utiliserez les données de test pour vérifier que la machine a appris votre technique de classification avant de mettre le modèle développé en production.

L'apprentissage supervisé est l'endroit où l'IA a vraiment commencé son voyage. Cette technique a été appliquée avec succès dans plusieurs cas. Vous avez utilisé ce modèle lors de la reconnaissance manuscrite sur votre machine. Plusieurs algorithmes ont été développés pour l'apprentissage supervisé. Vous en apprendrez plus sur eux dans les chapitres suivants.

Apprentissage non supervisé

Dans l'apprentissage non supervisé, nous ne spécifions pas de variable cible à la machine, nous demandons plutôt à la machine «Que pouvez-vous me dire sur X?». Plus précisément, nous pouvons poser des questions telles que, étant donné un énorme ensemble de données X, "Quels sont les cinq meilleurs groupes que nous pouvons faire de X?" ou «Quelles fonctionnalités se produisent le plus souvent ensemble dans X?». Pour arriver aux réponses à de telles questions, vous pouvez comprendre que le nombre de points de données dont la machine aurait besoin pour déduire une stratégie serait très important. En cas d'apprentissage supervisé, la machine peut être entraînée avec même quelques milliers de points de données. Cependant, en cas d'apprentissage non supervisé, le nombre de points de données raisonnablement acceptés pour l'apprentissage commence à quelques millions. De nos jours, les données sont généralement disponibles en abondance. Les données doivent idéalement être conservées. Cependant, la quantité de données qui circule en permanence dans un réseau social, dans la plupart des cas, la conservation des données est une tâche impossible.

La figure suivante montre la limite entre les points jaunes et rouges, déterminée par l'apprentissage automatique non supervisé. Vous pouvez voir clairement que la machine serait capable de déterminer la classe de chacun des points noirs avec une assez bonne précision.

La source:

https://chrisjmccormick.files.wordpress.com/2013/08/approx_decision_boun dary.png

L'apprentissage non supervisé a connu un grand succès dans de nombreuses applications d'IA modernes, telles que la détection de visage, la détection d'objet, etc.

Apprentissage par renforcement

Pensez à former un chien de compagnie, nous entraînons notre animal à nous apporter une balle. Nous lançons la balle à une certaine distance et demandons au chien de nous la rapporter. Chaque fois que le chien fait cela correctement, nous récompensons le chien. Lentement, le chien apprend que faire le travail correctement lui donne une récompense, puis le chien commence à faire le travail correctement à chaque fois à l'avenir. Exactement, ce concept est appliqué dans le type d'apprentissage «Renforcement». La technique a été initialement développée pour que les machines puissent jouer à des jeux. La machine reçoit un algorithme pour analyser tous les mouvements possibles à chaque étape du jeu. La machine peut sélectionner l'un des mouvements au hasard. Si le coup est juste, la machine est récompensée, sinon elle peut être pénalisée. Lentement, la machine commencera à faire la différence entre les bons et les mauvais mouvements et après plusieurs itérations, elle apprendrait à résoudre le puzzle du jeu avec une meilleure précision. La précision de gagner le jeu s'améliorerait à mesure que la machine joue de plus en plus de jeux.

L'ensemble du processus peut être représenté dans le diagramme suivant -

Cette technique d'apprentissage automatique diffère de l'apprentissage supervisé en ce que vous n'avez pas besoin de fournir les paires d'entrée / sortie étiquetées. L'accent est mis sur la recherche d'un équilibre entre l'exploration des nouvelles solutions et l'exploitation des solutions apprises.

L'apprentissage en profondeur

Le deep learning est un modèle basé sur les réseaux de neurones artificiels (ANN), plus spécifiquement les réseaux de neurones convolutifs (CNN). Il existe plusieurs architectures utilisées dans l'apprentissage profond, telles que les réseaux de neurones profonds, les réseaux de croyances profondes, les réseaux de neurones récurrents et les réseaux de neurones convolutifs.

Ces réseaux ont été appliqués avec succès pour résoudre les problèmes de vision par ordinateur, de reconnaissance vocale, de traitement du langage naturel, de bioinformatique, de conception de médicaments, d'analyse d'images médicales et de jeux. Il existe plusieurs autres domaines dans lesquels l'apprentissage en profondeur est appliqué de manière proactive. L'apprentissage en profondeur nécessite une puissance de traitement énorme et d'énormes données, qui sont généralement facilement disponibles de nos jours.

Nous parlerons plus en détail du deep learning dans les prochains chapitres.

Apprentissage par renforcement profond

Le Deep Reinforcement Learning (DRL) combine les techniques d'apprentissage approfondi et par renforcement. Les algorithmes d'apprentissage par renforcement comme le Q-learning sont désormais combinés avec l'apprentissage en profondeur pour créer un modèle DRL puissant. La technique rencontre un grand succès dans les domaines de la robotique, des jeux vidéo, de la finance et de la santé. De nombreux problèmes auparavant insolubles sont désormais résolus en créant des modèles DRL. Il y a beaucoup de recherches en cours dans ce domaine et cela est très activement poursuivi par les industries.

Jusqu'à présent, vous avez une brève introduction à divers modèles d'apprentissage automatique, explorons maintenant un peu plus en profondeur divers algorithmes disponibles sous ces modèles.

L'apprentissage supervisé est l'un des modèles d'apprentissage importants impliqués dans les machines de formation. Ce chapitre parle en détail de la même chose.

Algorithmes pour l'apprentissage supervisé

Il existe plusieurs algorithmes disponibles pour l'apprentissage supervisé. Certains des algorithmes d'apprentissage supervisé largement utilisés sont présentés ci-dessous -

  • k-Voisins les plus proches
  • Arbres de décision
  • Naive Bayes
  • Régression logistique
  • Machines vectorielles de soutien

Au fur et à mesure que nous avançons dans ce chapitre, discutons en détail de chacun des algorithmes.

k-Voisins les plus proches

Le k-Nearest Neighbours, qui est simplement appelé kNN est une technique statistique qui peut être utilisée pour résoudre des problèmes de classification et de régression. Discutons le cas de la classification d'un objet inconnu en utilisant kNN. Considérez la distribution des objets comme indiqué dans l'image ci-dessous -

La source:

https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm

Le diagramme montre trois types d'objets, marqués en rouge, bleu et vert. Lorsque vous exécutez le classificateur kNN sur l'ensemble de données ci-dessus, les limites de chaque type d'objet seront marquées comme indiqué ci-dessous -

La source:

https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm

Maintenant, considérez un nouvel objet inconnu que vous souhaitez classer comme rouge, vert ou bleu. Ceci est illustré dans la figure ci-dessous.

Comme vous le voyez visuellement, le point de données inconnu appartient à une classe d'objets bleus. Mathématiquement, cela peut être conclu en mesurant la distance de ce point inconnu avec tous les autres points de l'ensemble de données. Lorsque vous le faites, vous saurez que la plupart de ses voisins sont de couleur bleue. La distance moyenne aux objets rouges et verts serait certainement supérieure à la distance moyenne aux objets bleus. Ainsi, cet objet inconnu peut être classé comme appartenant à la classe bleue.

L'algorithme kNN peut également être utilisé pour des problèmes de régression. L'algorithme kNN est disponible prêt à l'emploi dans la plupart des bibliothèques ML.

Arbres de décision

Un arbre de décision simple dans un format d'organigramme est présenté ci-dessous -

Vous écririez un code pour classer vos données d'entrée en fonction de cet organigramme. L'organigramme est explicite et trivial. Dans ce scénario, vous essayez de classer un e-mail entrant pour décider quand le lire.

En réalité, les arbres de décision peuvent être vastes et complexes. Il existe plusieurs algorithmes disponibles pour créer et parcourir ces arbres. En tant que passionné de Machine Learning, vous devez comprendre et maîtriser ces techniques de création et de parcours d'arbres de décision.

Naive Bayes

Naive Bayes est utilisé pour créer des classificateurs. Supposons que vous souhaitiez trier (classer) les fruits de différentes sortes dans une corbeille de fruits. Vous pouvez utiliser des caractéristiques telles que la couleur, la taille et la forme d'un fruit.Par exemple, tout fruit de couleur rouge, de forme ronde et d'environ 10 cm de diamètre peut être considéré comme une pomme. Ainsi, pour entraîner le modèle, vous utiliseriez ces fonctionnalités et testeriez la probabilité qu'une fonctionnalité donnée corresponde aux contraintes souhaitées. Les probabilités de différentes caractéristiques sont ensuite combinées pour arriver à une probabilité qu'un fruit donné soit une pomme. Naive Bayes nécessite généralement un petit nombre de données d'entraînement pour la classification.

Régression logistique

Regardez le diagramme suivant. Il montre la distribution des points de données dans le plan XY.

À partir du diagramme, nous pouvons inspecter visuellement la séparation des points rouges des points verts. Vous pouvez tracer une ligne de démarcation pour séparer ces points. Maintenant, pour classer un nouveau point de données, il vous suffira de déterminer de quel côté de la ligne se trouve le point.

Machines vectorielles de soutien

Regardez la distribution suivante des données. Ici, les trois classes de données ne peuvent pas être séparées linéairement. Les courbes aux limites sont non linéaires. Dans un tel cas, trouver l'équation de la courbe devient un travail complexe.

La source: http://uc-r.github.io/svm

Les machines vectorielles de soutien (SVM) sont utiles pour déterminer les limites de séparation dans de telles situations.

Heureusement, la plupart du temps, vous n'avez pas à coder les algorithmes mentionnés dans la leçon précédente. Il existe de nombreuses bibliothèques standard qui fournissent l'implémentation prête à l'emploi de ces algorithmes. Une de ces boîtes à outils couramment utilisée est scikit-learn. La figure ci-dessous illustre le type d'algorithmes disponibles pour votre utilisation dans cette bibliothèque.

La source: https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

L'utilisation de ces algorithmes est triviale et comme ils sont bien testés sur le terrain, vous pouvez les utiliser en toute sécurité dans vos applications d'IA. La plupart de ces bibliothèques sont gratuites, même à des fins commerciales.

Jusqu'à présent, vous avez vu la machine apprendre à trouver la solution à notre objectif. En régression, nous entraînons la machine à prédire une valeur future. En classification, nous entraînons la machine à classer un objet inconnu dans l'une des catégories que nous avons définies. En bref, nous avons formé des machines pour qu'elle puisse prédire Y pour nos données X. Compte tenu d'un vaste ensemble de données et de ne pas estimer les catégories, il nous serait difficile de former la machine en utilisant l'apprentissage supervisé. Et si la machine pouvait rechercher et analyser les données volumineuses s'étendant sur plusieurs gigaoctets et téraoctets et nous dire que ces données contiennent autant de catégories distinctes?

À titre d'exemple, considérons les données de l'électeur. En tenant compte de certaines contributions de chaque électeur (appelées fonctionnalités dans la terminologie de l'IA), laissez la machine prédire qu'il y a tellement d'électeurs qui voteraient pour le parti politique X et que beaucoup voteraient pour Y, etc. Ainsi, en général, nous demandons à la machine, étant donné un énorme ensemble de points de données X, «Que pouvez-vous me dire sur X?». Ou cela peut être une question comme «Quels sont les cinq meilleurs groupes que nous pouvons faire de X?». Ou cela pourrait même être comme "Quelles sont les trois fonctionnalités qui se produisent le plus souvent ensemble dans X?".

C'est exactement ce qu'est l'apprentissage non supervisé.

Algorithmes pour l'apprentissage non supervisé

Parlons maintenant de l'un des algorithmes largement utilisés pour la classification dans l'apprentissage automatique non supervisé.

k-signifie clustering

Les élections présidentielles de 2000 et 2004 aux États-Unis étaient proches - très proches. Le pourcentage le plus élevé du vote populaire obtenu par un candidat était de 50,7% et le plus bas de 47,9%. Si un pourcentage des électeurs avait changé de camp, le résultat de l'élection aurait été différent. Il existe de petits groupes d'électeurs qui, lorsqu'ils y sont dûment sollicités, changeront de camp. Ces groupes ne sont peut-être pas énormes, mais avec des courses aussi serrées, ils peuvent être assez grands pour changer le résultat des élections. Comment trouvez-vous ces groupes de personnes? Comment les attirez-vous avec un budget limité? La réponse est le regroupement.

Comprenons comment cela se fait.

  • Tout d'abord, vous collectez des informations sur des personnes avec ou sans leur consentement: toute sorte d'informations qui pourraient donner une idée de ce qui est important pour elles et de ce qui influencera leur vote.

  • Ensuite, vous mettez ces informations dans une sorte d'algorithme de clustering.

  • Ensuite, pour chaque cluster (il serait judicieux de choisir d'abord le plus grand), vous rédigez un message qui plaira à ces électeurs.

  • Enfin, vous diffusez la campagne et mesurez pour voir si cela fonctionne.

Le clustering est un type d'apprentissage non supervisé qui forme automatiquement des grappes d'éléments similaires. C'est comme une classification automatique. Vous pouvez regrouper presque tout, et plus les éléments sont similaires dans le cluster, meilleurs sont les clusters. Dans ce chapitre, nous allons étudier un type d'algorithme de clustering appelé k-means. Il est appelé k-means car il trouve «k» clusters uniques, et le centre de chaque cluster est la moyenne des valeurs de ce cluster.

Identification du cluster

L'identification de cluster indique à un algorithme: «Voici quelques données. Maintenant, regroupez des choses similaires et parlez-moi de ces groupes. La principale différence avec la classification est que dans la classification, vous savez ce que vous recherchez. Bien que ce ne soit pas le cas dans le clustering.

Le clustering est parfois appelé classification non supervisée car il produit le même résultat que la classification mais sans avoir de classes prédéfinies.

Maintenant, nous sommes à l'aise avec l'apprentissage supervisé et non supervisé. Pour comprendre le reste des catégories d'apprentissage automatique, nous devons d'abord comprendre les réseaux de neurones artificiels (ANN), que nous apprendrons dans le chapitre suivant.

L'idée de réseaux neuronaux artificiels est dérivée des réseaux neuronaux du cerveau humain. Le cerveau humain est vraiment complexe. En étudiant attentivement le cerveau, les scientifiques et les ingénieurs ont proposé une architecture qui pourrait s'intégrer dans notre monde numérique d'ordinateurs binaires. Une telle architecture typique est illustrée dans le diagramme ci-dessous -

Il existe une couche d'entrée qui possède de nombreux capteurs pour collecter des données du monde extérieur. Sur le côté droit, nous avons une couche de sortie qui nous donne le résultat prédit par le réseau. Entre ces deux, plusieurs couches sont cachées. Chaque couche supplémentaire ajoute une complexité supplémentaire à la formation du réseau, mais fournirait de meilleurs résultats dans la plupart des situations. Il existe plusieurs types d'architectures conçues dont nous allons parler maintenant.

Architectures ANN

Le schéma ci-dessous montre plusieurs architectures ANN développées sur une période de temps et sont en pratique aujourd'hui.

La source:

https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-explained-3fb6f2367464

Chaque architecture est développée pour un type d'application spécifique. Ainsi, lorsque vous utilisez un réseau de neurones pour votre application d'apprentissage automatique, vous devrez utiliser l'une des architectures existantes ou concevoir la vôtre. Le type d'application que vous décidez finalement dépend des besoins de votre application. Il n'y a pas de ligne directrice unique qui vous indique d'utiliser une architecture réseau spécifique.

Le Deep Learning utilise ANN. Nous allons d'abord examiner quelques applications d'apprentissage en profondeur qui vous donneront une idée de sa puissance.

Applications

Le Deep Learning a connu beaucoup de succès dans plusieurs domaines des applications d'apprentissage automatique.

Self-driving Cars- Les voitures autonomes utilisent des techniques d'apprentissage en profondeur. Ils s'adaptent généralement aux situations de circulation en constante évolution et s'améliorent de plus en plus dans la conduite au fil du temps.

Speech Recognition- Une autre application intéressante du Deep Learning est la reconnaissance vocale. Nous utilisons tous aujourd'hui plusieurs applications mobiles capables de reconnaître notre discours. Siri d'Apple, Alexa d'Amazon, Cortena de Microsoft et Assistant de Google - tous utilisent des techniques d'apprentissage en profondeur.

Mobile Apps- Nous utilisons plusieurs applications Web et mobiles pour organiser nos photos. Détection de visage, identification de visage, marquage de visage, identification des objets dans une image - tout cela utilise l'apprentissage en profondeur.

Opportunités inexploitées du Deep Learning

Après avoir examiné le grand succès des applications d'apprentissage en profondeur dans de nombreux domaines, les gens ont commencé à explorer d'autres domaines dans lesquels l'apprentissage automatique n'était pas encore appliqué. Il existe plusieurs domaines dans lesquels les techniques d'apprentissage en profondeur sont appliquées avec succès et de nombreux autres domaines peuvent être exploités. Certains d'entre eux sont discutés ici.

  • L'agriculture est l'une de ces industries où les gens peuvent appliquer des techniques d'apprentissage en profondeur pour améliorer le rendement des cultures.

  • Le crédit à la consommation est un autre domaine dans lequel l'apprentissage automatique peut grandement aider à détecter rapidement les fraudes et à analyser la capacité de paiement des clients.

  • Des techniques d'apprentissage en profondeur sont également appliquées au domaine de la médecine pour créer de nouveaux médicaments et fournir une prescription personnalisée à un patient.

Les possibilités sont infinies et il faut continuer à regarder les nouvelles idées et développements surgir fréquemment.

Ce qui est nécessaire pour obtenir plus en utilisant le Deep Learning

Pour utiliser l'apprentissage en profondeur, la puissance du calcul intensif est une exigence obligatoire. Vous avez besoin à la fois de la mémoire et du processeur pour développer des modèles d'apprentissage en profondeur. Heureusement, aujourd'hui, nous avons une disponibilité facile de HPC - High Performance Computing. Pour cette raison, le développement des applications d'apprentissage en profondeur que nous avons mentionnées ci-dessus est devenu une réalité aujourd'hui et à l'avenir également, nous pouvons voir les applications dans ces domaines inexploités dont nous avons discuté précédemment.

Nous allons maintenant examiner certaines des limites de l'apprentissage profond que nous devons prendre en compte avant de l'utiliser dans notre application d'apprentissage automatique.

Inconvénients du Deep Learning

Certains des points importants que vous devez prendre en compte avant d'utiliser l'apprentissage profond sont énumérés ci-dessous:

  • Approche de la boîte noire
  • Durée du développement
  • Quantité de données
  • Calcul coûteux

Nous allons maintenant étudier chacune de ces limitations en détail.

Approche de la boîte noire

Un ANN est comme une boîte noire. Vous lui donnez une certaine entrée et il vous fournira une sortie spécifique. Le diagramme suivant vous montre une telle application dans laquelle vous alimentez une image animale vers un réseau neuronal et vous indique que l'image est celle d'un chien.

La raison pour laquelle cela s'appelle une approche de la boîte noire est que vous ne savez pas pourquoi le réseau est arrivé à un certain résultat. Vous ne savez pas comment le réseau a conclu qu'il s'agissait d'un chien? Considérons maintenant une application bancaire où la banque souhaite décider de la solvabilité d'un client. Le réseau vous apportera certainement une réponse à cette question. Cependant, saurez-vous le justifier auprès d'un client? Les banques doivent expliquer à leurs clients pourquoi le prêt n'est pas sanctionné?

Durée du développement

Le processus d'entraînement d'un réseau neuronal est décrit dans le diagramme ci-dessous -

Vous définissez d'abord le problème que vous souhaitez résoudre, créez une spécification pour celui-ci, décidez des fonctionnalités d'entrée, concevez un réseau, déployez-le et testez la sortie. Si le résultat ne correspond pas à vos attentes, prenez-le comme un retour pour restructurer votre réseau. Il s'agit d'un processus itératif et peut nécessiter plusieurs itérations jusqu'à ce que le réseau de temps soit entièrement formé pour produire les résultats souhaités.

Quantité de données

Les réseaux d'apprentissage profond nécessitent généralement une énorme quantité de données pour la formation, tandis que les algorithmes d'apprentissage automatique traditionnels peuvent être utilisés avec un grand succès, même avec quelques milliers de points de données. Heureusement, l'abondance des données augmente de 40% par an et la puissance de traitement du processeur augmente de 20% par an, comme le montre le diagramme ci-dessous -

Calcul coûteux

La formation d'un réseau de neurones nécessite plusieurs fois plus de puissance de calcul que celle requise pour exécuter des algorithmes traditionnels. Une formation réussie sur des réseaux de neurones profonds peut nécessiter plusieurs semaines de formation.

Contrairement à cela, les algorithmes d'apprentissage automatique traditionnels ne prennent que quelques minutes / heures pour s'entraîner. En outre, la quantité de puissance de calcul nécessaire pour entraîner un réseau neuronal profond dépend fortement de la taille de vos données et de la profondeur et de la complexité du réseau?

Après avoir eu un aperçu de ce qu'est le Machine Learning, de ses capacités, de ses limites et de ses applications, plongeons-nous maintenant dans l'apprentissage «Machine Learning».

L'apprentissage automatique a une très grande largeur et nécessite des compétences dans plusieurs domaines. Les compétences que vous devez acquérir pour devenir un expert en apprentissage automatique sont répertoriées ci-dessous:

  • Statistics
  • Théories des probabilités
  • Calculus
  • Techniques d'optimisation
  • Visualization

Nécessité de diverses compétences d'apprentissage automatique

Pour vous donner une brève idée des compétences que vous devez acquérir, laissez-nous discuter de quelques exemples -

Notation mathématique

La plupart des algorithmes d'apprentissage automatique sont fortement basés sur les mathématiques. Le niveau de mathématiques que vous devez connaître n'est probablement qu'un niveau débutant. Ce qui est important, c'est que vous soyez capable de lire la notation que les mathématiciens utilisent dans leurs équations. Par exemple, si vous êtes capable de lire la notation et de comprendre ce qu'elle signifie, vous êtes prêt pour l'apprentissage de l'apprentissage automatique. Sinon, vous devrez peut-être rafraîchir vos connaissances en mathématiques.

$$ f_ {AN} (net- \ theta) = \ begin {cases} \ gamma & if \: net- \ theta \ geq \ epsilon \\ net- \ theta & if - \ epsilon <net- \ theta <\ epsilon \\ - \ gamma & if \: net- \ theta \ leq- \ epsilon \ end {cases} $$

$$ \ displaystyle \\\ max \ limits _ {\ alpha} \ begin {bmatrix} \ displaystyle \ sum \ limits_ {i = 1} ^ m \ alpha- \ frac {1} {2} \ displaystyle \ sum \ limits_ { i, j = 1} ^ m label ^ \ left (\ begin {array} {c} i \\ \ end {array} \ right) \ cdot \: label ^ \ left (\ begin {array} {c} j \\ \ end {array} \ right) \ cdot \: a_ {i} \ cdot \: a_ {j} \ langle x ^ \ left (\ begin {array} {c} i \\ \ end {array} \ droite), x ^ \ gauche (\ begin {array} {c} j \\ \ end {array} \ right) \ rangle \ end {bmatrix} $$

$$ f_ {AN} (net- \ theta) = \ left (\ frac {e ^ {\ lambda (net- \ theta)} - e ^ {- \ lambda (net- \ theta)}} {e ^ { \ lambda (net- \ theta)} + e ^ {- \ lambda (net- \ theta)}} \ right) \; $$

Théorie des probabilités

Voici un exemple pour tester vos connaissances actuelles de la théorie des probabilités: Classification avec des probabilités conditionnelles.

$$ p (c_ {i} | x, y) \; = \ frac {p (x, y | c_ {i}) \; p (c_ {i}) \;} {p (x, y) \ ;} $$

Avec ces définitions, nous pouvons définir la règle de classification bayésienne -

  • Si P (c1 | x, y)> P (c2 | x, y), la classe est c1.
  • Si P (c1 | x, y) <P (c2 | x, y), la classe est c2.

Problème d'optimisation

Voici une fonction d'optimisation

$$ \ displaystyle \\\ max \ limits _ {\ alpha} \ begin {bmatrix} \ displaystyle \ sum \ limits_ {i = 1} ^ m \ alpha- \ frac {1} {2} \ displaystyle \ sum \ limits_ { i, j = 1} ^ m label ^ \ left (\ begin {array} {c} i \\ \ end {array} \ right) \ cdot \: label ^ \ left (\ begin {array} {c} j \\ \ end {array} \ right) \ cdot \: a_ {i} \ cdot \: a_ {j} \ langle x ^ \ left (\ begin {array} {c} i \\ \ end {array} \ droite), x ^ \ gauche (\ begin {array} {c} j \\ \ end {array} \ right) \ rangle \ end {bmatrix} $$

Sous réserve des contraintes suivantes -

$$ \ alpha \ geq0 et \: \ displaystyle \ sum \ limits_ {i-1} ^ m \ alpha_ {i} \ cdot \: label ^ \ left (\ begin {array} {c} i \\ \ end {array} \ right) = 0 $$

Si vous pouvez lire et comprendre ce qui précède, vous êtes prêt.

Visualisation

Dans de nombreux cas, vous devrez comprendre les différents types de tracés de visualisation pour comprendre la distribution de vos données et interpréter les résultats de la sortie de l'algorithme.

Outre les aspects théoriques ci-dessus de l'apprentissage automatique, vous avez besoin de bonnes compétences en programmation pour coder ces algorithmes.

Alors, que faut-il pour implémenter le ML? Examinons cela dans le chapitre suivant.

Pour développer des applications ML, vous devrez décider de la plate-forme, de l'EDI et du langage de développement. Il existe plusieurs choix disponibles. La plupart d'entre eux répondraient facilement à vos besoins, car ils fournissent tous la mise en œuvre des algorithmes d'IA évoqués jusqu'à présent.

Si vous développez vous-même l'algorithme ML, les aspects suivants doivent être bien compris -

La langue de votre choix - il s'agit essentiellement de votre maîtrise de l'une des langues prises en charge dans le développement ML.

L'IDE que vous utilisez - Cela dépendra de votre familiarité avec les IDE existants et de votre niveau de confort.

Development platform- Il existe plusieurs plates-formes disponibles pour le développement et le déploiement. La plupart d'entre eux sont gratuits. Dans certains cas, vous devrez peut-être payer des frais de licence au-delà d'un certain montant d'utilisation. Voici une brève liste de choix de langues, IDE et plates-formes pour votre référence.

Choix de la langue

Voici une liste de langages prenant en charge le développement ML -

  • Python
  • R
  • Matlab
  • Octave
  • Julia
  • C++
  • C

Cette liste n'est pas essentiellement exhaustive; cependant, il couvre de nombreux langages populaires utilisés dans le développement de l'apprentissage automatique. En fonction de votre niveau de confort, sélectionnez une langue pour le développement, développez vos modèles et testez.

IDE

Voici une liste des IDE qui prennent en charge le développement ML -

  • Studio R
  • Pycharm
  • Bloc-notes iPython / Jupyter
  • Julia
  • Spyder
  • Anaconda
  • Rodeo
  • Google –Colab

La liste ci-dessus n'est pas essentiellement exhaustive. Chacun a ses propres mérites et inconvénients. Le lecteur est encouragé à essayer ces différents IDE avant de se limiter à un seul.

Plateformes

Voici une liste de plates-formes sur lesquelles les applications ML peuvent être déployées -

  • IBM
  • Microsoft Azure
  • Google Cloud
  • Amazon
  • Mlflow

Encore une fois, cette liste n'est pas exhaustive. Le lecteur est encouragé à s'inscrire aux services susmentionnés et à les essayer eux-mêmes.

Ce didacticiel vous a présenté le Machine Learning. Maintenant, vous savez que l'apprentissage automatique est une technique d'entraînement des machines pour effectuer les activités qu'un cerveau humain peut faire, quoique un peu plus vite et mieux qu'un être humain moyen. Aujourd'hui, nous avons vu que les machines peuvent battre des champions humains dans des jeux tels que Chess, AlphaGO, qui sont considérés comme très complexes. Vous avez vu que les machines peuvent être entraînées pour effectuer des activités humaines dans plusieurs domaines et peuvent aider les humains à vivre mieux.

L'apprentissage automatique peut être supervisé ou non supervisé. Si vous avez moins de données et des données clairement étiquetées pour la formation, optez pour l'apprentissage supervisé. L'apprentissage non supervisé donnerait généralement de meilleures performances et de meilleurs résultats pour les grands ensembles de données. Si vous disposez d'un vaste ensemble de données facilement disponible, optez pour des techniques d'apprentissage en profondeur. Vous avez également appris l'apprentissage par renforcement et l'apprentissage par renforcement profond. Vous savez maintenant ce que sont les réseaux de neurones, leurs applications et leurs limites.

Enfin, en ce qui concerne le développement de vos propres modèles d'apprentissage automatique, vous avez examiné les choix de divers langages de développement, IDE et plates-formes. La prochaine chose que vous devez faire est de commencer à apprendre et à pratiquer chaque technique d'apprentissage automatique. Le sujet est vaste, cela signifie qu'il y a de la largeur, mais si l'on considère la profondeur, chaque sujet peut être appris en quelques heures. Chaque sujet est indépendant l'un de l'autre. Vous devez prendre en considération un sujet à la fois, l'apprendre, le mettre en pratique et y mettre en œuvre le ou les algorithmes en utilisant votre choix de langue. C'est la meilleure façon de commencer à étudier le Machine Learning. En pratiquant un sujet à la fois, vous obtiendrez très bientôt la largeur qui est finalement requise d'un expert en Machine Learning.

Bonne chance!