Wykład 3

Transkrypt

Wykład 3
Sieci neuronowe - uczenie
http://zajecia.jakubw.pl/nai/
Perceptron - przypomnienie
x1 x2
xn
w1 w2
wn
1 ↔∑ wi xi ≥ θ
y=
w p. p.
0
y
1
Uczenie perceptronu
Przykład: rozpoznawanie znaków
Wyjście: 1, jeśli na wejściu
pojawia się litera “A”, zaś 0 w p.p.
36 wejść
Siatka 6 × 6
Zadanie: dobrać wagi wejść i wartość progową tak,
by uzyskać zaplanowany efekt
Dane testowe
Dane treningowe
(znane odpowiedzi)
Dobór wag (uczenie)
Odpowiedź
Uczenie perceptronu
• Wejście:
– Ciąg przykładów uczących ze znanymi odpowiedziami
• Proces uczenia:
x1
w1
+
x2
w2
-θ
=
0
– Inicjujemy wagi losowo
[w1,w2]
– Dla każdego przykładu,
jeśli odpowiedź jest
nieprawidłowa, to
w 1 + = α x1
w 2 + = α x2
θ–=α
gdzie α jest równe różnicy między odpowiedzią
prawidłową a otrzymaną.
2
Uczenie perceptronu
• Często α mnoży się dodatkowo przez
niewielki współczynnik uczenia
• Po wyczerpaniu przykładów, zaczynamy
proces uczenia od początku, dopóki następują
jakiekolwiek zmiany wag połączeń
• Próg θ można traktować jako wagę
dodatkowego wejścia o wartości -1:
(zawsze -1)
x1
2
θ=3
x2
-4
x1
3
2
x2
(θ = 0)
-4
Uczenie perceptronu
• Opisany schemat jest w miarę
przejrzysty tylko dla pojedynczych
perceptronów, lub niewielkich sieci
• Ciężko jest stosować reguły tego typu
dla skomplikowanych modeli
– Tymczasem np. do rozpoznawania
wszystkich liter potrzeba by sieci złożonej
z 26 takich perceptronów
3
Sieci perceptronów
Dendrites
Synapses
+
+
(weights)
Axon
+
Synapses
Nodes
-
Ograniczenia pojedynczych perceptronów spowodowały w latach
80-tych wzrost zainteresowania sieciami wielowarstwowymi i
opracowanie algorytmu ich uczenia (propagacja wsteczna)
SIECI WIELOWARSTWOWE
• Wyjścia neuronów
należących do
warstwy niższej
połączone są z
wejściami neuronów
należących do
warstwy wyższej
– np. metodą „każdy z
każdym”
• Działanie sieci polega na liczeniu odpowiedzi
neuronów w kolejnych warstwach
• Nie jest znana ogólna metoda projektowania optymalnej
architektury sieci neuronowej
4
SIECI PERCEPTRONÓW
Potrafią reprezentować dowolną funkcję
boolowską (opartą na rachunku zdań)
p
1
1
θ=2
-2
θ=1
p XOR q
1
1
q
Funkcje aktywacji
1,2
• Progowe
1
0,8
1 ⇔ s ≥ 0
f (s ) = 
0 ⇔ s < 0
0,6
0,4
0,2
0
-15
-10
-5
0
5
10
15
-0,2
1,2
• Sigmoidalne
1
0,8
0,6
f (s ) =
0,4
0,2
1
1 + e−s
0
-15
-10
-5
0
5
10
15
5
FUNKCJE AKTYWACJI (2)
1,2
• Unipolarne
1
0,8
1
f (s ) =
1 + e−s
0,6
0,4
0,2
0
-15
-10
-5
0
5
10
15
1,5
• Bipolarne
1
0,5
0
-15
-10
-5
0
5
10
2
−1
1 + e −s
f (s ) =
15
-0,5
-1
-1,5
FUNKCJE AKTYWACJI (3)
fα (s ) =
1,2
1
1
1 + e −α s
0,8
0,6
α = 2.0
0,4
α = 1.0
0,2
0
-15
-10
-5
0
lim fα (s ) = 0.5
α →0
5
10
15
1 ⇔

lim fα (s ) = 0.5 ⇔
α → +∞
0 ⇔

