L 03 a Sieci dwuwarstwowe w MATLABie

background image

sieci dwuwarstwowe

w MATLABie

LABORKA © Piotr Ciskowski

background image

trzy funkcje do obsługi sieci dwuwarstwowej…:

init2.m

- tworzy sieć, inicjuje wagi

(losowo)

dzialaj2.m

– symuluje działanie sieci

(na pojedynczym przykładzie)

ucz2.m

- uczy sieć na zadanym ciągu uczącym

…i jeden skrypt:

test2.m

- sieć 2-2-1, przykład: XOR

background image

init2.m

- tworzy sieć, czyli macierz wag obu warstw

i wypełnia je wartościami losowymi z zakresu -0.1 ÷ 0.1

- w sieciach jednowarstwowych

korzystamy

z wejścia zerowego – biasu

function [ W1 , W2 ] = init2 ( S , K1 , K2 )

% funkcja tworzy sieć dwuwarstwową
% i wypełnia jej macierze wag wartościami losowymi
% z zakresu od -0.1 do 0.1
% parametry: S – liczba wej
ść do sieci / liczba wejść warstwy 1
% K1 – liczba neuronów w warstwie 1
% K2 – liczba neuronów w warstwie 2 / liczba wyj
ść sieci
% wynik: W1 – macierz wag warstwy 1 sieci
% W2 – macierz wag warstwy 2 sieci

W1 = ...

W2 = ...

background image

function [ W1 , W2 ] = init2 ( S , K1 , K2 )

( )

1

1 1

S + ×

X

( )

1

1

1

S

K

+ ×

W

( )

( )

( )

( )

1

1

1

1

1

1

2

1

1

K

K

y

y

y

×

=

Y



X

1

x

2

x

S

x





( )

1

,1

k

w

( )

1

,2

k

w

( )

1

,

k S

w

( )

( )

1

2

k

k

y

x

=

( )

( )

1

2

1

1

y

x

=





( )

( )

1

2

1

2

K

S

y

x

=

0

1

x = −

( )

1

,0

k

w

0

1

x = −



( )

2

,1

k

w

( )

2

2

,

k S

w

( )

2

k

y

( )

2

1

y





( )

2

2

K

y

( )

2

,0

k

w

( )

1

2

2

1

K

K

+ ×

W

( )

( )

( )

( )

2

2

2

2

1

2

2

2

1

K

K

y

y

y

×

=

Y



( )

1

2

1 1

K + ×

X

background image

function [ W1 , W2 ] = init2 ( S , K1 , K2 )

% funkcja tworzy sieć dwuwarstwową
% i wypełnia jej macierze wag wartościami losowymi
% z zakresu od -0.1 do 0.1
% parametry: S – liczba wej
ść do sieci / liczba wejść warstwy 1
% K1 – liczba neuronów w warstwie 1
% K2 – liczba neuronów w warstwie 2 / liczba wyj
ść sieci
% wynik: W1 – macierz wag warstwy 1 sieci
% W2 – macierz wag warstwy 2 sieci

W1 = ...

W2 = ...

( )

1

1

1

S

K

+ ×

W

( )

1

2

2

1

K

K

+ ×

W

background image

dzialaj2.m

- dla sieci o danych macierzach wag W1 i W2

dla podanego na wejście wektora X
oblicza wektory wyjść warstw Y1 i Y2

- neurony obu warstw mają sigmoidalną funkcję aktywacji

function [ Y1 , Y2 ] = dzialaj2 ( W1 , W2 , X )

% funkcja symuluje działanie sieci dwuwarstwowej
% parametry: W1 – macierz wag pierwszej warstwy sieci
% W2 – macierz wag drugiej warstwy sieci
% X – wektor wej
ść do sieci
% sygnał podany na wej
ście ( sieci / warstwy 1 )
% wynik: Y1 – wektor wyj
ść warstwy 1 ( przyda się podczas uczenia )
% Y2 – wektor wyj
ść warstwy 2 / sieci
% sygnał na wyj
ściu sieci

background image

function [ Y1 , Y2 ] = dzialaj2 ( W1 , W2 , X )

( )

1

1 1

S + ×

X

( )

1

1

1

S

K

+ ×

W

( )

1

1

1

K ×

Y

1

S×

X

( )

1

2

1 1

K + ×

X

( )

1

2

2

1

K

K

+ ×

W

( )

2

2

1

K ×

Y

( )

1

1

1

K ×

U

( )

f i

1

i

1

i

( )

2

2

1

K ×

U

( )

f i

1

x

2

x

S

x





( )

( )

1

2

k

k

y

x

=

( )

( )

1

2

1

1

y

x

=





( )

( )

