• Nie Znaleziono Wyników

2.2 Modele głębokie

2.2.5 Algorytmy optymalizacji

Po przygotowaniu zbioru danych, określeniu architektury sieci, sposobu inicjalizacji jej pa-rametrów i regularyzacji, przychodzi czas na właściwy proces uczenia. W tym ostatnim etapie kluczową decyzją jest wybranie algorytmu, który posłuży do minimalizacji funkcji kosztu i ustalenie odpowiedniego tempa uczenia.

W problemach klasyfikacji typu 1 z N (predykcja pojedynczej etykiety z N możliwych ka-tegorii), do których ogranicza się niniejsza rozprawa, najczęściej spotykaną funkcją kosztu jest średnia wartość odstępstwa prognozowanego rozkładu prawdopodobieństwa od rze-czywistych wartości etykiet mierzona entropią krzyżową (categorical cross-entropy). Przyj-mując w dalszej części następujące oznaczenia:

y[i]= (y[i]1 , . . . , y[i]N ) − etykieta dla przykładu i w kodowaniu 1 z N (one-hot), (2.47)

Y − macierz M × N etykiet zbioru uczącego (Yi,=y[i]), (2.48) y[i] = f (x[i];θ ) − predykcja y[i]= (y1[i], . . . , yN[i]) dla przykładu i genero- (2.49)

wana za pomocą modelu określonego parametramiθ ,

L[i]=L(y[i],y[i]) − wartość funkcji kosztu dla pojedynczego przykładu i, (2.50) J(θ ; X,Y) − łączna wartość funkcji kosztu modelu (dla M przykła- (2.51)

dów uczących), J(θ ; X,Y) = M1M

i=1L[i], entropię krzyżowąLcrossentropydla przykładu i można przedstawić jako:

L[i]crossentropy= −

N j=1

y[i]j log(y[i]j + ε) (2.52)

gdzieε jest niewielką wartością dodawaną dla celów stabilności numerycznej.

Podstawowym sposobem minimalizacji tak określonej funkcji kosztu jest optymalizacja za pomocą metody spadku gradientu, która dokonuje wyznaczenia gradientu na bazie całego zbioru uczącego (batch gradient descent lub vanilla gradient descent). Jedynym hiperpa-rametrem w tym wypadku jest tempo uczeniaη, a pojedyncza iteracja takiego dostrajania wag wyraża się przez operację:

θ(t+1)← θ(t)− η∇θ(t)J(t); X ,Y) (2.53) Niestety, chociaż wyliczanie wartości gradientu na podstawie wszystkich przykładów uczą-cych jest najdokładniejsze, to przy dużych zbiorach danych staje się kompletnie nieprak-tyczne. Koniecznością w takiej sytuacji staje się jego estymowanie na podstawie mini-partii składającej się z b przykładów:

ˆ g(t)= 1

b

θ(t)b

i

L(f (x[i];θ(t)),y[i]) (2.54)

Krok aktualizujący jest analogiczny jak w przypadku operowania na całym zbiorze:

θ(t+1)← θ(t)− ηˆg(t) (2.55)

Technikę tę określa się jako optymalizację spadkiem gradientu mini-partiami (mini-batch gradient descent). Często zamiennie pojawia się też nazwa spadku stochastycznego gra-dientu (stochastic gradient descent, SGD), choć właściwie związana jest ona z sytuacją uczenia typu online (b= 1).