α = 0.5
s>0
s=0
s<0
6
FUNKCJE AKTYWACJI (4)
fθ ,α (s ) =
1
1+ e
−α ( s −θ )
θ =2
α = 1. 5
1,2
1
0,8
0,6
0,4
0,2
0
-10
-5
0
5
10
15
FUNKCJE AKTYWACJI (5)
• Zasady ogólne:
– Ciągłość (zachowanie stabilności sieci jako
modelu rzeczywistego)
– Różniczkowalność (zastosowanie
propagacji wstecznej)
– Monotoniczność (intuicje związane z
aktywacją komórek neuronowych)
– Nieliniowość (możliwości ekspresji)
7
SIECI NEURONOWE
Potrafią modelować (dowolnie dokładnie
przybliżać) funkcje rzeczywiste
(z tw. Kołmogorowa)
n


y = f  w0 + ∑ wi xi 


i =1
f (s ) =
Σ
1
1 + e−s
funkcja aktywacji
SIECI NEURONOWE
0
0.3
0.4
1.1
0.4
-2
1
-0.2
-0.2
Σ
8
SIECI NEURONOWE
-0.4
1
1.2
-0.5
-0.8
0.3
-0.4
-0.4
0.9
1.2
-0.8
0.9
-2
-0.7 -0.5
-0.1
1
1.2
-0.4
SIECI JAKO FUNKCJE ZŁOŻONE
(1)
v11
x1
f1
w1
y
v12
g
v21
x2
v22
f2
w2
y = g (w1 f1 (v11 x1 + v21 x2 ) + w2 f 2 (v12 x1 + v22 x2 ))
y = Network ( x1 , x2 )
9
SIECI JAKO FUNKCJE ZŁOŻONE
(2)
5
x1
f1
4
y
3
g
-7
x2
1
f2
-3

2
4


⇔
−
−
1
3
1

 ≥8

1+ e−3(5x1 −7 x2 )  1 + e−2(3x1 + x2 ) 

y=
2
4


0 ⇔
−
−
1
3

 <8

1+ e−3(5x1 −7 x2 )  1 + e−2(3x1 + x2 ) 
SIECI JAKO FUNKCJE ZŁOŻONE
(3)
v11
x1
f1
w1
v12
g
v21
x2
v22
f2
y=
=Network(x1,x2)
w2
• Jeśli wszystkie poszczególne funkcje
aktywacji są liniowe, to funkcja Network jest
również liniowa
• Architektura wielowarstwowa daje zatem
nowe możliwości tylko w przypadku
stosowania funkcji nieliniowych
10
SIECI JAKO FUNKCJE ZŁOŻONE –
przypadek liniowy
v11
x1
f1
w1
y
v12
g
v21
x2
v22
f2
w2
• Niech
fi(x1,x2) = ai*(x1*v1i + x2*v2i) + bi
g(z1,z2) = a*(z1*w1 + z2*w2) + b
• Wtedy
Network(x1,x2) = A1*x1 + A2*x2 + B
• Np.:
A1 = a*(a1*v1*w1 + a2*v2*w2)
PROPAGACJA WSTECZNA (1)
• Chcemy “wytrenować” wagi połączeń między
kolejnymi warstwami neuronów
• Inicjujemy wagi losowo (na małe wartości)
• Dla danego wektora uczącego obliczamy
odpowiedź sieci (warstwa po warstwie)
• Każdy neuron wyjściowy oblicza swój błąd,
odnoszący się do różnicy pomiędzy obliczoną
odpowiedzią y oraz poprawną odpowiedzią t
11
PROPAGACJA WSTECZNA (2)
dane uczące
odpowiedź sieci y
błąd d
właściwa odpowiedź t
Błąd sieci definiowany jest zazwyczaj jako
d=
1
( y − t )2
2
PROPAGACJA WSTECZNA (3)
• Oznaczmy przez:
– f: R → R – funkcję aktywacji w neuronie
– w1 ,..., wK – wagi połączeń wchodzących
– z1 ,..., zK – sygnały napływające do neuronu z
poprzedniej warstwy
• Błąd neuronu traktujemy jako funkcję wag
połączeń do niego prowadzących:
1
2
d (w1 ,..., wK ) = ( f (w1 z1 + ... + wK z K ) − t )
2
12
PRZYKŁAD (1)
• Rozpatrzmy model, w którym:
– Funkcja aktywacji przyjmuje postać
f ( s) =
1
1 + e − 3( s + 2 )
– Wektor wag połączeń = [1;-3;2]
• Załóżmy, że dla danego przykładu:
– Odpowiedź powinna wynosić t = 0.5
– Z poprzedniej warstwy dochodzą sygnały [0;1;0.3]
PRZYKŁAD (2)
• Liczymy wejściową sumę ważoną:
s = w1 x1 + w2 x2 + w3 x3 = 1 ⋅ 0 + (−3) ⋅1 + 2 ⋅ 0.3 = −2.4
• Liczymy odpowiedź neuronu:
y = f (s) =
1
1+ e
− 3( − 2.4 + 2 )
=
1
≈ 0.23
1 + e1.2
• Błąd wynosi:
d=
1
(0.23 − 0.5)2 ≈ 0.036
2
13
IDEA ROZKŁADU BŁĘDU
• Musimy „rozłożyć” otrzymany błąd na
połączenia wprowadzające sygnały do
danego neuronu
• Składową błędu dla każdego j-tego
połączenia określamy jako pochodną
cząstkową błędu względem j-tej wagi
• Składowych tych będziemy mogli użyć
do zmodyfikowania ustawień
poszczególnych wag połączeń
IDEA ROZKŁADU BŁĘDU
Załóżmy, że mamy neuron z wagami w0=0, w1=2, w2=3. Mamy
dane wektor wejściowy: [0.3 , 0.7], przy czym oczekiwana
odpowiedź to t=1. Jak należy zmienić wagi, aby błąd był jak
najmniejszy?
Możemy błąd przedstawić jako funkcję w1, w2:
x1
w1
y
w2
0.4
4
0.2


