WAI
Wykład 3. Sieci neuronowe. Uczenie
Żurada Jacek, Barski Mariusz , Jędruch Wojciech, Sztuczne
sieci neuronowe Wydawnictwo Naukowe PWN, Warszawa,
1996
.
Literatura:
S. Osowski, Sieci neuronowe w ujęciu algorytmicznym. WNT,
Warszawa 1997.
Perceptron - przypomnienie
.
.
0
1
p
p
w
x
w
y
i
i
w
1
x
1
x
2
x
n
y
w
2
w
n
Przypomnienie.Jak opisać
perceptron?
Co charakteryzuje perceptron?
• Perceptron jest opisywany
jedno-znacznie przez zbiór wag
w
1
,...,w
n
oraz wartość
progowa
• Wartości x
1
,...,x
n
to zmienne
pojawiające się na wejściu do
perceptronu
• Funkcja aktywacji:
otherwise
x
w
y
i
i
0
1
Uczenie perceptronu
Przykład: rozpoznawanie znaków
Siatka 6 6
36 wejść
Wyjście: 1, jeśli na wejściu
pojawia się litera “A”, zaś 0
w p.p.
Zadanie: dobrać wagi wejść i wartość
progową tak, by uzyskać zaplanowany
efekt
Dane treningowe
(znane odpowiedzi)
Dobór wag (uczenie)
Dane testowe
Odpowiedź
Uczenie perceptronu, n=2
• Proces uczenia:
– Inicjujemy wagi losowo
– Dla każdego przykładu,
jeśli odpowiedź jest
nieprawidłowa, to
w
1
+ = x
1
w
2
+ = x
2
– =
w
1
(k+1)= w
1
(k) + w
1
+ ,
podobnie dla w
2
,
(k+1)= (k) – – ,
k-krok iteracji, epoka
• Wejście:
– Ciąg przykładów uczących ze znanymi
odpowiedziami
w
1
x
1
+
w
2
x
2
-
=
0
[w
1
,w
2
]
gdzie jest równe różnicy odpowiedzi sieci i prawidłowej
odpowiedzi.
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:
= 3
2
-4
x
2
x
1
( = 0)
2
-4
x
2
x
1
(zawsze -1)3
Przykład: Uczenie neuronu
• Zbiór punktów na
wykresie jest liniowo
separowalne.
otherwise
x
w
y
i
i
1
1
Funkcja
aktywacji:
• Otrzymamy
w
1
= - 18.8
w
2
= - 12.2
= 3
• Niech
w
1
=1, w
2
=1, = 1, wsp.
uczenia =1
•Pierwszy przykład jest
dobrze, ale drugi nie,
modyfikujemy zatem
wagi:
w
1
+ = (-1 - 1) 9.4
w
2
+ = (-1 - 1) 6.4
– = (-1 - 1)
•Drugi przykład jest
dobry, ale trzeci
nie…
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
Sieci perceptronów
Ograniczenia pojedynczych perceptronów
spowodowały w latach 80-tych wzrost
zainteresowania sieciami wielowarstwowymi i
opracowanie algorytmu ich uczenia (propagacja
wsteczna)
Synapses
Axon
Dendrites
Synapses
+
+
+
-
-
(weights)
Nodes
SIECI PERCEPTRONÓW
Potrafią reprezentować dowolną funkcję
boolowską (opartą na rachunku zdań)
= 2
1
1
q
p
= 1
-2
p XOR q
1
1
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
Funkcje aktywacji
• Progowe
• Sigmoidaln
e
0
0
0
1
s
s
s
f
s
e
s
f
1
1
0
0,2
0,4
0,6
0,8
1
1,2
-15
-10
-5
0
5
10
15
-0,2
0
0,2
0,4
0,6
0,8
1
1,2
-15
-10
-5
0
5
10
15
FUNKCJE AKTYWACJI (2)
• Unipolarne
• Bipolarne
0
0,2
0,4
0,6
0,8
1
1,2
-15
-10
-5
0
5
10
15
s
e
s
f
1
1
-1,5
-1
-0,5
0
0,5
1
1,5
-15
-10
-5
0
5
10
15
1
1
2
s
e
s
f
FUNKCJE AKTYWACJI (3)
0
0,2
0,4
0,6
0,8
1
1,2
-15
-10
-5
0
5
10
15
s
e
s
f
1
1
=
2.0
=
1.0
=
0.5
0
0
0
5
.
0
0
1
lim
5
.
0
lim
0
s
s
s
s
f
s
f
FUNKCJE AKTYWACJI (4)
s
e
s
f
1
1
,
0
0,2
0,4
0,6
0,8
1
1,2
-10
-5
0
5
10
15
5
.
1
2
FUNKCJE AKTYWACJI (5)
• Zasady ogólne:
– Ciągłość (zachowanie stabilności
sieci jako modelu rzeczywistego)
– Różniczkowalność (zastosowanie
propagacji wstecznej błędu)
– Monotoniczność (intuicje związane
z aktywacją komórek neuronowych)
– Nieliniowość (możliwości ekspresji)
SIECI NEURONOWE
Potrafią modelować (dowolnie dokładnie
przybliżać) funkcje rzeczywiste
(z tw. Kołmogorowa)
y f w
wx
i i
i
n
0
1
s
e
s
f
1
1
funkcja aktywacji
0.3
1.1
1
-2
0
-0.2
-0.2
0.4
0.4
SIECI NEURONOWE
0.9
-0.5
1.2
0.3
0.9
1.2
-0.4
-0.4
1
-0.4
-0.8
-2
1.2
1
-0.5
-0.1
-0.4
-0.8
-0.7
SIECI NEURONOWE
SIECI JAKO FUNKCJE ZŁOŻONE (1)
g
f2
f1
x
1
x
2
w
1
w
2
v1
1
v2
2
v1
2
v2
1
y
2
22
1
12
2
2
2
21
1
11
1
1
x
v
x
v
f
w
x
v
x
v
f
w
g
y
2
1
,x
x
Network
y
SIECI JAKO FUNKCJE ZŁOŻONE (2)
8
1
1
2
3
1
4
0
8
1
1
2
3
1
4
1
2
1
2
1
2
1
2
1
3
2
7
5
3
3
2
7
5
3
x
x
x
x
x
x
x
x
e
e
e
e
y
g
f2
f1
x
1
x
2
4
-3
5
1
3
-7
y
SIECI JAKO FUNKCJE ZŁOŻONE (3)
• 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
g
f2
f1
x
1
x
2
w
1
w
2
v1
1
v2
2
v1
2
v2
1
y =
=Network(x1
,x2)
SIECI JAKO FUNKCJE ZŁOŻONE – przypadek
liniowy
• Niech
f
i
(x1,x2) = a
i
*(x1*v
i
1 + x2*v
i
2) + b
i
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)
g
f2
f1
x
1
x
2
w
1
w
2
v1
1
v2
2
v1
2
v2
1
y
PROPAGACJA WSTECZNA BŁĘDU (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
PROPAGACJA WSTECZNA BŁĘDU (2)
dane uczące
odpowiedź
sieci y
właściwa
odpowiedź t
błąd d
2
2
1
t
y
d
Błąd sieci definiowany jest zazwyczaj
jako
PROPAGACJA WSTECZNA BŁĘDU (3)
• Oznaczmy przez:
– f: R
R – funkcję aktywacji w neuronie
– w
1
,..., w
K
– wagi połączeń wchodzących
– z
1
,..., z
K
– sygnały napływające do
neuronu z poprzedniej warstwy
• Błąd neuronu traktujemy jako funkcję
wag połączeń do niego prowadzących:
2
1
1
1
...
2
1
,...,
t
z
w
z
w
f
w
w
d
K
K
K
PRZYKŁAD (1)
• Rozpatrzmy model, w którym:
– Funkcja aktywacji przyjmuje postać
– 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]
2
3
1
1
)
(
s
e
s
f
Zadania sprawdzające:
1. Co charakteryzuje prosty perceptron?
2. Podać inną funkcję logiczną niż XOR,
której nie potrafi obliczyć sieć neuronowa.
3. Jaką własność posiada każda funkcja
aktywacji?
4. Co to jest równanie perceptronowe? Jakie
jest jego znaczenie?
5. Co potrafi zrobić pojedyńczy neuron?
Zadania sprawdzające:
1. Co charakteryzuje prosty perceptron?
2. Podać inną funkcję logiczną niż XOR,
której nie potrafi obliczyć sieć neuronowa.
3. Jaką własność posiada każda funkcja
aktywacji?
4. Co to jest równanie perceptronowe? Jakie
jest jego znaczenie?
5. Co potrafi zrobić pojedyńczy neuron?
PRZYKŁAD (2)
• Liczymy wejściową sumę ważoną:
• Liczymy odpowiedź neuronu:
• Błąd wynosi:
23
.
0
1
1
1
1
)
(
2
.
1
2
4
.
2
3
e
e
s
f
y
4
.
2
3
.
0
2
1
)
3
(
0
1
3
3
2
2
1
1
x
w
x
w
x
w
s
036
.
0
5
.
0
23
.
0
2
1
2
d
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 (2)
Załóżmy, że mamy neuron z wagami w
0
=0, w
1
=2,
w
2
=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?
y f w
wx
i i
i
n
0
1
s
e
s
f
1
1
w
1
w
2
x
1
x
2
y
Wagi powinniśmy
zmienić w kierunku
spadku wartości błędu.
-4
-2
0
2
4
-4
-2
0
2
4
0
0.2
0.4
-4
-2
0
2
4
Możemy błąd przedstawić jako
funkcję w
1
, w
2
:
błąd
wartość błędu
dla wag [2, 3]
w
ag
i
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
-10
-8
-6
-4
-2
0
2
4
-10
-5
0
5
10
Nachylenie wykresu w danym punkcie
(odpowiadającym aktualnym wartościom
wag) dane jest przez gradient, czyli wektor
pochodnych cząstkowych.
Zmiana wag powinna nastąpić w kierunku przeciwnym.
-10
-5
0
5
-10
-5
0
5
10
0.25
0.5
0.75
1
1.25
-10
-5
0
5
j
z
s
f
t
y
'
OBLICZANIE POCHODNEJ
j
K
w
w
w
d
,...,
1
j
K
K
w
z
w
z
w
s
s
f
y
t
y
...
2
1
1
1
2
j
K
K
w
t
z
w
z
w
f
2
1
1
...
2
1
PROPAGACJA WSTECZNA BŁĘDU
• 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.
• Realizacja:
j
j
z
s
f
y
t
w
'
Prosty przykład: wagi w
1
=1, w
2
=1, dane wejściowe: [0.5, 0.5], t = 1.
Funkcja sigmoidalna:
więc:
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.
s
e
s
f
1
1
2
1
s
s
e
e
s
f
PROPAGACJA WSTECZNA BŁĘDU (2)
błąd
1
błąd
w
1
w
2
Błędy są następnie propagowane w kierunku
poprzednich warstw.
Wprowadźmy pomocniczo współczynnik błędu
zdefiniowany dla ostatniej warstwy jako:
n
i
i
i
w
s
f
1
)
(
czyli neuron w warstwie ukrytej
“zbiera” błąd z neuronów, z którymi
jest połączony.
błąd
2
y
t
s
f
)
(
a dla pozostałych warstw:
Zmiana wag połączeń następuje po fazie propagacji
błędu i odbywa się według wzoru:
z
w
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.
Zadania sprawdzające:
1. Co charakteryzuje prosty perceptron?
2. Podać inną funkcję logiczną niż XOR,
której nie potrafi obliczyć sieć neuronowa.
3. Jaką własność posiada każda funkcja
aktywacji?
4. Co to jest równanie perceptronowe? Jakie
jest jego znaczenie?
5. Co potrafi zrobić pojedyńczy neuron?