background image

TEORIA DO ĆWICZENIA 2 

 
 

Model neuronu 

Sztuczna  sieć  neuronowa  (SSN)  to  model  obliczeniowy,  złożony  z  elementów 

naśladujących  działania  komórek  nerwowych  zwanych  neuronami.  Sztuczne  neurony  nie  są 
dokładnymi  kopiami  oryginalnych  neuronów,  są  raczej  ich  bardzo  uproszczonymi 
odpowiednikami matematycznymi, mającymi podobne właściwości i działającymi w zbliżony 
sposób jak ich pierwowzory. Neuron w SSN charakteryzuje się występowaniem wielu wejść i 
jednego  wyjścia.  W  modelu  sztucznego  neuronu,  każdemu  połączeniu  między  neuronami 
przypisuje się odpowiednią wagę (siłę powiązania między elementami). Waga (odpowiednik 
efektywności  synapsy  w  neuronie  biologicznym)  to  pewna  stała,  przez  którą  przemnożony 
jest  każdy  sygnał  przechodzący  między  dwoma  konkretnymi  neuronami,  dzięki  czemu, 
impulsy  od  jednych  neuronów  są  ważniejsze  od  innych.  Waga  może  mieć  charakter 
pobudzający (dodatnia waga) lub hamujący (ujemna waga). Jeżeli nie ma połączenia między 
neuronami  to  waga  jest  równa  zero.  W  ten  sposób  odrzucane  są  nieistotne  informacje 
wejściowe.  

W  praktyce  każdy  neuron  pobiera  sygnały  od  wszystkich  połączonych  ze  sobą 

elementów,  przemnaża  je  przez  odpowiednią  wagę,  otrzymane  wartości  sumuje  i  to  łączne 
pobudzenie neuronu jest z kolei przekształcane przez ustaloną funkcję aktywacji (zwaną też 
funkcją  przejścia)  –  rys.1.  Wartość  funkcji  aktywacji  jest  ostatecznie  wartością  wyjściową 
neuronu. Funkcja przejścia może być funkcją liniową, skokową, sigmoidalną, tangensoidalną 
etc..  Wybór  funkcji  należy  do  projektanta  sieci  i  zależy  od  problemu,  który  ma  ona 
rozwiązywać.  

 

Rys. 1: Model sztucznego neuronu  

 

Do  każdego  neuronu  o  numerze  i  przesyłana  jest  wartość  rzeczywistą  x

i

  z  wagą  w

i

Informacja  wejściowa  x

i

  jest  przemnażana  przez  odpowiadającą  jej  wagę  w

i

.  Przekazana 

informacja jest integrowana w neuronie (zwykle przez zsumowanie wszystkich sygnałów) i to 
tzw. łączne pobudzenie neuronu e jest przekazywane jako argument do funkcji aktywacji f i 
następnie jest wyliczana wartość sygnału wyjściowego.   

Model opisujący działanie neuronu może być zapisany w postaci: 

)

(

1

n

i

i

i

x

w

f

y

 

background image

gdzie 
x

1

, ... ,x

n

 – sygnały wejściowe danego neuronu; 

w

1

, ... ,w

n

 – wagi synaptyczne; 

 y – sygnał wyjściowy. 

Przykładowe funkcje aktywacji używane przy konstrukcji sieci: 

  Progowa  (skokowa)  funkcja  aktywacji  stosowana  w  sieciach  liniowych 

(podstawowa postać) 

n

i

i

i

n

i

i

i

x

w

x

w

gdy

gdy

x

f

1

1

,

,

0

1

)

(

 

gdzie 

 – wartość progowa. 

 

  Funkcja sigmoidalna 

x

x

f

exp

1

1

)

