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.
Odpowiedzi:
W drugim przypadku prawdopodobnie piszesz o funkcji aktywacji softmax. Jeśli to prawda, sigmoid jest tylko specjalnym przypadkiem funkcji softmax. Łatwo to pokazać.
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.
źródło
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.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:
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:
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”.
źródło