Les réseaux de neurones semblent plutôt sophistiqués. Neural fait penser au cerveau. Qui sont compliqués. Mais si vous êtes familier avec la régression linéaire, vous disposez des éléments de base nécessaires pour comprendre ce que fait un réseau neuronal.
Les réseaux de neurones (NN) sont généralement classés sous Apprentissage automatique supervisé (bien qu'il existe des types de NN qui peuvent faire des choses étonnantes sans données étiquetées ainsi que #AutoEncoders). Ils prennent un ensemble d’entrées (un ensemble de variables que vous souhaitez utiliser pour prédire quelque chose) et prédisent un résultat.
Ce qui... ressemble beaucoup à une régression linéaire.
En régression linéaire, nous prenons une ou plusieurs entrées et prédisons une sortie continue en utilisant la formule
Où Y est ce que vous voulez prédire, et le
sont vos entrées. Par exemple, nous pourrions vouloir prédire le montant d’argent que vous dépensez chaque année en jeux vidéo en fonction de votre âge, sexe, salaire et loyer.

Ensuite, nous laissons la régression apprendre les valeurs des coefficients (cela peut sembler une façon idiote de le dire, mais restez avec moi).
Nous ne le faisons pas dire la régression quels sont les coefficients, à la place nous lui disons comment apprendre eux. Dans le cas simple, on demande souvent à la régression d'utiliser la méthode des moindres carrés pour apprendre quels sont les coefficients optimaux.
Essentiellement, nous donnons à la régression une structure pour le modèle, et un méthode pour apprendre les valeurs du modèle. Ensuite, nous l’avons mis en route pour apprendre.
Lorsque nous construisons un réseau neuronal, nous choisirons également un structure et un méthode pour l'apprentissage, mais ils seront souvent un peu différents de la structure et de la méthode que nous utilisons pour la régression.
Un exemple de régression
STRUCTURE
Nœuds. Utilisation des réseaux de neurones nœuds comme conteneurs pour contenir des valeurs. Ces nœuds ont Connexions entre eux. Lorsqu'elles sont dessinées graphiquement, elles ressemblent un peu à un tas de sucettes posées côte à côte.
Les connexions représentent des calculs mathématiques appliqués aux valeurs d'un nœud lorsqu'ils utilisent la connexion pour passer au suivant.
Si nous voulions construire notre régression de jeu vidéo sous forme de réseau de neurones, nous le pourrions tout à fait ! Sa structure ressemblerait à ceci :
Couches. Notre jeu vidéo NN comporte deux couches : une saisir couche où nous donnons au NN nos variables prédictives âge, sexe, salaire et loyer, ainsi qu'un sortir couche où nous obtenons notre prédiction du NN.
Les connexions entre les deux couches contiennent des poids, on peut les appeler m , n,p et k , que nous appliquerons à chaque variable au fur et à mesure de son passage de la couche d'entrée à la couche de sortie. L'âge sera donc multiplié par m , sexe par n , et ainsi de suite, et tous ces produits seront additionnés dans le nœud de sortie.
Les réseaux de neurones ajoutent également un biais (b) à la valeur dans le nœud de sortie. Le biais est juste un scalaire (un nombre régulier comme 1, -7 ou 42).
Sur la base de la structure de réseau neuronal que nous avons construite, le nœud de sortie nous donnerait un résultat basé sur cette formule :
Ce qui est identique à la formule de régression que nous avons vue ci-dessus.
METHODE D'APPRENTISSAGE
Lorsque nous faisons une régression linéaire, nous devons trouver/calculer les valeurs de nos coefficients (b,m,n,p, et k ) après avoir spécifié la structure du modèle. Nous utilisons souvent la méthode des moindres carrés pour trouver nos coefficients.
En bref, les moindres carrés trouvent les coefficients qui minimisent la somme des erreurs quadratiques entre la prédiction du modèle et les données réelles.
En termes mathématiques, nous minimisons cette fonction :
Où
est la valeur réelle d'un point de données, et
est la prédiction du modèle pour ce point de données.
Perte. Si nous en avions envie, nous pourrions appeler cette fonction notre fonction de perte . Et c'est exactement ce qu'on appelle lorsque l'on travaille avec des réseaux de neurones. Les fonctions de perte nous fournissent une mesure numérique de la façon dont Bien notre modèle fait. Si la perte est faible, les prévisions sont assez précises. Si c'est gros, il ne fait pas si chaud. Notre objectif dans la construction d'un bon modèle est toujours de minimiser notre fonction de perte (et donc de maximiser les performances du modèle).
Et bien que l'erreur quadratique moyenne (l'erreur ex) à partir des moindres carrés) est un bon choix pour de nombreux modèles, il existe de nombreux autres choix. Les réseaux de neurones peuvent avoir toutes sortes de structures, et différentes données/structures peuvent bénéficier d'autres types de fonctions de perte.
"Apprentissage." Nous savons que nous voulons minimiser notre fonction de perte, et nous avons nos données et la structure que nous avons utilisées pour construire notre réseau neuronal, mais nous devons en réalité *faire* la minimisation. C’est là que notre réseau neuronal va commencer à s’écarter de notre modèle de régression.
Dans les régressions plus simples, il existe un moyen mathématique assez simple et rapide de résoudre nos coefficients exacts en utilisant l'algèbre linéaire, la géométrie et l'algèbre régulière. Mais les réseaux de neurones adoptent une approche légèrement différente. Les réseaux de neurones utilisent souvent des approches itératives pour trouver des valeurs qui minimisent la fonction de perte (et optimisent notre modèle). Essentiellement, nous essayons de nous rapprocher de la « meilleure » réponse à chaque étape de notre itération.
De nombreux outils et didacticiels utilisent une certaine forme de Descente graduelle . Je ne passerai pas beaucoup de temps sur les détails techniques de la descente de gradient traditionnelle, car ce n'est pas ce que JMP utilise, mais l'idée générale est qu'il existe un pente de la fonction de perte (pensez à une carte avec des montagnes et des vallées) où les points plus élevés représentent de moins bonnes performances du modèle, et les points plus bas représentent des performances de modèle bonnes, voire optimales.
Vous pouvez imaginer une descente en pente comme un randonneur qui se trouve sur cette carte essayant d'atteindre le point le plus bas possible. Pour chaque pas qu’ils font, ils regardent autour d’eux et déterminent quelle direction a la descente la plus raide et avancent dans cette direction. Finalement, ils se retrouvent à un point bas. En revenant de notre analogie avec la randonnée, le point bas représente un ensemble de paramètres (comme nos coefficients et nos biais) où la fonction de perte est minimisée et donc notre modèle se porte plutôt bien !
Dans JMP , une technique légèrement différente est utilisée pour optimiser un NN. Au lieu d'utiliser la descente de gradient typique méthodes, JMP utilise quelque chose appelé le BFGS algorithme (qui ne signifie pas B ig F rien g iant S , désolé pour les fans de Roald Dahl). L'algorithme BFGS permet de prendre des mesures itératives pour optimiser le modèle, de la même manière que Gradient Descent, mais utilise des mathématiques différentes pour ce faire.
Au lieu d'attendre que l'algorithme trouve un point bas ultime (l'une des vallées de votre gradient), JMP décide qu'un modèle est optimisé en examinant un ensemble de validation (c'est pourquoi JMP en exigera un, ou en tiendra une partie). vos données pour validation automatique, lors de la construction d'un NN). L'ensemble de validation se compose de données qui ne sont PAS utilisées pour optimiser le modèle.
JMP testera le modèle actuel sur l'ensemble de validation. Une fois que le fait de franchir des « étapes » supplémentaires vers le point bas n'améliore pas significativement les performances du modèle sur l'ensemble de validation, JMP considère le modèle optimisé. Tester le modèle sur de nouvelles données qui n'ont pas été utilisées pour créer le modèle nous aide à comprendre comment le modèle que nous créons pourrait fonctionner sur les données futures. Cette méthode est appelée « Arrêt anticipé » car elle nous permet d'arrêter plus tôt les étapes vers le point bas. Cela nous permet souvent d’optimiser rapidement notre modèle.
Quelle que soit la méthode utilisée, une fois le modèle considéré comme suffisamment optimisé, nous disposons désormais de toutes les estimations des paramètres dans notre réseau de neurones ! Nous disposons enfin d’un modèle fonctionnel que nous pouvons utiliser pour prédire quelque chose.
Une structure plus complexe
Vous connaissez maintenant les bases du fonctionnement des réseaux de neurones structuré , et comment ils apprendre . Mais tous les réseaux de neurones ne doivent pas nécessairement ressembler à celui de régression que nous avons réalisé ci-dessus. Les réseaux de neurones nous permettent d'être beaucoup plus flexibles lors de la construction de leur structure.
Plusieurs couches . Une chose que nous pouvons faire avec les réseaux neuronaux est d’ajouter plus de couches. Dans notre exemple de régression, nous avions une couche d’entrée directement connectée à notre couche de sortie. Mais nous pouvons insérer une couche supplémentaire entre elles et relier chaque couche à la suivante.
Cela signifie que les données d’entrée passeront par davantage de connexions (et donc davantage de calculs) avant d’atteindre la couche de sortie. Plus vous avez de couches et de connexions, plus une fonction que vous pouvez approximer est complexe.
Lorsque nous construisons des modèles, nous le faisons essentiellement parce que nous pensons qu'il existe une relation entre nos entrées et nos sorties. Il y a une fonction mathématique, cela peut expliquer comment vous transformez toutes vos valeurs d'entrée en valeurs de sortie. C'est comme deviner le montant d'argent dépensé pour les jeux vidéo en fonction de l'âge, du sexe, du salaire et du loyer.
Nous espérons que les modèles que nous construisons (nous l'appellerons f*(x) )sont très proches (ou approximatifs) f(x) . Mais f(x) pourrait être un modèle assez compliqué. Ce n’est peut-être même pas linéaire *halètement* ! Les couches supplémentaires (et quelques autres astuces dont nous parlerons dans une seconde) permettent au modèle que nous créons d'être plus complexe. Si f*(x) est également complexe, nous avons alors plus de chances de créer un modèle proche de f(x) .
Le nombre de nœuds dans vos couches d'entrée et de sortie est prédéterminé. Votre couche d'entrée a un nœud pour chaque variable (ou fonctionnalité, comme nous les appelons souvent en apprentissage automatique), et la couche de sortie a un nœud pour chaque nombre que vous souhaitez prédire. Mais lorsque vous commencez à ajouter d’autres couches – appelées couches cachées – vous pouvez choisir n’importe quel nombre de nœuds. À ce stade de l’histoire des réseaux neuronaux, il s’agit plus d’un art que d’une science. Il existe de bonnes règles empiriques sur le nombre de nœuds à choisir pour chacune de nos couches cachées (comme diminuer lentement le nombre de nœuds dans chaque couche), mais il n'y a pas de réponse exacte.
Fonctions d'activation. OK, revenons à mon commentaire sur le fait que certains modèles ne sont pas linéaires (*haletant encore*). Les réseaux de neurones emploient également fonctions d'activation dans chacun de leurs nœuds afin de permettre aux modèles que nous créons d'être non linéaires.
JMP Pro propose trois options pour les fonctions d'activation : TanH, Linéaire et Gaussienne. Dans notre modèle de régression, nous utilisions « secrètement » des fonctions d’activation linéaires. Les fonctions d'activation prennent l'entrée dans le nœud et y effectuent une sorte de transformation avant de la transmettre à la couche suivante. UN linéaire l'activation (en rouge) prend une valeur et la renvoie inchangée, ce qui est exactement ce que nous faisions dans notre simple régression NN ci-dessus.
Mais nous ne sommes pas obligés de le laisser inchangé. Le TanH L'activation (en bleu) est un type d'activation sigmoïde (ce qui signifie que sa fonction ressemble à un S allongé). C'est utile car il prend n'importe quelle entrée et la mappe à une valeur comprise entre -1 et 1. Les grandes valeurs négatives seront transformées en valeurs proches de -1 et les grandes valeurs positives proches de 1. C'est souvent très utile lorsque votre modèle prédit des catégories (comme si quelqu'un fera défaut sur un prêt ou non) plutôt qu'une sortie continue.
UN Gaussien la fonction d'activation (verte) prend des valeurs extrêmes (hautes ou basses) et renvoie des valeurs proches de 0. Pour les valeurs moins extrêmes, il renverra des valeurs proches de un.
Si nous utilisons uniquement des activations linéaires, le modèle que nous créons ne peut être que linéaire. Mais si nous utilisons des fonctions d’activation non linéaires, nous pouvons désormais créer des modèles non linéaires !
JMP Pro vous permet de créer des réseaux de neurones avec jusqu'à 2 couches et de choisir différentes fonctions d'activation pour chaque couche. En utilisant différents nombres de couches, de nœuds et différentes fonctions d'activation, nous pouvons créer un grand nombre de structures pour un réseau neuronal. Vous pouvez même utiliser les réseaux de neurones pour prédire des catégories plutôt qu'une valeur continue.
JMP
Pour créer un réseau neuronal dans JMP, accédez à Analyse>Modélisation prédictive>Neural . Une fois la plateforme neuronale ouverte, vous pouvez choisir vos entrées et sorties en les faisant glisser respectivement vers les cases X et Y.
Cela ouvrira la fenêtre de lancement du modèle dans laquelle vous pourrez spécifier le nombre de nœuds que vous souhaitez dans vos deux couches cachées et les types de fonctions d'activation que vous souhaitez utiliser.
Une fois que vous avez cliqué Aller , JMP construira votre réseau neuronal et créera un tableau de mesures des performances du modèle (comme R^2 ou RMSE pour les sorties continues). Vous pouvez également tracer les valeurs réelles par les valeurs prédites en cliquant sur le triangle rouge et en sélectionnant Tracer le réel par prévu . De même, nous pouvons tracer nos valeurs résiduelles en cliquant sur le triangle rouge et en sélectionnant Tracer le résidu par prévision . Vous pouvez également aller dans le menu du triangle rouge et sélectionner Profileur pour obtenir le Prediction Profiler, qui vous en montrera davantage sur ce qui se passe réellement dans le réseau neuronal. Fini la boîte noire !

Conclusion
Les réseaux de neurones sont très amusants et cela semble cool de dire aux gens que vous en utilisez un. Mais quand on regarde leur vraie nature, ils ne le sont pas. donc différent de la simple régression linéaire. Dans les deux cas, il faut préciser un structure et un méthode d'apprentissage afin d'obtenir un modèle fonctionnel et optimisé. Les réseaux de neurones faire nous permettent de modéliser des structures plus complexes que la simple régression linéaire, elles sont donc souvent utiles lorsque nous pensons que la relation entre nos entrées et nos sorties est complexe.
Des couches supplémentaires et des fonctions d'activation nous permettent de jouer avec la structure de notre réseau, et ce n'est qu'un début ! Nous pouvons prédire des résultats catégoriques, plusieurs résultats continus, nous pourrions avoir cinq niveaux, ou 10 ! Il existe des fonctionnalités encore plus intéressantes que nous pouvons appliquer aux réseaux de neurones (par exemple, Dropout ou d'autres fonctions d'activation que nous n'avons pas abordées ici), mais maintenant que vous connaissez les bases, vous pouvez explorer toutes ces choses avec un peu plus de confiance.