Rola Bias w sieciach neuronowych

Jestem świadomy spadku gradientu i teorii propagacji wstecznej. To czego nie rozumiem to: kiedy używanie stronniczości jest ważne i jak go używać?

Na przykład, podczas mapowania funkcji AND, gdy używam 2 wejść i 1 wyjścia, nie podaje ona prawidłowych wag, jednak gdy używam 3 wejść (z których 1 jest biasem), podaje poprawne wagi.

Author: Salvador Dali, 2010-03-20

16 answers

Myślę, że uprzedzenia są prawie zawsze pomocne. W efekcie wartość błędu pozwala na przesunięcie funkcji aktywacji w lewo lub w prawo, co może mieć kluczowe znaczenie dla pomyślnego uczenia się.

Przydałoby się spojrzeć na prosty przykład. Rozważmy tę sieć 1-wejściową, 1-wyjściową, która nie ma błędu:

prosta sieć

Wyjście sieci jest obliczane przez pomnożenie wejścia (x) przez wagę (w0) i przekazywanie wyniku przez jakąś aktywację funkcja (np. funkcja sigmoidalna.)

Oto funkcja, którą oblicza ta sieć, dla różnych wartości w0:

wyjście sieciowe, biorąc pod uwagę różne wagi w0

Zmiana wagi w0 zasadniczo zmienia "stromość" esicy. To jest przydatne, ale co jeśli chcesz, aby sieć wychodziła 0, gdy x jest 2? Po prostu zmiana stromości esicy nie zadziała --chcesz być w stanie przesunąć całą krzywą w prawo.

To jest dokładnie to, co bias pozwala ci to zrobić. Jeśli dodamy stronniczość do tej sieci, w ten sposób:

prosta sieć z tendencją

...wtedy wyjście sieci staje się sig (w0*x + w1*1.0). Oto jak wygląda wyjście sieci dla różnych wartości w1:

wyjście sieciowe, biorąc pod uwagę różne wagi w1

O wadze -5 dla w1 przesuwa krzywą w prawo, co pozwala nam mieć sieć, która wyprowadza 0, gdy x jest 2.

 1034
Author: Nate Kohl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-22 00:49:22

Dodam tylko moje dwa grosze.

Prostszy sposób na zrozumienie, czym jest błąd: jest on w jakiś sposób podobny do stałej b funkcji liniowej

y = ax + b

Pozwala przesuwać linię w górę iw dół, aby lepiej dopasować prognozę do danych. Bez b linia zawsze przechodzi przez origin (0, 0) i możesz uzyskać gorsze dopasowanie.

 244
Author: zfy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-10 00:21:26

Dwa różne rodzaje parametrów mogą być dostosowane podczas szkolenia z ANN, waga i wartość w funkcje aktywacji. To jest niepraktyczne i byłoby łatwiej, gdyby tylko jeden z parametrów powinien być / align = "left" / Aby poradzić sobie z tym problemem a wynaleziono neuron bias. The bias neuron leży w jednej warstwie, jest połączony do wszystkich neuronów w następnej warstwie, ale żaden w poprzedniej warstwie i to zawsze emituje 1. Ponieważ neuron bias emituje 1 wagi, połączone z bias neuron, są dodawane bezpośrednio do łączna suma pozostałych wag (równanie 2.1), podobnie jak wartość t w funkcjach aktywacji.1

Jest to niepraktyczne, ponieważ jednocześnie dostosowujesz wagę i wartość, więc każda zmiana wagi może zneutralizować zmianę wartości, która była użyteczna dla poprzedniej instancji danych... dodanie neuronu bias bez zmieniającej się wartości pozwala kontrolować zachowanie warstwa.

Ponadto bias pozwala na użycie pojedynczej sieci neuronowej do reprezentowania podobnych przypadków. Rozważmy funkcję logiczną AND reprezentowaną przez następującą sieć neuronową:

ANN http://www.aihorizon.com/images/essays/perceptron.gif

  • w0 odpowiada b .
  • w1 odpowiada x1 .
  • w2 odpowiada x2 .

