2016-03-31 8 views
4

Was ist die korrekte Art, eine 'disjunkte' Klassifizierung zu machen (wo sich die Ausgänge gegenseitig ausschließen, d. H. Echte Wahrscheinlichkeiten summieren zu 1) in FANN, da es keine Option für Softmax-Ausgabe zu haben scheint?Wie disjoint Klassifizierung ohne Softmax-Ausgabe zu tun?

Mein Verständnis ist, dass Sigmoid-Ausgaben, als ob "Kennzeichnung", dass ich nicht die richtigen Ergebnisse für ein Klassifikationsproblem bekommen würde.

Antwort

2

FANN unterstützt nur tanh und linear Fehlerfunktionen. Dies bedeutet, wie Sie sagen, dass die vom neuronalen Netzwerk ausgegebenen Wahrscheinlichkeiten nicht zu 1 aufsummieren. Es gibt keine einfache Lösung zum Implementieren eines softmax-Ausgangs, da dies eine Änderung der Kostenfunktion und somit der in der Backpropagation-Routine verwendeten Fehlerfunktion bedeutet . Da FANN Open Source ist, können Sie sich das selbst anschauen. Eine Frage zu Cross Validated scheint die Gleichungen zu geben, die Sie benötigen würden: implement.

Obwohl nicht die mathematisch elegante Lösung, nach der Sie suchen, würde ich versuchen, mit etwas gröberen Ansätzen zu spielen, bevor Sie die Implementierung einer Kostenfunktion in Angriff nehmen - als eine dieser könnte für Ihre Zwecke ausreichen. Zum Beispiel könnten Sie eine tanh Fehlerfunktion verwenden und dann alle Ausgaben auf 1 neu renormalisieren. Oder, wenn Sie eigentlich nur daran interessiert sind, was die wahrscheinlichste Klassifizierung ist, können Sie einfach die Ausgabe mit der höchsten Punktzahl nehmen.

Steffen Nissen, der Typ hinter FANN, zeigt ein Beispiel here, in dem er anhand der Buchstabenhäufigkeit zu klassifizieren versucht, in welche Sprache ein Text geschrieben wird. Ich denke, er verwendet eine tanh Fehlerfunktion (Standard) und nimmt nur die Klasse mit der höchsten Punktzahl, aber er zeigt an, dass es gut funktioniert.