Une introduction à l’apprentissage automatique

introduction

L’apprentissage automatique est un sous-domaine de l’intelligence artificielle (IA). L’apprentissage automatique vise généralement à comprendre la structure des données et à les adapter à des modèles pouvant être compris et utilisés par les utilisateurs.

Bien que l’apprentissage automatique soit un domaine de l’informatique, il diffère des approches informatiques traditionnelles. En informatique traditionnelle, les algorithmes sont des ensembles d’instructions explicitement programmées, utilisées par les ordinateurs pour calculer ou résoudre des problèmes. Les algorithmes d’apprentissage automatique permettent aux ordinateurs de se familiariser avec les entrées de données et d’utiliser l’analyse statistique afin de générer des valeurs comprises dans une plage spécifique. De ce fait, l’apprentissage automatique facilite l’informatique dans la construction de modèles à partir d’échantillons de données afin d’automatiser les processus de prise de décision en fonction des entrées de données.

Tout utilisateur de technologie a aujourd’hui bénéficié de l’apprentissage automatique. La technologie de reconnaissance faciale permet aux plates-formes de médias sociaux d’aider les utilisateurs à taguer et partager des photos d’amis. La technologie de reconnaissance optique de caractères (OCR) convertit les images de texte en caractères mobiles. Les moteurs de recommandation, basés sur l’apprentissage automatique, suggèrent quels films ou séries télévisées regarder ensuite en fonction des préférences de l’utilisateur. Les voitures autonomes nécessitant un apprentissage automatique de la navigation pourraient bientôt être disponibles pour les consommateurs.

L’apprentissage automatique est un domaine en constante évolution. C’est pourquoi vous devez garder à l’esprit certains points lorsque vous travaillez avec des méthodologies d’apprentissage automatique ou analysez l’impact des processus d’apprentissage automatique.

Dans ce didacticiel, nous étudierons les méthodes classiques d’apprentissage automatique (apprentissage supervisé et non supervisé), ainsi que les approches algorithmiques courantes en apprentissage automatique, notamment l’algorithme k-voisin le plus proche, l’apprentissage par arbre de décision et l’apprentissage en profondeur. Nous explorerons les langages de programmation les plus utilisés dans l’apprentissage automatique, en vous fournissant quelques-uns des attributs positifs et négatifs de chacun. De plus, nous discuterons des biais qui sont perpétués par des algorithmes d’apprentissage automatique et examinons ce qui peut être gardé à l’esprit pour éviter ces biais lors de la construction d’algorithmes.

Méthodes d’apprentissage automatique

Dans l’apprentissage automatique, les tâches sont généralement classées en grandes catégories. Ces catégories sont basées sur la manière dont l’apprentissage est reçu ou sur la manière dont le système mis au point reçoit un retour d’information.

Les deux méthodes d’apprentissage automatique les plus répandues sont * l’apprentissage supervisé *, qui forme des algorithmes basés sur des données d’entrée et de sortie données en exemple et étiquetées par des humains, et * l’apprentissage non supervisé *, qui fournit à l’algorithme des données non étiquetées lui permettant de trouver structure dans ses données d’entrée. Explorons ces méthodes plus en détail.

Enseignement supervisé

En apprentissage supervisé, l’ordinateur est fourni avec des exemples d’entrées qui sont étiquetés avec les sorties souhaitées. Le but de cette méthode est que l’algorithme puisse «apprendre» en comparant sa sortie réelle avec les sorties «apprises» pour rechercher les erreurs et modifier le modèle en conséquence. L’apprentissage supervisé utilise donc des modèles pour prédire les valeurs d’étiquette sur des données supplémentaires non étiquetées.

Par exemple, avec l’apprentissage supervisé, un algorithme peut être alimenté en données avec des images de requins étiquetées «+ poisson » et des images d'océans étiquetées « eau ». En apprenant ces données, l’algorithme d’apprentissage supervisé devrait pouvoir identifier ultérieurement les images de requin non étiquetées sous la forme «poisson +» et les images océaniques non étiquetées sous le nom « eau +».

Un exemple courant d’apprentissage supervisé consiste à utiliser des données historiques pour prédire les événements futurs probables sur le plan statistique. Il peut utiliser les informations boursières historiques pour anticiper les fluctuations à venir ou être utilisé pour filtrer les spams. Dans l’apprentissage supervisé, les photos marquées de chiens peuvent être utilisées comme données d’entrée pour classer les photos non marquées de chiens.