(

 

,

0

 

 
 
 

Uczenie neuronu 

Jedną z najważniejszych cech sieci neuronowych jest ich zdolność uczenia się, czyli 

zdolność do samodzielnego dostosowywania współczynników wagowych. Dzięki temu mają 
one  charakter  sztucznej  inteligencji,  potrafią  samodzielnie  przystosowywać  się  do 
zmieniających  się  warunków.  Celem  uczenia  jest  taki  dobór  wag  w  poszczególnych 
neuronach aby sieć mogła rozwiązywać stawiane przed nią problemy. 

W  naszym  przypadku  sieć  uczy  się  metodą  wstecznej  propagacji  błędów  -  jest  to 

uczenie z nadzorem lub inaczej– z nauczycielem. 

Pierwszą  czynnością  w  procesie  uczenia  jest  przygotowanie  dwóch  ciągów  danych: 

uczącego i weryfikującego. Ciąg uczący jest to zbiór takich danych, które w miarę dokładnie 
charakteryzują dany problem. Jednorazowa porcja danych nazywana jest wektorem uczącym. 
W  jego  skład  wchodzi  wektor  wejściowy  czyli  te  dane  wejściowe,  które  podawane  są  na 
wejścia  sieci  i  wektor  wyjściowy  czyli  takie  dane  oczekiwane,  jakie  sieć  powinna 
wygenerować na swoich wyjściach. Po przetworzeniu wektora wejściowego, porównywane są 
wartości otrzymane z wartościami oczekiwanymi i sieć jest informowana, czy odpowiedź jest 
poprawna, a jeżeli nie, to jaki powstał błąd odpowiedzi. Błąd ten jest następnie propagowany 
do  sieci  ale  w  odwrotnej  niż  wektor  wejściowy  kolejności  (od  warstwy  wyjściowej  do 
wejściowej)  i  na  jego  podstawie  następuje  taka  korekcja  wag  w  każdym  neuronie,  aby 
ponowne przetworzenie tego samego wektora wejściowego spowodowało zmniejszenie błędu 
odpowiedzi.  Procedurę  taką  powtarza  się  do  momentu  wygenerowania  przez  sieć  błędu 
mniejszego  niż  założony.  Wtedy  na  wejście  sieci  podaje  się  kolejny  wektor  wejściowy  i 
powtarza  te  czynności.  Po  przetworzeniu  całego  ciągu  uczącego  (proces  ten  nazywany  jest 
epoką) oblicza się błąd dla epoki i cały cykl powtarzany jest do momentu, aż błąd ten spadnie 
poniżej  dopuszczalnego.  Sieci  wykazują  tolerancję  na  nieciągłości,  przypadkowe  zaburzenia 
lub wręcz niewielkie braki w zbiorze uczącym.  
 Jeżeli mamy już nauczoną sieć, musimy zweryfikować jej działanie. W tym momencie ważne 
jest podanie na wejście sieci wzorców z poza zbioru treningowego w celu zbadania czy sieć 
może  efektywnie  generalizować  zadanie,  którego  się  nauczyła.  Do  tego  używamy  ciągu 

background image

weryfikującego, który ma te same cechy  co ciąg uczący tzn. dane dokładnie charakteryzują 
problem  i  znamy  dokładne  odpowiedzi.  Ważne  jest  jednak,  aby  dane  te  nie  były  używane 
uprzednio do uczenia. Dokonujemy zatem prezentacji ciągu weryfikującego z tą różnicą, że w 
tym  procesie  nie  rzutujemy  błędów  wstecz  a  jedynie  rejestrujemy  ilość  odpowiedzi 
poprawnych i na tej podstawie orzekamy, czy sieć spełnia nasze wymagania, czyli jak została 
nauczona. 
Algorytm propagacji wstecznej  jest jednym  z najskuteczniejszych algorytmów uczenia sieci 
wielowarstwowej.  Jego  nazwa  pochodzi  od  sposobu  obliczania  błędu  w poszczególnych 
warstwach sieci. Najpierw obliczane są błędy w warstwie ostatniej na podstawie porównania 
aktualnych i wzorcowych sygnałów wyjściowych i na tej podstawie dokonywane są zmiany 
wag połączeń, następnie w warstwie ją poprzedzającej i tak dalej aż do warstwy wejściowej. 
W algorytmie propagacji wstecznej można wyróżnić trzy fazy: 

 

podanie na wejście sygnału uczącego x i wyliczenie aktualnych wyjść y. 

 

porównujemy  sygnał  wyjściowy  y  z  sygnałem  wzorcowym  d,  a  następnie  wyliczamy 

lokalne błędy dla wszystkich warstw sieci, 

  adaptacja wag. 

 
 

Działanie pojedynczego neuronu 

Model pojedynczego neuronu (perceptronu) można przedstawić następująco:   
 
 
 

 
 
 
 
 
 

 

gdzie: 

w

1

, w

2

, b – to wartości wag połączeń odpowiednio wejść x

1

, x

2

 i biasu 

b

x

w

x

w

e

2

2

1

1

 jest to łączne pobudzenie neuronu e 

 
Kolejne  etapy  w  jednym  kroku  uczenia  dla  przedstawionego  neuronu  przy  skokowej 
funkcji aktywacji

1)  dla  danego  wektora  uczącego  (x

1

,  x

2

,  d)  wyliczenie  łącznego  pobudzenia 

