Cet article est une sortie facile à comprendre de ** Deep Learning from scratch Chapter 6 Error back propagation method **. J'ai pu le comprendre moi-même, j'espère donc que vous pourrez le lire confortablement. De plus, je serais plus qu'heureux que vous puissiez vous y référer lorsque vous étudiez ce livre.
Je voudrais faire l'implémentation de la couche de la couche de sortie à la fonction de perte, qui est la dernière pièce pour implémenter le processus de propagation arrière dans le réseau neuronal.
Cette fois, je voudrais implémenter des couches de la fonction softmax utilisée pour la classification à l'erreur d'entropie d'intersection, mais cette partie sera presque la même implémentation même lorsque l'erreur de somme des carrés utilisée pour la régression, donc je pense que cela peut être fait en faisant référence à cela. Je vais.
class SoftmaxWithLoss: #Fonction Softmax + couche d'erreur d'entropie croisée
def __init__(self):
self.loss = None #Valeur de la fonction de perte
self.y = None #Résultat de la fonction softmax
self.t = None #Données des enseignants
def forward(self, x, t):
if t.ndim == 1: #Les bonnes réponses en sont une-Si ce n'est pas chaud, réparez-le
new_t = []
for i in t:
oh = list(np.zeros(10)) #Nombre d'étiquettes de classification
oh[i] = 1
new_t.append(oh)
t = np.array(new_t)
self.t = t
self.y = softmax_function(x)
self.loss = cross_entropy_errors(self.t, self.y)
return self.loss
def backward(self, dout=1):
batch_size = self.t.shape[0]
dx = (self.y - self.t) / batch_size #Divisez l'erreur par le nombre de données pour correspondre au badge
return dx
Dans le processus de propagation avant, seules les données de réponse correctes de la méthode one-hot peuvent être utilisées avec la fonction softmax, donc si les données de réponse correctes ne sont pas one-hot en premier, changez-les en one-hot.
Après cela, appelez et utilisez la fonction softmax et la méthode d'erreur d'entropie d'intersection que vous avez créées jusqu'à présent.
Le processus de rétropropagation est simple: soustrayez les données de réponse correctes des données prédites pour obtenir l'erreur, additionnez-la, puis obtenez la moyenne. Pour dire la vérité, la raison pour laquelle la combinaison de la fonction softmax / erreur d'entropie croisée et de la fonction d'égalité / erreur de somme des carrés est ajustée de sorte que le processus de rétro-propagation puisse être obtenu par la formule simple ci-dessus est ajustée de sorte que les deux fonctions Parce que c'était fait.
Par conséquent, comme je l'ai dit au début, le processus de rétropropagation doit être mis en œuvre comme ci-dessus même dans le cas de la fonction constante et de l'erreur de la somme des carrés.
Recommended Posts