A single perceptron może być używany do reprezentują wiele funkcji logicznych.

Na przykład, jeśli przyjmiemy wartości boolean z 1 (true) I -1 (false), następnie jeden sposób użycia perceptronu z dwoma wejściami do zaimplementować funkcję i jest ustawienie wagi w0 = -3 i w1 = W2 = .5. Perceptron ten może być wykonany do reprezentować funkcję OR zamiast przez zmiana progu na w0 = -.3. W fakt, oraz I lub można postrzegać jako szczególne przypadki funkcji m-Of-n: czyli funkcje, w których przynajmniej m z N wejścia do perceptronu muszą być prawda. Funkcja OR odpowiada m = 1 oraz funkcja i do m = n. Dowolna funkcja m-Of-n jest łatwo reprezentowane za pomocą perceptronu przez ustawianie wszystkich wag wejściowych na ten sam wartość (np. 0.5), a następnie ustawienie próg w0

Perceptrony mogą reprezentować wszystkie prymitywne funkcje boolowskie i, lub, NAND (1 AND) oraz NOR (1 OR). Uczenie Maszynowe-Tom Mitchell)

Próg jest bias i w0 to waga związana z neuronem bias/progowym.

 32
Author: Kiril,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-19 21:44:57

Warstwa w sieci neuronowej bez biasu jest niczym innym jak mnożeniem wektora wejściowego z macierzą. (Wektor wyjściowy może być przepuszczany przez funkcję sigmoidalną do normalizacji i do wykorzystania w ANN wielowarstwowych, ale to nie jest ważne.)

Oznacza to, że używasz funkcji liniowej, a zatem wejście wszystkich zer będzie zawsze odwzorowane na wyjście wszystkich zer. Może to być rozsądne rozwiązanie dla niektórych systemów, ale ogólnie jest zbyt restrykcyjne.

Używając biasu, skutecznie dodajesz inny wymiar do swojej przestrzeni wejściowej, która zawsze przyjmuje wartość 1, więc unikasz wektora wejściowego wszystkich zer. Nie tracisz przez to żadnej ogólności, ponieważ twoja trenowana macierz wagi nie musi być surjektywna, więc nadal może mapować wszystkie możliwe wcześniej wartości.

2D ANN:

Dla ANN odwzorowania dwóch wymiarów na jeden wymiar, jak w odwzorowaniu funkcji AND lub OR (lub XOR), można pomyśl o sieci neuronalnej jako wykonującej następujące czynności:

Na płaszczyźnie 2d Zaznacz wszystkie pozycje wektorów wejściowych. Zatem dla wartości logicznych warto zaznaczyć (-1,-1), (1,1), (-1,1), (1,-1). Twoja ANN rysuje teraz prostą linię na płaszczyźnie 2d, oddzielając wynik dodatni od wartości ujemnych.

Bez bias, ta prosta musi przejść przez zero, podczas gdy z bias, możesz umieścić go wszędzie. Więc zobaczysz, że bez uprzedzeń stoisz przed problemem z funkcją i, ponieważ nie można umieścić zarówno (1,-1) i (-1,1) na stronę ujemną. (Nie mogą być na linii.) Problem jest równy dla funkcji OR. Jednak z tendencją łatwo jest narysować linię.

Zauważ, że funkcja XOR w tej sytuacji nie może być rozwiązana nawet przy bias.

 16
Author: Debilski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-19 22:45:06

Kiedy używasz ANNs, rzadko wiesz o wewnętrznych systemach, których chcesz się nauczyć. Pewnych rzeczy nie da się nauczyć bez uprzedzeń. Na przykład, spójrz na następujące dane: (0, 1), (1, 1), (2, 1), zasadniczo funkcja, która mapuje dowolny x do 1.

Jeśli masz sieć jednowarstwową (lub mapowanie liniowe), nie możesz znaleźć rozwiązania. Jednak, jeśli masz stronniczość, to jest trywialne!

W idealnym ustawieniu, błąd może również odwzorować wszystkie punkty do średniej punktów docelowych i niech Ukryte neurony modelują różnice z tego punktu.

 14
