Initiation à l'apprentissage automatique en Python – Apprendre une langue étrangère

  • Eric Le Nagard Informatique : Initiation À L'Algorithmique En Scilab Et Python - Classes Péparatoires Scientifiques, Toutes Filières
    Binding : Taschenbuch, Label : PEARSON EDUCATION, Publisher : PEARSON EDUCATION, medium : Taschenbuch, numberOfPages : 268, publicationDate : 2013-10-10, authors : Eric Le Nagard, languages : french, ISBN : 2744076759
  • Python 3 - 2e Éd. - Apprendre À Programmer Dans L'Écosystème Python: Apprendre À Programmer Dans L'Écosystème Python (Infosup)
    Brand : DUNOD, Binding : Taschenbuch, Label : DUNOD, Publisher : DUNOD, medium : Taschenbuch, numberOfPages : 304, publicationDate : 2020-07-16, ISBN : 2100809148

Tutoriel en 2 parties:

introduction

Cet article est la première partie d’un cours sur l’apprentissage automatique en Python.

Dans cette première partie, nous essayons de vous donner une vision des différents domaines de l’intelligence artificielle et de distinguer Python.

Elle poursuit par une présentation détaillée de l’apprentissage automatique, qui est aujourd’hui certainement la branche la plus active de cette discipline, au point d’être mise sur les lèvres de toutes les grandes entreprises.

Nous allons essayer de jeter les bases pour vous aider à comprendre la vue globale, la fameuse "vue d'ensemble", qui vous aidera à choisir les meilleurs algorithmes et bibliothèques.

Nous présenterons:

  • Comment Python est prêt à faire de l'IA
  • Une histoire rapide de l'IA
  • Apprentissage automatique, ses domaines et algorithmes principaux

Quelles sont les qualités d'un langage pour l'IA et pourquoi utiliser Python?

Python, en tant que langue uniquement, n'est pas spécialement adapté aux autres langues de l'IA.

Wikipedia, dans sa version anglaise, présente une page décrivant les langues les plus utilisées pour l'IA. Nous trouvons Python, mais pas pour ses qualités internes.

Pour l'IA, il est particulièrement utile que le langage permette:

  • "Récursion"
    Aujourd'hui, presque toutes les langues le permettent, mais seuls les langages non procéduraux, tels que les anciens TO8 BASIC qui n'offrent pas la notion de fonction, n'ont pas cette capacité.
    Cependant, les optimisations d'appel final ne sont pas disponibles en Python.
  • Programmation orientée objet
    Là encore, la plupart des langues modernes couramment utilisées les ont. Python offre tous les mécanismes nécessaires: héritage, surcharge, méthodes virtuelles; bien qu’il soit moins rigoureux que d’autres (pas de visibilité privé / public / protégé).
  • Le paradigme fonctionnel
    Python autorise ce paradigme de programmation même s’il est moins "naturel" que dans d’autres langages comme Haskell, Lisp ou Erlang.
  • Fonctions de programmation logique, telles que la logique de prédicat utilisée par PROLOG.
    Python n'offre rien de tel en natif.

Clairement, Python n'est pas vraiment au dessus des autres langues pour l'intelligence artificielle. Mais il se prête bien et sa syntaxe concise et facile permet de progresser là-bas certainement plus facilement que dans d’autres langues.

Il possède également des bibliothèques spécialisées dans l'IA qui lui permettent d'apprendre cette discipline.

De plus, en ce qui concerne l’apprentissage automatique, le problème le plus difficile est souvent de disposer de bons ensembles de données, ce qui va parfois bien au-delà du besoin de savoir comment mettre en œuvre ou utiliser correctement un algorithme d’apprentissage automatique. À cet égard, Python est particulièrement bien équipé en librairies telles que numpy ou pandas, par exemple.

Enfin, en ce qui concerne le domaine de l’apprentissage automatique, Python se démarque notamment en proposant une pléthore de bibliothèques de haute qualité, couvrant tous les types d’apprentissage disponibles sur le marché; le tout accompagné d’une communauté nombreuse et dynamique.

