Dlaczego w sieciach neuronowych wykorzystywane są węzły stronniczości?


29
  1. Dlaczego w sieciach neuronowych wykorzystywane są węzły stronniczości?
  2. Ile powinieneś użyć?
  3. Na jakich warstwach należy ich użyć: wszystkie ukryte warstwy i warstwa wyjściowa?

1
To pytanie jest nieco ogólne dla tego forum. Myślę, że najlepiej byłoby skonsultować się z podręcznikiem omawiającym sieci neuronowe, takim jak Bishop Neural Networks for Recognition lub Hagan Neural Network Design .
Sycorax mówi Przywróć Monikę

2
FTR, nie sądzę, że to jest zbyt szerokie.
gung - Przywróć Monikę

1
FYI: Rola
błędu

Odpowiedzi:


24

Węzeł polaryzacji w sieci neuronowej jest węzłem, który jest zawsze „włączony”. Oznacza to, że jego wartość jest ustawiona na bez względu na dane w danym wzorze. Jest analogiczny do przechwytywania w modelu regresji i pełni tę samą funkcję. Jeśli sieć neuronowa nie ma węzła polaryzacji w danej warstwie, nie będzie w stanie wygenerować wyniku w następnej warstwie, która różni się od 0 (w skali liniowej lub wartości odpowiadającej transformacji 0 po przejściu przez funkcja aktywacji), gdy wartości funkcji wynoszą 0 .1000

wprowadź opis zdjęcia tutaj

Rozważ prosty przykład: masz perceptron przekazywania z 2 węzłami wejściowymi i x 2 oraz 1 węzłem wyjściowym y . x 1 i x 2 są funkcjami binarnymi ustawionymi na poziomie odniesienia, x 1 = x 2 = 0 . Pomnóż te 2 0 przez dowolną wagę, w 1 i w 2 , zsumuj produkty i przekaż je przez dowolną preferowaną funkcję aktywacji. Bez węzła stronniczości tylko jedenx1x2yx1x2x1=x2=00w1w2możliwa jest wartość wyjściowa, co może powodować bardzo słabe dopasowanie. Na przykład, używając funkcji aktywacji logistycznej, musi wynosić .5 , co byłoby okropne przy klasyfikowaniu rzadkich zdarzeń.y.5

Węzeł stronniczości zapewnia znaczną elastyczność modelowi sieci neuronowej. W powyższym przykładzie jedyną przewidywaną proporcją możliwą bez węzła stronniczości było , ale w przypadku węzła stronniczości dowolna proporcja w ( 0 , 1 ) może być dopasowana do wzorów, w których x 1 = x 2 = 0 . Dla każdej warstwy j , w której dodawany jest węzeł polaryzacji, węzeł polaryzacji doda N j + 1 dodatkowe parametry / wagi do oszacowania (gdzie N j + 1 to liczba węzłów w warstwie j50%(0,1)x1=x2=0jNj+1Nj+1 ). Więcej parametrów do zainstalowania oznacza, że ​​szkolenie sieci neuronowej potrwa proporcjonalnie dłużej. Zwiększa także szansę na przeregulowanie, jeśli nie masz znacznie więcej danych niż wag do nauczenia się. j+1

Mając to na uwadze, możemy odpowiedzieć na Twoje wyraźne pytania:

  1. Dodano węzły odchylenia, aby zwiększyć elastyczność modelu w celu dopasowania do danych. W szczególności pozwala sieci dopasować dane, gdy wszystkie funkcje wejściowe są równe , i bardzo prawdopodobne jest zmniejszenie odchylenia dopasowanych wartości w innym miejscu w przestrzeni danych. 0
  2. Zazwyczaj pojedynczy węzeł odchylenia jest dodawany dla warstwy wejściowej i każdej ukrytej warstwy w sieci feedforward. Nigdy nie dodasz dwóch lub więcej do danej warstwy, ale możesz dodać zero. Całkowita liczba zależy zatem w dużej mierze od struktury sieci, chociaż mogą mieć zastosowanie inne czynniki. (Nie mam jasności co do sposobu dodawania węzłów stronniczości do struktur sieci neuronowych innych niż sprzężenie zwrotne).
  3. Przeważnie zostało to omówione, ale mówiąc wprost: nigdy nie dodamy węzła stronniczości do warstwy wyjściowej; to nie miałoby sensu.