Author: bayer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-21 21:40:17

Bias nie jest terminem NN, to ogólny termin algebry do rozważenia.

Y = M*X + C (równanie prostej)

Teraz jeśli C(Bias) = 0 wtedy, linia zawsze przechodzi przez początek, tzn. (0,0) i zależy tylko od jednego parametru, tzn. M, którym jest nachylenie, więc mamy mniej rzeczy do zabawy.

C, czyli bias bierze dowolną liczbę i ma aktywność do przesunięcia wykresu, a tym samym może reprezentować bardziej złożone sytuacje.

W regresji logistycznej, wartość oczekiwana celu jest przekształcana przez funkcję link, aby ograniczyć jego wartość do przedziału jednostkowego. W ten sposób przewidywania modelu mogą być postrzegane jako podstawowe prawdopodobieństwo wyniku, jak pokazano: funkcja Sigmoid na Wikipedii

Jest to ostatnia warstwa aktywacyjna w mapie NN, która włącza i wyłącza neuron. Tutaj również bias ma do odegrania rolę i elastycznie przesuwa krzywą, aby pomóc nam zmapować model.

 11
Author: Pradi KL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-15 06:13:42

Aby dodać do tego wszystkiego coś, czego bardzo brakuje, a czego reszta, najprawdopodobniej, nie wiedziała.

Jeśli pracujesz z obrazami, możesz w ogóle nie używać stronniczości. Teoretycznie w ten sposób Twoja sieć będzie bardziej niezależna od wielkości danych, np. od tego, czy obraz jest ciemny, czy jasny i żywy. A sieć nauczy się wykonywać swoją pracę poprzez badanie teorii względności wewnątrz danych. Wykorzystuje to wiele nowoczesnych sieci neuronowych.

Dla inne dane posiadające uprzedzenia mogą być krytyczne. To zależy od rodzaju danych, z którymi masz do czynienia. Jeśli informacje są niezmienne wielkości - - - jeśli wprowadzenie [1,0,0.1] powinno prowadzić do tego samego wyniku, jak gdyby wprowadzenie [100,0,10], może być lepiej bez uprzedzenia.

 8
Author: Íhor Mé,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-20 19:55:33

W kilku eksperymentach w mojej pracy magisterskiej (np. strona 59), odkryłem, że stronniczość może być ważna dla pierwszej warstwy(s), ale zwłaszcza w pełni połączonych warstw na końcu wydaje się nie odgrywać dużej roli.

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

 7
Author: Martin Thoma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-01 17:09:42

Modyfikacja samych wag neuronów służy jedynie do manipulowania kształtem/krzywizną twojej funkcji przeniesienia, a nie jej równowagą/zerowym punktem przecięcia.

Wprowadzeniebias neuronów pozwala na przesunięcie krzywej funkcji transferu poziomo (lewo/prawo) wzdłuż osi wejściowej, pozostawiając kształt/krzywiznę niezmienioną. Pozwoli to sieci do wytwarzania dowolnych wyjść różniących się od domyślnych, a tym samym można dostosować / przesunąć mapowanie wejścia-wyjścia dostosowane do konkretnych potrzeb.

Zobacz tutaj graficzne Wyjaśnienie: http://www.heatonresearch.com/wiki/Bias

 7
Author: Oke Uwechue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-08 07:49:24

Rozszerzenie na Wyjaśnienie @zfy... Równanie dla jednego wejścia, jednego neuronu, jednego wyjścia powinno wyglądać:

y = a * x + b * 1    and out = f(y)

Gdzie x jest wartością z węzła wejściowego, a 1 jest wartością węzła bias; y może być bezpośrednio wyjście lub być przekazywane do funkcji, często funkcja sigmoid. Zauważ również, że stronniczość może być dowolną stałą, ale dla uproszczenia zawsze wybieramy 1 (i prawdopodobnie jest to tak powszechne, że @zfy zrobił to bez pokazywania i wyjaśniania).