Par exemple, le projet Scikit-Learn, l'un des plus célèbres de cette discipline, compte près de 800 contributeurs.

C'est énorme!

Imaginez une équipe de 800 développeurs. Peu d'entreprises et de projets informatiques peuvent se comparer à ce nombre. Mais il faut relativiser, ils sont loin de tous travailler à temps plein.

Intelligence artificielle

Le site Wikipedia propose un excellent article sur l’histoire de l’intelligence artificielle décrivant les grandes dates, sociétés et mouvements de pensée qui ont contribué à son développement.

Cerveau artificiel

Intelligence artificielle
trouve son nom à la conférence de Dartmouth en 1956.
Mais cela a commencé au début des années 50 avec, en particulier, le travail deAlan Turing qui se demandait si on pouvait penser à un ordinateur.

Il a proposé pour cela un test, a déclaré: Test de turing, dans lequel une personne discute via un ordinateur et doit deviner si son interlocuteur est une machine ou un être humain.

Si tel n'est pas le cas, nous pouvons en conclure qu'il est possible de faire fonctionner un ordinateur avec des algorithmes logiques similaires à notre façon de penser, voire au-delà.

Des exemples de tels programmes sont:

Si il y a quelques années, il était très facile de deviner qu'une machine nous parlait, nous arrivons aujourd'hui au dernier point, voire au-delà. En effet, dans de nombreuses activités nécessitant beaucoup de réflexion, l’ordinateur était plus puissant que l’être humain, à savoir:

L'intelligence artificielle a suscité et continue de faire naître de nombreux espoirs d'amélioration de notre condition humaine, mais le fait qu'elle soit aujourd'hui dans certaines régions pour nous égaler, voire même nous dépasser, soulève de nombreuses inquiétudes, y compris avec les plus grands responsables informatiques de la planète.

La page Wikipedia dédiée à la discipline résume très bien ces craintes et ces espoirs concernant l’IA.
Mais cela reste un autre débat.

Algorithmes et techniques

L'intelligence artificielle a fait ses débuts en informatique avec les systèmes automatisés, récursifs et les langages comme Lisp et Prolog.

À ses débuts, nous parlions principalement de règles logiques, de récursivité, d’analyses, de graphiques et de systèmes experts.

Aujourd'hui, les techniques utilisées pour faire penser nos machines sont nombreuses:

Mais actuellement, en 2017, ce sont l’apprentissage par la machine, et en particulier les réseaux de neurones et l’apprentissage en profondeur qui tirent vers le haut.

En effet, l'IA a végétalisé plusieurs années à plusieurs reprises, notamment dans les années 1970 et 1990; car il a longtemps été limité par les coûts et les performances des machines (vitesse, capacité de mémoire, capacité de stockage) qui ont sapé les attentes qui y étaient placées, provoquant des frustrations et des pertes d’investissements pour les industriels.

Aujourd'hui, les superordinateurs et le nuage ont aboli ces limites et nous assistons à une explosion de ses possibilités qui semblent imparables.
Les clusters de serveurs OVH, Amazon AWS et Google Cloud accessibles à partir du budget d'un individu en sont un bon exemple.

Aujourd'hui, nous pouvons effectuer des calculs complexes et analyser des milliards de données à des coûts dérisoires. Cela stimule la recherche et donne lieu à une intelligence artificielle.

Cela ouvre la voie à Apprentissage machine qui prend toute sa dimension avec de très gros volumes de données.
L'arrivée de Big Data a propulsé un nouveau domaine de l'IA: l'apprentissage automatique.

Et celui-ci donne déjà des résultats fabuleux qui stimulent tous les investissements du secteur!

Centres de recherche, banques, assurances, finance, aérospatiale, automobile, pharmacie … Toute l’industrie s’en empare.

"Les voitures et les robots autonomes de Google font l'objet de beaucoup de presse, mais l'avenir de la société réside dans l'apprentissage automatique, technologie qui permet aux ordinateurs de devenir plus intelligents et plus personnels."
– Eric Schmidt (président de Google)