b

x

w

x

w

e

2

2

1

1

 

2) wyliczenie aktualnego wyjścia sieci   

0

0

,

,

0

1

e

e

gdy

gdy

y

 

założyliśmy, że wartość progowa 

 = 0 

3)  w  przypadku  błędnej  odpowiedzi  sieci  tzn.  y≠d  modyfikacja  wag  według  następujących 
wzorów: 

1

1

1

)

(

'

x

y

d

w

w

 

2

2

2

)

(

'

x

y

d

w

w

 

1

)

(

'

y

d

b

b

 

gdzie 

 - współczynnik szybkości uczenia 

 

x

w

x

w

 

e = w

1

·x

+ w

2

·x

+ b 

y = f(e)

 

bias = 1

 

b

 

background image

Przy  liniowej  separowalności  sygnałów  wejściowych  sieć  jest  w  stanie  się  nauczyć 
poprawnych  odpowiedzi.  Po  zakończeniu  procesu  uczenia  granica  decyzyjna  jest  dana 
wzorem: 

0

2

2

1

1

b

x

w

x

w

. Perceptron poprawnie klasyfikuje sygnały z ciągu uczącego, 

jak i te które do ciągu nie należą, ale również spełniają warunek liniowej separowalności. 
Na sieci  tej możliwa jest realizacja funkcji logicznych AND i  OR, ale już nie jest możliwa 
realizacja  funkcji  XOR  (nie  spełnia  warunku  liniowej  separowalności).  „Siła”  sieci 
neuronowych tkwi  w połączeniach, w związku z tym sieci składające się z wielu neuronów 
będą miały o wiele więcej zastosowań.  
 
Kolejne etapy w jednym kroku uczenia dla przedstawionego neuronu przy sigmoidalnej 

funkcji aktywacji

x

x

f

exp

1

1

)

(

  ,

1

 

1)  dla  danego  wektora  uczącego  (x

1

,  x

2

,  d)  wyliczenie  łącznego  pobudzenia 

b

x

w

x

w

e

2

2

1

1

 

2) wyliczenie aktualnego wyjścia sieci 

e

y

exp

1

1

 

3) w przypadku błędnej odpowiedzi sieci tzn. y≠d modyfikujemy wagi 
 
Stosujemy tutaj regułę Delta: 

i

i

x

e

f

y

d

w

)

(

'

)

(

 

Warto zauważyć, że dla funkcji sigmoidalnej o wzorze 

x

x

f

exp

1

1

)

(

 

))

(

1

(

)

(

)

(

'

x

f

x

f

x

f

 

Modyfikacja wag przebiega następująco:  

1

1

1

))

(

1

(

)

(

)

(

'

x

e

f

e

f

y

d

w

w

 

2

2

2

))

(

1

(

)

(

)

(

'

x

e

f

e

f

y

d

w

w

 

1

))

