multiLayerNN PL

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 22

Uczenie

Wielowar-
stwowych
Sieci
Neuronów o
Ciągłej
Funkcji
Aktywacji
Uczenie Wielowarstwowych Sieci Neuronów o
(c) Marcin
Sydow
Ciągłej Funkcji Aktywacji

(c) Marcin Sydow


Plan

Uczenie
Wielowar-
stwowych
Sieci
Neuronów o
Ciągłej
Funkcji
Aktywacji

(c) Marcin uczenie neuronu o ciągłej funkcji aktywacji


Sydow
uczenie jednowarstwowej sieci neuronów o ciągłej funkcji
aktywacji
uczenie sieci wielowarstwowej - metoda propagacji
wstecznej
Uczenie
Wielowar-
stwowych
Sieci
Neuronów o
Ciągłej
Funkcji
Aktywacji

(c) Marcin
Sydow
Uczenie neuronu o ciągłej funkcji aktywacji
Przypomnienie: neuron z ciągłą funkcją aktywacji

Uczenie
Wielowar-
stwowych
Sieci
Neuronów o
Ciągłej sigmoidalna funkcja unipolarna:
Funkcji
Aktywacji
1
(c) Marcin f (net) =
Sydow 1 + e −net
sigmoidalna funkcja bipolarna:
2
f (net) = −1
1 + e −net
gdzie:
net = w T x
Błąd neuronu ciągłego

Uczenie
Wielowar-
stwowych
Sieci
Neuronów o
Ciągłej
Funkcji
Aktywacji
Zdefiniujmy następującą miarę błędu pojedynczego neuronu:
(c) Marcin 1 1
Sydow E = (d − y )2 = (d − f (w T x))2
2 2
gdzie:
d - pożądane wyjście (ciągłe)
y - aktualne wyjście (ciągłe) (y = f(net))
(współczynnik 1/2 wybrany dla uproszczenia późniejszych rachunków)
Cel uczenia: minimalizacja błędu

Uczenie
Wielowar-
stwowych
Sieci Chcemy tak modyfikować wektor wag w , żeby zminimalizować
Neuronów o
Ciągłej błąd.
Funkcji
Aktywacji
Metoda gradientu: największy spadek funkcji (w kierunku
(c) Marcin
Sydow
minimum) wskazywany jest przez przeciwny wektor gradientu
(czyli pochodnych cząstkowych błędu jako funkcji wektora wag)

∂E
∇E (w ) =
∂w
∂net ∂net T
∇E (w ) = −(d − y )f 0 (net)( ,..., ) =
∂w1 ∂wp
= −(d − y )f 0 (net)x
Pochodne funkcyj sigmoidalnych

Uczenie
Wielowar-
stwowych
Sieci
Zauważmy, że:
Neuronów o
Ciągłej dla funkcji sigmoidalnej unipolarnej:
Funkcji
Aktywacji

(c) Marcin
f 0 (net) = f (net)(1 − f (net)) = y (1 − y )
Sydow

dla funkcji sigmoidalnej bipolarnej:


1 1
f 0 (net) = (1 − f 2 (net)) = (1 − y 2 )
2 2
Czyli pochodna funkcji f jest łatwo wyrażalna przez samą
funkcję f.
(Teraz można zrozumieć dlaczego zaproponowano akurat takie formy
ciągłych funkcyj aktywacji)
Reguła uczenia dla ciągłego neuronu

Uczenie
Wielowar-
stwowych
Sieci
Reasumując, wagi neuronu ciągłego modyfikujemy zgodnie ze
Neuronów o
Ciągłej
wzorem:
Funkcji
Aktywacji unipolarny:
(c) Marcin
Sydow wnew = wold + η(d − y )y (1 − y )x

bipolarny:
1
wnew = wold + η(d − y )(1 − y 2 )x
2
gdzie: η to współczynnik uczenia (learning rate)
Zauważmy wyraźną analogię do reguły delta dla dyskretnego
perceptronu
Uczenie
Wielowar-
stwowych
Sieci
Neuronów o
Ciągłej
Funkcji
Aktywacji

(c) Marcin
Sydow
Uczenie jednowarstwowej sieci neuronów o ciągłej funkcji
aktywacji
Jednowarstwowa sieć neuronów ciągłych

Uczenie
Wielowar-
stwowych
Sieci
Neuronów o
Załóżmy, że sieć ma J wejść i K neuronów ciągłych.
Ciągłej
Funkcji Wprowadźmy następujące oznaczenia:
Aktywacji

