Chapitre 7 [Neural Network Deep Learning] P252 ~ 275 (première moitié) [Apprenez en vous déplaçant avec Python! Nouveau manuel d'apprentissage automatique]

[Référence] [Apprenez en exécutant avec Python! Nouveau manuel d'apprentissage automatique]: https://www.amazon.co.jp/Python%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E5%AD%A6%E3%81%B6%EF%BC%81-%E3%81%82%E3%81%9F%E3%82%89%E3%81%97%E3%81%84%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E4%BC%8A%E8%97%A4-%E7%9C%9F/dp/4798144983

Ce qui est expliqué au chapitre 7

-Créer un modèle de prédiction pour la classification en utilisant l'erreur d'entropie croisée à partir de l'estimation la plus probable expliquée au chapitre 6 en utilisant un réseau de neurones Créer un modèle avec 3 valeurs d'entrée ou plus x (entrée au chapitre 6) Je n'ai fait que la classification en 3 classes de la valeur d'entrée 2D.)

Tout d'abord, comme dans le temps précédent, regardez l'entrée totale a.

Considérez le nombre de dimensions d'entrée lorsqu'il est de 2 comme dans le chapitre 6 (D = 2) $ a=w_0x_0+w_1x_1+w_2 $

Si vous ajoutez le paramètre de biais $ x_2 $ qui prend toujours 1 pour représenter la section $ a=w_0x_0+w_1x_1+w_2x_2 $

Puisqu'il peut être exprimé par la formule de somme $ a=\sum_{i=0}^{2}w_ix_i $ C'est la même chose que la dernière fois, mais cela peut être utilisé comme probabilité via la fonction sigmoïde $ y=\frac{1}{1+exp(-a)} $ ** En passant par la fonction sigmoïde, la valeur de a obtenue à partir de l'entrée change dans la plage de 0 à 1. (Étant donné que la probabilité change également dans l'intervalle de 0 à 1, cela peut être utilisé comme distribution de probabilité.) **

Au chapitre 6, la distribution de cette transition de 0 à 1 a été exprimée sous forme de probabilité, mais dans le réseau de neurones de ce chapitre, on considère que la valeur comprise entre 0 et 1 représente ** la fréquence de déclenchement **.

(P253) Ici, la valeur de sortie est considérée comme représentant le nombre d'impulsions par unité de temps, c'est-à-dire ** fréquence de déclenchement **. Plus a est grand, plus la fréquence de tir est proche de la limite de la fréquence de tir, et inversement, plus la valeur de a est négative, plus la fréquence de tir est proche de 0, et plus la fréquence de tir est presque inexistante. Je pense.

7.2 Modèle de réseau neuronal

Réseau neuronal à 2 couches

Modèle de réseau neuronal à deux couches iOS の画像 (3).jpg Les entrées bidimensionnelles peuvent être divisées en trois catégories. Représente la probabilité que chaque valeur de sortie appartienne à chaque catégorie. ** Par exemple, lorsqu'il y a deux valeurs d'entrée de poids ($ x_0 ) et de taille ( x_1 $), si vous entrez la taille et le poids de chaque personne A et B, où est cette personne 3 Chaque t indique s'il appartient à une classe. ** **

ex)
classe
$t_0$=Noir
$t_1$=blanc
$t_2$=asiatique

M. A:
Poids: 90kg
Hauteur: 189 cm
Si vous tapez ce modèle.
$t_0$=0.95
$t_1$=0.04
$t_2$=0.01
La somme de t est 1
S'il sort, il est fort probable que vous soyez noir

M. B:
Poids: 65kg
Hauteur: 168 cm
Si vous tapez ce modèle.
$t_0$=0.06
$t_1$=0.04
$t_2$=0.90
Si vous dites, il est fort probable que vous soyez asiatique.

Mécanisme de chaque probabilité:

Il est facile à comprendre en regardant la figure de la page 239 du chapitre 6.

iOS の画像 (4).jpg

