2017-05-09 5 views
0

Ich bin derzeit in der Multi-Label-Klassifizierung und ich habe einige Fragen (und ich konnte keine klaren Antworten finden).Wie wird eine Multi-Label-Klassifizierung (für CNN) durchgeführt?

Der Übersichtlichkeit halber nehmen wir ein Beispiel: Ich möchte Bilder von Fahrzeugen (Auto, Bus, LKW, ...) und ihrer Marke (Audi, Volkswagen, Ferrari, ...) klassifizieren.

Also dachte ich über das Training von zwei unabhängigen CNN nach (eine für die "Typ" -Klassifikation und eine für die "Make" -Klassifizierung), aber ich dachte, es wäre möglich, nur ein CNN in allen Klassen zu trainieren.

Ich lese, dass Leute dazu neigen, sigmoid Funktion anstelle von softmax zu verwenden, um das zu tun. Ich verstehe, dass Sigmoid nicht zu 1 wie Softmax zusammenfasst, aber ich verstehe nicht, in was macht das Multi-Label-Klassifizierung zu tun?

Meine zweite Frage ist: Ist es möglich zu berücksichtigen, dass einige Klassen völlig unabhängig sind?

Dridly, in Bezug auf Leistungen (Genauigkeit und Zeit, um die Einstufung für ein neues Bild zu geben), ist nicht zwei unabhängige besser zu trainieren?

Vielen Dank für diejenigen, die meine paar Antworten oder einige Ideen :)

Antwort

1

Softmax ist eine spezielle Ausgabefunktion geben könnte; es zwingt den Ausgabevektor, einen einzelnen großen Wert zu haben. Nun trainiert das Trainieren von neuronalen Netzwerken, indem ein Ausgangsvektor berechnet wird, der mit einem Zielvektor verglichen wird, und der Fehler zurückverbreitet wird. Es gibt keinen Grund, Ihren Zielvektor auf einen einzigen großen Wert zu beschränken, und für die Mehrfachbeschriftung würden Sie ein 1.0-Ziel für jede Bezeichnung verwenden, die gilt. In diesem Fall führt die Verwendung von softmax für die Ausgabeschicht jedoch zu unbeabsichtigten Unterschieden zwischen Ausgabe und Ziel, die sich dann wieder ausbreiten.

Für den zweiten Teil: Sie definieren die Zielvektoren; Sie können jede Art von Abhängigkeit codieren, die Sie dort mögen.

Schließlich, nein - ein kombiniertes Netzwerk funktioniert besser als die beiden Hälften würden unabhängig voneinander tun. Sie würden nur zwei Netzwerke parallel ausführen, wenn sich das Netzwerklayout unterscheidet, z. ein regelmäßiges NN und CNN parallel könnte lebensfähig sein.

+0

Zuerst, danke für Sie wirklich vollständige Antwort @ MSalters. Ich brauche nur noch eine Genauigkeit: Wird mein Netzwerk während des Trainings selbst herausfinden, dass einige Klassen unabhängig sind und andere nicht? Oder kann ich wenigstens etwas tun, um es zu verstehen (indem ich einige Neuronen verbinde oder nicht)? –

Verwandte Themen