NAI z 03


NAI
Wykład 3. Sieci neuronowe. Uczenie
Public/wkos/NAI_z
Public/wkos/NAI_z
Public/wkos/NAI_z
Public/wkos/NAI_z
Literatura:
S. Osowski, Sieci neuronowe w ujęciu algorytmicznym. WNT, Warszawa 1997.
PODSTAWOWE ZAGADNIENIA
TECHNICZNE AI
" Zadania optymalizacyjne
 szukanie najlepszego rozwiązania (ocenianego liczbowo)
 przykłady: minimalizacja kosztu, minimalizacja funkcji błędu,
maksymalizacja wygranej (gry logiczne)
" Zadania aproksymacji (ekstrapolacji)
" Zadania aproksymacji (ekstrapolacji)
 znajdowanie zależności między danymi
 Sterowanie, prognozowanie trendów...)
" Zadania klasyfikacji
 klasyfikacja nieznanych obiektów na podstawie znanych
przykładów (rozpoznawanie mowy, OCR, KDD,& )
ZADANIA OPTYMALIZACYJNE
Wiele problemów rozwiązywanych przez komputery ma
postać zadań optymalizacyjnych:
 znalezć wśród różnych możliwych rozwiązań takie,
które najbardziej nam odpowiada
Niech X - dowolny zbiór skończony (przestrzeń stanów)
Niech f : X R - pewna rzeczywista funkcja na X (funkcja celu)
Niech f : X R - pewna rzeczywista funkcja na X (funkcja celu)
Zadanie optymalizacyjne polega na znalezieniu punktu x0 ze zbioru X
takiego, że:
f(x0) = max( f(x) ), x " X
lub
f(x0) = min( f(x) ), x " X
ZADANIA APROKSYMACJI
Problemy kojarzone z terminem  sztuczna inteligencja to
często zadania aproksymacji:
 mamy daną pewną dziedzinę i niektóre wartości nieznanej
funkcji f, chcemy zgadnąć wartości f w innych punktach
Niech X - dowolny zbiór (przestrzeń stanów, uniwersum)
Niech f : X Y - pewna (nieznana) funkcja na X
Niech f : X Y - pewna (nieznana) funkcja na X
Załóżmy, że mamy dany ciąg (x1, f(x1)), ... (xn, f(xn)). Zadanie
aproksymacji polega tym, by dla dowolnego punktu x0 ze zbioru X
znalezć wartość y taką, że:
f(x0) = y lub |f(x0) - y| było minimalne
lub
P( f(x0) = y ) było maksymalne
Zadanie klasyfikacji/rozpoznania
Mamy zbiór obrazków binarnych 32x32 przedstawiających
litery (pisane ręcznie). Chcemy rozpoznawać nowe, nieznane
wcześniej przypadki (odczytywać nowe napisy).
Przestrzeń stanów: wszystkie możliwe obrazki 32x32.
Wielkość przestrzeni stanów: 232*32.
Przestrzeń stanów to zbiór wszystkich potencjalnych obiektów,
jakie mogą pojawić się w zbiorze treningowym i pózniej jako
nowe obiekty.
Nie ma prostych,  siłowych rozwiązań problemu klsyfikacji:
jeżeli obiekt testowy x0 nie występował wśród znanych
przykładów, musimy zastosować jakąś metodę uogólnienia
tych przykładów.
Sztuczne sieci neuronowe
Geneza: Naśladowanie działania naturalnych neuronów
Cel historyczny: osiągnięcie zdolności uogólniania (aproksymacji)
i uczenia się, właściwej mózgowi ludzkiemu.
Perceptron - przypomnienie
x1 x2 xn
w1 w2 wn
w1 w2 wn
1
ńł "!
"w xi e"
i
y =
ł
ół0 w p.p.
y
Przypomnienie.Jak opisać perceptron?
Co charakteryzuje perceptron?
" Perceptron jest opisywany jedno-
znacznie przez zbiór wag w1,...,wn"!
oraz wartość progowa  "!
oraz wartość progowa  "!
" Wartości x1,...,xn "! to zmienne
pojawiające się na wejściu do
perceptronu
1
ńł
"!
"w xi e" 
i
" Funkcja aktywacji:
y =
ł0
otherwise
ół
Uczenie perceptronu
Przykład: rozpoznawanie znaków
Przykład
Przykład
Przykład
Wyjście: 1, jeśli na wejściu
pojawia się litera  A , zaś 0
36 wejść
w p.p.
Siatka 6 6
Siatka 6 6
Zadanie: dobrać wagi wejść i wartość progową tak,
by uzyskać zaplanowany efekt
Dane testowe
Dobór wag (uczenie)
Dane treningowe
(znane odpowiedzi)
Odpowiedz
Uczenie perceptronu, n=2
" Wejście:
 Ciąg przykładów uczących ze znanymi odpowiedziami
