[PYTHON] Méthode de propagation des erreurs (rétro-propagation)

Troisième jour

Méthode de propagation des erreurs (rétro-propagation)

Je n'ai pas eu beaucoup de temps aujourd'hui, donc je vais implémenter le réseau neuronal juste avant l'implémentation.

L'analyse de régression logistique mise en œuvre le premier jour était bonne pour la régression linéaire, mais les analyses non linéaires ne peuvent pas la gérer correctement. Dans un tel cas, s'il s'agit d'un réseau de neurones, il est possible de retourner même s'il est non linéaire tel que XOR.

Il n'y a pas de base claire pour les préjugés, car ce domaine est tellement enraciné dans l'apprentissage automatique. Le biais peut être modifié ou corrigé selon le but.

modèle

Cette fois, nous allons créer 3 couches de 2 entrées, 1 couche intermédiaire et sortie.

L'image est la même que la régression logistique, comme une combinaison de celles-ci.

Fonction d'erreur

Dérivation d'erreur


'''
contribution: x1,x2
Couche cachée: O1,O2
production: Output
Erreur: Error
biais: b
poids: w[Quelle couche,D'où,où]
E = (y - Output)^2
'''
#Forward Propagation
Z1 = b11 + x1*w111 + x2*w121
Z2 = b12 + x1*w112 + x2*w122

O1 = Sig(Z1)
O2 = Sig(Z2)

Z = b21 + O1*w211 + O2*w221

Output = Sig(Z)

Error = (y - Output)**2

Différencier et ajuster les biais

Ajustement du biais


#differential
dw111 = 2*(y - Output)*Sig(Z)*(1 - Sig(Z))*Sig(Z1)*(1 - Sig(Z1))*x1
dw121 = 2*(y - Output)*Sig(Z)*(1 - Sig(Z))*Sig(Z1)*(1 - Sig(Z1))*x2
db11 = 2*(y - Output)*Sig(Z)*(1 - Sig(Z))*Sig(Z1)*(1 - Sig(Z1))
dw112 = 2*(y - Output)*Sig(Z)*(1 - Sig(Z))*Sig(Z2)*(1 - Sig(Z2))*x1
dw122 = 2*(y - Output)*Sig(Z)*(1 - Sig(Z))*Sig(Z2)*(1 - Sig(Z2))*x2
db12 = 2*(y - Output)*Sig(Z)*(1 - Sig(Z))*Sig(Z2)*(1 - Sig(Z2))
dw211 = 2*(y - Output)*Sig(Z)*(1 - Sig(Z))*O1
dw221 = 2*(y - Output)*Sig(Z)*(1 - Sig(Z))*O2
db21 = 2*(y - Output)*Sig(Z)*(1 - Sig(Z))

#Gradient Descent / Steepest Descent
w111 -= alpha(dw111)
w121 -= alpha(dw121)
b11 -= alpha(db11)
w112 -= alpha(dw112)
w122 -= alpha(dw122)
b12 -= alpha(db12)
w211 -= alpha(dw211)
w221 -= alpha(dw221)
b21 -= alpha(db21)

code

day3.py

Le troisième jour est terminé!

J'étais un peu occupé aujourd'hui, mais j'ai pu faire le minimum! Je pense que ce serait bien de pouvoir rattraper même un peu comme ça Je suis redevable à Udemy. Je vous remercie.

Recommended Posts

Méthode de propagation des erreurs (rétro-propagation)
Apprentissage profond / rétropropagation d'erreur de la fonction sigmoïde
[Deep Learning from scratch] Implémentez le traitement de rétropropagation dans le réseau neuronal par la méthode de propagation de retour d'erreur
Implémentation de la méthode de propagation d'étiquettes en Python
Chapitre 7 [Méthode de propagation des erreurs] P275 ~ (Milieu) [Apprenez en vous déplaçant avec Python! Nouveau manuel d'apprentissage automatique]
Construisons une méthode de propagation probabiliste (Python)
Appliquer la formule de propagation d'erreur à l'erreur standard