y = f  w0 + ∑ wi xi 


i =1
n
błąd
2
0
0
-4
-2
-2
0
2
1
f (s ) =
1 + e−s
-4
wa
gi
x2
4
Wagi powinniśmy zmienić w
kierunku spadku wartości błędu.
wartość błędu
dla wag [2, 3]
14
KIERUNEK ZMIANY WAG
Jeśli rozważymy większą liczbę przykładów, funkcja średniego
błędu będzie miała bardziej skomplikowany kształt.
[0.3, 0.7], t=1
[0.2, 0.9], t=0.1
[-0.6, 1], t=0
[0, -0.8], t=0.5
[0.6, 1], t=0.3
1.25
1
10
0.75
5
0.5
0.25
-10
0
-5
10
-5
0
5
5
Nachylenie wykresu w danym punkcie
(odpowiadającym aktualnym wartościom wag) dane jest
przez gradient, czyli wektor pochodnych cząstkowych.
0
-5
-10
-10
-10
Zmiana wag powinna nastąpić w kierunku przeciwnym.
-8
-6
-4
-2
0
2
4
OBLICZANIE POCHODNEJ
∂d (w1 ,..., wK )
=
∂w j
=
=
( y − t ) ⋅ f ' (s ) ⋅ z j
∂
1
( f (w1 z1 + ... + wK z K ) − t )2
2
∂w j
∂
1
( y − t )2 ∂f (s ) ∂(w z + ... + w z )
K K
1 1
2
⋅
⋅
∂w j
∂s
∂y
15
PROPAGACJA WSTECZNA
• Idea:
– Wektor wag połączeń powinniśmy przesunąć w
kierunku przeciwnym do wektora gradientu błędu
(z pewnym współczynnikiem uczenia η)
– Możemy to zrobić po każdym przykładzie uczącym,
albo sumując zmiany po kilku przykładach.
∆w j = η ⋅ (t − y ) ⋅ f ' (s ) ⋅ z j
• Realizacja:
Prosty przykład: wagi w1=1, w2=1, dane wejściowe: [0.5, 0.5], t = 1.
Funkcja sigmoidalna:
f (s ) =
1
1 + e−s
więc: f ′(s ) =
e− s
(1 + e )
−s 2
Stąd: s = 0.5 + 0.5 = 1, y = 0.731, zmiana w= (1- 0.731) * 0.19 * 0.5 = 0.026.
A więc nowe wagi to 1.026. Ten sam przykład da tym razem odpowiedź y=0.736.
PROPAGACJA WSTECZNA
Błędy są następnie propagowane w kierunku poprzednich warstw.
Wprowadźmy pomocniczo współczynnik błędu δ zdefiniowany
dla ostatniej warstwy jako:
δ = f ′( s) ⋅ (t − y )
a dla pozostałych warstw:
w1
błąd δ
błąd δ1
w2
n
δ = f ′( s) ⋅ ∑ wiδ i
i =1
błąd δ2
czyli neuron w warstwie ukrytej “zbiera” błąd
z neuronów, z którymi jest połączony.
Zmiana wag połączeń następuje po fazie propagacji błędu i odbywa
się według wzoru:
∆w = η ⋅ δ ⋅ z
Oznaczenia: w - waga wejścia neuronu, z - sygnał wchodzący do neuronu danym wejściem,
δ - współczynnik błędu obliczony dla danego neuronu, s - wartość wzbudzenia (suma
wartości wejściowych pomnożonych przez wagi) dla danego neuronu.
16

Podobne dokumenty