Twoja sieć próbuje aby poznać współczynniki a i b, aby dostosować się do Twoich danych. Więc możesz zobaczyć, dlaczego dodanie elementu b * 1 pozwala lepiej dopasować go do większej ilości danych: teraz możesz zmienić zarówno nachylenie, jak i przechwycenie.

Jeśli masz więcej niż jedno wejście Twoje równanie będzie wyglądało następująco:

y = a0 * x0 + a1 * x1 + ... + aN * 1

Zauważ, że równanie nadal opisuje jeden neuron, jedną sieć wyjściową; jeśli masz więcej neuronów, po prostu dodaj jeden wymiar do macierzy współczynnika, aby multipleksować wejścia do wszystkich węzłów i zsumować każdy węzeł wkład.

Które można zapisać w formacie wektorowanym jako

A = [a0, a1, .., aN] , X = [x0, x1, ..., 1]
Y = A . XT

Tzn. umieszczając współczynniki w jednej tablicy i (wejścia + bias) w innej masz swoje pożądane rozwiązanie jako iloczyn punktowy dwóch wektorów (musisz transponować X, aby kształt był poprawny, napisałem XT a 'X transponowany')

Więc w końcu możesz również zobaczyć swój błąd, ponieważ jest tylko jeszcze jedno wejście, aby reprezentować część wyjścia, która jest rzeczywiście niezależna od Twojego wejścia.

 4
Author: RobMcZag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-10 06:58:05

W szczególności, odpowiedź Nate ' a , odpowiedź zfy i odpowiedź Pradiego są świetne.

Mówiąc prościej, uprzedzenia pozwalają na coraz więcej odmian wag do nauki/przechowywania... ( side-note : czasami podano jakiś próg). W każdym razie, więcej wariacji oznacza, że błędy dodają bogatszą reprezentację przestrzeni wejściowej do wyuczonych/zapisanych wag modelu. (gdzie lepsze wagi mogą zwiększyć zgadywanie sieci neuronowej moc)

Na przykład w modelach uczenia się hipoteza / zgadywanie jest pożądane przez y=0 lub y = 1, biorąc pod uwagę pewne dane wejściowe, może w jakimś zadaniu klasyfikacyjnym... tzn. niektóre y = 0 dla niektórych x=(1,1) i niektóre y = 1 dla niektórych x=(0,1). (Warunkiem hipotezy / wyniku jest próg, o którym mówiłem powyżej. Zauważ, że moje przykłady ustawiają wejścia X na każdy x=Podwójny lub 2 wartościowy wektor, zamiast pojedynczych wartości x wejść jakiegoś zbioru X).

Jeśli zignorujemy stronniczość, wiele wejść może być reprezentowanych przez wiele tych samych wag (tzn. wyuczone wagi występują najczęściej blisko początku (0,0). Model byłby wtedy ograniczony do biedniejszych ilości dobrych wag, zamiast o wiele więcej dobrych wag mógłby lepiej nauczyć się z tendencją. W przeciwieństwie do tego, w jaki sposób sieć neuronowa działa, nie jest w stanie samodzielnie zgadywać.]}

Jest więc optymalne, aby model uczył się zarówno blisko pochodzenia, ale również w jak największej liczbie miejsc wewnątrz granicy progu / decyzji. z tendencją możemy włączyć stopnie swobody zbliżone do pochodzenia, ale nie ograniczone do najbliższego regionu pochodzenia.

 3
Author: Jordan Bennett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-06 11:11:51

Myśleć w prosty sposób, jeśli masz y=W1*x Gdzie y jest Twój wynik i w1 jest ciężar wyobraź sobie warunek gdzie x=0 wtedy y = W1*x równa się 0, Jeśli chcesz zaktualizować swoją wagę musisz obliczyć ile zmian przez delw=target-y gdzie target jest Twoim docelowym wynikiem, w tym przypadku 'delw' nie zmieni się, ponieważ y jest obliczane jako 0.So, Załóżmy, że jeśli możesz dodać jakąś dodatkową wartość, to pomoże y = W1*x+W0 * 1,gdzie bias = 1 i waga można dostosować, aby uzyskać poprawne bias.Rozważ poniższy przykład.

