Welches Deep-Learning-Modell kann Kategorien klassifizieren, die sich nicht gegenseitig ausschließen?

9

Beispiele: Ich habe einen Satz in der Stellenbeschreibung: "Java Senior Engineer in UK".

Ich möchte ein Deep-Learning-Modell verwenden, um es als zwei Kategorien vorherzusagen: English und IT jobs. Wenn ich ein traditionelles Klassifizierungsmodell verwende, kann es nur 1 Etikett mit softmaxFunktion auf der letzten Ebene vorhersagen . Somit kann ich 2 Modell-Neuronale Netze verwenden, um "Ja" / "Nein" für beide Kategorien vorherzusagen, aber wenn wir mehr Kategorien haben, ist es zu teuer. Haben wir also ein Deeplearning- oder maschinelles Lernmodell, um zwei oder mehr Kategorien gleichzeitig vorherzusagen?

"Bearbeiten": Bei 3 Beschriftungen nach herkömmlichem Ansatz wird es mit [1,0,0] codiert, in meinem Fall jedoch mit [1,1,0] oder [1,1,1].

Beispiel: Wenn wir 3 Beschriftungen haben und ein Satz mit all diesen Beschriftungen übereinstimmen kann. Wenn also die Ausgabe der Softmax-Funktion [0,45, 0,35, 0,2] ist, sollten wir sie in 3 oder 2 Labels klassifizieren, oder kann es eines sein? Das Hauptproblem dabei ist: Was ist ein guter Schwellenwert für die Klassifizierung in 1, 2 oder 3 Labels?

Voxter
quelle
Wir müssen die Sigmoid-Funktion anstelle der Softmax-Funktion verwenden. Den Datenpunkten können mehrere Klassen zugewiesen werden.
NITISH MAHAJAN

Antworten:

6

Sie können diese Multi-Label-Klassifizierung erreichen, indem Sie den Softmax durch eine Sigmoid-Aktivierung ersetzen und anstelle der kategorialen Crossentropie eine binäre Crossentropie als Verlustfunktion verwenden. Dann brauchen Sie nur ein Netzwerk mit so vielen Ausgabeeinheiten / Neuronen, wie Sie Beschriftungen haben.

Sie müssen den Verlust in binäre Crossentropie ändern, da die kategoriale Kreuzentropie nur den Verlust aus der Vorhersage für die positiven Ziele erhält. Um dies zu verstehen, sehen Sie sich die Formel für den kategorialen Crossentropieverlust für ein Beispiel (Klassenindizes sind ):jij

Li=jti,jlog(pi,j)

In der normalen Mehrklasseneinstellung verwenden Sie einen Softmax, sodass die Vorhersage für die richtige Klasse direkt von den Vorhersagen für die anderen Klassen abhängt. Wenn Sie den Softmax durch Sigmoid ersetzen, trifft dies nicht mehr zu, sodass negative Beispiele (wobei ) im Training nicht mehr verwendet werden! Aus diesem Grund müssen Sie zur binären Kreuzentropie wechseln, die sowohl positive als auch negative Beispiele verwendet: L i = - j t i , j log ( p i , j ) - j ( 1 - t i , j ) log ( 1 - p i , j )ti,j=0Li=jti,jlog(pi,j)j(1ti,j)log(1pi,j)

Robintibor
quelle
Warum müssen wir die binäre Crossentropie anstelle der kategorialen Crossentropie als Verlustfunktion verwenden? Kannst du mehr erklären ? Jetzt benutze ich Sigmoid-Aktivierung @robintibor
Voxter
Ich habe eine Erklärung zur Antwort @voxter
robintibor
Brillant ! Vielen Dank. Können Sie auch einige Dokumente oder Tutorials geben, die mehr Mathematik über Funktionen beim Deeplearning erklären, wie Sie es mir erklärt haben?
Voxter