" Proces uczenia:
 Inicjujemy wagi losowo
 Dla każdego przykładu, jeśli
odpowiedz jest nieprawidłowa, to
[w1,w2]
w1 + = ą x1
ą
ą
ą
w2 + = ą x2
ą
ą
ą
  = ą
 ą
 ą
 ą
w1(k+1)= w1(k) + w1 + ,
podobnie dla w2 ,
(k+1)=     ,
  
 (k) 
  
k-krok iteracji, epoka
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ń
jakiekolwiek zmiany wag połączeń
" Próg  można traktować jako wagę
dodatkowego wejścia o wartości -1:
(zawsze -1)
3
x1
2
 = 3
( = 0)
x1 2
x2 -4 x2 -4
Uczenie perceptronu
" Opisany schemat jest w miarę
przejrzysty tylko dla pojedynczych
perceptronów, lub niewielkich sieci
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
Dendrites
Nodes
Synapses
+
(weights)
+
Axon
+
-
-
Synapses
Ograniczenia pojedynczych perceptronów spowodowały
w latach 80-tych wzrost zainteresowania sieciami
wielowarstwowymi i opracowanie algorytmu ich uczenia
(propagacja wsteczna)
SIECI PERCEPTRONÓW
Potrafią reprezentować dowolną funkcję
boolowską (opartą na rachunku zdań)
p
1
1
1
-
 = 2
 = 1
p XOR q
2
1
1
q
SIECI WIELOWARSTWOWE
" Wyjścia neuronów
należących do
warstwy niższej
połączone są z
wejściami neuronów
należących do
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
1,2
" Progowe
1
0,8
0,6
1 ! s e" 0
ńł
f (s)=
ł0 ! s < 0 0,4
ół
0,2
0
-15 -10 -5 0 5 10 15
-15 -10 -5 0 5 10 15
-0,2
1,2
1
" Sigmoidalne
0,8
0,6
1
0,4
f (s)=
0,2
1+ e-s
0
-15 -10 -5 0 5 10 15
FUNKCJE AKTYWACJI (2)
1,2
" Unipolarne
1
0,8
0,6
1
f (s)=
0,4
1+ e-s
0,2
0
0
-15 -10 -5 0 5 10 15
1,5
1
" Bipolarne
0,5
0
2
-15 -10 -5 0 5 10 15
f (s)= -1
-0,5
1+ e-s
-1
-1,5
FUNKCJE AKTYWACJI (3)
1,2
1
fą (s)=
1
1+ e-ą s
0,8
0,6
ą = 2.0
0,4
0,2
ą = 1.0
0
-15 -10 -5 0 5 10 15
ą = 0.5
1 ! s > 0
ńł
ł0.5 ! s = 0
lim fą (s)= 0.5 lim fą (s)=
ł
ą 0 ą +"
ł
0 ! s < 0
ół
FUNKCJE AKTYWACJI (4)
1
f ,ą (s)=
1+ e-ą (s- )
1,2
 = 2
1
0,8
0,8
ą = 1.5
ą = 1.5
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)
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)
n
ł ł
y = f w0 + wi xi
y = f w0 + wi xi
ł ł
ł ł
"
"
ł łł
ł łł
i=1
1
f (s)=
1+ e-s
Ł
funkcja aktywacji
SIECI NEURONOWE
0
0.3
0.4
1.1 0.4
-2
-0.2
1 -0.2
Ł
SIECI NEURONOWE
1.2
1
-0.4
-0.5 0.3
-0.4
-0.8
-0.4 0.9
-0.4 0.9
1.2
1.2
-0.80.9
-0.7 -0.5
1
-2
-0.1
1.2
-0.4
SIECI JAKO FUNKCJE ZAOŻONE
(1)
v11
x1 f1 w1
y
v12
g
v21
x2 f2 w2
v22
y = g(w1 f1(v11x1 + v21x2)+ w2 f2(v12x1 + v22x2))
y = Network(x1, x2)
SIECI JAKO FUNKCJE ZAOŻONE
(2)
5
x1 f1 4
y
3
g
-7
x2 f2 -3
1
ńł 4 2
-3ł -1ł e" 8
ł ł
ł1! 1+e-3(5x -7x2)
1 1
ł ł1+e-2(3x +x2) łł
y =
ł
4 2
ł0 !
-3ł -1ł < 8
ł ł
1 1
ł
1+e-3(5x -7x2)
ł1+e-2(3x +x2) łł
ół
SIECI JAKO FUNKCJE ZAOŻONE
(3)
v11
x1 f1 w1
v12 y =
g
=Network(x1,x2)
v21
x2 f2 w2
v22
" 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
SIECI JAKO FUNKCJE ZAOŻONE 
przypadek liniowy
v11
x1 f1 w1
y
v12
g
v21
x2 f2 w2
v22
" Niech
f (x1,x2) = ai*(x1*vi1 + x2*vi2) + b
fi(x1,x2) = a *(x1*v 1 + x2*v 2) + 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 BADU (1)
" Chcemy  wytrenować wagi połączeń między
kolejnymi warstwami neuronów
" Inicjujemy wagi losowo (na małe wartości)
" Inicjujemy wagi losowo (na małe wartości)
" Dla danego wektora uczącego obliczamy
odpowiedz 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 BADU (2)
dane uczące
odpowiedz sieci y
błąd d
właściwa odpowiedz t
Błąd sieci definiowany jest zazwyczaj jako
1
2
d = (y - t)
2
PROPAGACJA WSTECZNA BADU (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
 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 (w1z1 +...+ wK zK )- t)