Des disciplines extrêmement compliquées et coûteuses telles que la reconnaissance vocale, la reconnaissance visuelle / faciale, autrefois réservées aux industriels et à l'armée, font désormais partie de notre quotidien:

  • Reconnaissance d'amis dans des albums photo ou via des moteurs de recherche
  • Reconnaissance vocale (pendant un appel téléphonique), dicter un SMS sur votre smartphone ou reconnaître une chanson à la radio (Shazam, applications SoundHound, …)
  • Contrôle automatique de nos voitures
  • L'art n'échappe pas non plus: musique, poésie ou peinture en imitant Rembrant

Nous commençons même à voir les ordinateurs rêver …

Rêve d'une IA sur Google

Ou Apprentissage machine

Définition

L'apprentissage automatique peut être vu comme l'ensemble des techniques permettant à une machine d'apprendre à effectuer une tâche sans avoir à la programmer explicitement à cette fin.
Arthur Samuel.
Définition extraite d'un article d'Antoine Gaudelas

L'apprentissage automatique ou apprentissage statistique est un domaine de l'intelligence artificielle qui implique la conception, l'analyse, le développement et la mise en œuvre de méthodes permettant à un ordinateur d'évoluer selon un processus systématique et d'effectuer ainsi des tâches difficiles ou problématiques à accomplir par des moyens algorithmiques plus classiques.
Définition adaptée de Wikipedia

En d’autres termes, l’apprentissage automatique est l’un des domaines de l’intelligence artificielle qui vise à permettre à un ordinateur d’acquérir des connaissances, puis de les appliquer à la réalisation de tâches que nous avons précédemment effectuées dans notre raisonnement.

Le type de tâches traitées comprend généralement des problèmes de classification des données:

  • Voici 50 photos de ma fille, voici maintenant toutes les photos de mon album, retrouvez celles où ma fille est
  • Voici 10 000 personnes avec leurs caractéristiques (âge, localisation, taille, profession …), regroupées en 12 groupes cohérents partageant les mêmes points communs
  • Voici les paramètres de vol des avions de ma flotte avec les pannes survenues à chaque vol, le cas échéant. Maintenant, voici les derniers vols effectués par cet avion, dites-moi quand se produira le prochain échec et sur quel article il se produira.
  • Voici les livres écrits par Victor Hugo, voici une nouvelle dont nous cherchons l'auteur, est-ce de lui?
  • Voici des mesures scientifiques effectuées sur un échantillon de données, elles semblent répondre à une loi mathématique, tentent de l'approcher par des fonctions mathématiques puis prédisent les valeurs des données suivantes

Les possibilités sont très vastes et nous retrouvons l’apprentissage automatique dans de nombreux domaines de la vie réelle tels que:

Introduction à l'apprentissage automatique

Quand on parle d’apprentissage automatique, on parle de types d’apprentissage, parmi les plus répandus:

Yann Le Cun, considéré comme l'un des inventeurs de Deep Learning, résume ces différentes classes de la manière suivante:

La plupart des types d'apprentissage chez l'homme et chez l'animal ne sont pas supervisés.
Si l'apprentissage automatique était un gâteau, l'apprentissage non supervisé serait ce gâteau, l'apprentissage supervisé serait le sommet du gâteau et l'apprentissage par «renforcement» serait la cerise sur le gâteau. Nous savons faire la garniture et la cerise, mais nous ne savons pas faire le gâteau.

La photo est bonne, même si certains ont des opinions plus nuancées.

Chaque type d'apprentissage peut s'appuyer sur différents algorithmes:

Enseignement supervisé

L'apprentissage supervisé peut résoudre les problèmes de classification et de régression.

Enfant apprenant

