Poznawanie wÅasnoÅci sieci neuronowych w Årodowisku MATLAB
Poznawanie wÅasnoÅci sieci neuronowych w Årodowisku MATLAB
Poznawanie wÅasnoÅci sieci neuronowych w Årodowisku MATLAB
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
14 Rozdział 2. Sieci jednowarstwowe<br />
(<br />
f b ′ (u) = . . . = β · 1 − y 2) (2.9)<br />
Sprawdzenie kształtu pochodnej pozostawiamy Czytelnikowi.<br />
Obliczenie wyjścia warstwy <strong>sieci</strong> neuronowej polega na obliczeniu wyjść wszystkich<br />
jej neuronów. Zakładamy, że wszystkie neurony w warstwie posiadają taką<br />
samą funkcję aktywacji – sigmoidalną unipolarną. Podobnie, jak w przypadku pobudzeń,<br />
wyjścia wszystkich neuronów danej warstwy <strong>sieci</strong> zostaną zebrane w jednym<br />
wektorze<br />
⎡<br />
Y =<br />
⎢<br />
⎣<br />
y 1<br />
y 2<br />
.<br />
y K<br />
⎤<br />
⎥<br />
⎦<br />
K×1<br />
⎡<br />
=<br />
⎢<br />
⎣<br />
f (u 1 )<br />
f (u 2 )<br />
.<br />
f (u K )<br />
⎤<br />
⎥<br />
⎦<br />
(2.10)<br />
Ostatecznie funkcja obliczająca wyjście całej warstwy <strong>sieci</strong> będzie zawierała<br />
zaledwie trzy linie kodu.<br />
function [ Y ] = dzialaj1 ( W , X )<br />
% funkcja symuluje działanie <strong>sieci</strong> jednowarstwowej<br />
% parametry: W - macierz wag <strong>sieci</strong><br />
% X - wektor wejść do <strong>sieci</strong><br />
% sygnał podany na wejście<br />
% wynik: Y - wektor wyjść <strong>sieci</strong><br />
% sygnał na wyjściu <strong>sieci</strong><br />
beta = 5 ;<br />
U = ... ;<br />
Y = ... ;<br />
Przyjęto współczynnik nachylenia funkcji aktywacji za równy 5, czego rezultatem<br />
będzie średnia stromość zbocza tej funkcji. Pozostawiamy Czytelnikowi<br />
uzupełnienie poniższego szablonu funkcji w taki sposób, aby mnożenia macierzy<br />
zapisać możliwie zwięźle i wykorzystać fakt, że wbudowane funkcje numeryczne<br />
<strong>MATLAB</strong>a operują na całych macierzach i wektorach. Odpowiedni zapis operacji<br />
mnożenia macierzy – unikanie zbędnych pętli for – ma wpływ nie tylko na<br />
elegancję zapisu, lecz również na wydajność. Funkcja dzialaj będą wykonywana<br />
wielokrotnie w pętlach podczas uczenia <strong>sieci</strong>. Wpływ wydajnej implementacji na<br />
szybkość procesu uczenia będzie szczególnie widoczny podczas uczenia <strong>sieci</strong> dwuwarstwowych<br />
o większych rozmiarach.