1

2

1

2

K

S

y

x

=

0

1

x

= −

0

1

x

= −



( )

2

k

y

( )

2

1

y





( )

2

2

K

y

( )

1

,1

k

w

( )

1

,2

k

w

( )

1

,

k S

w

( )

1

,0

k

w

( )

2

,1

k

w

( )

2

2

,

k S

w

( )

2

,0

k

w

background image

function [ Y1 , Y2 ] = dzialaj2 ( W1 , W2 , X )

% funkcja symuluje działanie sieci dwuwarstwowej
% parametry: W1 – macierz wag pierwszej warstwy sieci
% W2 – macierz wag drugiej warstwy sieci
% X – wektor wej
ść do sieci
% sygnał podany na wej
ście ( sieci / warstwy 1 )
% wynik: Y1 – wektor wyj
ść warstwy 1 ( przyda się podczas uczenia )
% Y2 – wektor wyj
ść warstwy 2 / sieci
% sygnał na wyj
ściu sieci

beta = 5 ;

X1 = ...

U1 = ...

Y1 = ...

X2 = ...

U2 = ...

Y2 = ...

( )

1

1 1

S + ×

X

( )

1

1

1

S

K

+ ×

W

( )

1

1

1

K ×

Y

1

S×

X

( )

1

2

1 1

K + ×

X

( )

1

2

2

1

K

K

+ ×

W

( )

2

2

1

K ×

Y

( )

1

1

1

K ×

U

( )

f i

1

i

1

i

( )

2

2

1

K ×

U

( )

f i

background image

przykład - XOR - w pliku

test2.m

P = [ 0 0

1 1

;

% wejścia sieci

0 1 0 1 ]

T = [ 0 1 1

0 ]

% żądane wyjście sieci

[ W1przed , W2przed ] = init2 ( 2 , 2 , 1 )

% najmniejsza dobra sieć

[ Y1 , Y2a ] = dzialaj2 ( W1przed , W2przed , P (:,1) ) ;

[ Y1 , Y2b ] = dzialaj2 ( W1przed , W2przed , P (:,2) ) ;

[ Y1 , Y2c ] = dzialaj2 ( W1przed , W2przed , P (:,3) ) ;

[ Y1 , Y2d ] = dzialaj2 ( W1przed , W2przed , P (:,4) ) ;

Yprzed = [ Y2a , Y2b , Y2c , Y2d ]

% [ W1po , W2po ] = ucz2 ( W1przed , W2przed , P , T , 2000 )

% [ Y1 , Y2a ] = dzialaj2 ( W1po , W2po , P (:,1) ) ;

% ...

%

Ypo = [ Y2a , Y2b , Y2c , Y2d ]

background image

ucz2.m

- dla sieci o danych macierzach wag W1 i W2

uczy sieć przez zadaną liczbę epok
na podanym ciągu uczącym – macierze P i T

function [ W1po , W2po ] = ucz2 ( W1przed , W2przed , P , T , n )

% funkcja uczy sieć dwuwarstwową
% na podanym ciągu uczącym (P,T)
% przez zadan
ą liczbę epok (n)
% parametry: W1przed – macierz wag warstwy 1 przed uczeniem
% P – ci
ąg uczący – przykłady - wejścia
% T - ci
ąg uczący – żądane wyjścia
% dla poszczególnych przykładów
% n - liczba epok
% wynik: W1po – macierz wag warstwy 1 po uczeniu
% W2po – macierz wag warstwy 2 po uczeniu

background image

function [ W1po , W2po ] = ucz2 ( W1przed , W2przed , P , T , n )

% schemat funkcji:

% losuj numer przykładu
% podaj przykład na wej
ścia i oblicz wyjścia
% oblicz bł
ędy na wyjściach warstwy 2

-

ważna kolejnosć !

% oblicz błędy na wyjściach warstwy 1

-

ważna kolejnosć !

% oblicz poprawki wag warstw 1 i 2

- dowolna kolejność

% dodaj poprawki do wag warstw 1 i 2

- dowolna kolejność

% i to wszystko n razy

background image

function [ W1po , W2po ] = ucz2 ( W1przed , W2przed , P , T , n )

( )

1

1 1

S + ×

X

( )

1

1

1

S

K

+ ×

W

( )

1

1

1

K ×

Y

1

S×

X

( )

1

2

1 1

K + ×

X

( )

1

2

2

1

K

K

+ ×

W

( )

2

2

1

K ×

Y

( )

1

1

1

K ×

U

( )

f i

1

i

1

i

( )

2

2

1

K ×

U

( )

f i

( )

2

2

1

K ×

D

( )

2

2

1

K ×

E

( )

'