2
PRZYKAAD (1)
" Rozpatrzmy model, w którym:
 Funkcja aktywacji przyjmuje postać
1
f (s) =
f (s) =
-3(s+2)
1+ e-3(s+2)
+
 Wektor wag połączeń = [1;-3;2]
" Załóżmy, że dla danego przykładu:
 Odpowiedz powinna wynosić t = 0.5
 Z poprzedniej warstwy dochodzą sygnały [0;1;0.3]
PRZYKAAD (2)
" Liczymy wejściową sumę ważoną:
s = w1x1 + w2x2 + w3x3 =1"0 + (-3)"1+ 2"0.3 = -2.4
" Liczymy odpowiedz neuronu:
" Liczymy odpowiedz neuronu:
1 1
y = f (s) = = H" 0.23
1+ e-3(-2.4+2) 1+ e1.2
" Błąd wynosi:
1
2
d = (0.23 - 0.5) H" 0.036
2
IDEA ROZKAADU BADU
" 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
" 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 ROZKAADU BADU
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
odpowiedz 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
x1 w1
y
0.4
x2 w2
4
0.2
błąd
2
n
0
ł ł
0
-4
-4
y = f w0 + wi xi
ł ł
"
-2
-2
-2
ł łł
i=1
0
0
2
2
-4
4
4
wartość błędu
1
f (s)=
dla wag [2, 3]
Wagi powinniśmy zmienić w
1+ e-s
kierunku spadku wartości błędu.
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
1.25
1
10
[0, -0.8], t=0.5
[0, -0.8], t=0.5
0.75
0.75
5
0.5
0.25
[0.6, 1], t=0.3
-10
-10
0
-5
-5
10
-5
0
0
-10
5
5
5
Nachylenie wykresu w danym punkcie
0
(odpowiadającym aktualnym wartościom wag) dane jest
przez gradient, czyli wektor pochodnych cząstkowych.
-5
Zmiana wag powinna nastąpić w kierunku przeciwnym.
-10
-10 -8 -6 -4 -2 0 2 4
OBLICZANIE POCHODNEJ
"d(w1,..., wK )
= (y - t)" f '(s)" z
j
"wj
1
2
" ( f (w1z1 +...+ wK zK )- t)
" ( f (w1z1 +...+ wK zK )- t)
2
2
=
"wj
1
2
" (y - t)
"f (s)" "(w1z1 +...+ wK zK )
2
= "
"y "s "wj
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.
" Realizacja:
" Realizacja:
"wj = "(t - y)" f '(s)" z
j
Prosty przykład: wagi w1=1, w2=1, dane wejściowe: [0.5, 0.5], t = 1.
e-s
1
2
f (s) =
f (s)=
Funkcja sigmoidalna: więc:
2
1+ e-s
(1+ e-s)
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 odpowiedz y=0.736.
PROPAGACJA WSTECZNA BADU
Błędy są następnie propagowane w kierunku poprzednich warstw.
Wprowadzmy pomocniczo współczynnik błędu  zdefiniowany
dla ostatniej warstwy jako:
2
 = f (s)"(t - y)
a dla pozostałych warstw:
n
w1
błąd 1
2
2
 = f (s)"
 = f (s)"
"w
"w
i i
i i
w2
błąd  i=1
czyli neuron w warstwie ukrytej  zbiera błąd
błąd 2
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.
Zadania sprawdzające:
1. Co to jest problem optymalizacyjny ?
2. Co potrafi perceptron?
3. Co to jest proces uczenia perceptronu?
3. Co to jest proces uczenia perceptronu?
4. Czego się żąda od funkcji aktywacji w
sieciach neuronowych?


Wyszukiwarka

Podobne podstrony:
z
z
Die Ärzte Ich weiß nicht (ob es Liebe ist)
Franžais
NAI B 1
Z4
Jak sobie radzić z trudnymi ludźmi
Ostatnia Szarľa
âáÓĘş ł ł (ĺ«źßÔ«ę, ĺţÔšąó, Ŭ«ó«Ó«Ąá, Ĺ«ź«óýąó)
Z
z
Adam Mickiewicz ľ Powrˇt taty
z

więcej podobnych podstron