Sieć neuronowa: do klasyfikacji binarnej użyj 1 lub 2 neuronów wyjściowych?

26

Załóżmy, że chcę dokonać klasyfikacji binarnej (coś należy do klasy A lub klasy B). Istnieje kilka możliwości, aby to zrobić w warstwie wyjściowej sieci neuronowej:

  • Użyj 1 węzła wyjściowego. Wyjście 0 (<0,5) jest uważane za klasę A, a 1 (> = 0,5) jest uważane za klasę B (w przypadku sigmoidu)

  • Użyj 2 węzłów wyjściowych. Dane wejściowe należą do klasy węzła o najwyższej wartości / prawdopodobieństwie (argmax).

Czy są jakieś artykuły, w których (również) o tym dyskutuje? Jakie są konkretne słowa kluczowe do wyszukania?

To pytanie zostało już zadane wcześniej na tej stronie, np. Zobacz ten link bez prawdziwych odpowiedzi. Muszę dokonać wyboru (praca magisterska), więc chcę uzyskać wgląd w zalety / wady / ograniczenia każdego rozwiązania.

Robert
źródło
Myślę, że OP powiązanego pytania ma dobrą rację, jedyną różnicą jest to, że wybór 2 ma większą liczbę parametrów, jest bardziej elastyczny, ale jest bardziej podatny na nadmierne dopasowanie.
dontloo
1
W Udacity ML Nanodegree dowiedziałem się, że lepiej jest użyć jednego węzła wyjściowego, jeśli wynik jest wzajemnie wykluczający, ponieważ sieć ma mniej błędów, które może popełnić.
Wydaje

Odpowiedzi:

25

W drugim przypadku prawdopodobnie piszesz o funkcji aktywacji softmax. Jeśli to prawda, sigmoid jest tylko specjalnym przypadkiem funkcji softmax. Łatwo to pokazać.

y=11+mi-x=11+1mix=1mix+1mix=mix1+mix=mixmi0+mix

Jak widać sigmoid jest taki sam jak softmax. Możesz myśleć, że masz dwa wyjścia, ale jedno z nich ma wszystkie wagi równe zero, a zatem jego wynik będzie zawsze równy zero.

Dlatego lepszym wyborem do klasyfikacji binarnej jest użycie jednej jednostki wyjściowej z sigmoidem zamiast softmax z dwiema jednostkami wyjściowymi, ponieważ będzie aktualizować się szybciej.

itdxer
źródło
Kiedy mówisz, że jeden z nich ma wszystkie wagi zero, czy masz na myśli, że model nie wziął nawet pod uwagę jednej z klas podczas treningu? Czy w praktyce możemy rzeczywiście trenować ten binarny klasyfikator za pomocą tylko jednej klasy danych treningowych?
deadcode
x>0x<0x0
1
Zauważ, że istnieją zdegenerowane rozwiązania postaci exp(x+alpha) / (exp(alpha) + exp(x+alpha))- w rzeczywistości nieskończona ich liczba - wszystkie dające taki sam wynik klasyfikacji, jak ten zanotowany przy wagach wszystkich 0. Wagi prawdopodobnie nie będą trenować do zera, ale będą trenować zamiast do zdegenerowania dzięki rozwiązaniu, które ma wszystkie wadze 0. Unikaj (niepotrzebnych i marnotrawczych) zdegenerowanych rozwiązań, używając tylko jednego neuronu wyjściowego.
Dan Nissenbaum
2

Algorytmy uczenia maszynowego, takie jak klasyfikatory, modelują statystycznie dane wejściowe tutaj, określając prawdopodobieństwo danych wejściowych należących do różnych kategorii. W przypadku dowolnej liczby klas zwykle do modelu dołączana jest warstwa softmax, dzięki czemu dane wyjściowe miałyby z założenia właściwości probabilistyczne:

y=softmax(za)1jami-zaja×[mi-za1,mi-za2),...,mi-zan]

0yja1 dla wszystkich ja
y1+y2)+...+yn=1

za

Jest to całkowicie poprawne dla dwóch klas, jednak można również użyć jednego neuronu (zamiast dwóch), ponieważ jego wynik spełnia:

0y1 dla wszystkich danych wejściowych.
zay

sigmoid(za)σ(za)11+mi-za

użyteczne właściwości matematyczne (różnicowanie, granice między 0 a 1 itd.), wydajność obliczeniowa i właściwe nachylenie, tak że aktualizacja wag sieci miałaby niewielką, ale mierzalną zmianę w celu optymalizacji.

Wniosek

Nie jestem pewien, czy rozumowanie @ itdxera, które pokazuje softmax i sigmoid, jest równoważne, jeśli jest poprawne, ale ma rację, wybierając 1 neuron w przeciwieństwie do 2 neuronów dla klasyfikatorów binarnych, ponieważ potrzeba mniej parametrów i obliczeń. Zostałem również skrytykowany za użycie dwóch neuronów do binarnego klasyfikatora, ponieważ „jest zbyteczny”.

Milady
źródło