Ustalenie odpowiedniej wartości b jest niestety kwestią niejednoznaczną, najczęściej podejmowaną na zasadzie prób i błędów. Duża liczebność partii powoduje, że wyznaczany gradient jest stabilniejszy, ale kosztem wykonywania dla każdej iteracji większej liczby obli-czeń. Poza niepotrzebnym wydłużeniem czasu uczenia zwiększone zostają też wymagania pamięciowe, co jest szczególnie istotne w przypadku wykorzystywania procesorów graficz-nych. Bardzo głębokie modele mogą potrzebować w fazie uczenia wielu gigabajtów dostęp-nej pamięci, nawet przy ograniczeniu rozmiaru partii do kilkunastu przykładów. Z tego po-wodu dobór tej wielkości wynika często po prostu z ograniczeń sprzętowych. Z kolei zbyt mały rozmiar partii nie tylko wprowadza dużą ilość szumu w wyznaczanie kierunku ucze-nia, ale też nie pozwala w pełni wykorzystać przyspieszenia z tytułu przetwarzania rów-noległego. Pewnym mało intuicyjnym zachowaniem jest to, że odpowiednia ilość szumu wprowadzanego przez estymację gradientu może wpływać pozytywnie na proces uczenia, ułatwiając eksplorację przestrzeni możliwych rozwiązań i przyspieszając tym sposobem do-chodzenie do punktu zbieżności na niższych poziomach funkcji kosztu. Optymalny rozmiar partii równoważący te wszystkie aspekty zależy niestety od konkretnej architektury, zbioru danych i dostępnych rozwiązań sprzętowych, więc trudno w praktyce znaleźć lepszy sposób

na jego ustalenie niż wyjście od w miarę bezpiecznej wielkości kilkudziesięciu przykładów i korektę na bazie obserwacji zachowania procesu uczenia.

Optimum Start

Podstawowy SGD Momentum

Rys. 2.15: Problem powolnego uczenia za po-mocą spadku gradientu i technika momentum.

Dużą wadą uczenia za pomocą podsta-wowej wersji spadku gradientu jest jej po-wolność. Nawet mimo wprowadzania stop-niowego wygasania (learning rate decay), które pozwala na przyjęcie większej war-tości tempa uczenia w początkowej fazie eksploracji, metoda ta ma tendencję do za-trzymywania się na obszarach potocznie określanych jako wąskie doliny lub kaniony, przedstawionych na rysunku 2.15. Zapro-ponowana przez Polyaka (1964) technika momentum wprowadza do procesu opty-malizacji bezwładność, która dobrze spraw-dza się w takich sytuacjach. Momentum za-kłada, że aktualizacja wag następuje w

spo-sób pośredni poprzez korektę wektora prędkości v tak, że w każdym kroku:

v(t)← αv(t−1)− ηˆg(t) (2.56)

i następnie:

θ(t+1)← θ(t)+ v(t) (2.57)

Hiperparametrα ∈ [0, 1] określany jako momentum decay decyduje o stopniu bezwładności.

Ciekawe interaktywne wyjaśnienie jego wpływu na uczenie przedstawia Goh(2017).

Dalszym krokiem usprawniającym jest metoda przyspieszonego gradientu Nesterova (Nesterov’s Accelerated Gradient) (1983), często spotykana po prostu jako Nesterov mo-mentum, która uwzględnia dodatkowo wpływ wprowadzonej bezwładności na zmianę gra-dientu wyliczanego w danym kroku (tzw. look-ahead gradient,g ):

θ(t)= θ(t)+ αv(t−1) (2.58)

v(t) ← αv(t−1)− ηg(t)= αv(t−1)− η1 b

θ(t)

b i

L(f (x[i];θ(t)),y[i]) (2.59)

θ(t+1)← θ(t)+ v(t) (2.60)

Wizualnie sytuację tę obrazuje schemat na rysunku 2.16. Przedstawiona wersja wzorów 2.59i2.60jest zgodna z formułą przyjętą przez Sutskevera et al. (2013), ale spotykane są również lekko odmienne implementacje oparte na wersji Bengio et al. (2013).

−ηˆg(t) αv(t−1)

v(t)

η

„g(t

)

αv(t−1)

v(t)

Aktualizacja wag z klasycznym momentum θ(t+1)← θ(t)+ v(t)= θ(t)+ αv(t−1)− ηˆg(t)

θ(t)

θ(t+1)

Aktualizacja wag z momentum Nesterova Analogicznie, z tym żeˆg(t)zastępowane jest przez estymację gradientug„(t)dokonywaną dlaθ(t)+ αv(t−1)

θ(t)

θ(t+1)

Krok: gradientowy momentum łączny

