L'apprentissage automatique (AM) est en train de former son propre nom, avec une reconnaissance croissante montrant que la FA peut jouer un rôle important dans un large éventail d'applications cruciales telles que l'exploration de données, le traitement du langage naturel, l'image et les systèmes experts. AM propose des solutions possibles dans tous ces domaines et plus encore. Il est également créé pour être un pilier de notre future civilisation.
Le supplément de designers avec talent AM pas encore en demande. Une grande partie de ceci est parce que AM est juste compliqué. Ce didacticiel présente les bases de la théorie de l'apprentissage automatique, en expliquant les sujets et concepts communs, ce qui facilite le suivi de la logique et la compréhension du sujet.
Alors, qu'est-ce que le 'Machine Learning'? AM est en effet beaucoup Choses. Le domaine est très vaste et en expansion rapide et est continuellement partitionné et sous-partitionné sans relâche, en sous-spécialités et types d'apprentissage automatique .
Cependant, il existe un dénominateur commun de base et le thème dominant est mieux résumé par cette déclaration fréquemment citée, faite par Arthur Samuel en 1959: '[L'apprentissage automatique est le] domaine d'étude qui donne aux ordinateurs la capacité d'apprendre sans être explicitement programmés.'
Et plus récemment, en 1997, Tom Mitchell a donné une définition 'bien pensée' qui s'est avérée la plus utile pour les types d'ingénierie: 'On dit qu'un programme informatique apprend de l'expérience E, en ce qui concerne une tâche T et une certaine mesure de la performance P, il s'améliore avec l'expérience E.'
'On dit qu'un programme informatique apprend de l'expérience E, en ce qui concerne une tâche T et une certaine mesure de la performance P, s'améliore avec l'expérience E, si sa performance en T, mesurée avec P, s'améliore avec l'expérience E.' - Tom Mitchell, Université Carnegie MellonDonc, si vous voulez que votre programme prédise, par exemple, les modèles de trafic à une intersection très fréquentée (test T), vous pouvez le gâcher en utilisant un algorithme d'apprentissage automatique, avec des données sur les anciens modèles de trafic (expérience E) et, si oui, a «appris» avec succès, il permettra de mieux prédire les modèles de trafic futurs (mesure de performance P).
La nature extrêmement complexe de nombreux problèmes de la vie réelle signifie généralement qu'il est impossible et même impossible d'inventer des algorithmes spécialisés qui les résoudraient parfaitement à chaque fois. Voici quelques exemples de problèmes d'apprentissage automatique: 'C'est un cancer?' , 'Quelle est la valeur marchande de cette maison?' , 'Lesquelles de ces personnes sont de bons amis?' , 'Ce moteur de fusée va-t-il exploser au décollage?' , 'Est-ce que cette personne aimera ce film?' , 'Qui est-il / elle?' , 'Qu'as-tu dit?' , Y 'Comment pilotez-vous ça?' . Tous ces problèmes sont un excellent point de mire pour un projet de FA, et en fait, la FA a été appliquée à chacun avec un grand succès.
La FA résout des problèmes qui ne peuvent être résolus uniquement par des moyens numériques.Parmi les différents types de tâches de FA, une distinction cruciale est établie entre l'apprentissage supervisé et non supervisé:
Nous allons d'abord nous concentrer sur l'apprentissage supervisé, mais la fin de l'article comprend une brève discussion sur l'apprentissage non supervisé, avec quelques liens pour ceux qui souhaitent continuer sur le sujet.
Pour la plupart des applications d'apprentissage supervisé, vous souhaitez obtenir une fonction de prédiction bien rodée h(x)
(parfois appelée «hypothèse»). 'L'apprentissage' consiste à utiliser des algorithmes mathématiques pour optimiser cette fonction de sorte qu'en lui donnant des données x
sur un certain domaine (par exemple, les pieds carrés d'une maison), il fera une prédiction précise d'une valeur intéressante h(x)
(disons, prix du marché pour ladite maison).
En pratique, x
représente presque toujours plusieurs points de données. Ainsi, par exemple, un prévisionniste du prix d'une maison peut prendre non seulement la superficie en pieds carrés (x1
), mais aussi le nombre de chambres (x2
), le nombre de salles de bains (x3
), le nombre d'étages (x4)
, années de construction (x5
), code postal (x6
), etc. La détermination des entrées à utiliser est une partie importante de la conception de la FA. Eh bien, d'après l'explication , il est plus facile de supposer qu'une seule valeur d'entrée est utilisée.
Disons que notre simple prévisionniste a cette forme:
où Oui
ils sont constants. Notre objectif est de trouver les valeurs parfaites de
Oui
faire fonctionner notre prévisionniste au mieux.
Optimiser le prévisionniste h(x)
ne plus utiliser exemple de formation . Pour chaque exemple d'apprentissage, nous avons une valeur d'entrée x_train
, par laquelle une sortie correspondante est précédemment connue, y
. Pour chaque exemple, nous trouvons la différence entre la valeur correcte connue y
et notre valeur prédite h(x_train)
. Avec suffisamment d'exemples d'entraînement, ces différences nous donnent un moyen utile de mesurer le 'faux' de h(x)
. Ensuite, nous pouvons modifier un peu h(x)
en modifiant les valeurs de Oui
pour le rendre «moins faux». Ce processus est répété encore et encore jusqu'à ce que le système corresponde aux meilleures valeurs pour
Oui
. De cette façon, le prévisionniste est formé et prêt à faire des prédictions réelles.
Dans cet article, nous gardons les problèmes simples à des fins d'illustration, mais la raison pour laquelle AM existe est que, dans la vraie vie, les problèmes sont beaucoup plus complexes. Sur cet écran plat, nous pouvons dessiner un maximum d'un ensemble de données tridimensionnelles, mais les problèmes de MA traitent généralement de données avec des millions de dimensions et des fonctions de prédiction très complexes. La FA résout des problèmes qui ne peuvent être résolus uniquement par des moyens numériques.
[:] en python
Dans cet esprit, regardons un exemple simple. Disons que nous avons les données de formation suivantes, où les employés de l'entreprise ont évalué leur satisfaction sur une échelle de 1 à 100:
Tout d'abord, vous pouvez voir que les données sont quelque peu bruyantes. En effet, même si nous pouvons voir qu'il existe un modèle (la satisfaction des employés a tendance à augmenter à mesure que la rémunération augmente), tout ne s'inscrit pas dans une ligne droite. Ce sera toujours le cas avec des données réelles (et nous voulons absolument former notre machine avec des données réelles!). Alors, comment former une machine pour prédire parfaitement le niveau de satisfaction d'un employé? La vérité est que nous ne pouvons pas. Le but de MA n'est pas de deviner «parfaitement», car MA traite de domaines où il n'y a pas une telle chose. Le but est de faire des prédictions suffisamment bonnes pour être utiles.
On peut ici rappeler la fameuse déclaration du mathématicien britannique et professeur de statistique George E. P. Box qui dit 'tous les modèles sont faux mais certains sont utiles.'
Le but de MA n'est pas de deviner «parfaitement», car MA traite des domaines où il n'y a pas une telle chose. Le but est de faire des prédictions suffisamment bonnes pour être utiles.L'AM s'appuie fortement sur les statistiques. Par exemple, lorsque nous formons notre machine à apprendre, nous devons lui donner un échantillon aléatoire statistiquement significatif en tant que données d'apprentissage. Si l'ensemble d'apprentissage n'est pas aléatoire, il est possible que la machine apprenne des modèles qui ne sont pas réellement dans l'échantillon. Et si l'ensemble d'entraînement est très petit (lisez la loi des grands nombres ), nous ne saurons pas grand-chose et pouvons obtenir des résultats peu concluants. Par exemple, si nous essayions de prédire les modèles de satisfaction de toute une entreprise en collectant des données uniquement auprès des managers, nous aurions probablement de nombreuses erreurs.
Sachant cela, nous allons maintenant donner à notre machine les données que vous nous avez données ci-dessus pour apprendre. Nous devons d'abord initialiser notre prédicteur h(x)
avec des justes valeurs de et
. Maintenant, notre prédicteur ressemblera à ceci lorsqu'il sera dans l'ensemble d'entraînement:
Si nous demandions à ce prédicteur la satisfaction d'un employé gagnant 60 000 $, il afficherait un indice de 27:
Évidemment, vous pouvez voir que c'est une très mauvaise prédiction et cette machine ne sait pas encore grand-chose.
Maintenant, donnons ce prédicteur Tout le monde les salaires de notre ensemble de formation, puis nous comparerons les différences entre les résultats de satisfaction prédits et les taux de satisfaction réels des employés correspondants. Si nous faisons un peu de magie mathématique (que j'expliquerai ensuite), nous pouvons calculer, avec une grande certitude, les valeurs de 13,12 de et 0,61 pour
cela nous donnerait une meilleure prédiction.
Si nous répétons ce processus, disons environ 1500 fois, notre prédicteur finira par ressembler à ceci:
requêtes média pour un design réactif
À ce stade, si nous répétons le processus, nous constaterons que Oui
il n'y a aucun changement d'un montant estimable et nous voyons donc que le système a convergé. Si nous ne nous trompons pas, cela signifie que nous avons trouvé le prédicteur le plus optimal. Maintenant, si nous demandons à nouveau à la machine le taux de satisfaction de l'employé qui gagne 60k $, elle fera une prédiction d'un taux de plus ou moins 60.
Maintenant nous allons quelque part.
L'exemple ci-dessus est techniquement un problème simple de régression linéaire univariée , qui peut être résolu en dérivant une équation simple et en sautant ainsi tout le processus de 'réglage'. Pensez encore un instant à un prédicteur qui ressemblait à ceci:
Cette fonction prend des données d'entrée à quatre dimensions et a une variété de termes polynomiaux. Dériver une équation normale pour cette fonction est un grand défi. De nombreux problèmes d'apprentissage automatique modernes prennent en compte des milliers, voire des millions de dimensions de données pour créer des prédictions à l'aide de centaines de coefficients. Prédire comment le génome d'un organisme sera exprimé ou à quoi ressemblera le climat dans 50 ans sont quelques exemples de ces problèmes complexes.
De nombreux problèmes de FA modernes prennent en compte des milliers, voire des millions de dimensions de données pour créer des prédictions en utilisant des centaines de coefficients.Heureusement, l'approche itérative adoptée par les systèmes de FA est beaucoup plus résiliente face à de telles complexités. Au lieu d'utiliser la force brute, un système d'apprentissage automatique «ressent tout» jusqu'à ce qu'il trouve la réponse. Pour les gros problèmes, cela fonctionne beaucoup mieux. Bien que cela ne signifie pas que la FA peut résoudre n'importe quel problème complexe arbitraire (ce n'est pas le cas), cela signifie que c'est un outil très efficace et flexible.
Examinons de plus près le fonctionnement de ce processus itératif. Dans l'exemple ci-dessus, comment pouvons-nous nous assurer que Oui
S'améliorent-ils et ne s'aggravent-ils pas? La réponse réside dans notre «mesure de l'erreur», que nous avons déjà mentionnée, accompagnée d'un petit calcul.
La mesure d'erreur est définie comme fonction de coût (c'est-à-dire, fonction de perte ), . L'entrée
représente tous les coefficients que nous utilisons dans le prédicteur. Dans ce cas,
est en fait la paire
Oui
.
Cela nous donne une mesure mathématique de l'erreur de notre prédicteur lors de l'utilisation des valeurs données de
Oui
.
L'option de fonction de coût est un autre élément important d'un programme AM. Dans différents contextes, «se tromper» peut signifier différentes choses. Dans notre exemple de satisfaction des employés, la norme établie est la fonction des moindres carrés :
Avec les moindres carrés, la pénalité pour une mauvaise estimation augmente de façon quadratique entre la supposition et la bonne réponse, agissant ainsi comme une mesure d'erreur très «stricte». La fonction de coût stocke une pénalité moyenne pour tous les exemples de formation.
Notre objectif est de trouver Oui
pour notre prédicteur
h(x)
et que notre fonction de coût être aussi petit que possible. Pour y parvenir, nous nous tournons vers la puissance du calcul.
Considérez le graphique suivant d'une fonction de coût pour un problème AM particulier:
Ici, nous pouvons voir le coût associé aux valeurs de Oui
. On voit que le graphique a une forme légèrement en bol. Le fond du bol représente le coût le plus bas que notre prédicteur puisse calculer en fonction des données d'entraînement fournies. Le but est de 'descendre la colline' et de trouver
Oui
correspondant à ce point.
C'est là que le calcul entre en jeu dans ce didacticiel d'apprentissage automatique. Pour simplifier l'explication, je ne vais pas écrire les équations mais en gros ce que nous faisons est de prendre le gradient de , qui est la paire de dérivés de
(un sur
et un sur
). Le gradient sera différent pour chaque valeur différente de
Oui
, et nous dit ce qu'est 'la pente de la colline' et en particulier, 'où elle est en bas', pour ce particulier
s. Par exemple, lorsque nous saisissons nos valeurs actuelles de
sur le dégradé, pouvez-vous nous dire d'ajouter un peu de
et en soustrayant un peu de
nous mènera dans le sens du plancher de la fonction de coût. Nous ajoutons donc un peu à
, et nous soustrayons un peu de
, et voilà! Nous avons terminé une partie de notre algorithme d'apprentissage. Notre prédicteur mis à jour, h (x) =
+
x, nous donnera de meilleures prédictions qu'auparavant. Notre machine est un peu plus intelligente maintenant.
Ce processus d'alternance entre le calcul du gradient actuel et la mise à jour du s des résultats est appelée descente de gradient ou Descente graduelle .
Cela englobe la théorie sous-jacente de base que représentent la plupart des systèmes d'apprentissage automatique supervisés. Mais les bases peuvent être utilisées de différentes manières selon le problème.
Parmi les AM supervisées, il existe deux sous-catégories importantes:
Et il s'avère que la théorie sous-jacente est plus ou moins la même. Les plus grandes différences sont la conception du prédicteur h(x)
et la conception de la fonction de coût .
Nos exemples jusqu'à présent se sont concentrés sur les problèmes de régression, alors examinons maintenant un exemple de classification.
Voici les résultats d'une étude d'un test de qualité des cookies, dans lequel les exemples de formation ont été étiquetés comme 'bon cookie' (y = 1
) en bleu ou 'mauvais cookie' (y = 0
) en rouge.
En classification, un prédicteur de régression n'est pas très utile. Habituellement, ce que nous voulons, c'est un prédicteur qui fait une hypothèse entre 0 et 1. Dans une évaluation de la qualité d'un cookie, une prédiction de 1 représenterait une hypothèse très confiante que le cookie est excellent et délicieusement savoureux. Une prédiction de 0 représente une grande confiance dans le fait que le cookie est une gêne pour l'industrie des cookies. Les valeurs de cette plage représentent moins de certitude. Nous pourrions donc concevoir notre système de telle sorte qu’une prédiction de 0,6 signifie «Hé, c’est un appel difficile, mais je vais dire oui, vous pouvez vendre ce cookie», alors qu’une valeur exactement dans le milieu, 0,5, pourrait représenter une incertitude totale. Ce n'est pas toujours la façon dont la confiance est attribuée dans un classificateur, mais c'est une conception assez courante et cela fonctionne pour expliquer notre illustration.
Il existe une fonction intéressante qui capture très bien ce comportement. Cela s'appelle le fonction sigmoïde , g(z)
, et cela ressemble à ceci:
z
est une représentation de nos données d'entrée et de nos coefficients, tels que:
Ainsi, notre prédicteur devient:
Vous pouvez voir que la fonction sigmoïde transforme notre sortie en une plage comprise entre 0 et 1.
La logique de conception de la fonction de coût est également différente dans la classification. Encore une fois, nous demandons, qu'est-ce que cela signifie qu'une hypothèse est fausse? Cette fois, une très bonne règle de base est que si la bonne estimation est 0 et que nous avons dit 1, alors nous nous sommes complètement trompés et vice versa. Et comme vous ne pouvez pas vous tromper plus que l'erreur, la sanction dans ce cas est énorme. Maintenant, si l'hypothèse correcte était 0 et que nous avons dit 0, notre fonction de coût ne devrait ajouter aucun coût à chaque fois que cela se produit. Si l'hypothèse est correcte mais que nous ne sommes pas tout à fait sûrs qu'elle l'est (par exemple y = 1
, mais h(x) = 0.8
), cela devrait avoir un petit coût et si notre hypothèse est incorrecte mais nous n'en sommes pas sûrs (par exemple y = 1
mais h(x) = 0.3
), cela devrait coûter cher, mais pas autant que si nous nous trompions complètement.
Ce comportement est capturé par la fonction de journalisation de telle sorte que:
Encore une fois, la fonction de coût nous donne un coût moyen sur tous nos exemples de formation.
Et donc ici nous décrivons comment le prédicteur h(x)
et la fonction de coût ils diffèrent par la régression et la classification, mais la descente du gradient fonctionne toujours de la même manière.
Un prédicteur de classification peut être visualisé en traçant la ligne de démarcation; par exemple, la barrière où la prédiction passe d'un «oui» (une prédiction supérieure à 0,5) à un «non» (une prédiction inférieure à 0,5). Avec un système bien conçu, nos données de cookies peuvent générer une bordure qui ressemble à ceci:
Voilà une machine qui sait une chose ou deux sur les cookies!
Aucune discussion sur AM ne serait complète sans au moins mentionner les les réseaux de neurones . Ceux-ci offrent non seulement un outil extrêmement puissant pour résoudre des problèmes difficiles, mais ils offrent également des indices sur le fonctionnement de notre cerveau, ainsi que des possibilités intrigantes pour créer un jour des machines intelligentes.
Les réseaux de neurones sont parfaits pour les problèmes d'apprentissage automatique où les entrées sont gigantesques. Le coût de calcul de la gestion de tels problèmes est très écrasant pour les types de systèmes dont nous avons discuté ci-dessus. Mais il s'avère que les réseaux de neurones peuvent être réglés efficacement en utilisant des techniques qui sont en principe étonnamment similaires à la descente de gradient.
Une discussion explicite sur les réseaux de neurones va au-delà des informations contenues dans cet article, mais je vous recommande de consulter notre post précédent qui traite du sujet.
$scope n'est pas défini
L'apprentissage non supervisé est généralement affecté à la recherche de relations entre les données. Il n'y a pas d'exemples de formation utilisés dans ce processus. Au lieu de cela, le système reçoit un ensemble de données et est chargé de rechercher des modèles et des corrélations en son sein. Un bon exemple est l'identification de groupes d'amis proches sur les données des réseaux sociaux.
Les algorithmes utilisés pour y parvenir sont très différents de ceux utilisés pour l'apprentissage supervisé et le sujet mérite son propre article. Cependant, pour quelque chose en attendant, consultez [regroupement d'algorithmes] (https://en.wikipedia.org/wiki/Cluster_analysis) tels qu'ils sont k-signifie , et vérifiez également réduction de la dimensionnalité des systèmes comme analyse des composants principaux . Notre [article sur le big data] (https://www.toptal.com/big-data#hiring-guide) aborde plus en détail un certain nombre de ces sujets.
Nous avons couvert la plupart de la théorie de base sous-jacente au domaine de l'apprentissage automatique, mais nous en avons bien sûr à peine effleuré la surface.
Gardez à l'esprit que l'application des théories de cette introduction à des exemples d'apprentissage automatique de la vie réelle nécessite une compréhension plus approfondie des sujets abordés ici. Il y a beaucoup de subtilités et d'obstacles dans la FA et de nombreuses façons de déraper grâce à ce qui semble être une machine à penser finement réglée. Presque toutes les parties de la théorie de base peuvent être modifiées ou utilisées de nombreuses manières, et les résultats sont souvent fascinants. Beaucoup deviennent de nouveaux domaines d'études qui correspondent mieux à un problème particulier.
Bien sûr, l'apprentissage automatique est un outil incroyablement puissant. Dans les années à venir, il promet d'aider à résoudre certains de nos problèmes les plus immédiats et d'ouvrir de nouveaux mondes d'opportunités. La demande d'ingénieurs AM Il continuera de croître et offrira des opportunités incroyables de faire partie de quelque chose de spécial. J'espère que vous envisagez de faire partie de l'action!
Cet article s'inspire largement de la matière enseignée par le professeur de Stanford, le Dr. Andrew Ng dans son cours gratuit d'apprentissage automatique ouvert . Le cours couvre tout ce dont nous discutons plus en détail dans cet article et donne de nombreux conseils pratiques pour le praticien de la FA. Je recommande vivement ce cours à ceux qui souhaitent explorer davantage ce domaine fascinant.