Deep Learning vs Machine Learning: comprendre les différences

L'apprentissage automatique et l'apprentissage profond sont deux formes d'intelligence artificielle. Vous pouvez également dire, à juste titre, que le deep learning est un type spécifique d'apprentissage automatique. L'apprentissage automatique et l'apprentissage en profondeur commencent par des données de formation et de test et un modèle et passent par un processus d'optimisation pour trouver les pondérations qui permettent au modèle de mieux correspondre aux données. Les deux peuvent gérer des problèmes numériques (régression) et non numériques (classification), bien qu'il existe plusieurs domaines d'application, tels que la reconnaissance d'objets et la traduction de langage, où les modèles d'apprentissage en profondeur ont tendance à produire de meilleurs ajustements que les modèles d'apprentissage automatique.

L'apprentissage automatique expliqué

Les algorithmes d'apprentissage automatique sont souvent divisés en supervisé (les données d'apprentissage sont étiquetées avec les réponses) et non supervisé (les étiquettes qui peuvent exister ne sont pas montrées à l'algorithme d'apprentissage). Les problèmes d'apprentissage automatique supervisé sont ensuite divisés en classification (prédiction de réponses non numériques, telles que la probabilité d'un paiement hypothécaire manqué) et régression (prédiction de réponses numériques, telles que le nombre de widgets qui se vendront le mois prochain dans votre magasin de Manhattan).

