Który model głębokiego uczenia może klasyfikować kategorie, które nie wykluczają się wzajemnie

9

Przykłady: w opisie stanowiska mam zdanie: „Starszy inżynier Java w Wielkiej Brytanii”.

Chcę użyć modelu głębokiego uczenia się, aby przewidzieć go jako 2 kategorie: English i IT jobs. Jeśli użyję tradycyjnego modelu klasyfikacji, może on przewidzieć tylko 1 etykietę z softmaxfunkcją na ostatniej warstwie. Dlatego mogę użyć 2 modelowych sieci neuronowych, aby przewidzieć „Tak” / „Nie” dla obu kategorii, ale jeśli mamy więcej kategorii, jest to zbyt kosztowne. Czy mamy zatem model dogłębnego uczenia się lub uczenia maszynowego do przewidywania 2 lub więcej kategorii jednocześnie?

„Edytuj”: przy 3 etykietach według tradycyjnego podejścia kodowany będzie przez [1,0,0], ale w moim przypadku będzie kodowany przez [1,1,0] lub [1,1,1]

Przykład: jeśli mamy 3 etykiety, a zdania mogą pasować do wszystkich tych etykiet. Więc jeśli wyjściem z funkcji softmax jest [0,45, 0,35, 0,2], powinniśmy podzielić ją na 3 etykiety lub 2 etykiety, czy może być jedna? głównym problemem, kiedy to robimy, jest: jaki jest dobry próg, aby zaklasyfikować do 1, 2 lub 3 etykiet?

voxter
źródło
Musimy użyć funkcji sigmoidalnej zamiast funkcji softmax. Może przypisać wiele klas do punktów danych.
NITISH MAHAJAN

Odpowiedzi:

6

Możesz osiągnąć tę klasyfikację wieloznakową, zastępując softmax aktywacją sigmoidalną i używając binarnej crossentropy zamiast kategorycznej crossentropy jako funkcji straty. Potrzebujesz tylko jednej sieci z tyloma jednostkami wyjściowymi / neuronami, ile masz etykiet.

Musisz zmienić stratę na binarną crosssentropię, ponieważ kategoryczna entropia krzyżowa uzyskuje tylko stratę z prognozy dla pozytywnych celów. Aby to zrozumieć, spójrz na wzór na kategoryczną stratę crossentropii dla jednego przykładu (indeksy klas to ):ij

Li=jti,jlog(pi,j)

W normalnym ustawieniu wieloklasowym używasz softmax, dzięki czemu przewidywanie dla właściwej klasy jest bezpośrednio zależne od przewidywań dla innych klas. Jeśli zastąpisz softmax przez sigmoid, nie jest to już prawdą, więc negatywne przykłady (gdzie ) nie są już używane w treningu! Dlatego musisz przejść na binarną crosssentropy, która wykorzystuje zarówno pozytywne, jak i negatywne przykłady: ti,j=0Li=jti,jlog(pi,j)j(1ti,j)log(1pi,j)

robintibor
źródło
dlaczego musimy używać binarnej crossentropy zamiast kategorycznej crossentropy jako funkcji straty? czy możesz to bardziej wyjaśnić ? Teraz używam aktywacji sigmoid @robintibor
voxter 11.04.17
Dodałem wyjaśnienie do odpowiedzi @ voxter
robintibor
Znakomity ! Dziękuję Ci. Czy możesz również podać dokumenty lub samouczki, które wyjaśniają więcej matematyki na temat funkcji w nauce głębokiej, tak jak to wyjaśniłeś?
voxter