Apprentissage non supervisé

Dans l’apprentissage non supervisé, les données ne sont pas étiquetées, de sorte que l’algorithme d’apprentissage est laissé pour rechercher les points communs entre ses données d’entrée. Les données non étiquetées étant plus abondantes que les données étiquetées, les méthodes d’apprentissage automatique facilitant l’apprentissage non supervisé sont particulièrement utiles.

L’objectif de l’apprentissage non supervisé peut être aussi simple que de découvrir des modèles cachés dans un jeu de données, mais il peut également avoir pour objectif l’apprentissage des fonctionnalités, ce qui permet à la machine de calcul de découvrir automatiquement les représentations nécessaires au classement des données brutes.

L’apprentissage non supervisé est couramment utilisé pour les données transactionnelles. Vous disposez peut-être d’un grand ensemble de données sur les clients et leurs achats, mais en tant qu’être humain, vous ne serez probablement pas en mesure de comprendre quels attributs similaires peuvent être tirés des profils de clients et de leurs types d’achats. Avec ces données intégrées dans un algorithme d’apprentissage non supervisé, il peut être déterminé que les femmes d’un certain groupe d’âge qui achètent des savons non parfumés sont susceptibles d’être enceintes. Une campagne de marketing liée aux produits destinés à la grossesse et au bébé peut donc être ciblée auprès de ce public. d’augmenter leur nombre d’achats.

Sans recevoir de réponse «correcte», les méthodes d’apprentissage non supervisées peuvent examiner des données complexes plus volumineuses et apparemment non liées afin de les organiser de manière potentiellement significative. L’apprentissage non supervisé est souvent utilisé pour la détection d’anomalies, y compris pour les achats frauduleux par carte de crédit, et pour les systèmes de recommandation qui recommandent les produits à acheter ensuite. Dans l’apprentissage non supervisé, les photos de chiens non étiquetées peuvent être utilisées comme données d’entrée pour que l’algorithme trouve les similarités et classe les photos de chien ensemble.

Approches

En tant que domaine, l’apprentissage automatique est étroitement lié aux statistiques informatiques. Il est donc utile de disposer de connaissances de base en statistiques pour comprendre et exploiter les algorithmes d’apprentissage automatique.

Pour ceux qui n’ont peut-être pas étudié les statistiques, il peut être utile de définir d’abord la corrélation et la régression car il s’agit de techniques couramment utilisées pour étudier la relation entre les variables quantitatives. * La corrélation * est une mesure d’association entre deux variables qui ne sont désignées ni dépendantes ni indépendantes. * La régression * au niveau de base est utilisée pour examiner la relation entre une variable dépendante et une variable indépendante. Comme les statistiques de régression peuvent être utilisées pour anticiper la variable dépendante lorsque la variable indépendante est connue, la régression active les capacités de prédiction.

Des approches d’apprentissage automatique sont en développement continu. Pour notre propos, nous allons passer en revue quelques-unes des approches populaires utilisées dans l’apprentissage automatique au moment de la rédaction.

k-voisin le plus proche

L’algorithme du k-voisin le plus proche est un modèle de reconnaissance de modèle qui peut être utilisé à la fois pour la classification et la régression. Souvent abrégé en k-NN, le * k * de k-voisin le plus proche est un entier positif, généralement petit. Dans la classification ou la régression, l’entrée consistera en les k exemples d’apprentissage les plus proches au sein d’un espace.

Nous allons nous concentrer sur la classification k-NN. Dans cette méthode, la sortie est l’appartenance à une classe. Ceci assignera un nouvel objet à la classe la plus commune parmi ses k plus proches voisins. Dans le cas où k = 1, l’objet est affecté à la classe du plus proche voisin.

Voyons un exemple de k-voisin le plus proche. Dans le diagramme ci-dessous, il y a des objets en diamant bleu et des objets en étoile orange. Celles-ci appartiennent à deux classes distinctes: la classe des diamants et la classe des étoiles.

image: https: //assets.digitalocean.com/articles/machine-learning/intro-to-ml/k-NN-1-graph.png [ensemble de données initial du k-voisin le plus proche]

