Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.


16.11.2018

Dla biznesu i edukacji

Optoma 330USTN
13.11.2018

Superszybki dysk SSD

Patriot Evolver
09.11.2018

Ograniczenie kosztów

Canon imageRUNNER ADVANCE 525/615/715
06.11.2018

Pierwsze w testach

Serwery Huawei V5
30.10.2018

Klimatyzacja szaf...

Rittal VX25 Blue e+
26.10.2018

Extender Wi-Fi

Netgear Nighthawk X6
25.10.2018

Nowości od Ubiquiti....

Ubiquiti UAP-nanoHD, UAP-XG, UWB XG
23.10.2018

Dozór 5 MP

Panasonic WV-S2550L
19.10.2018

4K, HDR i USB-C

Philips 328P6VUBREB

Głębokie sieci neuronowe

Data publikacji: 10-01-2018 Autor: Marcin Szeliga
RYS. 1

Pierwsza część cyklu artykułów o modelach głębokiego uczenia maszynowego była poświęcona metodom analizy obrazów przy użyciu klasyfikatorów liniowych. W tej części przyjrzymy się metodzie uczenia głębokich sieci neuronowych metodą wstecznej propagacji błędów oraz poznamy budowę i działanie konwolucyjnych sieci neuronowych.

Pomimo że opisywana w poprzednim wydaniu magazynu („IT Professional” 12/2017, s. 36) analiza obrazów przy użyciu klasyfikatorów liniowych nie jest stosowana w praktyce, znajomość sposobu ich działania, w tym funkcji straty, regularyzacji, optymalizacji metodą najszybszego spadku, oraz umiejętność konfigurowania modeli poprzez ich hiperparametry jest kluczowa dla zrozumienia sposobu działania sieci neuronowych używanych do analizowania obrazów i filmów.

> REGUŁA ŁAŃCUCHOWA

Zadaniem modelu uczenia maszynowego jest znalezienie funkcji mapującej dane wejściowe, takie jak obrazy, na dane wyjściowe, np. prawdopodobieństwa, że na tym obrazie pokazane są pewne przedmioty: s = f(x;W) = Wx.

Jakość modelu, czyli to, jak bardzo jesteśmy zadowoleni z wyników jego działania, mierzona jest za pomocą funkcji straty, np. funkcji softmax, uzupełnionej o człon z regularyzacją, np. regularyzację L2: L=funkcja straty + λR(W).

Wiemy też, że celem uczenia modelu jest minimalizacja wartości funkcji straty L poprzez dobranie odpowiednich wartości parametrów W, czyli minimalizacja gradientu. Cel ten można osiągnąć iteracyjnie, metodą stochastycznego najszybszego spadku, w której wyliczane są wartości L dla wszystkich parametrów W losowo wybranych przypadkach, aż do momentu znalezienia najmniejszej wartości L. Minimalizacja gradientu polega na obliczeniu pochodnej funkcji złożonej. Reguła łańcuchowa pozwala obliczyć pochodną funkcji złożonej za pomocą pochodnych jej funkcji składowych, czyli pochodna złożenia f(g(x)) jest równa f’(g(x))⋅g’(x). Na przykład funkcję sin(x²) można przedstawić w postaci f(g(x)) dla f(x) = sin(x) i g(x) = x². Reguła łańcuchowa pozwala obliczyć pochodną funkcji sin(x²) za pomocą pochodnych funkcji sin(x) oraz x². Dowolne funkcje, w tym omówione w poprzedniej części artykułu klasyfikatory liniowe, można przedstawić za pomocą grafu pokazanego na rys. 1 (poszczególne obliczenia wykonywane podczas analizy obrazów przy użyciu klasyfikatora liniowego). Danymi wejściowymi są tu macierz x zawierająca liczbową reprezentację pikseli obrazu oraz macierz W z wagami poszczególnych pikseli. W pierwszej kolejności macierze są mnożone, w wyniku czego uzyskujemy oceny poszczególnych pikseli s, następnie obliczana jest wartość funkcji straty. Na końcu do otrzymanego wyniku dodawana jest wartość regularyzacji i otrzymujemy wartość funkcji straty L.