Czy CNN różni się pod tym względem? od kiedy dodałem odchylenie do moich warstw konwekcyjnych, wydajność (dokładność) spada! a kiedy je usuwam, tak naprawdę idzie wyżej!
Rika

@Hossein, nie o tym wiem, ale możesz zadać nowe pytanie. Nie jestem ekspertem.
gung - Przywróć Monikę

Czy nadal potrzebowałbym węzłów odchylenia, jeśli moje dane wejściowe nigdy nie będą miały wartości 0?
alec_djinn

1
@alec_djinn, tak. Niemal na pewno model byłby stronniczy bez nich, nawet jeśli nigdy nie masz 0 dla wartości wejściowej. Analogicznie pomocne może być przeczytanie: Kiedy można usunąć punkt przecięcia w modelu regresji liniowej?
gung - Przywróć Monikę

1
1

2

Proste, krótkie odpowiedzi:

  1. Aby zmienić funkcję wprowadzania / być bardziej elastycznym na temat wyuczonej funkcji.
  2. Pojedynczy węzeł polaryzacji na warstwę.
  3. Dodaj je do wszystkich ukrytych warstw i warstwy wejściowej - z pewnymi przypisami

W kilku eksperymentach w mojej pracy magisterskiej (np. Str. 59) stwierdziłem, że stronniczość może być ważna dla pierwszej (ych) warstwy (warstw), ale szczególnie na w pełni połączonych warstwach na końcu wydaje się, że nie odgrywa ona dużej roli. Dlatego można je mieć na pierwszych kilku warstwach, a nie na ostatnich. Po prostu wytrenuj sieć, wykreśl rozkład wag węzłów polaryzacji i przycinaj je, jeśli wagi wydają się zbyt bliskie zeru.

Może to być bardzo zależne od architektury sieci / zestawu danych.


czy węzeł stronniczości miałby strzałki łączące się z nim z poprzedniej warstwy? lub po prostu przyczynia się do następnej warstwy, mnożąc jej wartość „1” przez wagę w ważonej sumie przekazanej do aktywacji. Odpowiedź na to pozwoli zaoszczędzić godziny, proszę o pomoc
krupesh Anadkat

1
Odchylenie jest tylko dodaną liczbą do aktywacji następnych warstw. Jednym ze sposobów wizualizacji jest posiadanie stałej 1wartości w poprzedniej warstwie i jednej wagi (jedna wartość odchylenia) dla każdej z następnych warstw neuronów.
Martin Thoma

2

W kontekście sieci neuronowych normalizacja partii jest obecnie złotym standardem w tworzeniu inteligentnych „węzłów polaryzacji”. Zamiast ograniczać wartość odchylenia neuronu, dostosowujesz kowariancję danych wejściowych neuronu. Tak więc w CNN można zastosować normalizację wsadową tylko między warstwą splotową a kolejną w pełni połączoną warstwą (powiedzmy ReLus). Teoretycznie wszystkie w pełni połączone warstwy mogą skorzystać z normalizacji partii, ale w praktyce staje się to bardzo kosztowne, ponieważ każda normalizacja partii ma swoje własne parametry.

Odnośnie do tego, dlaczego większość odpowiedzi już wyjaśniła, że ​​w szczególności neurony są podatne na nasycone gradienty, gdy sygnał wejściowy popycha aktywację do skrajności. W przypadku ReLu zostanie to przesunięte w lewo, dając gradient 0. Ogólnie, kiedy trenujesz model, najpierw normalizujesz dane wejściowe do sieci neuronowej. Normalizacja partii to sposób na normalizację danych wejściowych w sieci neuronowej, między warstwami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.