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


17.08.2018

Kontrola dostępu

Axis A1601
14.08.2018

Zabezpieczenia prognostyczne

Sophos Email Security Advanced
10.08.2018

Polski Azure Stack...

Beyond.pl Data Center 2
07.08.2018

Zarządzanie urządzeniami...

Quest KACE Cloud MDM, KACE Systems Deployment Appliance (SDA)
03.08.2018

Multimodalny OS

SUSE Linux Enterprise 15
27.07.2018

Skalowalne all-flash

QSAN XCubeFAS XF2026D
24.07.2018

Interaktywne kioski

Pyramid Polytouch 32
20.07.2018

Laserowe benefity

Brother TonerBenefit
17.07.2018

Laptop konwertowalny

HP ProBook x360 440 G1

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"