2016-11-19 1 views
4

Die Tensorflow Funktion tf.nn.weighted_cross_entropy_with_logits() nimmt das Argument pos_weight. Die documentation definiert pos_weightals „ Ein Koeffizient auf den positiven Beispielen zu verwenden.“ Ich nehme an, dies bedeutet, dass eine Erhöhung von pos_weight den Verlust von falsch-positiven Ergebnissen erhöht und den Verlust von falsch-negativen Ergebnissen verringert. Oder habe ich das rückwärts?Tensorflow: Interpretation von Gewicht in Weighted Kreuzentropie

Antwort

6

Eigentlich ist es umgekehrt. Unter Berufung auf Dokumentation:

Das Argument pos_weight wird als Multiplikator für die positiven Ziele verwendet.

Also, vorausgesetzt, Sie 5 positive Beispiele im Dataset und 7 negativ haben, wenn Sie die pos_weight=2 gesetzt, dann wird Ihr Verlust wäre, als ob Sie 10 positive Beispiele hatten und 7 negativ.

Angenommen, Sie alle positiven Beispiele falsch und alle negativen richtig verstanden habe. Ursprünglich hätten Sie 5 falsche Negative und 0 falsche Positive. Wenn Sie den Wert pos_weight erhöhen, erhöht sich die Anzahl der falsch negativen Ergebnisse künstlich. Beachten Sie, dass sich der Verlustwert, der von falsch positiven Ergebnissen kommt, nicht ändert.

+0

Danke. Also, wenn eine für beiden Seiten exklusiven Klassifikator mit mehr als 2 Klassen und 1-heißer Wahrheit Etikett, zunehmender pos_weight hat den Effekt, die Verluste in allen Fällen mit falschen Schätzungen zu verstärken, und Fälle mit korrekten Schätzungen unverändert (weil der Verlust in der Richtig- Schätzfälle ist Null)? –

+0

verstärkt die Verluste in allen Fällen mit * falsch negativen *, aber ja, ich denke schon. – sygi