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 softmax
Funktion 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?
quelle
Antworten:
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 ):ji 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=0 Li=−∑jti,jlog(pi,j)−∑j(1−ti,j)log(1−pi,j)
quelle