f

i

( )

1

1

1

K ×

D

BP

( )

1

1

1

K ×

E

( )

1

2

2

1

K

K

+ ×

dW

( )

1

1

1

S

K

+ ×

dW

1

x

2

x

S

x





( )

( )

1

2

k

k

y

x

=

( )

( )

1

2

1

1

y

x

=





( )

( )

1

2

1

2

K

S

y

x

=

0

1

x

= −

0

1

x

= −



( )

2

k

y

( )

2

1

y





( )

2

2

K

y

( )

1

,1

k

w

( )

1

,2

k

w

( )

1

,

k S

w

( )

1

,0

k

w

( )

2

,1

k

w

( )

2

2

,

k S

w

( )

2

,0

k

w

1

t

k

t

2

K

t

( )

2

1

d

( )

2

k

d

( )

2

2

K

d

( )

'

f

i

background image

function [ W1po , W2po ] = ucz2 ( W1przed , W2przed , P , T , n )

liczbaPrzykladow = ...

W1 = ...

W2 = ... ; S2 = ...

wspUcz = ...

beta = 5

for i = 1 : n ,

los = ...
nrPrzykladu = ...

X = ...

X1 = ...

[ Y1 , Y2 ] = ...

X2 = ...

D2 = ...

% oblicz błędy na wyjściach warstwy 2

E2 = ...

% błąd „wewnętrzny” warstwy 2

D1 = ...

% oblicz błędy na wyjściach warstwy 1

- BACKPROPAGATION

E1 = ...

% błąd „wewnętrzny” warstwy 1

dW1 = ...

% oblicz poprawki wag warstwy 1 z uwzgl. pochodnej

dW2 = ...

% oblicz poprawki wag warstwy 2 z uwzgl. pochodnej

W1 = ...

% dodaj poprawki do wag warstwy 1

W2 = ...

% dodaj poprawki do wag warstwy 2

end

% i to wszystko n razy

W1po = ...

W2po = ...

background image

przykład - XOR
- nie każda sieć

się nauczy…

background image

przykład - XOR
- ale większość

się nauczy…

background image

do funkcji ucz1 dodaj parametry:

m - maksymalna liczba epok uczenia

e

- błąd, który sieć ma osiągnąć
- sieć będzie się uczyć do osiągnięcia zadanego błędu,

ale nie dłużej niż przez maksymalną liczbę epok

k

- liczba pokazów w epoce
- liczba przykładów pokazywanych w jednej epoce uczenia

do zrobienia

background image

opracowany na zajęciach zestaw init2-dzialaj2-ucz2-test2
nazwij init2-dzialaj2-ucz2a-testXOR2a

opracuj kolejne:

init2-dzialaj2-ucz2b-testXOR2b

funkcja ucz2b rysuje wykres błędu średniokwadratowego podczas uczenia

(w kolejnych epokach)

do zrobienia

background image

opracowany na zajęciach zestaw init2-dzialaj2-ucz2-test2
nazwij init2-dzialaj2-ucz2a-testXOR2a

opracuj kolejne:

init2-dzialaj2-ucz2c-testXOR2c

funkcja ucz2c rysuje wykres błędu średniokwadratowego podczas uczenia

i wykres błędu klasyfikacji CE

funkcja ucz2c przyjmuje parametry: m, e, n i k

dla drugiej warstwy sieci funkcja ucz2c pokazuje błąd
na przykładach pokazanych w danej epoce
oraz na wszystkich przykładach z ciągu uczącego

do zrobienia

background image

opracowany na zajęciach zestaw init2-dzialaj2-ucz2-test2
nazwij init2-dzialaj2-ucz2a-testXOR2a

opracuj kolejne:

init2-dzialaj2-ucz2d-testXOR2d

funkcja ucz2d rysuje wykres błędu średniokwadratowego podczas uczenia

i wykres błędu klasyfikacji CE
i wykres wszystkich wag sieci

reszta jak w funkcji ucz2c

do zrobienia

background image

opracowany na zajęciach zestaw init2-dzialaj2-ucz2-test2
nazwij init2-dzialaj2-ucz2a-testXOR2a

opracuj kolejne:

init2-dzialaj2-ucz2dd-testXOR2dd

funkcja ucz2dd rysuje wykres błędu średniokwadratowego podczas uczenia

i wykres błędu klasyfikacji CE
i wykresy wag poszczególnych neuronów

reszta jak w funkcji ucz2d

do zrobienia

background image

opracowany na zajęciach zestaw init2-dzialaj2-ucz2-test2
nazwij init2-dzialaj2-ucz2a-testXOR2a

opracuj kolejne:

init2-dzialaj2-ucz2e-testXOR2e

