Podstawy teoretyczne
4.2 Konwolucyjne sieci neuronowe
4.2.4 Optymalizacja funkcji kosztu
Uczenie modelu konwolucyjnego opiera się na minimalizacji różnicy pomiędzy wyni-kami uzyskiwanymi przez model, a oczekiwanym rozwiązaniem. Różnica ta nazywana jest kosztem (ang. cost ) lub stratą (ang. lost ). Minimalizacja kosztu, w procesie opty-malizacji, prowadzi do polepszenia wyników działania modelu.
Metoda Gradientu Prostego
Metoda Gradientu Prostego (ang. Gradient Descent, skr. GD) [19, 169] jest powszech-nie wykorzystywaną, w dziedzipowszech-nie Uczenia Maszynowego, techniką optymalizacji [168].
Zadaniem metody Gradientu Prostego jest znalezienie minimum globalnego funkcji celu (ang. objective function) 𝑓 (𝜃), gdzie 𝜃 ∈ 𝑅𝑑 są parametrami funkcji (Rys. 4-12).
Rysunek 4-12: Poszukiwanie minimum globalnego funkcji celu 𝑓 (𝜃).
Minimum funkcji celu poszukiwane jest poprzez iteracyjną aktualizację parame-trów zgodnie z równaniem (4.15) [168]:
𝜃𝑡 = 𝜃𝑡−1− 𝛼 · ∇𝜃𝑓𝑡(𝜃𝑡−1) (4.15) gdzie 𝛼 to wskaźnik uczenia (ang. learning rate), a 𝑡 to krok (ang. step).
Podstawowa metoda Gradientu Prostego oparta bezpośrednio na równaniu (4.15) zwana jest również metodą Serii Gradientu Prostego (ang. Batch Gradient Descent ) ze względu na wykorzystywanie w procesie uaktualniania parametrów, do liczenia gradientu, pełnego zestawu danych uczących (ang. training dataset ) w każdej iteracji algorytmu (4.16):
𝜃𝑡 = 𝜃𝑡−1− 𝛼 · 1 𝑛
𝑛
∑︁
𝑖=1
∇𝜃𝑓𝑡(𝜃𝑡−1; 𝑥𝑖, 𝑦𝑖) (4.16) gdzie 𝑛 to całkowita wielkość zestawu danych uczących, 𝑥𝑖 to pojedynczy przykład uczący (ang. training example), a 𝑦𝑖 to odpowiadająca mu etykieta (ang. label ).
Metoda Serii Gradientu Prostego dobrze sprawdza się podczas poszukiwania glo-balnego minimum dla wypukłych powierzchni błędu oraz lokalnego minimum niewy-pukłych powierzchni, pozwalając na poruszanie się bezpośrednio w kierunku optymal-nego rozwiązania (Rys. 4-13), jednak korzystanie z pełoptymal-nego zestawu danych uczących w każdej iteracji znacznie zwiększa koszt obliczeniowy i nie pozwala na aktualizację modelu na bieżąco [168].
Rysunek 4-13: Przykładowy przebieg kolejnych kroków iteracji algorytmu optymalizacyjnego poszukującego minimum globalnego funkcji celu 𝑓 (𝜃1, 𝜃2) metodą Gradientu Prostego.
Metoda Stochastycznego Gradientu Prostego
Odmianą metody Gradientu Prostego jest Stochastyczny Gradient Prosty (ang. Sto-chastic Gradient Descent, skr. SGD) [24, 162]. W ostatnich latach stochastyczne me-tody optymalizacji cieszyły się dużą popularnością i wykorzystywane były w wielu rozwiązaniach opartych na Uczeniu Maszynowym [50, 99, 110, 118] uzyskując dobre wyniki. Metoda SGD cechuje się aktualizowaniem parametrów dla każdego przykładu uczącego (ang. training example) 𝑥𝑖 oraz odpowiadającej mu etykiety (ang. label ) 𝑦𝑖 (4.17):
𝜃𝑡= 𝜃𝑡−1− 𝛼 · ∇𝜃𝑓𝑡(𝜃𝑡−1; 𝑥𝑖, 𝑦𝑖) (4.17) Ze względu na aktualizowanie modelu na bieżąco metoda Stochastycznego Gra-dientu Prostego jest zwykle dużo szybsza od algorytmu GraGra-dientu Prostego [168], jednak częste aktualizacje wykonywane na podstawie pojedynczych przykładów uczą-cych wprowadzają dużą fluktuację działania. Wspomniana zmienność pozwala jednak w efekcie wyprowadzić algorytm z lokalnego minimum doprowadzając go finalnie w okolicę minimum globalnego (Rys. 4-14).
W celu ograniczenia fluktuacji w metodzie często wprowadza się obliczanie
gra-Rysunek 4-14: Przykładowy przebieg kolejnych kroków iteracji algorytmu optymalizacyjnego poszukującego minimum globalnego funkcji celu 𝑓 (𝜃1, 𝜃2) metodą Stochastycznego Gradien-tu Prostego.
dientu na podstawie małych serii danych (ang. mini-batch), zamiast pojedynczych przykładów (4.18):
𝜃𝑡= 𝜃𝑡−1− 𝛼 · 1 𝑚
𝑚
∑︁
𝑖=1
∇𝜃𝑓𝑡(𝜃𝑡−1; 𝑥𝑖, 𝑦𝑖) (4.18) gdzie 𝑚 to wielkość losowych małych serii danych.
Takie rozwiązanie, przy odpowiednim doborze wielkości serii (ang. mini-batch size) i wskaźnika uczenia (ang. learning rate) pozwala zmniejszyć fluktuację jednocześnie zachowując właściwość wyprowadzania algorytmu z lokalnego minimum.
Poprawne ustalenie wartości wskaźnika uczenia (ang. learning rate) jest kluczowe dla osiągnięcia zbieżności (ang. convergence) z globalnym minimum. Do planowania zmian wartości wskaźnika uczenia wraz z kolejnymi krokami i analizowanymi parame-trami wykorzystuje się algorytmy optymalizacyjne będące rozwinięciami Stochastycz-nego Gradientu Prostego. Do powszechnie wykorzystywanych w Głębokim Uczeniu algorytmów optymalizacyjnych zaliczyć można: Momentum [169, 191], NAG (ang.
Nesterov’s Accelerated Gradient ) [147], AdaGrad (ang. Adaptive Gradient Algorithm) [58], AdaDelta (ang. Adaptive Learning Rate Method )[215], RMSProp (ang. Root Me-an Square Propagation) [195] oraz Adam (Me-ang. Adaptive Moment Estimation)[110].
Algorytm Momentum
Zadaniem algorytmu optymalizacyjnego Momentum [169, 191] jest przyśpieszenie działania metody Stochastycznego Gradientu Prostego. Efekt ten uzyskiwany jest poprzez dodanie frakcji wektora aktualizującego (ang. update vector ) z poprzedniego kroku do obecnego wektora aktualizującego (Rys. 4-15)(4.19):
𝑣𝑡= 𝛽𝑣𝑡−1+ 𝛼 · ∇𝜃𝑓𝑡(𝜃𝑡−1) 𝜃𝑡= 𝜃𝑡−1− 𝑣𝑡
(4.19)
gdzie 𝛽 to wielkość frakcji wektora aktualizującego 𝑣𝑡.
Rysunek 4-15: Metoda wyznaczania kroku rzeczywistego algorytmem Momentum.
W efekcie algorytm Momentum wprowadzony do równania Stochastycznego Gra-dientu Prostego wygładza aktualizacje w kolejnych krokach zwiększając stabilność i szybkość działania (Rys. 4-16).
Algorytm NAG
Algorytm Przyśpieszonego Gradientu Nesterov’a (ang. Nesterov’s Accelerated Gra-dient ) [147] jest rozwinięciem metody Momentum. W metodzie przedstawionej przez Nesterov’a do aktualizacji parametrów wykorzystywany jest dodatkowo człon frakcji wektora aktualizującego poprzedniego kroku (4.20):
𝑣𝑡= 𝛽𝑣𝑡−1+ 𝛼 · ∇𝜃𝑓𝑡(𝜃𝑡−1+ 𝛽𝑣𝑡−1) 𝜃𝑡= 𝜃𝑡−1− 𝑣𝑡
(4.20)
Rysunek 4-16: Przykładowy przebieg kolejnych kroków iteracji algorytmu optymalizacyjnego poszukującego minimum globalnego funkcji celu 𝑓 (𝜃1, 𝜃2) wykorzystując metodę Momentum.
Takie rozwiązanie pozwala wstępnie ukierunkować nowy wektor aktualizujący (ang.
update vetor ) zgodnie z aproksymowanym gradientem wyznaczonym po kroku frak-cji wcześniejszego wektora aktualizującego. Daje to w efekcie wstępną aproksymację (predykcję) kierunku nowego wektora aktualizującego (Rys. 4-17).
Rysunek 4-17: Metoda wyznaczania Przyśpieszonego Gradientu Nesterov’a. Strona lewa:
standardowy algorytm Momentum. Strona prawa: algorytm Przyśpieszonego Gradientu Ne-sterov’a. Niewielka różnica wynika z wprowadzenia do równania dodatkowej frakcji wektora aktualizującego.
AdaGrad
Algorytmy Momentum i Przyśpieszonego Gradientu Nesterov’a znacznie poprawiają działanie metody Stochastycznego Gradientu Prostego, ograniczają jednak rozwiąza-nie do jednoczesnej aktualizacji wszystkich parametrów rozwiąza-niezależrozwiąza-nie od ich
istotno-ści. W przeciwieństwie do nich, przedstawiony w 2011 roku [58] algorytm AdaGrad (ang. Adaptive Gradient Algorithm) pozwala na indywidualną aktualizację poszcze-gólnych parametrów w każdym kroku, w zależności od ich istotności, poprzez odpo-wiednią adaptację wskaźnika uczenia (ang. learning rate)(4.21):
𝜃𝑡 = 𝜃𝑡−1− 𝛼
√𝐺𝑡+ 𝜖· 𝑔𝑡 𝑔𝑡= ∇𝜃𝑓𝑡(𝜃𝑡−1)
(4.21)
gdzie 𝐺𝑡 jest macierzą diagonalną, której kolejne współczynniki są sumą kwadratów gradientów aż do kroku 𝑡, a 𝜖 to współczynnik wygładzający chroniący przed dziele-niem przez zero.
Algorytm AdaDelta
Algorytm AdaDelta (ang. Adaptive Learning Rate Method )[215] jest rozwinięciem roz-wiązania przedstawionego przez Duchi w 2011 roku [58]. Algorytm AdaDelta, w prze-ciwieństwie do AdaGrad, modyfikuje współczynnik uczenia (ang. learning rate) na podstawie określonej ilości wcześniejszych gradientów, całkowicie wykluczając potrze-bę definiowania tego współczynnika przez użytkownika. Metoda Adadelta zamiast zachowywać kolejne wartości gradientów w macierzy określa rekurencyjnie wartość średnią kwadratów wcześniejszych gradientów (4.22):
𝐸[𝑔2]𝑡= 𝜌𝐸[𝑔2]𝑡−1+ (1 − 𝜌)𝑔𝑡2 (4.22) gdzie 𝐸[𝑔2]𝑡to wykładniczo spadająca wartość średnia kwadratów wcześniejszych gra-dientów dla kroku 𝑡, a 𝜌 to stała spadku podobna do współczynnika 𝛽 w metodzie Momentum.
Ze względu na występujący w równaniu (4.21) pierwiastek kwadratowy gradientów wyrażenie to zastępowane jest średnią kwadratową (ang. Root Mean Square, skr. RMS) kwadratów wcześniejszych gradientów (4.23):
𝑅𝑀 𝑆[𝑔]𝑡=√︁𝐸[𝑔2]𝑡+ 𝜖 𝜃𝑡= 𝜃𝑡−1− 𝛼
𝑅𝑀 𝑆[𝑔]𝑡 · 𝑔𝑡
(4.23)
Finalnie metoda AdaDelta ze względu na korekcję jednostek wykorzystującą me-todę przybliżania macierzy Hessego (ang. Hessian Approximation) zaprezentowaną przez Becker et. al [18] w 1988 roku, przybliża całe równanie aktualizacji parametrów do postaci (4.24):
𝜃𝑡 = 𝜃𝑡−1− 𝑅𝑀 𝑆[∆𝜃]𝑡−1
𝑅𝑀 𝑆[𝑔]𝑡 · 𝑔𝑡 (4.24)
Algorytm RMSProp
Metoda RMSProp (ang. Root Mean Square Propagation) [195] rozwinięta została rów-nolegle z i niezależnie od algorytmu AdaDelta. Podobnie do algorytmu AdaDelta metoda ta ma na celu wprowadzenie kontroli współczynnika uczenia w zależności od wykładniczo spadającej wartości średniej kwadratów wcześniejszych gradientów (4.25):
𝐸[𝑔2]𝑡= 𝜌𝐸[𝑔2]𝑡−1+ (1 − 𝜌)𝑔𝑡2
𝜃𝑡= 𝜃𝑡−1− 𝛼
√︁𝐸[𝑔2]𝑡+ 𝜖· 𝑔𝑡
(4.25)
Algorytm Adam
Ostatecznie do optymalizacji funkcji kosztu (ang. cost function) opartej na meto-dzie entropii krzyżowej (ang. cross-entropy) [48, 86, 150] wykorzystano metodę sto-chastycznej optymalizacji Adam (ang. Adaptive Moment Estimation) [110], opartą na adaptacyjnej ocenie momentów (ang. moments) [169, 170, 191] niższych rzędów.
Algorytm jest rozwinięciem przedstawionych wcześniej metod i łączy zalety rozwią-zań opracowanych w metodach AdaGrad (ang. Adaptive Gradient Algorithm) [58],
RMSProp (ang. Root Mean Square Propagation) [195] oraz Momentum [169, 191].
Metoda stochastycznej optymalizacji Adam [110] charakteryzuje się zachowywa-niem informacji o wykładniczym spadku średnich kwadratów poprzedzających gra-dientów (4.27) podobnie do algorytmów AdaDelta [215] i RMSProp [195]. Co więcej algorytm Adam zachowuje informacje o wykładniczym spadku średniej wartości po-przedzających gradientów (4.26) podobnie do algorytmu Momentum [147, 169, 191]
oraz pozwala na indywidualną aktualizację poszczególnych parametrów w każdym kroku, wprowadzoną w metodzie AdaGrad [58].
𝑚𝑡= 𝛽1𝑚𝑡−1+ (1 − 𝛽1)𝑔𝑡 (4.26)
𝑣𝑡= 𝛽2𝑣𝑡−1+ (1 − 𝛽2)𝑔𝑡2
(4.27) gdzie 𝑚𝑡 to szacowana wartość momentu pierwszego rzędu aktualizacji, 𝑣𝑡 to szaco-wana wartość momentu drugiego rzędu aktualizacji, a 𝑔𝑡 = ∇𝜃𝑓𝑡(𝜃𝑡−1) to wartość gradientu dla kroku 𝑡.
Dodatkowo algorytm Adam wprowadza korekcję wyznaczonych momentów (4.28, 4.29):
ˆ
𝑚𝑡= 𝑚𝑡
1 − 𝛽1𝑡 (4.28)
ˆ
𝑣𝑡= 𝑣𝑡
1 − 𝛽2𝑡 (4.29)
gdzie ˆ𝑚𝑡 to skorygowana szacowana wartość momentu pierwszego rzędu aktualizacji, a ˆ𝑣𝑡 to skorygowana szacowana wartość momentu drugiego rzędu aktualizacji.
Ostatecznie Metoda stochastycznej optymalizacji Adam (ang. Adaptive Moment Estimation [110] definiuje aktualizację parametrów jako (4.30):
𝜃𝑡= 𝜃𝑡−1− 𝛼
√𝑣ˆ𝑡+ 𝜖· ˆ𝑚𝑡 (4.30) Zastosowana metoda stochastycznej optymalizacji Adam [110] wykorzystuje
tyl-ko gradienty pierwszego rzędu ograniczając tyl-koszt obliczeniowy. Metoda ta wyznacza indywidualne adaptacyjne wskaźniki uczenia (ang. adaptive learning rates) dla róż-nych parametrów na podstawie szacowaróż-nych momentów gradientów. Do najważniej-szych zalet metody należą [110]: niezmienność rzędu wielkości aktualizacji parametrów (ang. parameter updates) względem skali gradientu, wielkość kroku przywiązana do odpowiadającego jej hiper-parametru (ang. hyperparameter ), brak potrzeby określa-nia niezmiennego celu (ang. stationary objective) oraz poprawne działanie nawet przy rzadkich gradientach (ang. sparse gradients).