J'utilise TensorFlow pour des expériences principalement avec des réseaux de neurones. Bien que j'aie fait pas mal d'expériences (XOR-Problem, MNIST, des trucs de régression, ...) maintenant, je ne parviens pas à choisir la fonction de coût "correcte" pour des problèmes spécifiques car, dans l'ensemble, je pourrais être considéré comme un débutant.
Avant de venir à TensorFlow, j'avais codé des réseaux MLP entièrement connectés et des réseaux récurrents avec Python et NumPy, mais la plupart du temps, j'avais des problèmes lorsqu'une simple erreur au carré et un simple gradient de gradient étaient suffisants.
Cependant, étant donné que TensorFlow propose lui-même un grand nombre de fonctions de coût ainsi que la création de fonctions de coût personnalisées, j'aimerais savoir s'il existe une sorte de didacticiel spécifiquement destiné aux fonctions de coût sur des réseaux de neurones? (J'ai déjà utilisé la moitié des didacticiels officiels de TensorFlow, mais ils n'expliquent pas vraiment pourquoi des fonctions de coût ou des apprenants spécifiques sont utilisés pour des problèmes spécifiques - du moins pas pour les débutants)
Pour donner quelques exemples:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(y_output, y_train))
Je suppose que cela applique la fonction softmax sur les deux entrées pour que la somme d'un vecteur soit égale à 1. Mais qu'est-ce exactement que l'entropie croisée avec les logits? Je pensais que cela résumait les valeurs et calculait l'entropie croisée ... donc une mesure métrique?! Ne serait-ce pas la même chose si je normalisais la sortie, la résumais et prenais l'erreur au carré? De plus, pourquoi est-ce utilisé par exemple pour MNIST (ou même pour des problèmes beaucoup plus difficiles)? Quand je veux classer comme 10 ou peut - être même 1000 des classes, ne pas additionner les valeurs détruire complètement toute information sur laquelle la classe était en fait la sortie?
cost = tf.nn.l2_loss(vector)
À quoi ça sert? Je pensais que la perte l2 était à peu près l’erreur carrée, mais l’API de TensorFlow indique que son entrée n’est qu’un tenseur. Ne pas avoir l'idée du tout?!
De plus, j'ai souvent vu ceci pour l' entropie croisée :
cross_entropy = -tf.reduce_sum(y_train * tf.log(y_output))
... mais pourquoi est-ce utilisé? La perte d'entropie croisée mathématiquement n'est-elle pas la suivante:
-1/n * sum(y_train * log(y_output) + (1 - y_train) * log(1 - y_output))
Où se trouve la (1 - y_train) * log(1 - y_output)
pièce dans la plupart des exemples TensorFlow? Est-ce qu'il ne manque pas?
Réponses: Je sais que cette question est assez ouverte, mais je ne m'attends pas à obtenir 10 pages avec chaque fonction de problème / coût énumérée en détail. J'ai juste besoin d'un bref résumé sur le moment d'utiliser la fonction de coût (en général ou dans TensorFlow, cela n'a pas beaucoup d'importance pour moi) et quelques explications sur ce sujet. Et / ou des sources pour débutants;)