・ Pour chaque entrée de données d'entraînement, trouvez les valeurs de $ w_0, w_1, w_2 $ par l'estimation la plus probable. ・ Et puisque la somme de $ a_0, a_1, a_2 $ peut être obtenue. -Chaque valeur de sortie y est exprimée sous forme de probabilité par la fonction sigmoïde. Probabilité de t = 0 pour $ y_0 $ Probabilité que t = 1 pour $ y_1 $ Probabilité de t = 2 pour $ y_2 $

Chacun est déterminé par la valeur de la valeur d'entrée entre 0 et 1, donc la classification est possible. ** (Je ne sais pas pourquoi la somme de t est égale à 1.) **

image.png

image.png

--Dans la couche intermédiaire, chaque valeur d'entrée x est pondérée par w et transmise à la couche intermédiaire b. --Dans la couche intermédiaire b, la somme de chaque valeur d'entrée et de chaque variable fictive est affichée, et la somme est passée à travers la fonction sigmoïde afin qu'elle puisse être utilisée comme probabilité (z).

P258

Entrée totale de la couche intermédiaire: $ b_j=\sum_{i=0}^Dw_{ji}x_i $

Sortie de couche intermédiaire: $ z_j = h (b_j) \ hspace {25pt} h () est une fonction sigmoïde $

Entrée totale de la couche de sortie: $ a_k=z\sum_{j=0}^{M}v_{kj}z_j $

Sortie de la couche de sortie: $ y_k=\frac{exp(a_k)}{\sum_{l=0}^{K-1}exp(a_l)}=\frac{exp(a_k)}{u} $

Méthode de différenciation numérique

L'erreur d'entropie croisée est la probabilité qu'une certaine entrée (x = 5,8g, etc.) produise une certaine probabilité (T = [1,0,0], etc.) et que T = [1,0,0]. Erreur lorsqu'elle est calculée par l'estimation la plus probable. Un modèle qui génère la probabilité peut être créé à partir de la valeur d'entrée. En entrant une nouvelle valeur d'entrée dans le modèle, il sort où la valeur d'entrée est classée.

L'erreur d'entropie croisée du réseau à anticipation à deux couches est: $ E(w,v)=-\frac{1}{N}\sum_{n=0}^{N-1}\sum_{k=0}^{K-1}t_{nk}log(y_{nk}) $

image.png

Bien qu'il s'agisse d'un diagramme de la page 267, ce qui est dit sur cette page est le même que sur cette page.

Tout d'abord, ce que nous voulons faire, c'est que cette E (w) est l'erreur d'entropie croisée qui prend la vraisemblance logarithmique de l'estimation de probabilité maximale et prend la valeur w (poids) qui a la plus petite vallée mais la plus petite erreur.

