Sind die Cross-Entropie-Kosten im Kontext der Regression sinnvoll (im Gegensatz zur Klassifizierung)? Wenn ja, könnten Sie über TensorFlow ein Spielzeugbeispiel geben? Wenn nicht, warum nicht?
Ich habe über Cross-Entropy in Neuronalen Netzen und Deep Learning von Michael Nielsen gelesen und es scheint etwas zu sein, das natürlich sowohl für die Regression als auch für die Klassifizierung verwendet werden kann, aber ich verstehe nicht, wie Sie es in TensorFlow seit dem effizient anwenden würden Verlustfunktionen verwenden Protokolle (die ich auch nicht wirklich verstehe) und werden hier unter Klassifizierung aufgelistet
regression
entropy
tensorflow
cross-entropy
JacKeown
quelle
quelle
Antworten:
Nein, es ist nicht sinnvoll, TensorFlow-Funktionen wie
tf.nn.sigmoid_cross_entropy_with_logits
für eine Regressionsaufgabe zu verwenden. In TensorFlow ist "Kreuzentropie" eine Abkürzung (oder Jargon) für "kategoriale Kreuzentropie". Die kategoriale Kreuzentropie ist eine Operation für Wahrscheinlichkeiten. Ein Regressionsproblem versucht, kontinuierliche Ergebnisse anstelle von Klassifikationen vorherzusagen.Der Jargon "Kreuzentropie" ist etwas irreführend, da es eine beliebige Anzahl von Kreuzentropieverlustfunktionen gibt; Es ist jedoch eine Konvention im maschinellen Lernen, diesen bestimmten Verlust als "Kreuzentropie" -Verlust zu bezeichnen.
Wenn wir über die TensorFlow-Funktionen hinausblicken, mit denen Sie verknüpfen, gibt es natürlich eine beliebige Anzahl möglicher Cross-Entropy-Funktionen. Dies liegt daran, dass das allgemeine Konzept der Kreuzentropie den Vergleich zweier Wahrscheinlichkeitsverteilungen betrifft. Abhängig davon, welche zwei Wahrscheinlichkeitsverteilungen Sie vergleichen möchten, können Sie zu einem anderen Verlust als dem typischen kategorialen Kreuzentropieverlust kommen. Zum Beispiel reduziert sich die Kreuzentropie eines Gaußschen Ziels mit einer variierenden mittleren, aber festen diagonalen Kovarianz auf einen mittleren quadratischen Fehler. Das allgemeine Konzept der Kreuzentropie wird in folgenden Fragen ausführlicher beschrieben:
Lernen neuronale Netze eine Funktion oder eine Wahrscheinlichkeitsdichtefunktion?
Wie konstruiere ich einen Kreuzentropieverlust für allgemeine Regressionsziele?
quelle
Die Antwort von @Sycorax ist richtig. Es ist jedoch erwähnenswert, dass die Verwendung von (binärer) Kreuzentropie in einer Regressionsaufgabe, bei der die Ausgabewerte im Bereich [0,1] liegen, eine gültige und vernünftige Vorgehensweise ist. Tatsächlich wird es in Bildautocodierern verwendet (z. B. hier und in diesem Artikel ). In dieser Antwort könnte es Sie interessieren, einen einfachen mathematischen Beweis dafür zu sehen, warum dies in diesem Fall funktioniert .
quelle
Deep-Learning-Frameworks mischen häufig Modelle und Verluste und beziehen sich auf die Kreuzentropie eines multinomialen Modells mit Softmax-Nichtlinearität durch
cross_entropy
, was irreführend ist. Im Allgemeinen können Sie die Kreuzentropie für beliebige Modelle definieren .quelle
Leider ist die bis jetzt akzeptierte Antwort von @Sycorax zwar detailliert, aber falsch.
Tatsächlich wurde in TensorFlow ein Paradebeispiel für Regression durch kategoriale Kreuzentropie - Wavenet - implementiert .
Das Prinzip ist, dass Sie Ihren Ausgaberaum diskretisieren und Ihr Modell dann nur den jeweiligen Bin vorhersagt. siehe Abschnitt 2.2 des Papiers ein Beispiel für die Klangmodellierung. Während das Modell technisch eine Klassifizierung durchführt, ist die letztendlich gelöste Aufgabe die Regression.
Ein offensichtlicher Nachteil ist, dass Sie die Ausgabeauflösung verlieren. Dies ist jedoch möglicherweise kein Problem (zumindest denke ich, dass der künstliche Assistent von Google eine sehr menschliche Stimme sprach ), oder Sie können mit einer Nachbearbeitung herumspielen, z. B. Interpolation zwischen dem wahrscheinlichsten Papierkorb und seinen zwei Nachbarn.
Andererseits macht dieser Ansatz das Modell im Vergleich zur üblichen Ausgabe mit einer linearen Einheit viel leistungsfähiger, dh es ermöglicht, multimodale Vorhersagen auszudrücken oder sein Vertrauen zu bewerten. Beachten Sie jedoch, dass Letzteres natürlich auf andere Weise erreicht werden kann, z. B. durch eine explizite (logarithmische) Varianzausgabe wie bei Variations-Autoencodern.
Auf jeden Fall lässt sich dieser Ansatz nicht gut auf mehrdimensionale Ausgaben skalieren, da dann die Größe der Ausgabeebene exponentiell zunimmt, was sowohl zu Rechen- als auch zu Modellierungsproblemen führt.
quelle
Ich habe diese Frage erneut aufgegriffen, da ich jetzt mit der Antwort, die ich zuvor akzeptiert habe, nicht einverstanden bin. Kreuzentropieverlust kann bei der Regression verwendet werden (obwohl dies nicht üblich ist).
Es kommt darauf an, dass Cross-Entropy ein Konzept ist, das nur beim Vergleich zweier Wahrscheinlichkeitsverteilungen Sinn macht. Sie könnten ein neuronales Netzwerk als Vorhersage betrachten, das einen Mittelwert und eine Standardabweichung für eine Normalverteilung ausgibt. Es würde dann härter bestraft werden, wenn man sich über schlechte Vorhersagen sicherer fühlt. Also ja, es ist sinnvoll, aber nur, wenn Sie eine Distribution in gewissem Sinne ausgeben. Der Link von @SiddharthShakya in einem Kommentar zu meiner ursprünglichen Frage zeigt dies.
quelle