Reguła łańcuchowa pozwala uczyć dowolnie skomplikowane modele, w tym głębokie sieci neuronowe, przy użyciu metody wstecznej propagacji błędów.

> WSTECZNA PROPAGACJA BŁĘDÓW

Wsteczna propagacja błędów polega na rekurencyjnym stosowaniu reguły łańcuchowej w celu wyliczenia funkcji straty L dla poszczególnych operacji przeprowadzanych przez model. W pierwszej kolejności znajdowana jest wartość funkcji straty dla ostatniej operacji względem jej parametrów i danych wejściowych. Ta wartość używana jest do obliczenia funkcji straty (lokalnego gradientu) operacji, bezpośrednio poprzedzających ostatnią operację, względem ich parametrów i ich danych wejściowych. Proces ten jest powtarzany aż do obliczenia lokalnych gradientów pierwszych operacji, a że za każdym razem wartość funkcji straty jest przekazywana do obliczenia lokalnego gradientu poprzednich operacji, nazywana jest wsteczną propagacją błędów.

Działanie tej metody ilustruje poniższy przykład. Rozpatrzmy prostą funkcję f(x,y,z) = (x+y) * z dla przykładowych danych wejściowych x = –2, y = 5 i z = –4. Wynik operacji pośredniej (dodawania) nazwijmy q(q = x+y = 3), a wynik końcowy nazwijmy f(f = q*z = –12). Naszym celem jest obliczenie pochodnych cząstkowych funkcji f względem danych wejściowych poszczególnych operacji.


Dla ostatniej operacji pochodna cząstkowa jest równa 1 (∂f/∂f = 1). Przesuwając się wstecz, obliczymy pochodną cząstkową funkcji f względem z (∂f/∂z = q = 3), a następnie względem q (∂f/∂q = –4). Na końcu zastosujemy regułę łańcuchową do obliczania pochodnych cząstkowych tej funkcji względem parametrów x i y: ∂f/∂y = ∂f/∂q * ∂q/∂y = –4 oraz ∂f/∂y = ∂f/∂q * ∂q/∂y = –4 (rys. 2).

> GŁĘBOKIE SIECI NEURONOWE

Choć sztuczne sieci neuronowe często są przedstawiane poprzez analogię do ludzkiego mózgu, w rzeczywistości są one skomplikowaną, nieliniową funkcją mapującą dane wejściowe na wyjściowe. Do tej pory rozważaliśmy liniowe funkcje, zwracające wynik na podstawie mnożenia danych wejściowych poprzez przypisane im wagi f=Wx. Głębokie sieci neuronowe są złożeniem wielu liniowych i nieliniowych funkcji – na przykład wynik dwuwarstwowej sieci neuronowej może być obliczany jako f = W2 * max(0,W1x).

Powodem, dla którego budowa i działanie sztucznych sieci neuronowych są porównywane do budowy i działania mózgu, jest to, że poszczególne operacje są w nich wykonywane przez moduły nazywane neuronami. Jednostka obliczeniowa takich sieci, czyli neuron, oblicza sumę ważoną sygnałów na jego wejściu i stosuje określoną funkcję aktywacyjną do obliczenia na podstawie tej sumy sygnału wyjściowego (rys. 3).

Najprostszą funkcją aktywacyjną jest funkcja liniowa – jeśli ją zastosujemy, czego w praktyce się nie robi, sygnał na wyjściu neuronu będzie po prostu sumą ważoną sygnałów wejściowych uzupełnioną o obciążenie (bias): y=b+∑ixiwi.

W modelu binarnych neuronów (również nieużywanym w praktyce) najpierw jest obliczana suma ważona sygnałów wejściowych.

[...]

Autor od 20 lat zawodowo pracuje z danymi, jest autorem książek poświęconych analizie danych i posiada tytuł Microsoft Most Valuable Professional.

Artykuł pochodzi z miesięcznika: IT Professional

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2013 Presscom / Miesięcznik "IT Professional"