Lorsqu’un nouvel objet est ajouté à l’espace - dans ce cas un cœur vert - nous voudrons que l’algorithme d’apprentissage automatique classifie le cœur dans une certaine classe.

image: https: //assets.digitalocean.com/articles/machine-learning/intro-to-ml/k-NN-2-graph.png [ensemble de données du k-voisin le plus proche avec un nouvel objet à classer]

Lorsque nous choisissons k = 3, l’algorithme trouvera les trois plus proches voisins du cœur vert afin de le classer dans la classe des diamants ou dans la classe des étoiles.

Dans notre diagramme, les trois plus proches voisins du cœur vert sont un diamant et deux étoiles. Par conséquent, l’algorithme classera le cœur avec la classe d’étoiles.

image: https: //assets.digitalocean.com/articles/machine-learning/intro-to-ml/k-NN-3-graph.png [Le jeu de k-voisins les plus proches avec la classification terminée]

Parmi les algorithmes d’apprentissage machine les plus élémentaires, le k-voisin le plus proche est considéré comme un type «d’apprentissage paresseux», car la généralisation au-delà des données d’apprentissage ne se produit pas avant qu’une requête ait été effectuée auprès du système.

Apprentissage arbre de décision

Pour une utilisation générale, les arbres de décision sont utilisés pour représenter visuellement les décisions et montrer ou informer la prise de décision. Lorsque vous travaillez avec l’apprentissage automatique et l’exploration de données, les arbres de décision sont utilisés comme modèle prédictif. Ces modèles associent les observations relatives aux données aux conclusions relatives à la valeur cible des données.

L’apprentissage de l’arbre de décision a pour objectif de créer un modèle permettant de prédire la valeur d’une cible en fonction de variables d’entrée.

Dans le modèle prédictif, les attributs des données déterminés par observation sont représentés par les branches, tandis que les conclusions sur la valeur cible des données sont représentées dans les feuilles.

Lorsque vous «apprenez» une arborescence, les données source sont divisées en sous-ensembles en fonction d’un test de valeur d’attribut, qui est répété de manière récursive sur chacun des sous-ensembles dérivés. Une fois que le sous-ensemble d’un nœud a la valeur équivalente à celle de la valeur cible, le processus de récurrence est terminé.

Voyons un exemple de diverses conditions qui peuvent déterminer si quelqu’un doit ou non aller pêcher. Cela inclut les conditions météorologiques ainsi que les conditions de pression barométrique.

image: https: //assets.digitalocean.com/articles/machine-learning/intro-to-ml/decision-tree-diagram.png [exemple d’arbre de décision de pêche]

Dans l’arbre de décision simplifié ci-dessus, un exemple est classé en le triant dans le noeud feuille approprié. Ceci retourne ensuite la classification associée à la feuille particulière, qui dans ce cas est un + oui + ou un + non +. L’arbre classe les conditions de la journée en fonction de son aptitude ou non à aller pêcher.

Un véritable ensemble de données d’arborescence de classification aurait beaucoup plus de fonctionnalités que ce qui est décrit ci-dessus, mais les relations devraient être simples à déterminer. Lorsque vous utilisez l’apprentissage par arbre de décision, plusieurs déterminations doivent être effectuées, notamment les fonctionnalités à choisir, les conditions à utiliser pour la scission et la compréhension du moment où l’arbre de décision atteint une fin claire.

L’apprentissage en profondeur

L’apprentissage en profondeur tente d’imiter la manière dont le cerveau humain peut transformer les stimuli lumineux et sonores en vision et en audition. Une architecture d’apprentissage en profondeur est inspirée des réseaux de neurones biologiques et consiste en plusieurs couches dans un réseau de neurones artificiel composé de matériel et de GPU.

L’apprentissage en profondeur utilise une cascade de couches d’unités de traitement non linéaires afin d’extraire ou de transformer des caractéristiques (ou représentations) des données. La sortie d’une couche sert d’entrée à la couche suivante. En apprentissage approfondi, les algorithmes peuvent être supervisés et utilisés pour classer les données, ou non supervisés et effectuer une analyse de modèle.

Parmi les algorithmes d’apprentissage automatique en cours d’utilisation et de développement, l’apprentissage en profondeur absorbe le plus de données et a été en mesure de battre l’être humain dans certaines tâches cognitives. En raison de ces attributs, l’apprentissage en profondeur est devenu l’approche avec un potentiel important dans l’espace de l’intelligence artificielle

