Sieci neuronowe: struktura

Jeśli pamiętasz z jednostki z krzyżami cech, ten problem z klasyfikacją jest nielinearny:

Wykres kartezjański. Tradycyjna oś x jest oznaczona jako 'x1'. Tradycyjna oś y jest oznaczona etykietą 'x2'. Południowe i północno-wschodnie kwartyle zajmują niebieskie kropki.

Rysunek 1. Problem z klasyfikacją nielinearną.

"Nielinearny" oznacza, że nie można dokładnie prognozować etykiety za pomocą modelu formularza \(b + w_1x_1 + w_2x_2\) Inaczej mówiąc, &decycja nie jest linią. Wcześniej przyjrzeliśmy się krzyżom cech jako jednym z możliwych sposobów modelowania problemów nielinearnych.

Teraz weź pod uwagę ten zbiór danych:

Zbiór danych zawiera wiele pomarańczowych i wielu niebieskich kropek. Trudno jest uzyskać spójny wzorzec, ale pomarańczowe kropki delikatnie tworzą spiralę, a niebieskie kropki mogą tworzyć inną spiralę.

Rysunek 2. trudniejszy problem z klasyfikacją nielinearną.

Zbiór danych przedstawiony na rysunku 2 nie można rozwiązać za pomocą modelu liniowego.

Aby zobaczyć, jak sieci neuronowe mogą pomóc w rozwiązaniu problemów nielinearnych, zacznij od pokazania modelu liniowego w postaci wykresu:

Trzy niebieskie okręgi w wierszu połączone strzałkami z zielonym kółkiem nad nimi

Rysunek 3. Model liniowy jako wykres.

Każdy niebieski okrąg reprezentuje funkcję wprowadzania, a zielone kółko wskazuje sumę ważonych danych wejściowych.

Jak możemy zmienić ten model, aby usprawnić jego rozwiązywanie w przypadku nieliniowych problemów?

Ukryte warstwy

W modelu reprezentowanym przez wykres poniżej dodaliśmy &ukrytą warstwę i wartości pośrednich. Każdy żółty węzeł w ukrytej warstwie jest ważoną sumą wartości niebieskich węzłów wejściowych. Dane wyjściowe to ważona suma żółtych węzłów.

Trzy niebieskie okręgi w wierszu z etykietą

Rysunek 4. Wykres dwuwarstwowy modelu.

Czy ten model jest liniowy? Tak – dane wyjściowe nadal są linearną kombinacją danych wejściowych.

W modelu reprezentowanym przez poniższy wykres dodaliśmy kolejną ukrytą sumę ważonych sum.

Trzy niebieskie okręgi w wierszu z etykietą

Rysunek 5. Wykres z 3-warstwowymi modelami.

Czy ten model jest nadal liniowy? Tak, ale jeśli przedstawisz dane wyjściowe jako funkcję danych wejściowych i uprościsz je, otrzymasz tylko kolejną ważoną sumę danych wejściowych. Ta suma nie będzie skutecznie modelować problemu nielinearnego na rysunku 2.

Funkcje aktywacji

Aby modelować nieliniowy, możemy bezpośrednio wprowadzić wartość nielinearną. Każdy ukryty węzeł warstwy możemy przekazywać za pomocą funkcji nielinearnej.

W modelu przedstawionym na tym wykresie wartość każdego węzła w ukrytej warstwie 1 jest przekształcana przez funkcję nielinearną przed przekazaniem do sumów ważonych następnej warstwy. Ta funkcja nielinearna jest nazywana funkcją aktywacji.

Tak samo jak powyżej, ale między różnymi ukrytymi warstwami dodano wiersz różowych kółek oznaczony etykietą 'Nieliniowa warstwa transformacji&#39.

Rysunek 6. Wykres trzywarstwowego modelu z funkcją aktywacji.

Teraz, gdy dodaliśmy funkcję aktywacji, dodanie warstw ma większe znaczenie. Nakładanie nielinii na dane nielinearne pozwala nam modelować bardzo skomplikowane związki między danymi wejściowymi a danymi prognozowanymi. Krótko mówiąc, każda klasa uczy się bardziej złożonej funkcji wyższego poziomu niż nieprzetworzonych danych wejściowych. Jeśli chcesz dowiedzieć się więcej na ten temat, przeczytaj doskonały post na blogu Chrisa Olah.

Typowe funkcje aktywacji

Ta funkcja aktywacji funkcji sigmoid konwertuje sumę ważonych na wartość z zakresu od 0 do 1.

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

Oto fabuła:

Funkcja sigmoid

Rysunek 7. funkcja aktywacji funkcji Sigmoid.

Poniższa funkcja aktywacji prostej jednostki linearnej (czyli w skrócie RELU) często działa trochę lepiej niż funkcja gładka, np. sigmoid, ale jest też znacznie łatwiejsza do obliczenia.

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

Wyższość modelu ReLU jest oparta na wynikach empirycznych, prawdopodobnie opartych na tym narzędziu. Sigmoida spada po obu stronach.

Funkcja aktywacji ReLU

Rysunek 8. funkcji aktywacji ReLU.

Każde działanie matematyczne może służyć jako funkcja aktywacji. Załóżmy, że \(\sigma\) przedstawia naszą funkcję aktywacji (Relu, Sigmoid itp.). W związku z tym wartość węzła w sieci jest obliczana według tego wzoru:

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

TensorFlow zapewnia obsługę wielu funkcji aktywacji. Te funkcje aktywacji znajdziesz na liście kodów kodu samych operacji sieci neuronowych w TensorFlow Zalecamy jednak, by zacząć od wersji ReLU.

Podsumowanie

Teraz nasz model zawiera wszystkie standardowe komponenty, które użytkownicy mówią zwykle „sieci neuronowe”.

  • Zbiór węzłów analogicznych do neuronów ułożonych w warstwy.
  • Waga wagowa połączeń między poszczególnymi warstwami sieci neuronowej i warstwą poniżej. Poniżej może być inna warstwa sieci neuronowych lub inny typ warstwy.
  • Zestaw odchylenia, po jednym dla każdego węzła.
  • Funkcja aktywacji, która przekształca dane wyjściowe każdego węzła w warstwie. Różne warstwy mogą mieć różne funkcje aktywacji.

Sieć neuronowa nie zawsze jest lepsza niż krzyżówka, ale w wielu przypadkach oferuje ona elastyczną alternatywę.