Rys. 2.16: Wyliczanie kroku aktualizacji wag dla momentum i wariantu Nesterova.

Bardzo ważną kwestią w zaprezentowa-nych algorytmach jest ustalenie odpowied-niego tempa uczenia. Jego adekwatna war-tość zależy w dużym stopniu od przyję-tej architektury modelu i charakterystyki zbioru danych, a większe wyczulenie mo-deli głębokich na ten hiperparametr tym bardziej tworzy miejsce potencjalnych nie-powodzeń. Postęp związany z wprowadza-niem technik głębokiego uczenia dosyć na-turalnie wiązał się więc również z próbą usprawnienia tego aspektu. Jednocześnie pojawiła się wątpliwość, czy zastosowanie jednakowego tempa uczenia dla wszystkich wag modelu jest najlepszym rozwiązaniem.

Tą drogą do użytku weszły warianty metod optymalizacyjnych, które zbiorczo można okre-ślić jako algorytmy adaptacyjne.

Najwcześniejszą z przedstawianych tutaj metod jest algorytm AdaGrad(Duchi et al., 2011). Jego założeniem jest szybkie wygaszanie tempa uczenia w kierunkach, dla których pochodna cząstkowa osiąga duże wartości, co pozwala na bardziej wyrównaną eksplorację również w obszarach jej mniejszego nachylenia. AdaGrad osiąga ten cel w wyniku korekty opierającej się na skumulowanych kwadratach wartości gradientu r przez iterację:

r(t)← r(t−1)+ ˆg(t)⊙ ˆg(t) (2.61)

θ(t+1)← θ(t) η

r(t)+ ε⊙ ˆg(t) (2.62)

gdzie ε jest niewielką wartością dodawaną dla celów stabilności numerycznej, a opera-cje pierwiastkowania, dzielenia i wymnażania są dokonywane oddzielnie dla każdego ele-mentu wektora.

Sumowanie wartości gradientów od samego początku uczenia powoduje, że wygaszanie występujące w ramach AdaGrad może się okazać zbyt szybkie i nie ma sposobu, żeby ten proces odwrócić. Zaproponowana nieformalnie przez Hintona(2012) metoda RMSprop zamiast tego akumuluje historyczny gradient za pomocą wykładniczej średniej kroczącej:

r(t) ← ρr(t−1)+ (1 − ρ)ˆg(t)⊙ ˆg(t) (2.63)

θ(t+1)← θ(t)η

r(t)+ ε⊙ ˆg(t) (2.64)

Nowo wprowadzany hiperparametr ρ kontroluje w tym wypadku tempo wygaszania pa-mięci (domyślnieρ = 0,9), pozwalając na uniknięcie całkowitej stagnacji uczenia. RMSprop można również rozszerzyć o momentum Nesterova lub uzyskać technikę opisaną niezależnie przez Zeilera(2012)jako AdaDelta poprzez dodatkowe uwzględnienie historii dokonywa-nych zmian wag.

Chociaż empiryczne wyniki zastosowania różnych algorytmów optymalizacji nie wska-zują na jednoznacznego faworyta, to względnie dużą popularnością wśród podejść adap-tacyjnych zaczęła się w ostatnim czasie cieszyć metoda Adam (adaptive moments), której krok aktualizacji wag rozbudowany jest do postaci(Kingma & Ba, 2014):

s(t)← ρ1s(t−1)+ (1 − ρ1)ˆg(t), ˆs(t)← s(t)/(1 − ρ1t) (2.65) r(t)← ρ2r(t−1)+ (1 − ρ2)ˆg(t)⊙ ˆg(t), ˆr(t)← r(t)/(1 − ρ2t) (2.66)

θ(t+1)← θ(t) ηˆs(t)

√ˆr(t)+ ε (2.67)

