Jak skonfigurować sieć neuronową do generowania danych porządkowych?

20

Mam sieć neuronową skonfigurowaną do przewidywania czegoś, gdzie zmienna wyjściowa jest porządkowa. Opiszę poniżej, używając trzech możliwych wyjść A <B <C.

Jest całkiem oczywiste, jak używać sieci neuronowej do generowania danych kategorycznych: dane wyjściowe to tylko softmax ostatniej (zwykle w pełni połączonej) warstwy, jednej na kategorię, a przewidywana kategoria to ta o największej wartości wyjściowej (jest to domyślne w wielu popularnych modelach). Korzystałem z tego samego ustawienia dla wartości porządkowych. Jednak w tym przypadku wyjścia często nie mają sensu, na przykład wyjścia sieciowe dla A i C są wysokie, ale B jest niskie: nie jest to prawdopodobne w przypadku wartości porządkowych.

Mam na to jeden pomysł, który polega na obliczeniu straty na podstawie porównania wyników z 1 0 0 dla A, 1 1 0 dla B i 1 1 1 dla C. Dokładne progi można później wyregulować za pomocą innego klasyfikatora (np. Bayesian ), ale wydaje się, że odzwierciedla to zasadniczą ideę uporządkowania danych wejściowych, bez określania jakiejkolwiek konkretnej skali przedziałów.

Jaki jest standardowy sposób rozwiązania tego problemu? Czy są jakieś badania lub referencje opisujące zalety i wady różnych podejść?

Alex I.
źródło
1
Dostałem wiele interesujących trafień w Google za „porządek regresji logistycznej”, np. Ten artykuł
shadowtalker
@ssdecontrol: Interesujące. Próbowałem tego; wyniki były lepsze niż wybranie jednego wyjścia o najwyższej wartości, ale nieco gorsze niż w przypadku innych metod (naiwne bayesowskie itp.). Jest to przydatne, ale nie pomaga w szkoleniu sieci, tylko nieznacznie poprawia wyniki po fakcie ... a przynajmniej nie wiem, jak to zrobić, aby pomóc w szkoleniu sieci.
Alex I
które „to” próbowałeś? Chodzi mi tylko o to, że wyszukiwarka może być bardziej pomocna niż można się spodziewać
shadowtalker
Nie jestem również pewien, czy rozumiem, co rozumiesz przez „na przykład, wyjścia sieciowe dla A i C są wysokie, ale B jest niskie: to nie jest prawdopodobne”. Masz na myśli, że przewidujesz wiele As i C, ale kilka Bs? Nie rozumiem, dlaczego byłoby to niewiarygodne, chyba że masz merytoryczny lub specyficzny dla domeny powód, aby tak myśleć
shadowtalker
Nie wiem też, jak mógłbyś mieć wyjście takie jak „1 1 0”. Myślę, że jest tu trochę zamieszania co do terminologii. Czy opisujesz skumulowane wyniki porządkowe? Jak w skumulowanym modelu logit?
shadowtalker

Odpowiedzi:

15

Uważam, że większość ludzi robi po prostu traktowanie klasyfikacji porządkowej jako ogólnej klasyfikacji wieloklasowej. Tak więc, jeśli mają klasy , będą mieli wyjścia i po prostu użyją funkcji aktywacji sigmoidalnej (oczywiście nie softmax) i binarnej entropii krzyżowej jako straty.K.K.

Ale niektórym ludziom udało się wymyślić sprytne kodowanie dla twoich klas porządkowych (zobacz odpowiedź na stackoverflow ). To rodzaj kodowania „na gorąco”,

  • klasa 1 jest reprezentowana jako [0 0 0 0 ...]

  • klasa 2 jest reprezentowana jako [1 0 0 0 ...]

  • klasa 3 jest reprezentowana jako [1 1 0 0 ...]

tj. każdy neuron przewiduje prawdopodobieństwo . Nadal musisz użyć sigmoidu jako funkcji aktywacji, ale myślę, że to pomaga sieci zrozumieć ciągłość między klasami, nie wiem. Następnie wykonujesz post-processing ( ), aby przekonwertować dane binarne na klasy.P.(y^<k)np.sum

Ta strategia przypomina zespół Franka i Halla i myślę, że to pierwsza tego typu publikacja .

Ricardo Cruz
źródło
To podejście wydaje się znacznie bardziej atrakcyjne. Ważne jest, aby zdawać sobie sprawę, że użycie trybów przewidywanych, aby zmienić to w problem klasyfikacji, nie jest dobrym pomysłem. Przewidywane skumulowane prawdopodobieństwa można przekształcić w przewidywane indywidualne prawdopodobieństwa, a zatem funkcję narzędzia służącą do podjęcia ostatecznej decyzji można wstawić znacznie później, gdy narzędzia będą znane. Zobacz fharrell.com/post/classification .
Frank Harrell
1
@ RicardoCruz - Hmm, to brzmi bardzo podobnie do tego, co zasugerowałem: „1 0 0 dla A, 1 1 0 dla B i 1 1 1 dla C”. Dobrze wiedzieć, że to działa! Wow, to był artykuł z 2007 roku, ten pomysł istnieje od dawna
Alex I
Tak, byłem zaskoczony, kiedy znalazłem ten papier!
Ricardo Cruz
Uwaga: Jak stwierdzono w „Podejściu sieci neuronowej do regresji porządkowej”: „… użycie niezależnych funkcji sigmoidalnych dla węzłów wyjściowych nie gwarantuje relacji monotonicznej (o1> = o2> = ....> = oK), która jest niepotrzebne, ale pożądane do robienia prognoz ”. Dlatego samo wykonanie „np.sum” w czasie przewidywania nie jest najlepszą metodą.
sccrthlt,
1
Edytuj do mojego komentarza powyżej: Wykonywanie „np.sum” na wyjściach sieci neuronowej jest mylące. Następująca sytuacja może wystąpić, gdy wektor wyjściowy to [0 1 0 1 0]. Wykonanie sumowania na tym wektorze dałoby klasową prognozę 2, gdy w rzeczywistości sieć neuronowa nie jest pewna.
sccrthlt,