Jestem świadomy spadku gradientu i algorytmu propagacji wstecznej. Nie rozumiem: kiedy ważne jest stosowanie uprzedzeń i jak z niego korzystać?
Na przykład, kiedy mapuję AND
funkcję, kiedy 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 odchylenie), daje prawidłowe wagi.
Odpowiedzi:
Myślę, że uprzedzenia są prawie zawsze pomocne. W efekcie wartość odchylenia pozwala przesunąć funkcję aktywacji w lewo lub w prawo , co może mieć kluczowe znaczenie dla pomyślnego uczenia się.
Może pomóc spojrzeć na prosty przykład. Rozważ tę 1-wejściową, 1-wyjściową sieć, która nie ma stronniczości:
Wydajność sieci jest obliczana przez pomnożenie wejścia (x) przez wagę (w 0 ) i przekazanie wyniku przez jakąś funkcję aktywacyjną (np. Funkcję sigmoidalną).
Oto funkcja obliczana przez tę sieć dla różnych wartości w 0 :
Zmiana ciężaru w 0 zasadniczo zmienia „stromość” sigmoidu. Jest to przydatne, ale co zrobić, jeśli chcesz, aby sieć wyświetlała 0, gdy x wynosi 2? Po prostu zmiana nachylenia sigmoidu tak naprawdę nie zadziała - chcesz przesunąć całą krzywą w prawo .
Właśnie na to pozwala ci stronniczość. Jeśli dodamy uprzedzenie do tej sieci, tak:
... wtedy wyjście sieci staje się sig (w 0 * x + w 1 * 1.0). Oto, jak wygląda wyjście sieci dla różnych wartości w 1 :
Posiadanie wagi -5 dla w 1 przesuwa krzywą w prawo, co pozwala nam mieć sieć, która wyprowadza 0, gdy x wynosi 2.
źródło
Żeby dodać moje dwa centy.
Prostszy sposób na zrozumienie, na czym polega odchylenie: jest on w pewien sposób podobny do stałej b funkcji liniowej
y = ax + b
Pozwala przesuwać linię w górę i w dół, aby lepiej dopasować prognozę do danych. Bez b linia zawsze przechodzi przez początek (0, 0) i możesz uzyskać gorsze dopasowanie.
źródło
Ten wątek naprawdę pomógł mi opracować własny projekt. Oto kilka dalszych ilustracji pokazujących wynik prostej 2-warstwowej sieci neuronowej z przewijaniem do przodu i bez jednostek odchylenia na problem regresji dwóch zmiennych. Wagi są inicjowane losowo i używana jest standardowa aktywacja ReLU. Jak doszły do mnie odpowiedzi, bez uprzedzeń sieć ReLU nie jest w stanie odejść od zera przy (0,0).
źródło
Powodem, dla którego jest to niepraktyczne, jest to, że 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 polaryzacji bez zmiany wartości pozwala aby kontrolować zachowanie warstwy.
Ponadto odchylenie pozwala na użycie jednej sieci neuronowej do reprezentowania podobnych przypadków. Rozważ funkcję logiczną AND reprezentowaną przez następującą sieć neuronową:
(źródło: aihorizon.com )
Próg to odchylenie, a w0 to ciężar związany z neuronem odchylenia / progu.
źródło
Odchylenie nie jest
NN
terminem, to ogólny termin algebry do rozważenia.Y = M*X + C
(równanie linii prostej)Teraz, jeśli
C(Bias) = 0
tak, linia zawsze przechodzi przez początek, tj.(0,0)
I zależy tylko od jednego parametru, tj. OdM
nachylenia, więc mamy mniej rzeczy do zabawy.C
, który jest stronniczy, przyjmuje dowolną liczbę i ma działanie, aby przesunąć wykres, a zatem może reprezentować bardziej złożone sytuacje.W regresji logistycznej oczekiwana wartość celu jest przekształcana przez funkcję link, aby ograniczyć jego wartość do przedziału jednostkowego. W ten sposób prognozy modelu mogą być postrzegane jako podstawowe prawdopodobieństwa wyniku, jak pokazano: Funkcja sigmoidalna na Wikipedii
Jest to ostatnia warstwa aktywacyjna na mapie NN, która włącza i wyłącza neuron. W tym przypadku ważną rolę odgrywa również stronniczość i elastycznie przesuwa krzywą, aby pomóc nam zmapować model.
źródło
Warstwa w sieci neuronowej bez uprzedzeń to nic innego jak zwielokrotnienie wektora wejściowego z macierzą. (Wektor wyjściowy może zostać przepuszczony przez funkcję sigmoidalną w celu normalizacji i późniejszego zastosowania w wielowarstwowym ANN, ale to nie jest ważne).
Oznacza to, że używasz funkcji liniowej, a zatem wejście wszystkich zer zawsze będzie mapowane 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 odchylenia, skutecznie dodajesz inny wymiar do przestrzeni wejściowej, która zawsze przyjmuje wartość jeden, więc unikasz wektora wejściowego wszystkich zer. Dzięki temu nie tracisz ogólności, ponieważ twoja wyuczona macierz masy nie musi być zaskakująca, więc nadal można odwzorować na wszystkie wcześniej możliwe wartości.
2d ANN:
W przypadku ANN odwzorowującej dwa wymiary na jeden wymiar, np. Przy odtwarzaniu funkcji AND lub OR (lub XOR), możesz myśleć o sieci neuronowej, wykonując następujące czynności:
Na płaszczyźnie 2d zaznacz wszystkie pozycje wektorów wejściowych. Tak więc, dla wartości boolowskich, chciałbyś zaznaczyć (-1, -1), (1,1), (-1,1), (1, -1). Teraz twoja ANN rysuje linię prostą na płaszczyźnie 2d, oddzielając dodatni wynik od ujemnych wartości wyjściowych.
Bez uprzedzeń ta prosta linia musi przejść przez zero, podczas gdy dzięki uprzedzeniom możesz ją umieścić w dowolnym miejscu. Tak więc zobaczysz, że bez uprzedzeń masz problem z funkcją AND, ponieważ nie możesz umieścić zarówno (1, -1), jak i (-1,1) na stronie negatywnej. (Nie mogą znajdować się w linii.) Problem jest taki sam dla funkcji OR. Jednak z nastawieniem łatwo jest wyznaczyć granicę.
Zauważ, że funkcja XOR w tej sytuacji nie może zostać rozwiązana nawet przy odchyleniu.
źródło
Korzystając z ANN, rzadko znasz wewnętrzne elementy systemów, których chcesz się nauczyć. Niektórych rzeczy nie można się nauczyć bez uprzedzeń. Np. Spójrz na następujące dane: (0, 1), (1, 1), (2, 1), w zasadzie funkcja odwzorowująca dowolny x na 1.
Jeśli masz sieć jednowarstwową (lub mapowanie liniowe), nie możesz znaleźć rozwiązania. Jeśli jednak masz uprzedzenia, jest to banalne!
W idealnym ustawieniu odchylenie może również odwzorować wszystkie punkty na średnią punktów docelowych i pozwolić ukrytym neuronom modelować różnice od tego punktu.
źródło
Modyfikacja samych WAG neuronów służy jedynie do manipulowania kształtem / krzywizną funkcji przenoszenia, a nie jej równowagą / punktem przecięcia zera .
Wprowadzenie neuronów polaryzacji umożliwia przesunięcie krzywej funkcji przenoszenia w poziomie (w lewo / w prawo) wzdłuż osi wejściowej, pozostawiając niezmieniony kształt / krzywiznę. Umożliwi to sieci generowanie dowolnych wyników innych niż domyślne, a zatem można dostosować / przesunąć mapowanie danych wejściowych do wyjściowych w celu dostosowania do konkretnych potrzeb.
Zobacz tutaj objaśnienia graficzne: http://www.heatonresearch.com/wiki/Bias
źródło
Żeby 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 chcieć używać uprzedzeń. Teoretycznie w ten sposób twoja sieć będzie bardziej niezależna od wielkości danych, jak w przypadku, czy obraz jest ciemny, czy jasny i żywy. A sieć nauczy się wykonywać swoją pracę poprzez badanie względności wewnątrz danych. Wykorzystuje to wiele nowoczesnych sieci neuronowych.
W przypadku innych danych tendencyjne mogą być krytyczne. To zależy od rodzaju danych, z którymi masz do czynienia. Jeśli twoja informacja jest niezmienna względem wielkości --- jeśli wpisanie [1,0,0.1] powinno prowadzić do takiego samego wyniku, jak w przypadku wpisania [100,0,10], lepiej byłoby bez uprzedzeń.
źródło
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.
Może to być bardzo zależne od architektury sieci / zestawu danych.
źródło
Odchylenie decyduje o ile kąta chcesz obrócić swoją wagę.
W dwuwymiarowym wykresie waga i odchylenie pomagają nam znaleźć granicę decyzyjną wyników. Powiedzmy, że musimy zbudować funkcję AND, para wejściowa (p) -wyjście (t) powinna być
Teraz musimy znaleźć granicę decyzji, granicą idei powinna być:
Widzieć? W jest prostopadła do naszej granicy. Mówimy więc, że W zdecydował o kierunku granicy.
Jednak za pierwszym razem trudno jest znaleźć prawidłowe W. Najczęściej wybieramy oryginalną wartość W losowo. Zatem pierwsza granica może być następująca:
Teraz granica jest prostsza do osi y.
Chcemy obrócić granicę, jak?
Zmieniając W.
Tak więc używamy funkcji reguły uczenia się: W '= W + P:
Dlatego zmieniając wartość b (odchylenie), możesz zdecydować o kącie między W 'a W. To jest „reguła uczenia się ANN”.
Możesz także przeczytać Neural Network Design autorstwa Martina T. Hagana / Howarda B. Demutha / Marka H. Beale'a, rozdział 4 „Reguła uczenia się perceptronu”
źródło
W szczególności, Nate'a odpowiedź , zfy za odpowiedź , a pradi za odpowiedź są świetne.
Mówiąc prościej, odchylenia pozwalają na naukę / przechowywanie coraz większej liczby odmian wag ... ( uwaga dodatkowa : czasami z pewnym progiem). W każdym razie, więcej odmian oznacza, że uprzedzenia dodają bogatszej reprezentacji przestrzeni wejściowej do wyuczonych / zapisanych wag modelu. (Gdzie większe ciężary mogą zwiększyć siłę zgadywania sieci neuronowej)
Na przykład w modelach uczenia się hipoteza / przypuszczenie jest korzystnie ograniczona przez y = 0 lub y = 1, biorąc pod uwagę pewien wkład, w być może w pewnym zadaniu klasyfikacji ... tj. Jakieś y = 0 dla niektórych x = (1,1) i niektórych 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 konfigurują X jako x = podwójny lub 2-wartościowy wektor zamiast wejściowych x wartości Nate'a z pewnej kolekcji X).
Jeśli zignorujemy błąd , wiele danych wejściowych może być reprezentowanych przez wiele takich samych wag (tzn. Wyuczone wagi występują najczęściej w pobliżu początku (0,0). Model byłby wówczas ograniczony do mniejszych ilości dobrych wag, zamiast wielu, wielu innych dobrych ciężarów, mógłby lepiej uczyć się z tendencyjnością (tam gdzie źle wyuczone ciężary prowadzą do gorszych domysłów lub zmniejszenia siły zgadywania sieci neuronowej)
Optymalne jest zatem, aby model uczył się zarówno blisko początku, ale także w jak największej liczbie miejsc w granicach progu / decyzji. Dzięki odchyleniu możemy umożliwić stopnie swobody blisko źródła, ale nie ograniczając się do jego najbliższego regionu.
źródło
Rozwijanie wyjaśnienia @zfy ... Równanie dla jednego wejścia, jednego neuronu, jednego wyjścia powinno wyglądać:
gdzie x jest wartością z węzła wejściowego, a 1 jest wartością węzła polaryzacji; y może być bezpośrednio twoim wyjściem lub zostać przekazane do funkcji, często funkcji sigmoidalnej. Zauważ też, że odchylenie może być dowolne, ale aby uprościć wszystko, zawsze wybieramy 1 (i prawdopodobnie jest to tak częste, że @zfy zrobił to bez pokazywania i wyjaśniania).
Twoja sieć próbuje poznać współczynniki aib, aby dostosować się do twoich danych. Możesz więc 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 przechwytywanie.Jeśli masz więcej niż jedno wejście, twoje równanie będzie wyglądać następująco:
Zauważ, że równanie wciąż opisuje jeden neuron, jedną sieć wyjściową; jeśli masz więcej neuronów, po prostu dodajesz jeden wymiar do macierzy współczynników, aby multipleksować dane wejściowe do wszystkich węzłów i sumować wkład każdego węzła.
Że możesz pisać w formacie wektorowym jako
tzn. umieszczając współczynniki w jednej tablicy i (dane wejściowe + odchylenie) w innym masz pożądane rozwiązanie jako iloczyn kropkowy dwóch wektorów (musisz transponować X, aby kształt był poprawny, napisałem XT a X transponowane)
Tak więc na koniec możesz również zobaczyć swoje uprzedzenie, ponieważ jest to tylko jedno wejście, które reprezentuje część wyniku, która jest faktycznie niezależna od twojego wkładu.
źródło
Inne niż wspomniane odpowiedzi. Chciałbym dodać kilka innych punktów.
Odchylenie jest naszą kotwicą. Jest to dla nas sposób na ustanowienie pewnego rodzaju linii bazowej, w której nie schodzimy poniżej tego. Jeśli chodzi o wykres, pomyśl o tym, że y = mx + b to jak przecięcie y tej funkcji.
wyjście = wartość wejściowa pomnożona przez wartość masy i dodana wartość odchylenia, a następnie zastosowanie funkcji aktywacji.
źródło
Aby myśleć w prosty sposób, jeśli masz y = w1 * x, gdzie y jest twoją wydajnością, a w1 jest wagą, wyobraź sobie warunek, w którym x = 0, wtedy y = w1 * x wynosi 0 , jeśli chcesz zaktualizować swoją wagę, masz aby obliczyć, ile zmian przez delw = cel-y, gdzie cel jest wynikiem docelowym, w tym przypadku „delw” nie zmieni się, ponieważ y jest obliczane jako 0. Tak, załóżmy, że jeśli możesz dodać jakąś dodatkową wartość, pomoże y = w1 * x + w0 * 1 , gdzie odchylenie = 1 i wagę można dostosować, aby uzyskać prawidłowe odchylenie. Rozważ poniższy przykład.
Pod względem linii przecięcie nachylenia jest specyficzną formą równań liniowych.
y = mx + b
sprawdź obraz
wizerunek
tutaj b wynosi (0,2)
jeśli chcesz go zwiększyć do (0,3), jak to zrobisz, zmieniając wartość b, która będzie twoim nastawieniem
źródło
Dla wszystkich książek ML, które badałem, W jest zawsze definiowane 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ą przekazywane z neuronu strzelającego do neuronu docelowego lub Y = w * X w celu utrzymania biologicznego charakteru neuronów, musimy zachować 1> = W> = -1, ale w prawdziwej regresji, W skończy się na | W | > = 1, co jest sprzeczne z działaniem neuronów, w rezultacie proponuję W = cos (theta), a 1> = | cos (theta) | , a Y = a * X = W * X + b, podczas gdy a = b + W = b + cos (theta), b jest liczbą całkowitą
źródło
W sieciach neuronowych:
W przypadku braku stronniczości neuron nie może zostać aktywowany, biorąc pod uwagę tylko ważoną sumę z warstwy wejściowej. Jeśli neuron nie zostanie aktywowany, informacja z tego neuronu nie zostanie przekazana przez resztę sieci neuronowej.
Wartość uprzedzeń jest możliwa do nauczenia.
Skutecznie odchylenie = - próg. Możesz myśleć o odchyleniu jako o tym, jak łatwo jest uzyskać neuron, aby wyprowadził 1 - z naprawdę dużym odchyleniem, neuron jest bardzo łatwy do wyprowadzenia 1, ale jeśli odchylenie jest bardzo ujemne, to jest trudne.
Podsumowując: stronniczość pomaga kontrolować wartość, przy której zadziała funkcja aktywacji.
Śledź ten film, aby uzyskać więcej informacji
Kilka bardziej przydatnych linków:
geeksforgeeks
w kierunku danych
źródło
a
trenować odchylenie, gdy gradient doa
jest zawsze stały?Termin bias jest używany do dostosowania ostatecznej macierzy wyjściowej, tak jak robi to punkt przecięcia y. Na przykład, w klasycznym równaniu, y = mx + c, jeśli c = 0, to linia zawsze przechodzi przez 0. Dodanie terminu polaryzacji zapewnia większą elastyczność i lepsze uogólnienie w naszym modelu sieci neuronowej.
źródło
Ogólnie rzecz biorąc, w uczeniu maszynowym mamy tę podstawową formułę Kompromis odchylenie-odchylenie Ponieważ w NN mamy problem z przeregulowaniem (problem generalizacji modelu, w którym niewielkie zmiany w danych prowadzą do dużych zmian wyniku modelu) i z tego powodu mamy dużą wariancję, wprowadzając małe uprzedzenie może bardzo pomóc. Biorąc pod uwagę powyższą formułę Kompromis odchylenie-odchylenie , w którym odchylenie jest podniesione do kwadratu, zatem wprowadzenie małego odchylenia może znacznie zmniejszyć wariancję. Tak więc, wprowadzaj uprzedzenia, gdy masz dużą wariancję i przerastasz niebezpieczeństwo.
źródło
Odchylenie pomaga uzyskać lepsze równanie
Wyobraź sobie wejście i wyjście jak funkcję
y = ax + b
i musisz umieścić właściwą linię między wejściem (x) a wyjściem (y), aby zminimalizować błąd globalny między każdym punktem a linią, jeśli zachowasz takie równaniey = ax
, będziesz miał tylko jeden parametr do adaptacji, nawet jeśli znajdziesz najlepszya
minimalizujący błąd globalny, będzie to w pewnym sensie dalekie od pożądanej wartościMożna powiedzieć, że odchylenie sprawia, że równanie jest bardziej elastyczne, aby dostosować się do najlepszych wartości
źródło