L'apprentissage non supervisé est ensuite divisé en regroupement (recherche de groupes d'objets similaires, tels que des chaussures de course, des chaussures de marche et des chaussures habillées), association (recherche de séquences d'objets communes, telles que le café et la crème) et réduction de la dimensionnalité (projection, sélection de caractéristiques) et extraction de caractéristiques).

Algorithmes de classification

Un problème de classification est un problème d'apprentissage supervisé qui demande un choix entre deux ou plusieurs classes, fournissant généralement des probabilités pour chaque classe. En laissant de côté les réseaux de neurones et l'apprentissage en profondeur, qui nécessitent un niveau beaucoup plus élevé de ressources de calcul, les algorithmes les plus courants sont Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbours et Support Vector Machine (SVM). Vous pouvez également utiliser des méthodes d'ensemble (combinaisons de modèles), telles que Random Forest, d'autres méthodes d'ensachage et des méthodes d'amplification telles qu'AdaBoost et XGBoost.

Algorithmes de régression

Un problème de régression est un problème d'apprentissage supervisé qui demande au modèle de prédire un nombre. L'algorithme le plus simple et le plus rapide est la régression linéaire (moindres carrés), mais il ne faut pas s'arrêter là, car il donne souvent un résultat médiocre. D'autres algorithmes de régression d'apprentissage automatique courants (à court de réseaux de neurones) incluent Naive Bayes, Decision Tree, K-Nearest Neighbours, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost et XGBoost. Vous remarquerez qu'il existe un certain chevauchement entre les algorithmes d'apprentissage automatique pour la régression et la classification.

Algorithmes de clustering

Un problème de clustering est un problème d'apprentissage non supervisé qui demande au modèle de trouver des groupes de points de données similaires. L'algorithme le plus populaire est le clustering K-Means; d'autres incluent le clustering par décalage moyen, le DBSCAN (clustering spatial basé sur la densité des applications avec bruit), le GMM (modèles de mélange gaussien) et le HAC (clustering agglomératif hiérarchique).

Algorithmes de réduction de dimensionnalité

La réduction de dimensionnalité est un problème d'apprentissage non supervisé qui demande au modèle de supprimer ou de combiner des variables qui ont peu ou pas d'effet sur le résultat. Ceci est souvent utilisé en combinaison avec une classification ou une régression. Les algorithmes de réduction de dimensionnalité incluent la suppression des variables avec de nombreuses valeurs manquantes, la suppression des variables avec une faible variance, l'arbre de décision, la forêt aléatoire, la suppression ou la combinaison de variables avec une corrélation élevée, l'élimination des caractéristiques en arrière, la sélection des caractéristiques en avant, l'analyse factorielle et l'ACP (analyse en composantes principales).

Méthodes d'optimisation

La formation et l'évaluation transforment les algorithmes d'apprentissage supervisé en modèles en optimisant leurs pondérations de paramètres pour trouver l'ensemble de valeurs qui correspond le mieux à la vérité terrain de vos données. Les algorithmes reposent souvent sur des variantes de descente la plus raide pour leurs optimiseurs, par exemple la descente de gradient stochastique, qui est essentiellement la descente la plus raide effectuée plusieurs fois à partir de points de départ aléatoires.

Les améliorations courantes sur la descente de gradient stochastique ajoutent des facteurs qui corrigent la direction du gradient en fonction de l'élan, ou ajustent le taux d'apprentissage en fonction de la progression d'un passage à travers les données (appelé une époque ou un lot) au suivant.

Nettoyage des données pour l'apprentissage automatique

Il n'existe pas de données propres à l'état sauvage. Pour être utiles pour l'apprentissage automatique, les données doivent être filtrées de manière agressive. Par exemple, vous voudrez:

  1. Examinez les données et excluez toutes les colonnes contenant beaucoup de données manquantes.
  2. Examinez à nouveau les données et choisissez les colonnes que vous souhaitez utiliser ( sélection de fonctionnalités ) pour votre prédiction. C'est quelque chose que vous voudrez peut-être faire varier lorsque vous itérez.
  3. Excluez toutes les lignes qui contiennent encore des données manquantes dans les colonnes restantes.
  4. Corrigez les fautes de frappe évidentes et fusionnez les réponses équivalentes. Par exemple, les États-Unis, les États-Unis, les États-Unis et l'Amérique doivent être fusionnés en une seule catégorie.
  5. Excluez les lignes contenant des données hors limites. Par exemple, si vous analysez les trajets en taxi dans la ville de New York, vous souhaiterez filtrer les lignes avec des latitudes et des longitudes de ramassage ou de dépôt qui se trouvent en dehors de la zone de délimitation de la zone métropolitaine.

Vous pouvez faire beaucoup plus, mais cela dépendra des données collectées. Cela peut être fastidieux, mais si vous configurez une étape de nettoyage des données dans votre pipeline d'apprentissage automatique, vous pouvez la modifier et la répéter à volonté.

Encodage et normalisation des données pour l'apprentissage automatique

Pour utiliser des données catégorielles pour la classification des machines, vous devez encoder les étiquettes de texte dans un autre formulaire. Il existe deux encodages courants.

L'un est le codage d'étiquette , ce qui signifie que chaque valeur d'étiquette de texte est remplacée par un nombre. L'autre est un codage à chaud , ce qui signifie que chaque valeur d'étiquette de texte est transformée en une colonne avec une valeur binaire (1 ou 0). La plupart des frameworks d'apprentissage automatique ont des fonctions qui effectuent la conversion pour vous. En général, le codage à chaud est préféré, car le codage d'étiquettes peut parfois confondre l'algorithme d'apprentissage automatique en pensant que la colonne codée est supposée être une liste ordonnée.

Pour utiliser des données numériques pour la régression de la machine, vous devez généralement normaliser les données. Sinon, les nombres avec des gammes plus grandes pourraient avoir tendance à dominer la distance euclidienne entre les vecteurs de caractéristiques , leurs effets pourraient être amplifiés aux dépens des autres champs, et l'optimisation de la descente la plus raide pourrait avoir des difficultés à converger. Il existe plusieurs façons de normaliser et de standardiser les données pour l'apprentissage automatique, notamment la normalisation min-max, la normalisation moyenne, la normalisation et la mise à l'échelle à la longueur unitaire. Ce processus est souvent appelé mise à l'échelle des fonctionnalités .

Ingénierie de fonctionnalités pour l'apprentissage automatique

Une caractéristique est une propriété individuelle mesurable ou une caractéristique d'un phénomène observé. Le concept de «caractéristique» est lié à celui de variable explicative, qui est utilisée dans des techniques statistiques telles que la régression linéaire. Les vecteurs d'entités combinent toutes les entités d'une seule ligne en un vecteur numérique.

Une partie de l'art de choisir des fonctionnalités consiste à choisir un ensemble minimum de variables indépendantes qui expliquent le problème. Si deux variables sont fortement corrélées, soit elles doivent être combinées en une seule entité, soit l'une doit être supprimée. Parfois, les gens effectuent une analyse en composantes principales pour convertir des variables corrélées en un ensemble de variables linéairement non corrélées.

Certaines des transformations que les gens utilisent pour construire de nouvelles entités ou réduire la dimensionnalité des vecteurs d'entités sont simples. Par exemple, soustrayez Year of Birthde Year of Deathet vous construisez Age at Death, qui est une variable indépendante principale pour l'analyse de la durée de vie et de la mortalité. Dans d'autres cas, la construction de caractéristiques peut ne pas être si évidente.

Fractionnement des données pour l'apprentissage automatique

La pratique habituelle pour l'apprentissage automatique supervisé consiste à diviser l'ensemble de données en sous-ensembles pour la formation , la validation et le test . Une façon de travailler consiste à affecter 80% des données à l'ensemble de données d'entraînement et 10% chacune aux ensembles de données de validation et de test. (La répartition exacte est une question de préférence.) La majeure partie de la formation est effectuée par rapport à l'ensemble de données d'apprentissage, et la prédiction est effectuée par rapport à l'ensemble de données de validation à la fin de chaque époque.

Les erreurs dans l'ensemble de données de validation peuvent être utilisées pour identifier les critères d'arrêt ou pour piloter le réglage des hyperparamètres. Plus important encore, les erreurs dans l'ensemble de données de validation peuvent vous aider à déterminer si le modèle a surajusté les données d'entraînement.

La prédiction par rapport à l'ensemble de données de test est généralement effectuée sur le modèle final. Si l'ensemble de données de test n'a jamais été utilisé pour l'entraînement, il est parfois appelé l'ensemble de données d'exclusion.

Il existe plusieurs autres schémas de fractionnement des données. Une technique courante, la validation croisée , consiste à fractionner à plusieurs reprises l'ensemble de données complet en un ensemble de données d'apprentissage et un ensemble de données de validation. À la fin de chaque époque, les données sont mélangées et fractionnées à nouveau.

Bibliothèques d'apprentissage automatique

En Python, Spark MLlib et Scikit-learn sont d'excellents choix pour les bibliothèques d'apprentissage automatique. Dans R, certaines options de package d'apprentissage automatique sont CARAT, randomForest, e1071 et KernLab. En Java, les bons choix incluent Java-ML, RapidMiner et Weka.

Le Deep Learning expliqué

L'apprentissage en profondeur est une forme d'apprentissage automatique dans laquelle le modèle en cours d'entraînement comporte plusieurs couches cachées entre l'entrée et la sortie. Dans la plupart des discussions, l'apprentissage en profondeur signifie l'utilisation de réseaux de neurones profonds . Il existe cependant quelques algorithmes qui implémentent l'apprentissage en profondeur en utilisant d'autres types de couches cachées en plus des réseaux de neurones.

Les idées de réseaux de neurones «artificiels» remontent aux années 1940. Le concept essentiel est qu'un réseau de neurones artificiels construit à partir de commutateurs de seuil interconnectés peut apprendre à reconnaître des modèles de la même manière qu'un cerveau et un système nerveux animal (y compris la rétine).

Backprop

L'apprentissage se produit essentiellement en renforçant la connexion entre deux neurones lorsque les deux sont actifs en même temps pendant l'entraînement. Dans les logiciels de réseau de neurones modernes, il s'agit le plus souvent d'augmenter les valeurs de poids pour les connexions entre les neurones en utilisant une règle appelée propagation de l'erreur , backprop ou BP.

Neurones dans les réseaux de neurones artificiels

Comment les neurones sont-ils modélisés? Chacun a une fonction de propagation qui transforme les sorties des neurones connectés, souvent avec une somme pondérée. La sortie de la fonction de propagation passe à une fonction d'activation, qui se déclenche lorsque son entrée dépasse une valeur seuil.

Fonctions d'activation dans les réseaux de neurones

Dans les années 40 et 50, les neurones artificiels utilisaient une fonction d'activation par étapes et étaient appelés perceptrons . Les réseaux de neurones modernes peuvent dire qu'ils utilisent des perceptrons, mais ont en fait des fonctions d'activation lisses, telles que la fonction logistique ou sigmoïde, la tangente hyperbolique ou l'unité linéaire rectifiée (ReLU). ReLU est généralement le meilleur choix pour une convergence rapide, bien qu'il pose un problème de «mort» des neurones pendant l'entraînement si le taux d'apprentissage est trop élevé.

[Aussi sur: 6 façons de faire échouer l'apprentissage automatique]

La sortie de la fonction d'activation peut passer à une fonction de sortie pour une mise en forme supplémentaire. Souvent, cependant, la fonction de sortie est la fonction d'identité, ce qui signifie que la sortie de la fonction d'activation est transmise aux neurones connectés en aval.

Topologies de réseau neuronal

Maintenant que nous connaissons les neurones, nous devons en apprendre davantage sur les topologies de réseau neuronal courantes. Dans un réseau à réaction, les neurones sont organisés en couches distinctes: une couche d'entrée, n couches de traitement cachées et une couche de sortie. Les sorties de chaque couche vont uniquement à la couche suivante.

Dans un réseau à action directe avec des connexions de raccourci, certaines connexions peuvent sauter par-dessus une ou plusieurs couches intermédiaires. Dans les réseaux de neurones récurrents, les neurones peuvent s'influencer eux-mêmes, directement ou indirectement via la couche suivante.

Formation des réseaux de neurones

L'apprentissage supervisé d'un réseau de neurones se fait comme tout autre apprentissage automatique: vous présentez le réseau avec des groupes de données d'apprentissage, comparez la sortie du réseau avec la sortie souhaitée, générez un vecteur d'erreur et appliquez des corrections au réseau en fonction du vecteur d'erreur. . Les lots de données d'entraînement qui sont exécutés ensemble avant d'appliquer des corrections sont appelés époques.

Pour ceux qui s'intéressent aux détails, la rétro-propagation utilise le gradient de la fonction d'erreur (ou de coût) par rapport aux poids et biais du modèle pour découvrir la bonne direction afin de minimiser l'erreur. Deux choses contrôlent l'application des corrections: l'algorithme d'optimisation et la variable de taux d'apprentissage. La variable de taux d'apprentissage doit généralement être petite pour garantir la convergence et éviter de provoquer la mort des neurones ReLU.

Optimiseurs pour les réseaux de neurones

Les optimiseurs pour les réseaux de neurones utilisent généralement une forme d'algorithme de descente de gradient pour piloter la propagation en retour, souvent avec un mécanisme pour éviter de rester coincé dans les minima locaux, tels que l'optimisation de mini-lots sélectionnés au hasard (Stochastic Gradient Descent) et l'application de corrections d' élan au pente. Certains algorithmes d'optimisation adaptent également les taux d'apprentissage des paramètres du modèle en examinant l'historique des gradients (AdaGrad, RMSProp et Adam).