(c) Marcin wektor wejść: y T = (y1 , . . . , yJ )


Sydow
wektor wyjść: z T = (z1 , . . . , zK )
macierz wag: W = [wkj ] (wkj : k-ty neuron, j-ta waga)
macierz funkcyj aktywacji: Γ = diag [f (·)] (wymiar: K × K )

Obliczenie wyjścia można więc teraz zapisać jako:

z = Γ[Wy ]
Uczenie jednowarstwowej sieci ciągłych neuronów

Uczenie
Wielowar-
stwowych
Wprowadźmy dodatkowe oznaczenia:
Sieci
Neuronów o pożądany wektor wyjściowy: d T = (d1 , . . . , dK )
Ciągłej
Funkcji
Aktywacji
błąd wyjścia dla pojedynczego wektora wejść:
(c) Marcin K
Sydow 1X 1
E= (dk − zk )2 = ||d − z||2
2 2
k=1

Zastosujemy ponownie metodę gradientu (jak dla pojedynczego


neuronu).
Zmiana pojedynczej wagi dana jest więc wzorem:
∂E
∆wkj = −η
∂wkj
Uczenie jednej warstwy, cd.

Uczenie
Wielowar-
Mamy więc:
stwowych ∂E ∂E ∂netk
Sieci =
Neuronów o ∂wkj ∂netk ∂wkj
Ciągłej
Funkcji
Aktywacji
sygnał błędu delta k-tego neuronu ostatniej warstwy:
(c) Marcin
Sydow
∂E
δzk = − = (dk − zk )zk (1 − zk )
∂netk
∂E 1
δzk = − = (dk − zk )(1 − zk )2
∂netk 2

∂netk
Zauważmy, że ∂wkj = yj
Otrzymujemy więc wzór modyfikacji wag w postaci macierzowej:

Wnew = Wold + ηδz y T


Algorytm uczenia jednej warstwy

Uczenie
Wielowar- wybór η, Emax , inicjalizacja losowych wag W , E = 0
stwowych
Sieci dla każdego przykładu ze zbioru uczącego:
Neuronów o
Ciągłej
oblicz wyjście z
Funkcji zmodyfikuj wagi k-tego neuronu (unipolarny/bipolarny):
Aktywacji

(c) Marcin wk ← wk + η(dk − zk )zk (1 − zk )y


Sydow
1
wk ← wk + η(dk − zk )(1 − zk2 )y
2
kumuluj błąd:
K
1X
E ←E+ (dk − zk )2
2
k=1

jeśli pokazano wszystkie elementy zbioru uczącego i


E < Emax to zakończ uczenie. W przeciwnym wypadku
wyzeruj E i ponownie wykonaj uczenie na całym zbiorze
uczącym
Uczenie
Wielowar-
stwowych
Sieci
Neuronów o
Ciągłej
Funkcji
Aktywacji

(c) Marcin
Sydow
Uczenie sieci wielowarstwowej - metoda propagacji wstecznej
Sieć wielowarstwowa

Uczenie
Wielowar-
stwowych
Sieci
Neuronów o
Ciągłej
Funkcji Jedna warstwa sieci neuronowej ma możliwości podzielenia
Aktywacji
przestrzeni obrazów wejściowych na obszary liniowo
(c) Marcin
Sydow separowalne.
Każda następna może dokonywać kolejnych transformacji.
W efekcie, wielowarstwowa sieć neuronowa jest uniwersalnym
narzędziem, które teoretycznie może dowolnie dokładnie
aproksymować dowolne transformacje przestrzeni wejściowej w
przestrzeń odwzorowań wyjściowych.
Uczenie Sieci Wielowarstwowej

Uczenie
Wielowar-
stwowych Zilustrujemy uczenie sieci wielowarstwowej na przykładzie sieci
Sieci
Neuronów o 2-warstwowej. W tym celu dodamy jedną warstwę umieszczoną
Ciągłej
Funkcji “przed” ostatnią (wyjściową) warstwą sieci i pokażemy jak ją
Aktywacji
uczyć.
(c) Marcin
Sydow Każda warstwa poza wyjściową nazywana jest warstwą ukrytą,
gdyż nie jest wiadome jakie powinno być jej “prawidłowe”
wyjście.
Metodę uczenia sieci wielowarstwowej odkryto dopiero w latach
70. i zaczęto stosować w latach 80. XX. wieku - nazywa się ona
metodą wstecznej propagacji błędów, gdyż wagi modyfikuje
się od warstwy ostatniej do pierwszej (wstecz).
Metodę tę można naturalnie rozszerzać z sieci 2-warstwowej na
dowolną liczbę warstw ukrytych.
Sieć dwuwarstwowa