Dołożenie w miejsce wyznaczanego gradientu jego wykładniczej średniej kroczącej ma cha-rakter wygładzający. Ważne jest też uzyskiwane tym sposobem ograniczenie od góry efek-tywnego rozmiaru kroku, co pozwala nieco inaczej rozumieć tempo uczenia — w metodzie Adam można je traktować jako wyznaczany wokół aktualnych wartości parametrów obszar zaufania, w którym pojedyncza aktualizacja może się maksymalnie poruszać. Adaptacyjny charakter tego zachowania powoduje, że nie jest konieczne tak uważne dostrajanie tego hiperparametru, jak w przypadku optymalizacji za pomocą standardowej metody spadku gradientu. Kingma i Ba(2014) zauważają też, że inicjalizacja średnich kroczących warto-ściami zerowymi prowadzi do wystąpienia obciążenia, którego korektę przewiduje wyzna-czanie momentów ˆs i ˆr. Wykładnik potęgi t we wzorach2.65i2.66oznacza w tej sytuacji numer danego kroku.

Autorzy przedstawianej metody przewidują również w rozszerzeniu określanym jako AdaMax możliwość zastąpienia normy L2 normą L. Zachowując dotychczasową postać momentu ˆs ze wzoru2.65, iteracja algorytmu przyjmuje wtedy formę:

r(t)← max(ρ2r(t−1),|ˆg(t)|) (2.68)

θ(t+1)← θ(t)ηˆs(t)

r(t) (2.69)

Do obydwu wariantów możliwe jest też dołączenie metody wyznaczania przyspieszonego gradientu Nesterova zgodnie z zaprezentowanym przez Dozata(2016)opisem algorytmów określanych odpowiednio jako Nadam i NadaMax.

Czy w takim razie w tym gąszczu możliwych do zastosowania modyfikacji podstawo-wego algorytmu optymalizacyjnego można wskazać jakieś bardziej ogólne zalecenia? Róż-norodność uzyskiwanych empirycznie rezultatów niestety nie ułatwia odpowiedzi na to pytanie, tym bardziej, że pominięte w dotychczasowym omówieniu zostały jeszcze metody optymalizacji rozproszonej i te korzystające z pochodnych drugiego rzędu.

Jeśli chodzi o tę pierwszą grupę, to uczenie rozproszone może się okazać ważnym tema-tem w niedalekiej przyszłości, ale w kontekście mniejszych problemów jest o tyle nieistotne, że są to głównie próby zaadaptowania obecnych już rozwiązań do przetwarzania równole-głego. Zestawienie kilku strategii wykorzystywanych obecnie w tym zakresie przedstawia między innymi Ruder(2016).

Z kolei prezentowane w bardzo obszernym omówieniu Bottou et al. (2016) metody optymalizacji opierające się na estymowaniu pochodnych drugiego rzędu są o tyle nie-praktyczne, że w większości przypadków ich złożoność pamięciowa ogranicza możliwo-ści realnego zastosowania dla sieci neuronowych składających się z milionów parametrów.

Chociaż warianty starające się uwzględnić ten aspekt, jak na przykład L-BFGS, udawało się wprowadzić z dobrymi rezultatami dla wybranych architektur splotowych (Le et al., 2011), to w codziennej praktyce dalej są one ewidentną rzadkością.

Dosyć częstym postępowaniem, które można uznać za bezpieczną heurystykę, jest wy-bór metody optymalizacji na podstawie porównania wstępnych rezultatów uczenia modelu za pomocą tradycyjnej metody gradientu stochastycznego (SGD), rozszerzonej ewentualnie o momentum, i jednej z metod adaptacyjnych. Najczęściej dobór tej ostatniej dokonywany jest na zasadzie subiektywnej preferencji podyktowanej stopniem znajomości konkretnego wariantu, ułatwiającym ewentualne dalsze dostrajanie hiperparametrów. Z drugiej strony, wprowadzanie odpowiedniej normalizacji sieci potrafi na tyle uprościć proces uczenia, że coraz częstszą tendencją jest po prostu ograniczanie się do wykorzystania najbardziej pod-stawowego wariantu optymalizacji ze względu na znikomą poprawę przy zastosowaniu metod adaptacyjnych. Z tego powodu w eksperymentach prezentowanych w ramach roz-prawy wykorzystywana będzie przede wszystkim metoda gradientu stochastycznego z mo-mentum, względnie algorytm Adam.