Ich möchte nicht zu tief nachdenken und ich möchte es immer grob und sinnlich verstehen, wenn möglich. Schauen wir uns also diese Verlustfunktion an, damit wir sie intuitiv verstehen können.
Was ist überhaupt eine Verlustfunktion? Wenn Sie viel recherchieren, erhalten Sie eine schwierige Erklärung, aber es scheint eine Funktion zu sein, die den Unterschied zwischen den beiden Werten kleiner macht. Bei der Identifizierung von Deep Learning usw. besteht die Hauptsache darin, den Gewichtsparameter so anzupassen, dass der Wert zum Zeitpunkt des Lernens nahe an der Antwort liegt, aber der Teil von "nahe an der Antwort sein" ist dafür verantwortlich. Dies ist die "Verlustfunktion". Da "Wert = Verlust" ist, ist die "Verlustfunktion", wie dieser Verlust reduziert werden kann.
Was für eine Verlustfunktion gibt es also? Selbst wenn Sie einen kurzen Blick darauf werfen, gibt es einige Typen.
--Hingen Verlustfunktion --ε Toleranzfunktion --Huber Funktion
Deep Learning verwendet "Cross-Entropy Error" und "Square Error" anstelle dieser schwierigen. Was wichtig ist, scheint eine Funktion zu sein, die die nachfolgende Verarbeitung durchführen kann, "Backpropagation of Error". Wenn Sie sich die Seite ansehen, auf der geschrieben steht, dass es schwierig ist zu wissen, was es ist, was damit zu tun ist usw., habe ich mich hier bereits für die beiden oben genannten entschieden. Wenn andere Funktionen während des Studiums herauskommen, werde ich sie heimlich hinzufügen (Explosion)
Egal wie ich es erkläre, es wird eine schwierige Geschichte, also werde ich die Formel veröffentlichen, aber im Allgemeinen ist es so.
Wenn dies zu einer bestimmten Bedingung wird (Klassifizierungsproblem), wird es einfach.
Wenn Sie dies in TensorFlow schreiben, sieht es so aus.
cross_entropy = tensorflow.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y)
"Y_" ist die richtige Bezeichnung und "y" ist das Ergebnis des Lernens. Der Prozess ist so, dass dieser Unterschied kleiner wird.
Außerdem ist es schlecht, wenn es nicht einmal zum Vergleich normalisiert wird. Im Fall von "softmax_cross_entropy_with_logits ()" scheint es sich dabei um softmax zu handeln.
Wenn "y" bereits durch Softmax normalisiert ist, scheint es so zu schreiben.
cross_entropy = -tensorflow.reduce_sum(y_ * tf.log(y), reduction_indices=[1])
"Reduce_sum ()" ist eine Addition und "log ()" ist eine Funktion zum Ermitteln eines natürlichen logarithmischen Werts.
Die Methode der kleinsten Quadrate scheint dies zu sein. Das ist einfach: Finden Sie einfach das Quadrat der Differenz und fügen Sie es allen Klassen hinzu. (Bild angepasst, um das Ergebnis zu minimieren)
Es scheint viele Möglichkeiten zu geben, in TensorFlow zu schreiben, aber das Quadrat der Differenz wird durch "tensorflow.nn.reduce_sum ()" addiert, es gibt eine Funktion namens "tensorflow.nn.l2_loss ()" an erster Stelle und das Quadrat ist auch "tensorflow". Verwenden Sie "square ()" usw.
Ich weiß also nicht, was es ist, aber es scheint, dass die erzielten Ergebnisse gemittelt werden. Im Falle eines Kreuzentropiefehlers scheint es so geschrieben zu sein.
cross_entropy = tensorflow.reduce_mean(tensorflow.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
Oh, als nächstes muss ich die Fehlerrückübertragung verstehen. .. ..
Recommended Posts