Uczenie
Wielowar-
Wprowadzimy następujące oznaczenia:
stwowych
Sieci
wektor wejść: x T = (x1 , . . . , xI )
Neuronów o
Ciągłej
macierz wag pierwszej warstwy: V = [vji ]
Funkcji
Aktywacji
(vji : j-ty neuron, i-ta waga)
(c) Marcin
wektor wyjść pierwszej (wejść drugiej) warstwy:
Sydow y T = (y1 , . . . , yJ )
wektor wyjść drugiej warstwy (całej sieci):
z T = (z1 , . . . , zK )
macierz wag drugiej warstwy: W = [wkj ]
(wkj : k-ty neuron, j-ta waga)
operator funkcyj aktywacji: Γ = diag [f (·)]
(wymiar: J × J lub K × K )
Obliczenie wektora wyjść można więc teraz zapisać jako:
z = Γ[Wy ] = Γ[W Γ[Vx]]
Uczenie sieci wielowarstwowej

Uczenie
Wielowar-
stwowych
Sieci Metoda wstecznej propagacji błędu:
Neuronów o
Ciągłej
Funkcji
Po obliczeniu wektora wyjść z, wagi modyfikowane są od
Aktywacji
ostatniej do pierwszej warstwy (wstecz).
(c) Marcin
Sydow Pokazano wcześniej, jak modyfikować wagi ostatniej warstwy.
Po zmodyfikowaniu wag ostatniej warstwy, modyfikowane są
wagi warstwy drugiej od końca (itd.)
Przy modyfikowaniu wag warstwy drugiej od końca stosuje się
również metodę gradientu:

∂E
∆vji = −η
∂vji
Metoda wstecznej propagacji błędu, cd.

Uczenie
Wielowar-
stwowych
Sieci Przez analogię, wagi V modyfikowane są następująco:
Neuronów o
Ciągłej
Funkcji
Aktywacji
Vnew = Vold + ηδy x T
(c) Marcin
Sydow gdzie, δy oznacza wektor sygnału błędu warstwy ukrytej:

δyT = (δy1 , . . . , δyJ )

Sygnał błędu warstwy ukrytej obliczamy następująco:


K
∂E ∂yj ∂E X
δyj = − =− · f 0 (netj ) = δzk wkj · fj0 (netj )
∂yj ∂netj ∂yj
k=1
Algorytm uczenia sieci dwuwarstwowej

Uczenie
Wielowar-
stwowych
wybór η, Emax , inicjalizacja losowych wag W i V , E = 0
Sieci
Neuronów o
dla każdego przykładu ze zbioru uczącego:
Ciągłej
Funkcji
oblicz kolejno wektory wyjść PKy oraz z
Aktywacji kumuluj błąd:E ← E + 12 k=1 (dk − zk )2
(c) Marcin oblicz sygnały błędów (ostatniej, pierwszej warstwy):
Sydow
unipolarny: PK
δzk = (dk − zk )zk (1 − zk ), δyj = yj (1 − yj ) k=1 δzk wkj
bipolarny: PK
δzk = 12 (dk − zk )(1 − zk2 ), δyj = 12 (1 − yj2 ) k=1 δzk wkj
zmodyfikuj wagi ostatniej warstwy:
wkj ← wkj + ηδzk yj
zmodyfikuj wagi pierwszej (ukrytej) warstwy:
vji ← vji + ηδyj xi
jeśli pokazano wszystkie elementy zbioru uczącego i E < Emax
to zakończ uczenie. W przeciwnym wypadku wyzeruj E i
ponownie wykonaj uczenie na całym zbiorze uczącym
Zagadnienia do przyswojenia:

Uczenie
Wielowar-
stwowych
Sieci
Neuronów o
Ciągłej
Funkcji
Aktywacji

(c) Marcin uczenie neuronu o ciągłej funkcji aktywacji


Sydow
uczenie jednowarstwowej sieci neuronów o ciągłej funkcji
aktywacji
uczenie sieci wielowarstwowej - metoda propagacji
wstecznej
Uczenie
Wielowar-
stwowych
Sieci
Neuronów o
Ciągłej
Funkcji
Aktywacji

(c) Marcin
Sydow

Dziękuję za uwagę.

You might also like