Pod względem nachylenia linii-intercept jest specyficzną formą równań liniowych.

y = mx + b

Sprawdź obrazek

Obraz

Oto b (0,2)

Jeśli chcesz zwiększyć ją do (0,3) jak to zrobisz zmieniając wartość b, która będzie twoim błędem

 2
Author: Yumlembam Rahul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-17 10:12:28

Dla wszystkich książek ML, które studiowałem, W jest zawsze definiowany jako wskaźnik łączności między dwoma neuronami, co oznacza, że im wyższa łączność między dwoma neuronami, tym silniejsze sygnały będą przesyłane z neuronu odpalającego do neuronu docelowego lub Y = W * X w wyniku zachowania biologicznego charakteru neuronów, musimy zachować 1 > =W > = -1, ale w prawdziwej regresji, w skończy się z |w / > = 1, co jest sprzeczne z tym, jak działają neurony, w rezultacie proponuję W = cos(theta) , natomiast 1 > = | cos( theta)| i Y = a * X = W * X + b podczas gdy a = b + W = B + cos (theta), b jest liczbą całkowitą

 2
Author: Edward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-10 20:19:55

Poza wymienionymi odpowiedziami..Chciałbym dodać kilka innych punktów.

Bias działa jako nasza Kotwica. To sposób na to, żebyśmy mieli jakiś punkt odniesienia, w którym nie schodzimy poniżej tego. Jeśli chodzi o Wykres, pomyśl jak y = mx + b to jest jak y-przechwycenie tej funkcji.

Output = input times the weight value and added a wartość biasu a następnie zastosuj funkcję aktywacji.

 2
Author: Naren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-08 10:51:55

Bias decyduje o tym, pod jakim kątem chcesz, aby Twoja waga się obracała.

W 2-wymiarowym wykresie waga i stronniczość pomagają nam znaleźć granicę decyzyjną wyjść. Powiedzmy, że musimy zbudować i funkcjonować, para input(p)-output(t) powinna być

{p=[0,0], t=0}, {p = [1,0], t=0}, {p=[0,1], t=0},{p=[1,1], t=1}

Tutaj wpisz opis obrazka

Teraz musimy znaleźć granicę decyzji, granica idei powinna być:

Tutaj wpisz opis obrazka

Widzisz? W jest prostopadle do naszej granicy. Tak więc mówimy, że W zdecydował kierunek granicy.

Jednak trudno znaleźć poprawne W za pierwszym razem. Najczęściej wybieramy oryginalną wartość W losowo. Tak więc pierwszą granicą może być to: Tutaj wpisz opis obrazka

Teraz granica jest parellerem do osi y.

Chcemy obrócić granicę, jak?

Zmieniając W.

Używamy więc funkcji reguły uczenia: W ' =W + P: Tutaj wpisz opis obrazka

W' = W + P jest równoważne W' = w + bP, natomiast b=1.

Dlatego, zmieniając wartość b (bias), możesz zdecydować o kącie między W ' A W. Jest to "reguła uczenia ANN".

Możesz również przeczytać projektowanie sieci neuronowych Martin T. Hagan / Howard B. Demuth / Mark H. Beale, Rozdział 4 "zasada uczenia się Perceptron"
 2
Author: Det2sial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-04 08:12:21

Ogólnie rzecz biorąc, w uczeniu maszynowym mamy tę podstawową formułę Bias-wariancja Tradeoff Ponieważ w NN mamy problem Overfittingu (problem uogólniania modelu, w którym małe zmiany w danych prowadzą do dużych zmian w wyniku modelu) i dlatego mamy dużą wariancję, wprowadzenie małego błędu może bardzo pomóc. Biorąc pod uwagę powyższy wzór odchylenie od wariancji , tam, gdzie bias jest kwadratowy, wprowadzenie małego biasu może prowadzić do znacznego zmniejszenia wariancji. Więc, wprowadzić stronniczość, gdy masz dużą wariancję i nadmierne niebezpieczeństwo.

 -3
Author: Euler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-14 20:23:59