L'idée est d'associer une étiquette à des données sur lesquelles vous avez des mesures.

  • Si les étiquettes sont discrètes (étiquettes ou valeurs finies), nous parlerons de classification.
  • Si, au contraire, les étiquettes sont continues (comme l'ensemble des nombres réels), on parlera de régression.

Classification

La classification comprend donner des étiquettes à ses données:

  • Vous disposez d'un ensemble de données connues que vous avez déjà classées (photos, plantes, individus …)
  • Vous voulez, à partir de cette première classification, connue sous le nom de connaissance, classer de nouveaux éléments

Certains logiciels d'album photo utilisent ce type d'apprentissage pour classer vos images:

  • Ils vous permettent de désigner un ensemble de photos contenant votre enfant et d'indiquer où il se trouve dans ces images.
    C'est la phase d'apprentissage
  • Puis tu lui dis, voici ma collection de 15000 photos, trouve toutes celles qui contiennent mon enfant
    Le logiciel analyse ensuite votre collection et essaie de trouver celles qui sont similaires à l'ensemble de données que vous lui avez enseigné. Certains logiciels vous indiquent même où se trouve votre enfant sur la photo
    C'est la phase de prédiction

Un autre exemple très parlant est la détection automatique du spam:

  • Vous avez déjà un grand nombre d'emails classifiés avec une étiquette Spam / Valid
  • Vous voulez classer les nouveaux courriels entrants sur la connaissance des courriels déjà classifiés

Les résultats sont généralement très bons, vous trouverez facilement de nombreux exemples sur Internet, notamment en Python, comme celui-ci utilisant un réseau de neurones.

Ce type de classification permet de répondre à de nombreux problèmes d’identification: reconnaissance de plantes, de personnes, de produits, reconstitution de valeurs manquantes (en remplacement d’une interpolation), etc …

Il peut utiliser différents types d'algorithmes, comme les voisins les plus proches, médias vecteur machines, arbres de décision, …

Régression

Imaginez un ensemble de points sur une image en 2 ou 3 dimensions, ayant une intensité lumineuse différente.

Par exemple, une image satellite d'étoiles lointaines ou une photo de nuit de feux de circulation.

Galaxie Spirale

Cette intensité lumineuse est mesurable et peut être considérée comme une étiquette, mais elle est différente pour chaque étoile. C'est une étiquette continue qui peut prendre n'importe quelle valeur supérieure à 0.

Les régressions nous permettront d'approcher une équation idéale permettant de déterminer la luminosité de chacune de nos étoiles en fonction de leur position ou inversement la distance des véhicules en fonction de la luminosité de leurs phares.

En astronomie, ce processus est utilisé pour identifier la distance des galaxies à partir de multiples observations en tant que mesures de l'intensité lumineuse de chacune d'elles dans différentes longueurs d'onde. Ceci est appelé le redshift photométrique

Des algorithmes tels que les régressions linéaires, les machines à vecteurs de support ou les forêts d'arbres de décision sont adaptés à ce type de traitement.

Apprentissage non supervisé

L'apprentissage non supervisé répond au même besoin de classification des données.
Mais contrairement à l’apprentissage supervisé, vous n’avez pas de données classées / connues précédemment utilisées comme base de prédiction.

Comment classer ces curcubitacées

Vous utilisez ce type d'algorithme pour répondre à 2 types de tâches:

  • La classification des données, mais comme vous n’avez pas encore les étiquettes, nous parlons de regroupement c'est-à-dire grouper.
  • L’autre tâche consiste à réduire le nombre de dimensions de vos données tout en conservant une variation / un regroupement similaire aux données originales. Nous parlons donc de réduction de la dimensionnalité

regroupement

Avec ce type d'apprentissage, il n'y a qu'une phase de prédiction.

Vous alimentez l'algorithme de toutes vos données et lui demandez de le diviser en N groupes. L'algorithme essaiera ensuite de créer des groupes pour lesquels les paramètres de chaque donnée sont les plus similaires.

Quelques exemples d'applications:

  • Classer les cultures d'une région:
    Vous avez des métriques sur les parcelles agricoles d'une région (teneur en nitrates, phosphates, salinité, surface, haies, …) et vous savez qu'il existe 12 cultures différentes.
    Vous demanderez à votre classificateur de créer 12 groupes en les classant selon des critères de ressemblance.
  • Vous avez des statistiques sur une population (salaire, localisation, âge, profession, nombre d'enfants), vous souhaitez les regrouper dans différentes catégories sociales.

Les algorithmes de voisins les plus proches, les arbres de décision, les réseaux de neurones, la propagation par affinité sont généralement utilisés pour ce type de traitement.

Réduction de la dimension

Ici, vous avez un problème légèrement différent: chaque information / donnée que vous voulez traiter a trop de paramètres, soit pour être visualisée, soit pour être traitée dans un délai raisonnable et sur un nombre limité de machines.

Vous devez donc réduire le nombre de ces paramètres tout en maintenant une cohérence sur leurs variations globales. Donc, si vous regroupiez vos données en utilisant tous les paramètres, vous obtiendriez sensiblement le même groupe que pour les paramètres réduits.

Une utilisation typique consiste à visualiser des groupes de données dans un espace 2D ou 3D.

Un algorithme fréquemment utilisé est l’analyse en composantes principales (ACP), mais il en existe d’autres, comme la factorisation dans des matrices non négatives.

Apprentissage par renforcement

"L'intelligence est la capacité d'adaptation"
André Gide

Ce type d'apprentissage est plus applicable aux problèmes d'optimisation.
L'idée est de prendre des décisions pour un système afin d'obtenir le résultat le meilleur possible.

Ce type d'algorithme est très inspiré par les études comportementales en biologie animale ou en psychologie. Il est étroitement lié à ces disciplines.

Pour cela, l'algorithme appliquera des règles sur son environnement pour arriver au résultat attendu. Il a la capacité de mesurer l'impact de la règle sur l'environnement: nous nous rapprochons de l'objectif ou nous nous en éloignons.

À partir de là, il peut constituer une base de connaissances sur les acquis de chaque action, ce qui l’aidera à améliorer ses décisions et à trouver ainsi le de meilleures façons pour atteindre son objectif.

Les algorithmes ne garantissent pas nécessairement le meilleur résultat, mais s'en approchent.
Là où ils commencent à devenir plus complexes, l’obtention de petits gains immédiats ne devrait pas empêcher de rechercher des gains plus importants qui ne peuvent être obtenus qu’après plusieurs actions ayant entraîné une série de pertes.

Différents algorithmes sont disponibles pour ce type d’apprentissage, tels que Q-Learning ou monte Carlo, SARSA, mais ce sont les réseaux de neurones qui semblent être les plus utilisés lorsque nous examinons la littérature sur Internet.

Exemples d'utilisation:

  • Robotique: faire bouger un robot dans des conditions changeantes
  • Optimiser le mouvement des ascenseurs
  • Paquets de réseau de routeur
  • Jeux de stratégie
  • La façon dont les fourmis ont voyagé pour aller chercher leur nourriture à la fourmilière

Pour creuser le sujet:

Apprentissage par transfert

Le transfert d'apprentissage vise à utiliser les connaissances d'un ensemble de tâches sources pour non seulement influencer l'apprentissage, mais également améliorer les performances sur une autre tâche cible.

Elle consiste en quelque sorte à utiliser les connaissances acquises pour les réappliquer dans un autre environnement. Pour être efficace, l'environnement cible ne doit pas être trop différent de celui des tâches source, sinon des transferts négatifs seront effectués, ce qui entraînera un résultat contraire.

Un exemple d'utilisation serait de transférer des tâches d'un réseau de neurones utilisé pour la reconnaissance manuscrite de l'écriture dans une langue pour l'appliquer à une autre langue, même très différente (français / japonais).

Les différents types d'algorithmes

Régression linéaire

La régression linéaire consiste à déterminer une équation ligne droite / plane la plus proche de l'ensemble des points étudiés.
L'idée étant de déterminer les coefficients à et b de l'équation

régression linéaire

  • est la variable que l'on cherche à calculer, à prédire, dit-on endogène (Dépendant).
  • X est la variable prédictive, dit-on exogène (Indépendant).
  • à et b sont les paramètres (les coefficients) du modèle.

En cas de régression simple, à est appelé le pente et b est appelé la constante.
$ epsilon $ est le bruit généré lors de la mesure et perturbant la bonne identification de la relation.

Cette équation est ensuite utilisée pour prédire de nouvelles données.

Ce système n’est efficace que si les relations entre vos données sont simples.
Dans le cas de courbes plus complexes qu'une ligne droite ou un plan, on utilisera des solutions polynomiales et gaussiennes.
Les algorithmes de type SVM conviennent très bien à ces cas plus avancés.

Régression logistique

Régressions logistiques, également appelées modèle logit, sont un cas particulier de régressions linéaires.

Cela consiste à modéliser l’effet d’un vecteur de données / paramètres aléatoires sur une variable binomiale, c’est-à-dire n’avoir que 2 états, Vrai / Faux (0/1), d’où le terme logistique.

est la variable expliquée et les vecteurs (x1, x2, …, xn) variables prédictives / explicatives.

Le site Wikipedia fournit une description complète du modèle probabiliste associé.
Il s'agit d'une régression linéaire même si vous ne disposez que de 2 valeurs possibles pour & # 39;rappelle un problème de classification.

Il est utilisé dans de nombreux cas, voici des exemples de Wikipedia:

  • En médecine, cela permet par exemple de rechercher les facteurs qui caractérisent un groupe de sujets malades par rapport à des sujets en bonne santé.
  • Dans le domaine de l’assurance, cela permet de cibler une fraction des clients qui seront sensibles à une police d’assurance sur tel ou tel risque.
  • Dans le domaine bancaire, détecter les groupes à risque lors de la souscription d'un crédit.
  • En économétrie, pour expliquer une variable discrète. Par exemple, intentions de vote lors d'élections.

Arbres de décision

Les naturalistes parmi vous auront probablement connu le logiciel "Mais quel est cet oiseau?"

Quel est cet oiseau?

Cela permettait en quelques questions et en affichant des silhouettes d'oiseaux de vous aider à identifier un oiseau que vous aviez vu à l'état sauvage. Même si vous ne connaissez rien à l'ornithologie.

Plus récemment, l'application Akinator vous amuse de deviner le personnage auquel vous pensez.

Akinator

Ces 2 applications reposent sur le principe des arbres de décision:

  • À chaque nœud, une question est posée pour limiter toutes les solutions restantes à 2 parties disjointes et la plus grande possible. Dans le principe de la dichotomie, calcul de la médiane.
  • Ensuite, au nœud suivant, une autre question est posée pour limiter de la même manière l’ensemble des solutions restantes.
  • Jusqu'à ce qu'il n'en reste plus qu'un.

Dans le cas de l'apprentissage automatique, les arbres de décision sont construits par l'algorithme pour tenter de diviser les données sur les paramètres de vecteur de la manière suivante:

  • Chaque noeud interne décrit un test sur un paramètre d'apprentissage
  • Chaque branche représente un résultat de test
  • Chaque feuille contient la valeur de la variable cible
    • une balise de classe pour les arbres de classification
    • une valeur numérique pour les arbres de régression

La pertinence de l'algorithme de construction de l'arbre sera mesurée par sa capacité à trouver les paramètres qui maximisent le partage à chaque nœud.

Les arbres de décision sont utilisés dans l'apprentissage supervisé.

Le lien article fourni par Wikipedia décrit les contraintes techniques de la construction de ces arbres et les difficultés de prédire une étiquette unique ainsi que divers inconvénients, tels que:

  • L'influence de l'ordre des paramètres de prédiction dans le graphique
  • La difficulté de représenter des règles comme Ou exclusif

Cependant, ils sont très utiles pour essayer de comprendre la chemin paramètres d’information et peut être un bon complément aux régressions logistiques.

Forêt aléatoire

Les forêts d'arbres décisionnelles / aléatoires sont basées sur le concept d'ensachage statistique / inférence et d'arbres de décision.

L'idée est d'apprendre comment de multiples arbres de décision fonctionnent sur les sous-ensembles de données les plus indépendants possibles.

Cela résout plusieurs problèmes inhérents aux arbres de décision uniques, tels que la modification du résultat dans l'ordre des paramètres de prédicteur dans les nœuds ou la réduction de leur complexité.

SVM

Les machines à vecteurs de support sont largement utilisées dans les problèmes de régression et offrent une extension aux régressions linéaires lorsque les données présentent des niveaux de séparation plus tordu !

Transformation d'un plan non linéaire en un espace linéaire

Ils permettent de calculer des données lorsque leurs étiquettes ne sont pas séparables par une équation linéaire. Ils proposent de séparer les données avec des équations plus riches telles que les polynômes, le gaussien, etc.

Ils ont beaucoup de succès, pour plusieurs raisons:

  • Ils peuvent travailler avec des données avec un très grand nombre de paramètres
  • Ils utilisent peu d'hyperparamètres
  • Ils garantissent de bons résultats théoriques
  • Ils peuvent égaler ou dépasser en performance les réseaux de neurones ou de modèles gaussiens

Naive Bayes

La classification bayésienne naïve est basée sur Bayes & # 39; théorème pour déterminer la distribution d'une distribution binomiale.

C'est une équation décrivant la relation entre les probabilités conditionnelles de quantités statistiques.

Il fait partie du groupe des classificateurs linéaires.

Nous voulons ici trouver la probabilité d’une étiquette basée sur les paramètres observés, notée P (L | params)
Le théorème de Bayes calcule cette information:

Équation naïve bayes

La génération d'un modèle sur cette loi est faite pour chaque étiquette et peut être difficile.
Le modèle est naïf car il simplifie grandement cette tâche en faisant plusieurs approximations naïves.

C'est donc très rapide et c'est un bon modèle pour commencer un classement.

KNN

L'algorithme du voisin le plus proche est relativement simple.
L'un de ses points forts est de ne pas calculer d'informations dans le processus d'apprentissage.

Il recherche les N plus proches voisins (par un calcul de distance) entre les données à prédire et les données connues.
Il retourne ensuite la classe de la majorité des voisins.

Assez simple à mettre en œuvre, il peut générer beaucoup de calculs et ne pas être adapté aux grandes volumétries; surtout si le nombre de paramètres est très grand.

Gradient Boost & Adaboost,

Le gradient de renforcement est un algorithme qui s'applique aux problèmes de classification et de régression.

L'idée est d'améliorer la prédiction et la vitesse en combinant un ensemble d'algorithmes d'apprentissage plus simples via un arbre de décision.

Le travail consiste ensuite à identifier la fonction permettant de maximiser le choix des différents algorithmes.

AdaBoost est une variante du gradient de boost. Il combine via une somme pondérée le résultat d'algorithmes d'apprentissage différents et plus simples. Il est adaptatif en ce sens qu'il peut jouer sur le poids de différents algorithmes simples en fonction de la qualité de leurs résultats.

Réseaux de neurones et apprentissage en profondeur

Les réseaux de neurones tentent de reproduire le fonctionnement des neurones biologiques.

neurone

Pour vulgariser leur fonctionnement:

  • c'est un graphe où chaque nœud représente un neurone
  • chaque neurone reçoit des informations lorsqu'il est stimulé
  • il ne transmet pas (généralement en modifiant ou en complétant) les neurones auxquels il est connecté sauf s'il dépasse un certain seuil

Ils sont généralement très rapides et permettent des mécanismes perceptuel indépendant du concepteur de l'algorithme. Ils ouvrent la voie au raisonnement de la machine.

L'algorithme traite de la construction d'un automate dont les états peuvent évoluer:

  • Les valeurs de seuil peuvent être adaptées aux informations traitées à l'aide de systèmes de récompense / blâme correctifs, par exemple
  • Les paramètres synaptique peut aussi varier
  • Tout comme les connexions entre les neurones

Dans ces réseaux, la phase d'apprentissage vise à faire converger les paramètres de données vers une classification optimale.

Ils nécessitent beaucoup de données d'apprentissage et ne conviennent pas à tous les problèmes, surtout si le nombre de paramètres d'entrée est trop faible.

Le terme L'apprentissage en profondeur réseaux de neurones désignés juxtaposés ou constitués de plusieurs couches.

Il s’inspire, entre autres, des dernières avancées en neurosciences et des modèles de communication de notre système nerveux.

Certains l'associent également à une modélisation qui fournit un niveau d'abstraction plus élevé des données pour fournir de meilleures prévisions.

L'apprentissage en profondeur est particulièrement efficace pour le traitement de l'image, du son et de la vidéo. On le trouve dans les domaines de la santé, de la robotique, de la vision par ordinateur, …

Un projet particulièrement connu est le projet Horus développé par NVidia, qui permet aux personnes malvoyantes de s’orienter et de reconnaître des objets.

En raison de leur grand besoin d'apprendre les données, ils sont très coûteux en ressources matérielles.

Choisissez votre type d'apprentissage et son algorithme

Il est nécessaire de combiner plusieurs ingrédients qui doivent être savamment mélangés pour réussir une IA:

  • Qualité des données
  • Puissance informatique (hardware)
  • Les algorithmes
  • Et le talent

Lorsque vous demandez à un expert en apprentissage automatique quel algorithme convient le mieux à un tel problème, il répond généralement:

ça dépend, vous devez en essayer plusieurs et voir celui qui vous convient le mieux

Et en effet cela dépend:

  • La qualité des données que vous avez pour l'apprentissage et pour la classification
  • Paramètres que vous utilisez avec vos données
  • La quantité de données source et à classer
  • Temps d'exécution requis
  • Paramètres disponibles pour influencer le comportement de l'algorithme

En général, vous devez en essayer plusieurs pour vous faire une idée.
Parfois, en fonction de la précision souhaitée, vous en utiliserez parfois plusieurs, si celui qui est généralement le meilleur donne un résultat insatisfaisant sur un ensemble de données spécifique, un autre peut être préférable dans ce cas.

Voici déjà quelques liens, à défaut d'un meilleur pour le moment, pour vous aider à choisir vos algorithmes en fonction de vos besoins de classification:

Heureusement, il existe des techniques pour mesurer la qualité d'un algorithme sur un jeu de données.
Nous allons vous montrer quelques outils pour y parvenir.

Nous avons alors alors sur certains domaines, certains algorithmes qui sembleraient être plus utiles.

Apprentissage Machine et Python

Python devient un imposer dans l'univers scientifique et industriel.
Le domaine du machine learning n'est pas écarté, bien au contraire …
Les formidables possibilités de calcul du langage ont permis de percer secteur et de multiples bibliothèques ont vu le jour.

  • Annoy, librairie extrêmement rapide implémentant la recherche des plus proches voisins
  • Caffe, cadre d'apprentissage profond
  • Chainer, Cadre intuitif pour les réseaux de neurones
  • néon, Deep Learning framework extrêmement performant
  • NuPIC, Plateforme d'implémentation des algorithmes d'apprentissage HTM
  • Shogun, Boîte à outils d'apprentissage automatique à grande échelle
  • TensorFlow, Réseau de neurones conclu d'une API de haut niveau
  • Theano, Librairie d'apprentissage automatique à évaluer et à optimiser des expressions mathématiques
  • Torch, Framework d’algorithmes d’apprentissage très performant par relier Python
  • Theanets, apprentissage en profondeur

Le plus épatant est ce qu'elles sont généralement d'une grande qualité et utilisé dans les environnements professionnels.

Cependant, Scikit-Learn est probablement le plus populaire des bibliothèques disponibles pour ce langage.
Elle possède un grand nombre d'opinions spécialisées dans l'analyse de données et de données, ce qui en fait un outil de choix pour les chercheurs et les développeurs.

Pour aller plus loin

Références

Les images utilisées dans ce document sont sous licences libres et évaluées des sites:

Laisser un commentaire

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