La pente est de 0 car nous voulons que w trouve la sortie t lorsque la probabilité est trouvée à partir de cette entrée la plus. Je veux la valeur w de ce fond de vallée (l'axe des y au moment de ce fond de vallée est la probabilité, et l'estimation la plus probable est multipliée par -1 et inversée, donc la probabilité la plus plausible de l'estimation la plus probable = ce fond de vallée. ).

** Par conséquent, $ w ^ * $ dans la figure est le poids optimal w lors de la création d'un modèle de classification. ** **

Que dites-vous ici? ・ Il est difficile de calculer le différentiel partiel ・ Si vous trouvez la valeur juste avant $ w ^ * $ et la valeur juste avant sans avoir à vous soucier d'effectuer un calcul différentiel partiel, vous pouvez trouver une ligne droite passant par les deux points, elle ressemble donc à une pente similaire à une pente. Vous pouvez prendre la valeur ・ C'est la formule (7-19)

Ainsi, 7-19 parle du moment où le paramètre w est un, mais la formule lorsqu'il est étendu à un multiple est (7-20). ** Par conséquent, même lorsqu'il y a plusieurs paramètres, les ws appropriés peuvent être facilement obtenus. ** **

image.png

Enfin, comment lire ce graphique à la page 269: (Probablement) Puisque la valeur de la différenciation partielle pour chaque paramètre de poids de w et v est donnée, plus cette valeur est proche de 0, plus la pente devient petite. Par conséquent, 4 peut être défini comme un bon paramètre pour w et 8 peut être défini comme un bon paramètre pour v.

Je pense que ça veut dire.

Première moitié dernier

image.png

(P373 et 273 sont lus tels quels, ils sont donc omis.)

Dans la figure ci-dessus, un modèle est créé sur la base des poids de w et v obtenus sur la page précédente, et le dessin est effectué lorsque les données de test sont réellement entrées.

Puisque w et v sont requis lorsque l'erreur de chaque classe 1, 2 et 3 est faible, la partie avec une probabilité élevée lorsque la valeur d'entrée réelle est entrée est définie comme la plage de 0,5 à 0,9. La partie de $ t_0 ~ t_2 $ dans l'image. Si vous affichez les courbes de niveau uniquement là où chaque probabilité est élevée et que vous les divisez, il semble qu'elles soient classées.

image.png

Recommended Posts

Chapitre 7 [Neural Network Deep Learning] P252 ~ 275 (première moitié) [Apprenez en vous déplaçant avec Python! Nouveau manuel d'apprentissage automatique]
Chapitre 6 Apprentissage supervisé: Classification pg212 ~ [Apprenez en vous déplaçant avec Python! Nouveau manuel d'apprentissage automatique]
Chapitre 7 [Méthode de propagation des erreurs] P275 ~ (Milieu) [Apprenez en vous déplaçant avec Python! Nouveau manuel d'apprentissage automatique]
Apprenez en exécutant avec le nouveau Python! Manuel d'apprentissage automatique par Makoto Ito numpy / keras Attention!
[Python / Machine Learning] Pourquoi le Deep Learning # 1 Perceptron Neural Network
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 13 Formation sur les réseaux neuronaux ~ Chainer terminé
Mémo d'étude Python & Machine Learning ③: Réseau neuronal
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 13 Bases du réseau neuronal
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer du chapitre 2
Essayez de créer un réseau de neurones / d'apprentissage en profondeur avec scratch
Un exemple de python pour apprendre XOR avec un algorithme génétique sur un réseau neuronal
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 7 Analyse de régression
[Apprentissage en profondeur] Classification d'images avec un réseau neuronal convolutif [DW jour 4]
Réseau de neurones avec Python (scikit-learn)
Apprentissage automatique avec Python! Préparation
Commencer avec l'apprentissage automatique Python
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 10 Introduction à Cupy
Apprentissage automatique avec docker (42) Programmation PyTorch pour l'apprentissage en profondeur par Ian Pointer
Mémorandum of scraping & machine learning [technique de développement] par Python (chapitre 4)
Mémorandum of scraping & machine learning [technique de développement] par Python (chapitre 5)
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 9 Introduction à scikit-learn
Réseau neuronal avec OpenCV 3 et Python 3
Apprentissage automatique par python (1) Classification générale
Résumé de l'apprentissage automatique par les débutants de Python
PRML Chapitre 5 Implémentation Python du réseau neuronal
Introduction au Deep Learning pour la première fois (Chainer) Reconnaissance de caractères japonais Chapitre 2 [Génération de modèles par apprentissage automatique]
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Python vs Ruby «Deep Learning from scratch» Chapitre 2 Circuit logique par Perceptron
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer jusqu'à la fin du chapitre 2
Amplifiez les images pour l'apprentissage automatique avec Python
Apprentissage automatique avec python (2) Analyse de régression simple
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
[Python] Première analyse de données / apprentissage automatique (Kaggle)
Mémo d'étude Python & Machine Learning ④: Machine Learning par rétro-propagation
Construction d'environnement AI / Machine Learning avec Python
Bibliothèque standard Python: première moitié (mémo d'apprentissage Python ⑧)
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Machine Learning avec docker (40) avec anaconda (40) "Hands-On Data Science and Python Machine Learning" Par Frank Kane