Wst¦p do sieci neuronowych, wykªad 05a Algorytm wstecznej propagacji bª¦du
M. Czoków, J. Piersa
Wydziaª Matematyki i Informatyki, Uniwersytet Mikoªaja Kopernika w Toruniu
2012-11-14
Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych
realizowany w ramach Poddziaªania 4.1.1 Programu Operacyjnego Kapitaª Ludzki
1 Sie¢ wielowarstwowa Architektury sieci Dlaczego MLP?
2 Algorytm uczenia
Algorytm spadku gradientowego Funkcje aktywuj¡ce
Algorytm wstecznej propagacji bª¦du
3 Uwagi do algorytmu wstecznej propagacji bª¦du Problemy ze zbie»no±ci¡
Modykacje algorytmu Normalizacja danych
1 Sie¢ wielowarstwowa Architektury sieci Dlaczego MLP?
2 Algorytm uczenia
Algorytm spadku gradientowego Funkcje aktywuj¡ce
Algorytm wstecznej propagacji bª¦du
3 Uwagi do algorytmu wstecznej propagacji bª¦du Problemy ze zbie»no±ci¡
Modykacje algorytmu Normalizacja danych
Powtórzenie
W sieciach skªadaj¡cych si¦ z przynajmniej dwóch neuronów wyniki zwracane przez jedne neurony mog¡ by¢ wej±ciami dla innych neuronów. Takie sieci dziel¡ si¦ na:
skierowane (ang. feed-forward) - niedopuszczane s¡ cykle skierowane, w takiej sieci przepªyw informacji jest ustalony w jednym kierunku; sie¢ skierowana charakteryzuje si¦
synchroniczn¡ dynamik¡, to jest ka»dy neuron, przed obliczeniem swojej aktywacji, czeka a» wszystkie jego wej±cia zostan¡
obliczone,
rekurencyjne (recurrent) - dopuszczane s¡ cykle skierowane, wysªany impuls mo»e kiedy± do neuronu powróci¢, w ogólnym
Ogólna architektura MLP
Szczególnym typem sieci skierowanych s¡ sieci warstwowe. Wszystkie perceptrony podzielone s¡ na kolejno wyst¦puj¡ce po sobie warstwy rozª¡czne. Warstwa L + 1-sza za wej±cia przyjmuje wyniki z warstwy L-tej i tylko te. W sieciach MLP nie s¡ dopuszczane bezpo±rednie poª¡czenia wewn¡trz tej samej warstwy ani poª¡czenia przeskakuj¡ce warstw¦ tj. z warstwy L do L + 2, z L do L + 3 itd. Taka sie¢ skªada si¦ z trzech typów warstw:
warstwa pierwsza wej±ciowa (jednostki w tej warstwie s¡ to jednostki wej±ciowe),
warstwa ostatnia wyj±ciowa (jednostki w tej warstwie s¡ to jednostki wyj±ciowe),
warstwy pomi¦dzy wej±ciow¡ a wyj±ciow¡ ukryte (jednostki w tych warstwach s¡ to jednostki ukryte).
Algorytmy uczenia i konstrukcji sieci skierowanych
algorytmy konstrukcyjne architektura sieci zale»y gªównie od:
algorytmu, zbioru ucz¡cego,
dokªadno±ci jak¡ chcemy osi¡gn¡¢,
algorytm wstecznej propagacji bª¦du algorytm uczenia dla sieci wielowarstwowych (MLP), architektura jest z góry zadana, zanim przejdziemy do procesu uczenia, wiemy ile sie¢ b¦dzie mie¢:
warstw ukrytych,
neuronów w ka»dej warstwie ukrytej, jednostek wej±ciowych i wyj±ciowych.
Ogólna architektura MLP
x1 x2 xi
x0=1
y1 y2
yj
y0=1
z1 zk
warstwa
wejściowa warstwa ukryta
warstwa wyjściowa
(bias) (bias)
Warstwa wej±ciowa sieci, prezentowanej na rysunku, posiada I jednostek i dodatkowo jednostk¦ peªni¡c¡ funkcj¦ progu, J jednostek w warstwie ukrytej oraz K jednostek wyj±ciowych. Sie¢ o takiej architekturze b¦dzie
Wyj±cie neuronu z warstwy ukrytej
aj =wjtx yj = φ(aj)
x
1x
2x
ix
0=1
y
1y
2y
jy
0=1
z
1z
k warstwawejściowa warstwa ukryta
warstwa wyjściowa
(bias) (bias)
Wyj±cie neuronu z warstwy wyj±ciowej
bk =wkty zk = φ(bk)
x
1x
2x
ix
0=1
y
1y
2y
jy
0=1
z
1z
k warstwawejściowa warstwa ukryta
warstwa wyjściowa
(bias) (bias)
Zalety MLP
jest w stanie przybli»y¢ dowolnie zªo»one i skomplikowane odwzorowanie,
u»ytkownik nie musi zna¢ lub zakªada¢ z góry »adnej formy wyst¦puj¡cych w poszukiwanym modelu zale»no±ci,
nie musi nawet zadawa¢ sobie pytania, czy jakiekolwiek mo»liwe do matematycznego modelowania zale»no±ci w ogóle wyst¦puj¡, wygodne narz¦dzie do wszelkiego rodzaju zastosowa« zwi¡zanych z prognozowaniem, klasykacj¡ lub automatycznym sterowaniem,
1 Sie¢ wielowarstwowa Architektury sieci Dlaczego MLP?
2 Algorytm uczenia
Algorytm spadku gradientowego Funkcje aktywuj¡ce
Algorytm wstecznej propagacji bª¦du
3 Uwagi do algorytmu wstecznej propagacji bª¦du Problemy ze zbie»no±ci¡
Modykacje algorytmu Normalizacja danych
Przykªady ucz¡ce
Niech dana b¦dzie lista N przykªadów ((x(1),t(1)), ..., (x(N),t(N))). Za cel stawiamy sobie dobranie takiego ukªadu wag, by sie¢
otrzymuj¡ca na wej±ciu x(n)= (1, x1(n), ..,xi(n), ..,xI(n)) dawaªa na wyj±ciu t(n)= (t1(n), ..,tk(n), ..,tK(n)), gdzie n ∈ 1, .., N.
Zamiast progów stosujemy rozszerzony wektor wej±ciowy i rozszerzony wektor wag, mianowicie ka»da jednostka licz¡ca dostaje na wej±ciu dodatkowo 1. Wagi mi¦dzy jednostkami a dodatkowymi wej±ciami pomno»one przez -1 odpowiadaj¡ progom.
Funkcja bª¦du
Inaczej ujmuj¡c problem, naszym celem jest zminimalizowanie nast¦puj¡cej funkcji bª¦du:
ERROR = 1 2
XN n=1
XK k=1
(zk(n)−tk(n))2.
Warto±¢ powy»szej funkcji zale»y od warto±ci wag. Aby znale¹¢ jej minimum b¦dziemy modykowa¢ wagi, za pomoc¡ algorytmu gradientu prostego.
Algorytm spadku gradientowego
Dana niech b¦dzie funkcja f : Rd → R ci¡gªa i ró»niczkowalna (istniej¡ pochodne cz¡stkowe ∂∂xf1...∂∂xf
d). Chcemy wyznaczy¢
minimum (lokalne) funkcji tj. x ∈ Rd, takie »e f (x) ≤ f (y) dla y nale»¡cych do pewnego otoczenia x. Dodatkowo dany niech b¦dzie pewien punkt startowy a(0)∈ Rd. Czym jest ∂∂xf1(a(0))?
Algorytm spadku gradientowego
Przy kilku zaªo»eniach ∂∂xf1(a(0)) intuicyjnie mo»e by¢ interpretowana jako kierunek, w któr¡ stron¦ funkcja ro±nie zmieniaj¡c pierwsz¡
wspóªrz¦dn¡, przy pozostaªych ustalonych. Maj¡c caªy zestaw pochodnych cz¡stkowych (gradient) mamy dokªadny kierunek, w którym funkcja najszybciej ro±nie. Zatem:
szukaj¡c maksimum nale»y zatem wykona¢ krok w tym»e kierunku,
szukaj¡c minimum nale»y znale¹¢ kierunek najszybszego wzrostu... i wykona¢ krok w przeciwn¡ stron¦.
Algorytm spadku gradientowego
1 rozpocznij w losowym/wybranym a(0):
2 dla ka»dej wspóªrz¦dnej g = 1..d:
ag(m+1)=ag(m)− η · ∂f
∂xg(a(m)),
gdzie η jest bliskim zeru, dodatnim wspóªczynnikiem uczenia,
3 powtarzaj krok 2,
Algorytm spadku gradientowego
-6 -4 -2 0 2 4 6
-6 -4 -2 0 2 4 06 10 20 30 40 50
Sigmoida
Aby±my mogli minimalizowa¢ funkcj¦ ERROR za pomoc¡ algorytmu gradientu prostego, musi ona by¢ ci¡gªa i ró»niczkowalna. eby warunek ten byª speªniony, funkcje aktywuj¡ce jednostek nale»¡cych do MLP musz¡ by¢ równie» ci¡gªe i ró»niczkowalne. Takie wªasno±ci speªniaj¡ na przykªad sigmoidy.
1 sigmoida:
φ(s) = σ(s) = 1 1 + exp(−s),
2 symetryczna sigmoida:
φ(s) = 2σ(s) − 1 = 1 − exp(−s) ,
Pochodna sigmoidy
Wa»na obserwacja:
σ0(s) = ∂
∂s(1 + e−s)−1 = −(1 + e−s)−2e−s(−1) = 1
1 + e−s(1 − 1
1 + e−s) = σ(s)(1 − σ(s)).
Sigmoida i jej pochodna
0.2 0 0.4 0.6 0.8 1
-4 -2 0 2 4
sigmoida
0.15 0.2 0.25
0.3 pochodna sigmoidy
0.1
Nieci¡gªa funkcja bª¦du
-4 -2 0 2 4
-4 -2 0 2 4 0
0.5 1 1.5 2 2.5 3 3.5 4
Ci¡gªa funkcja bª¦du
5 10 15 20 25
-5 0 5 10 0
0.5 1 1.5 2 2.5 3 3.5 4
Funkcja bª¦du
Cel zmodykowa¢ wagi, u»ywaj¡c algorytmu spadku gradientowego tak, »eby zminimalizowa¢ bª¡d ERROR.
ERROR = 1 2
XN n=1
XK k=1
(zk(n)−tk(n))2
Oznaczmy przez E(n) dla n ∈ 1, .., N funkcj¦ bª¦du dla jednego przykªadu ucz¡cego. Zatem:
E(n)= 1 2
K
X
k=1
(zk(n)−tk(n))2,
ERROR =XN
n=1
E(n).
Funkcja bª¦du
Dodatkowo funkcj¦ bª¦du dla jednego przykªadu E(n) rozbijmy na sum¦ wyra»e« Ek(n). Przez Ek(n) b¦dziemy oznacza¢ bª¡d kwadratowy dla n-tego przykªadu dla k-tego wyj±cia sieci. A wi¦c:
Ek(n)= 1
2(zk(n)−tk(n))2, E(n)=
K
X
k=1
Ek(n).
Koncepcja algorytmu
Aby minimalizowa¢ bª¡d u±redniony po przykªadach ERROR, minimalizujemy bª¡d E dla poszczególnych przykªadów. Dla wszystkich wag g = 1..d wykonujemy:
wg(m+1) =wg(m)− η ∂E
∂wg(w(m))
Koncepcja algorytmu wstecznej propagacji bª¦du propagowanie gradientu bª¦du od wyj±¢ z powrotem do wej±cia.
Dowód poprawno±ci
zk = φ(bk), bk =wkty
E = 1 2
K
X
h=1
(zh−th)2= 1
2
K
X
h=1
(φ(bh) −th)2
x1
x2
xi
x0=1
y1 y2
yj
y0=1
z1
zk
warstwa
wejściowa warstwa ukryta
warstwa wyjściowa
(bias) (bias)
Dowód poprawno±ci
∂E
∂wkj = ∂Ek
∂wkj =
∂
∂wkj 1
2(φ(bk) −tk)2
∂Ek
∂bk
∂bk
∂wkj = δkyj
∂Ek
∂bk = δk = (zk−tk)φ0(bk)
x1
x2
xi
x0=1
y1 y2
yj
y0=1
z1
zk warstwa
wejściowa warstwa ukryta
warstwa wyjściowa
(bias) (bias)
∂bk
∂wkj = ∂
∂wkj(wk1y1+wk2y2+ .. +wkjyj + .. +wkJyJ) =yj
Dowód poprawno±ci
∂E
∂wji = ∂E
∂aj
∂aj
∂wji = δjxi
∂E
∂aj = δj =?
x1
x2
xi
x0=1
y1
y2 yj
y0=1
z1
zk warstwa
wejściowa warstwa ukryta
warstwa wyjściowa
(bias) (bias)
∂aj ∂
w x w x w x w x x
Dowód poprawno±ci
aj =wjtx bk =wkty yj = φ(aj)
x1
x2
xi
x0=1
y1
y2
yj
y0=1
z1
zk warstwa
wejściowa warstwa ukryta
warstwa wyjściowa
(bias) (bias)
δj = ∂E
∂aj = ∂
∂aj 1 2
XK h=1
(φ(bh)−th)2= XK h=1
∂
∂aj 1
2(φ(bh)−th)2= XK h=1
∂Eh
∂aj
δj =
K
X∂Eh
∂bh
∂bh
∂aj =
K
Xδh∂bh
∂aj
Dowód poprawno±ci
∂bh
∂aj = ∂
∂aj(wh1y1+wh2y2+ .. +whjyj + .. +whJyJ) =
∂
∂aj(wh1φ(a1) +wh2φ(a2) + .. +whjφ(aj) + .. +whJφ(aJ)) =
∂whjφ(aj)
∂aj = whj∂φ(aj)
∂aj =whjφ0(aj) δj =
XK h=1
δhwhjφ0(aj) = ( XK h=1
δhwhj)φ0(aj)
Algorytm wstecznej propagacji bª¦du
1 wybieramy maªe wagi pocz¡tkowe. Wybieramy te» niewielki wspóªczynnik uczenia η > 0,
2 iterujemy, póki bª¡d ERROR si¦ zmniejsza (ewentualne du»e odchylenia pojedynczych przykªadów nale»y traktowa¢ raczej jako przejaw zaszumienia danych wej±ciowych ni» niedoskonaªo±ci sieci):
1 losujemy przykªad x z wyj±ciem t,
2 przebiegamy sie¢ w przód, dla ka»dej jednostki zapami¦tuj¡c sum¦ wej±ciow¡ i jej wyj±cie (warto±¢ funkcji aktywuj¡cej na sumie wej±ciowej),
3 przebiegamy sie¢ w tyª, liczymy δ dla ka»dej jednostki
4 zmieniamy wagi,
Algorytm wstecznej propagacji bª¦du
Adnotacja do 2.2 Przebiegamy sie¢ w przód, dla ka»dej jednostki zapami¦tuj¡c sum¦ wej±ciow¡ i jej wyj±cie. Suma wej±ciowa dla jednostek ukrytych ma warto±¢:
aj =wjtx, natomiast dla jednostek wyj±ciowych:
bk =wkty.
Wyj±cie jednostki ukrytej (warto±¢ funkcji aktywuj¡cej) ma warto±¢:
yj = φ(aj), natomiast dla jednostki wyj±ciowej:
Algorytm wstecznej propagacji bª¦du
Adnotacja do 2.3 - Przebiegamy sie¢ w tyª, liczymy δ dla ka»dej jednostki.
δ dla jednostek wyj±ciowych:
δk = (zk−tk)φ0(bk).
δ dla jednostek ukrytych:
δj = ( XK k=1
δkwkj)φ0(aj).
Algorytm wstecznej propagacji bª¦du
Adnotacja do 2.3 Przebiegamy sie¢ w tyª, liczymy δ dla ka»dej jednostki. Pami¦tajmy, »e dla jednostek wyj±ciowych:
φ0(bk) =zk(1 − zk), natomiast dla jednostek ukrytych:
φ0(aj) =yj(1 − yj),
gdzie φ jest funkcj¡ sigmoidaln¡. Zatem dla jedostek wyj±ciowych:
δk = (zk −tk)φ0(bk) = (zk−tk)zk(1 − zk), natomiast dla jednostek ukrytych:
K K
Algorytm wstecznej propagacji bª¦du
Sie¢ wielowarstwowa u»ywana we wstecznej propagacji bª¦du mo»e mie¢, a nawet powinna mie¢, wi¦cej ni» jedn¡ warstw¦
ukryt¡.
δ dla wszystkich jednostek z warstw ukrytych jest liczona w taki sam sposób.
Musimy pami¦ta¢ o tym, »e najpierw liczymy δ dla jednostek z ostatniej warstwy ukrytej, potem dla jednostek z przedostatniej warstwy ukrytej, potem dla jednostek z przed przedostatniej warstwy ukrytej itd.
Algorytm wstecznej propagacji bª¦du
Adnotacja do 2.4 zmieniamy wagi.
Dla warstwy wyj±ciowej:
wkj(m+1)=wkj(m)− ηδkyj. Dla warstw ukrytych:
wji(m+1) =wji(m)− ηδjxi.
Staªa uczenia η powinna mie¢ dodatni¡ warto±¢ blisk¡ zeru np.
η =0.001.
1 Sie¢ wielowarstwowa Architektury sieci Dlaczego MLP?
2 Algorytm uczenia
Algorytm spadku gradientowego Funkcje aktywuj¡ce
Algorytm wstecznej propagacji bª¦du
3 Uwagi do algorytmu wstecznej propagacji bª¦du Problemy ze zbie»no±ci¡
Modykacje algorytmu Normalizacja danych
Minima lokalne
Algorytm spadku gradientowego mo»e, przy niesprzyjaj¡cych
okoliczno±ciach, utkn¡¢ w minimum lokalnym. Co gorsza, zazwyczaj nie jeste±my w stanie stwierdzi¢, czy zwrócony wynik jest minimum globalnym czy lokalnym. W takich sytuacjach najprostszym (i jednym z najlepszych) rozwi¡zaniem jest restart algorytmu z losowego
rozwi¡zania pocz¡tkowego i wybranie najlepszego ze zwróconych wyników.
Wady algorytmu
wymaga du»ej liczby iteracji, by osi¡gn¡¢ zbie»no±¢, mo»e si¦ okaza¢ zbyt wolny, je»eli przyjmie si¦ za maªy wspóªczynnik uczenia,
z kolei zbyt du»a warto±¢ η grozi wyst¡pieniem oscylacji wokóª minimum,
algorytm jest wra»liwy na wyst¦powanie minimów lokalnych, Jak sobie z tym poradzi¢? Czy mo»na sobie z tymi problemami poradzi¢ efektywnie?
Adaptacyjny dobór wspóªczynnika uczenia
Dzi¦ki odpowiednim modykacjom wspóªczynnika uczenia mo»emy przy±pieszy¢ nauk¦ sieci i poprawi¢ jej zbie»no±¢.
η(m+1) =
iη(m) ERROR(m+1) ≤p · ERROR(m) dη(m) ERROR(m+1) >p · ERROR(m) gdzie:
p dopuszczalny wspóªczynnik wzrostu bª¦du (np. p = 1.05), i wspóªczynnik zwi¦kszania warto±ci, i ≥ 1 (np. i = 1.2), d wspóªczynnik zmniejszania warto±ci, d < 1 (np. d = 0.2).
Metoda momentu
Do procesu uaktualniania wag wprowadza si¦ tzw. moment (p¦d, bezwªadno±¢), który jest proporcjonalny do zmiany tej wagi
w poprzedniej iteracji.
wji(m+1) =wji(m)− ηδjxi+ α∆wji(m)
wkj(m+1) =wkj(m)− ηδkyj + α∆wkj(m)
∆wji(m) =wji(m)−wji(m−1)
∆wkj(m) =wkj(m)−wkj(m−1) α ∈ [0, 1), sugerowana warto±¢ 0.1.
Metoda momentu
Skªadnik momentu nie powinien caªkowicie zdominowa¢ procesu uczenia, poniewa» grozi to niestabilno±ci¡ procesu uczenia.
Aby temu zapobiec, kontroluje si¦ warto±¢ funkcji bª¦du w trakcie uczenia, doprowadzaj¡c do jej wzrostu jedynie w ograniczonym zakresie np. o p procent.
Je±li w kolejnych iteracjach jest speªniona relacja ERROR(m+1) < (1 + 0.01p)ERROR(m), to krok jest akceptowany i nast¦puje aktualizacja wag.
W przeciwnym razie zmiany s¡ pomijane i przyjmuje si¦
∆w(m+1) =0.
W takim przypadku skªadnik gradientowy odzyskuje przewag¦
nad skªadnikiem momentu i proces uczenia przebiega zgodnie
Jak dziaªa metoda momentu?
Dla pªaskich odcinków funkcji bª¦du, moment i gradient maj¡ ten sam kierunek, ich dziaªanie kumuluje si¦ i algorytm przy±piesza, dla α = 0.9 krok na takim odcinku mo»e by¢ 10 razy dªu»szy.
W pobli»u minimum, skªadnik momentu nie b¦d¡c zwi¡zany z aktualn¡ warto±ci¡ gradientu, mo»e spowodowa¢ zmian¦ wag prowadz¡c¡ do chwilowego wzrostu warto±ci funkcji bª¦du i w efekcie opuszczenia strefy przyci¡gania tego minimum.
Normalizacja danych
Korzystaj¡c z sieci neuronowej typu MLP wyposa»onej w sigmoidalne funkcje aktywacji, koniecznie staje si¦ przeprowadzenie skalowania lub normalizacji danych podawanych na wej±ciach i wyj±ciu sieci.
Brak odpowiedniej transformacji powoduje powa»ne zakªócenia w procesie uczenia oraz gorsze wªa±ciwo±ci nauczonej sieci.
Normalizacja danych
Oczekiwane warto±ci wyj±¢ nie powinny przyjmowa¢ kresu górnego ani dolnego funkcji aktywacji, to jest warto±ci 1 i 0 odpowiednio.
Przykªadowo dla sigmoidy mo»e by¢ to przedziaª [0.1; 0.9] ⊂ [0; 1].
Odpowiednio dla sigmoidy symetrycznej np. [−0.9; 0.9].
Dla wej±¢ nie ma tak ±cisªych ogranicze«, mog¡ by¢ skalowane do takich samych warto±ci co wej±cia. Wa»ne, »eby byªy bliskie zeru i miaªy maª¡ amplitud¦.
Normalizacja danych
Dlaczego skalujemy do przedziaªu np. [0.1; 0.9] a nie (0; 1) (dla sigmoidy niesymetrycznej)?
Zaªó»my, »e mamy dwie zmienne v1 i v2. Obie s¡ do±¢ du»e i maj¡
taki sam znak, np. v1 =10 v2 =5. Mimo tego, »e ró»nica mi¦dzy nimi jest znaczna (50%), gdy policzymy dla nich σ(v1) =0.99995 oraz σ(v2) =0.99331, otrzymamy wyniki bardzo bliskie sobie (ró»nica rz¦du 0.7%). Z drugiej strony pochodna sigmoidy w x = 5 oraz x = 10 b¦dzie bardzo maªa, zatem i zmiana wag równie» maªa, co wydªu»y dziaªanie algorytmu.
Normalizacja danych
Wyst¦powanie du»ych ró»nic w zakresach warto±ci
przyjmowanych przez zmienne mo»e ¹le wpªywa¢ na dziaªanie neuronu, zaburzaj¡c wpªyw poszczególnych wej±¢.
Sieci uczone w oparciu o zmienne o du»ych zakresach s¡ równie»
bardziej podatne na utkwienie w minimach lokalnych.
Du»e warto±ci zmiennych wej±ciowych prowadz¡ tak»e do nasycenia sigmoidalnej funkcji aktywacji, której pochodna w takim przypadku zbiega do warto±ci 0, blokuj¡c tym samym proces uczenia.
Sigmoida i jej pochodna
1 2 3 4
5 f(x)=x
sigm.
poch. sigm.