(

1

(

)

(

)

(

'

e

f

e

f

y

d

b

b

 

 

Sieć wielowarstwowa 

Sieć  wielowarstwowa  posiada  warstwę  wejściową,  wyjściową  oraz  jedną  lub  więcej 

warstw  ukrytych.  Zadaniem  elementów  w  warstwie  wejściowej  jest  wstępne  przetwarzanie 
impulsu  wejściowego  x=[x

1

, x

2

, x

3

, ..., x

N

].  Zasadnicze  przetwarzanie  neuronowe  impulsu 

wejściowego  odbywa  się  w  warstwach  ukrytych  oraz  w  warstwie  wyjściowej.  Warstwy  te 
zbudowane są z elementów przetwarzających, które stanowią modele sztucznych neuronów. 
Połączenia  pomiędzy  poszczególnymi  warstwami  są  zaprojektowane  tak,  że  każdy  element 
warstwy  poprzedniej  jest  połączony  z  każdym  elementem  warstwy  następnej.  Połączeniom 
tym są przypisane odpowiednie współczynniki wag, które w zależności od zadania, jakie dana 
sieć powinna rozwiązywać, są wyznaczane dla każdego przypadku z osobna. Na wyjściu sieci 
generowany jest impuls wyjściowy y=[y

1

, ..., y

M

]

 
 
 
 
 
 
 
 

background image

 
Model sieci wielowarstwowej: 

 

 

Uczenie sieci wielowarstwowych 

W  sieciach  tego  typu  najistotniejszym  problemem  jest  dobór  wag  w  warstwach 

ukrytych. Jednak istnieją algorytmy umożliwiające efektywne uczenie takich sieci. 
Dla dużych sieci i ciągów uczących składających się z wielu tysięcy wektorów uczących ilość 
obliczeń  wykonywanych  podczas  całego  cyklu  uczenia  jest  gigantyczna  a  więc  i 
czasochłonna. Nie zdarza się także aby sieć została dobrze zbudowana od razu. Zawsze jest 
ona efektem wielu prób i błędów. Ponadto nigdy nie mamy gwarancji, że nawet prawidłowa 
sieć  nie  utknie  w  minimum  lokalnym  podczas  gdy  interesuje  nas  znalezienie  minimum 
globalnego.  Dlatego  algorytmy  realizujące  SSN  wyposaża  się  mechanizmy  dające 
nauczycielowi  możliwość  regulacji  szybkości  i  jakości  uczenia.  Są  to  tzw  współczynniki
uczenia  i  momentum.  Wpływają  one  na  stromość  funkcji  aktywacji  i  regulują  szybkość 
wpływu zmiany wag na proces uczenia. 
 
 

Przy  pojedynczym  współczynniku  uczenia 

,  do  uczenia  sieci  wielowymiarowych 

stosujemy regułę Delta, przy czym definiujemy sygnał błędu dla każdego neuronu z warstw 
ukrytych.  Doprowadza  nas  to  do  następującego  wzoru  na  zmianę  wagi  między  j-  tym 
neuronem w warstwie k a i- tym w warstwie k-1: 

i

j

k

j

k

ij

x

e

f

w

)

(

'

)

(

)

(



 

gdzie: 
 

)

(k

ij

w

-  zmiana  wartości  wagi  połączenia  między  neuronem  j  w  warstwie  k,  a 

neuronem i w warstwie k-1, 

 - współczynnik szybkości uczenia, 

 

)

(k

j

 - błąd neuronu j w warstwie k, 

f’(e

j

) – pochodna funkcji aktywacji, 

x

i

 – sygnał wejściowy pochodzący od neuronu j. 

 
Aby przyspieszyć proces uczenia, a jednocześnie uniknąć niebezpieczeństwa oscylacji 

w  sieci  (czyli  wpadania  algorytmu  w  minima  lokalne  funkcji  błędu)  wprowadza  się 

background image

modyfikację  do  algorytmu,  zwaną  Uogólnioną  Regułą  Delty,  zawierającą  czynnik 
bezwładności 

)

(

2

k

ji

m

 

)

(

2

)

(

1

)

(

)

(

'

k

ji

i

j

k

j

k

ij

m

x

e

f

w

 

 

gdzie: 
 

1

 - współczynnik szybkości uczenia, 

2

 – momentum, 

)

(k

ji

m

 - poprzednia zmiana wag.