La vision par ordinateur et la reconnaissance de la parole ont toutes deux réalisé d’importants progrès grâce aux approches d’apprentissage en profondeur. IBM Watson est un exemple bien connu de système qui exploite l’apprentissage en profondeur.

Langages de programmation

Lorsque vous choisissez une langue dans laquelle vous souhaitez vous spécialiser en apprentissage automatique, vous voudrez peut-être prendre en compte les compétences répertoriées dans les offres d’emploi actuelles, ainsi que les bibliothèques disponibles dans différentes langues pouvant être utilisées pour les processus d’apprentissage automatique.

A partir de data tirées des offres d’emploi sur Indeed.com en décembre 2016, on peut en déduire que Python est la plus sollicitée pour la programmation langue dans le domaine professionnel de l’apprentissage automatique. Python est suivi de Java, puis de R, puis de C ++.

La popularité de * Python * pourrait être due au développement accru de frameworks d’apprentissage en profondeur disponibles pour cette langue, notamment TensorFlow, PyTorch, et Keras. En tant que langage doté d’une syntaxe lisible et pouvant être utilisé comme langage de script, Python s’avère puissant et simple à la fois pour le traitement préalable des données et le traitement direct des données. La bibliothèque d’apprentissage automatique scikit-learn est construite sur plusieurs packages Python existants avec lesquels les développeurs Python sont peut-être déjà familiarisés, à savoir http://www.numpy.org/ [NumPy], SciPy et Matplotlib.

Pour commencer à utiliser Python, vous pouvez consulter notre série de didacticiels sur «https://www.digitalocean.com/community/tutorial_series/how-to-code-in-python-3[Comment coder en Python 3],» ou à lire spécifiquement sur «https://www.digitalocean.com/community/tutorials/how-to-build-a-mmachine-learning-classifier-in-python-with-scikit-learn[Comment construire un classifieur d’apprentissage automatique en Python avec scikit-learn] ”ou“ Comment effectuer un transfert de style neuronal avec Python 3 et PyTorch. ”

  • Java * est largement utilisé dans la programmation d’entreprise et est généralement utilisé par les développeurs d’applications bureautiques frontales qui travaillent également à l’apprentissage machine au niveau de l’entreprise. En général, ce n’est pas le premier choix pour les débutants en programmation qui souhaitent en savoir plus sur l’apprentissage automatique, mais est recommandé par ceux qui ont une formation en développement Java à appliquer à l’apprentissage automatique. En ce qui concerne les applications d’apprentissage automatique dans l’industrie, Java a tendance à être davantage utilisé que Python pour la sécurité du réseau, y compris dans les cas d’utilisation de la cyberattaque et de la détection de la fraude.

Parmi les bibliothèques de machine learning pour Java, on trouve Deeplearning4j, une bibliothèque de formation approfondie open source et distribuée écrite à la fois pour Java et Scala; MALLET ( MA chine L gagner pour L anguag * E * T oolkit) permet des applications d’apprentissage automatique sur le texte, y compris le traitement en langage naturel, la modélisation de sujets, la classification de documents et la mise en cluster; et Weka, une collection d’algorithmes d’apprentissage automatique à utiliser pour les tâches d’exploration de données.

  • R * est un langage de programmation open source utilisé principalement pour le calcul statistique. Il a gagné en popularité au cours des dernières années et est favorisé par de nombreux universitaires. R n’est généralement pas utilisé dans les environnements de production de l’industrie, mais a augmenté dans les applications industrielles en raison d’un intérêt accru pour la science des données. Les packages populaires pour l’apprentissage automatique en R incluent caret (abréviation de C lassification A et compression T raining) pour créer des modèles prédictifs, randomForest pour la classification et la régression, et https://cran.r-project.org/web/ packages / e1071 / index.html [e1071] qui inclut des fonctions pour les statistiques et la théorie des probabilités.

  • C * est le langage de choix pour l'apprentissage automatique et l'intelligence artificielle dans les applications de jeu ou de robot (y compris la locomotion de robot). Les développeurs de matériel informatique embarqué et les ingénieurs électroniques sont plus susceptibles de préférer le C ou le C dans les applications d’apprentissage automatique en raison de leurs compétences et de leur niveau de contrôle dans le langage. Certaines bibliothèques d’apprentissage machine que vous pouvez utiliser avec C ++ incluent les mlpack, Dlib, une version évolutive, offrant des algorithmes très variés d’apprentissage automatique. Shark, modulaire et à source ouverte.