funkcja ucz2e rysuje wykres błędu średniokwadratowego podczas uczenia

i wykres błędu klasyfikacji CE
i wykresy wag poszczególnych neuronów
i wykres uproszczonych granic decyzyjnych sieci

(przy użyciu plot3 – klasy dla punktów z ciągu sprawdzającego)

reszta jak w funkcji ucz2d

w skrypcie testXOR2e oprócz XORa jest do wyboru kilka innych zestawów danych

podział ciągów na uczący, sprawdzający i testujący

tylko dla sieci o dwóch wejściach i jednym wyjściu

do zrobienia

background image

opracowany na zajęciach zestaw init2-dzialaj2-ucz2-test2
nazwij init2-dzialaj2-ucz2a-testXOR2a

opracuj kolejne:

init2-dzialaj2-ucz2ee-testXOR2ee

funkcja ucz2ee rysuje wykres błędu średniokwadratowego podczas uczenia

i wykres błędu klasyfikacji CE
i wykresy wag poszczególnych neuronów
i wykres dokładnych granic decyzyjnych sieci

(przy użyciu surf – odpowiedzi sieci dla całego zakresu wejść)

reszta jak w funkcji ucz2e i test2e

do zrobienia

background image

opracowany na zajęciach zestaw init2-dzialaj2-ucz2-test2
nazwij init2-dzialaj2-ucz2a-testXOR2a

opracuj kolejne:

init2-dzialaj2-ucz2eee-testXOR2eee

funkcja ucz2eee rysuje wykres błędu średniokwadratowego podczas uczenia

i wykres błędu klasyfikacji CE
i wykresy wag poszczególnych neuronów
i wykres dokładnych granic decyzyjnych sieci

(przy użyciu surf – odpowiedzi sieci dla całego zakresu wejść)

oraz poszczególnych neuronów

reszta jak w funkcji ucz2ee i test2ee

do zrobienia

background image

opracowany na zajęciach zestaw init2-dzialaj2-ucz2-test2
nazwij init2-dzialaj2-ucz2a-testXOR2a

opracuj kolejne:

init2-dzialaj2-ucz2f-testFun2f

funkcja ucz2f rysuje wykres błędu średniokwadratowego podczas uczenia

i wykresy wszystkich wag sieci
i wykres funkcji przybliżanej przez sieć

dla sieci o jednym wejściu i jednym wyjściu

sieć uczy się aproksymować funkcję

do zrobienia

background image

opracowany na zajęciach zestaw init2-dzialaj2-ucz2-test2
nazwij init2-dzialaj2-ucz2a-testXOR2a

opracuj kolejne:

init2-dzialaj2-ucz2g-testCzas2g

funkcja ucz2g rysuje wykres błędu średniokwadratowego podczas uczenia

i wykresy wszystkich wag sieci
i wykres szeregu czasowego

sieć uczy się predykcji szeregu czasowego

do zrobienia

background image

zobacz, jak będą się uczyły sieci z większą liczbą neuronów ukrytych

zmodyfikuj algorytm uczenia:

dodaj momentum

zastosuj adaptacyjny współczynnik uczenia

po zakończonym uczeniu narysuj wykres
zależności funkcji celu od wybranej wagi sieci
(przy pozostałych wagach takich, jak po zakończeniu uczenia)

w trakcie uczenia rysuj wykres zależności funkcji celu od wybranej wagi
i pokaż proces minimalizacji funkcji celu

narysuj wykres 3D zależności funkcji celu od dwóch wybranych wag sieci

do zrobienia


Wyszukiwarka

Podobne podstrony:
COBRTI INSTAL Zeszyt 03 Sieci wodociagowe
L 02 Sieci jednowarstwowe w MATLABie instrukcja dla pojedynczego neuronu
COBRTI INSTAL Zeszyt 03 Sieci wodociagowe
2 Sieci komputerowe 09 03 2013 [tryb zgodności]
PPA 03 2013 MATLAB
3 Sieci komputerowe 23 03 2013 [tryb zgodności]
monter sieci komunalnych 713[03] z1 2 3 04 n
monter sieci komunalnych 713[03] z1 2 3 4 01 n
monter sieci komunalnych 713[03] z1 2 05 n
Szablon 03, WAT, SEMESTR VI, podstawy zabezpieczeń sieci, lab
monter sieci komunalnych 713[03] z2 07 n
monter sieci komunalnych 713[03] z1 07 n
monter sieci komunalnych 713[03] z1 2 05 u
monter sieci komunalnych 713[03] z3 05 u
monter sieci komunalnych 713[03] z2 07 u
Tutorial MATLAB 03

więcej podobnych podstron