Je ne veux pas penser trop profondément et je veux toujours le comprendre grossièrement et sensuellement si possible. Alors, jetons un coup d'œil à cette fonction de perte afin que nous puissions la comprendre intuitivement.
Qu'est-ce qu'une fonction de perte en premier lieu? Si vous faites beaucoup de recherches, vous obtiendrez une explication difficile, mais il semble que ce soit une fonction qui réduit la différence entre les deux valeurs. Dans l'identification par apprentissage en profondeur, etc., l'essentiel est d'ajuster le paramètre de poids de sorte que la valeur soit proche de la réponse au moment de l'apprentissage, mais la partie «être proche de la réponse» est responsable. , C'est la "fonction de perte". Puisque "valeur = perte", comment réduire cette perte est la "fonction de perte".
Alors, quel genre de fonction de perte y a-t-il? Même si vous jetez un coup d'œil rapide, il en existe plusieurs types.
--Fonction de perte de Hingen --ε fonction de tolérance
Le Deep Learning utilise «l'erreur d'entropie croisée» et «l'erreur carrée» au lieu de ces erreurs difficiles. Ce qui est important semble être une fonction qui peut effectuer le traitement ultérieur, la "rétropropagation de l'erreur". Si vous regardez le site où il est écrit qu'il est difficile de savoir ce que c'est, quoi en faire, etc., j'ai déjà décidé des deux ci-dessus ici. Si d'autres fonctions sortent pendant mes études, je les ajouterai secrètement (explosion)
Peu importe comment je l'explique, ce sera une histoire difficile, donc je posterai la formule, mais en général c'est comme ça.
Ainsi, quand cela devient une certaine condition (problème de classification), cela devient facile.
Si vous écrivez ceci dans TensorFlow, cela ressemblera à ceci.
cross_entropy = tensorflow.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y)
«Y_» est l'étiquette correcte et «y» est le résultat de l'apprentissage. Le processus est tel que cette différence diminue.
De plus, c'est mauvais s'il n'est pas normalisé même pour comparaison, donc dans le cas de "softmax_cross_entropy_with_logits ()", il semble que ce soit softmax dans ce cas.
Si "y" a déjà été normalisé avec softmax, il semble écrire comme ça.
cross_entropy = -tensorflow.reduce_sum(y_ * tf.log(y), reduction_indices=[1])
"Reduce_sum ()" est une addition, et "log ()" est une fonction pour trouver une valeur logarithmique naturelle.
La méthode des moindres carrés semble être celle-ci. C'est simple: trouvez simplement le carré de la différence et ajoutez-le à toutes les classes. (Image ajustée pour minimiser le résultat)
Il semble y avoir plusieurs façons d'écrire dans TensorFlow, mais le carré de la différence est ajouté par "tensorflow.nn.reduce_sum ()", il y a une fonction appelée "tensorflow.nn.l2_loss ()" en premier lieu, et le carré est aussi "tensorflow. Utilisez "square ()", etc.
Donc, je ne sais pas ce que c'est, mais il semble que les résultats obtenus soient moyennés. Dans le cas d'une erreur d'entropie croisée, cela semble être écrit comme ceci.
cross_entropy = tensorflow.reduce_mean(tensorflow.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
Oh, je dois ensuite comprendre la propagation des erreurs. .. ..
Recommended Posts