Biais Humains

Bien que les données et l’analyse informatique puissent nous faire penser que nous recevons des informations objectives, ce n’est pas le cas; être basé sur des données ne signifie pas que les résultats de l’apprentissage automatique sont neutres. Le biais humain joue un rôle dans la manière dont les données sont collectées, organisées et, en dernière analyse, dans les algorithmes qui déterminent la manière dont l’apprentissage automatique interagira avec ces données.

Si, par exemple, des personnes fournissent des images de «poisson» en tant que données pour former un algorithme et choisissent en très grande majorité des images de poisson rouge, un ordinateur peut ne pas classer un requin en tant que poisson. Cela créerait un biais contre les requins en tant que poissons, et les requins ne seraient pas comptés en tant que poissons.

Lors de l’utilisation de photographies historiques de scientifiques comme données de formation, un ordinateur peut ne pas classer correctement les scientifiques qui sont aussi des personnes de couleur ou des femmes. En fait, des recherches récentes examinées par des pairs ont montré que l’IA et les programmes d’apprentissage automatique manifestaient des préjugés de type humain comprenant des préjugés de race et de genre. Voir, par exemple, “http://science.sciencemag.org/content/356/6334/183[Semantics dérivé automatiquement des corpus de langage contenant des biais de type humain]” et “https://homes.cs.washington.edu/ % 7Emy89 / publications / bias.pdf [Les hommes aiment aussi les achats: réduire l’amplification des biais entre les sexes à l’aide de contraintes de niveau corpus] ”[PDF].

L’apprentissage automatique étant de plus en plus utilisé par les entreprises, des préjugés non appréhendés peuvent perpétuer des problèmes systémiques susceptibles d’empêcher les personnes d’obtenir un prêt, de se voir présenter des offres d’emploi bien rémunérées ou de bénéficier d’options de livraison le jour même.

Étant donné que les préjugés humains peuvent avoir un impact négatif sur les autres, il est extrêmement important d’en prendre conscience et de s’efforcer de les éliminer le plus possible. Pour y parvenir, vous pouvez vous assurer que différentes personnes travaillent sur un projet et que diverses personnes la testent et l’examinent. D’autres ont appelé à des https://www.theguardian.com/technology/2017/jan/27/ai-artificial-intelligence-intelligence-watchdog-needed-to-prevent-discriminatory-automated- decisions de la réglementation pour contrôler et auditer des algorithmes ], https://www.theguardian.com/technology/2017/apr/13/ai-programs-exhibit-racist-and-sexist-biases-research-reveals de construire des systèmes alternatifs capables de détecter les biais], et https: //www.fidelitylabs.com/2017/06/14/combating-machine-learning-bias/[ethics reviews] dans le cadre de la planification de projets liés à la science des données. Sensibiliser sur les préjugés, prendre conscience de nos propres préjugés inconscients et structurer l’équité dans nos projets d’apprentissage automatique et nos pipelines peut contribuer à lutter contre les préjugés dans ce domaine.

image: https: //assets.digitalocean.com/articles/machine-learning/intro-to-ml/machine-learning-book.png [DigitalOcean Machine Learning]

Conclusion

Ce tutoriel a passé en revue certains cas d’utilisation de l’apprentissage automatique, des méthodes courantes et des approches populaires utilisées sur le terrain, des langages de programmation appropriés pour l’apprentissage automatique, et abordé certaines choses à garder à l’esprit en termes de réplication de biais inconscients dans des algorithmes.

L’apprentissage automatique étant un domaine en constante innovation, il est important de garder à l’esprit que les algorithmes, méthodes et approches continueront à évoluer.

En plus de lire nos tutoriels sur «https://www.digitalocean.com/community/tutorials/how-to-build-a-mmachine-learning-classifier-in-python-with-scikit-learn[Comment construire un Classificateur d’apprentissage automatique en Python avec scikit-learn] ”ou“ How To Perform Transfert de style neuronal avec Python 3 et PyTorch, "pour en savoir plus sur l’utilisation des données dans l’industrie des technologies, consultez nos tutoriels DataData. .