Sieci neuronowe: funkcje aktywacji

W poprzednim ćwiczeniu widziałeś, że samo dodanie ukrytych warstw do naszej sieci nie wystarczyło do przedstawienia nieliniowości. Operacje liniowe wykonywane na operacjach liniowych nadal są liniowe.

Jak skonfigurować sieć neuronową, aby uczyła się nieliniowych relacji między wartościami? Potrzebujemy sposobu na wprowadzenie nieliniowych operacji matematycznych do modelu.

Jeśli wydaje się to znajome, to dlatego, że na wcześniejszym etapie kursu zastosowaliśmy nieliniowe operacje matematyczne do wyników modelu liniowego. W module „Regresja logistyczna ” zaadaptowaliśmy model regresji liniowej, aby uzyskać wartość ciągłą od 0 do 1 (reprezentującą prawdopodobieństwo) poprzez przepuszczenie wyniku modelu przez funkcję sigmoidalną .

Możemy zastosować tę samą zasadę do naszej sieci neuronowej. Przyjrzyjmy się naszemu modelowi z ćwiczenia 2 , ale tym razem, przed wyprowadzeniem wartości każdego węzła, zastosujemy najpierw funkcję sigmoidalną:

Spróbuj prześledzić obliczenia każdego węzła, klikając przycisk >| (po prawej stronie przycisku odtwarzania). Przejrzyj operacje matematyczne wykonane w celu obliczenia wartości każdego węzła w panelu Obliczenia pod wykresem. Zwróć uwagę, że wynik każdego węzła jest teraz transformacją sigmoidalną liniowej kombinacji węzłów z poprzedniej warstwy, a wszystkie wartości wyjściowe są ściśnięte między 0 a 1.

W tym przypadku funkcja sigmoidalna pełni funkcję aktywacji sieci neuronowej, nieliniową transformację wartości wyjściowej neuronu przed przekazaniem tej wartości jako danych wejściowych do obliczeń kolejnej warstwy sieci neuronowej.

Teraz, gdy dodaliśmy funkcję aktywacji, dodawanie warstw ma większy wpływ. Nakładanie nieliniowości na nieliniowości pozwala nam modelować bardzo skomplikowane relacje między danymi wejściowymi a przewidywanymi danymi wyjściowymi. Krótko mówiąc, każda warstwa w efekcie uczy się bardziej złożonej funkcji wyższego poziomu na podstawie surowych danych wejściowych. Jeśli chcesz rozwinąć intuicję, jak to działa, zapoznaj się ze znakomitym wpisem na blogu Chrisa Olaha .

Typowe funkcje aktywacji

Trzy funkcje matematyczne powszechnie stosowane jako funkcje aktywacji to sigmoidalna, tanh i ReLU.

Funkcja sigmoidalna (omówiona powyżej) wykonuje następującą transformację na wejściu x, generując wartość wyjściową pomiędzy 0 i 1:

\[F(x)=\frac{1} {1+e^{-x}}\]

Oto wykres tej funkcji:

Rysunek 4. Wykres funkcji sigmoidalnej: krzywa w kształcie litery S, która asymptotycznie zbliża się do osi x, gdy x dąży do ujemnej nieskończoności i jest równa 1, gdy x dąży do nieskończoności.
Rysunek 4. Wykres funkcji sigmoidalnej.

Funkcja tanh (skrót od „hiperbolicznego tangensa”) przekształca dane wejściowe x w celu uzyskania wartości wyjściowej mieszczącej się w przedziale od –1 do 1:

\[F(x)=tanh(x)\]

Oto wykres tej funkcji:

Rysunek 5. Wykres funkcji tanh: nieco bardziej stroma krzywa w kształcie litery S niż funkcja sigmoidalna, która asymptotycznie dąży do -1, gdy x dąży do ujemnej nieskończoności i do 1, gdy x dąży do nieskończoności.
Rysunek 5. Wykres funkcji tanh.

Funkcja aktywacji prostowanych jednostek liniowych (w skrócie ReLU ) przekształca dane wyjściowe przy użyciu następującego algorytmu:

  • Jeżeli wartość wejściowa $x$ jest mniejsza niż 0, zwróć 0.
  • Jeżeli wartość wejściowa $x$ jest większa lub równa 0, zwróć wartość wejściową.

ReLU można przedstawić matematycznie za pomocą funkcji max():

$$F(x)=max(0,x)$$

Oto wykres tej funkcji:

Rysunek 6. Wykres funkcji ReLU: linia pozioma wzdłuż osi x od minus nieskończoności do 0, która staje się linią ukośną pionową w górę i w prawo o nachyleniu 1 (y=x) od 0 do nieskończoności.
Rysunek 6. Wykres funkcji ReLU.

ReLU często działa nieco lepiej jako funkcja aktywacji niż funkcja gładka, taka jak sigmoidalna czy tanh, ponieważ jest mniej podatna na problem zanikającego gradientu podczas treningu sieci neuronowej . ReLU jest również znacznie łatwiejsza do obliczenia niż te funkcje.

Inne funkcje aktywacji

W praktyce każda funkcja matematyczna może służyć jako funkcja aktywacji. Załóżmy, że \(\sigma\) reprezentuje naszą funkcję aktywacji. Wartość węzła w sieci jest dana następującym wzorem:

$$\sigma(\boldsymbol w \cdot \boldsymbol x+b)$$

Keras zapewnia gotowe wsparcie dla wielu funkcji aktywacji . Mimo to, nadal zalecamy rozpoczęcie od ReLU.

Streszczenie

Poniższy film przedstawia podsumowanie wszystkiego, czego dowiedziałeś się do tej pory na temat budowy sieci neuronowych:

Teraz nasz model zawiera wszystkie standardowe elementy tego, co ludzie zazwyczaj mają na myśli, gdy mówią o sieci neuronowej:

  • Zestaw węzłów, analogiczny do neuronów, zorganizowanych warstwowo.
  • Zestaw wyuczonych wag i odchyleń reprezentujących połączenia między każdą warstwą sieci neuronowej a warstwą poniżej niej. Warstwa poniżej może być inną warstwą sieci neuronowej lub warstwą innego rodzaju.
  • Funkcja aktywacji, która transformuje dane wyjściowe każdego węzła w warstwie. Różne warstwy mogą mieć różne funkcje aktywacji.

Ostrzeżenie: sieci neuronowe nie zawsze są lepsze od krzyżowania cech, ale oferują elastyczną alternatywę, która w wielu przypadkach dobrze się sprawdza.