Cw1 Matlab

background image

1

Przebieg ćwiczenia 1. Podstawy obsługi pakietu MATLAB


MATLAB jest interakcyjnym środowiskiem do wykonywania odliczeń naukowych i inżynierskich. Umożliwia

testowanie algorytmów, modelowanie i symulację, analizę i wizualizację danych, sygnałów oraz wyników obliczeń.
Zasadnicze jego zalety to możliwość szybkiego uzyskania rezultatów skomplikowanych obliczeń i przedstawienie ich w
postaci wykresów dwu- lub trójwymiarowych, a także w postaci map wielobarwnych.

MATLAB jest językiem programowania wysokiego poziomu. Podstawowymi typami danych w MATLAB-ie są

tablice o elementach rzeczywistych lub zespolonych oraz struktury i obiekty. Zmienne przechowywane są w przestrzeni
roboczej (ang. workspace) i są dostępne przez nazwę. W MATLAB-ie nie stosuje się deklaracji zmiennych. Zmienne
wybranego typu określa (definiuje) użytkownik. MATLAB automatycznie rozpoznaje typ zmiennej. Rezultaty
wykonywanych operacji matematycznych lub funkcji zależą od rozpoznanego typu.

1. Wykonywanie obliczeń

Wynik obliczeń wartości wyrażenia jest dostępny jako wartość zmiennej, której to wyrażenie przypisano. Dla

polecenia w postaci:

>> zmienna = wyrażenie

po naciśnięciu klawisza ENTER, zostanie obliczona wartość wyrażenia i przypisana zmiennej. Zmienna zostanie
wprowadzona do przestrzeni roboczej (ang. workspace) – jeśli zmienna już istniała, to przyjmie nową wartość. Na
ekranie pojawi się odpowiedź w postaci:

zmienna = wartość wyrażenia

Możliwe jest także wykonywanie polecenia w postaci:

>> wyrażenie

W tym przypadku wynik obliczeń będzie przypisany standardowej zmiennej ans. Odpowiedź na takie polecenie jest
następująca:

ans = wartość wyrażenia

Dodanie średnika po wyrażeniu powoduje, że wartość wyrażenia nie jest wypisywana na ekranie.
W jednej linii można wpisać wiele poleceń, jeśli oddzieli się je średnikiem.

Wykonać następujące polecenia:

>> 1+3
>> 1e4
>> 1e4 + 2e4
>> log(2)
>> log(2.7183)
>> exp(1)
>> log(exp(1))
>> log10(2.7183)
>> log10(10)

>> pi
>> sin(pi/2)
>> 2^3
>> sin(0.4)^2+cos(0.4)^2
>> a = 12.5
>> a
>> a=5
>> a
>> b=5+4

>> c=a+b
>> z1=1+2i
>> z2=10j
>> real(z1)
>> imag(z1)
>> sqrt(-1)
>> i^2
>> sqrt(-4)
>> 1/0

2. Przydatne polecenia


who – lista zmiennych obecnych w przestrzeni roboczej programu
whos – lista zmiennych obecnych w przestrzeni roboczej programu wraz z formatem
clear – usuwa zmienne z przestrzeni roboczej
clear nazwa_zmiennej – usuwa zmienną z przestrzeni roboczej

3. Niektóre typy danych

W MATLAB-ie podstawowym typem danych jest tablica. Jej elementami mogą być liczby rzeczywiste lub

zespolone, znaki albo inne tablice. Macierz jest szczególnym przypadkiem tablicy. Jest to tablica dwuwymiarowa, na
której elementach wykonuje się operacje algebry liniowej.

Filozofię działania MATLAB-a oparto na operacjach wektorowo macierzowych. Pojedyncza wartość liczbowa jest

traktowana jako macierz o wymiarach (1x1). Wektor jest to macierz, która składa się z jednego wiersza lub jednej
kolumny.

background image

2

Nie stosuje się deklarowania zmiennych, Tworzenie zmiennych wybranego typu wykonuje się poprzez instrukcje

przypisywania lub użycie odpowiedniej funkcji. Zestaw funkcji stosowanych do tworzenia i przekształcania typów
danych uzyskuje się poleceniem help datatypes.

macierze – tablice dwuwymiarowe prostokątne o elementach rzeczywistych lub zespolonych. Elementy macierzy

zapisuje się w nawiasach kwadratowych, kolumny oddziela się spacją lub przecinkiem, a wiersze średnikiem.

Wykonać następujące polecenia:

>> A = [1 2 3; 4 5 6; 7 8 9]

4. Dwukropek – operator generowania wektorów i tablic

Dwukropek (:) jest jednym z częściej używanych operatorów w MATLAB-ie. Jest on wykorzystywany przy

tworzeniu wektorów o równomiernie rozłożonych elementach. Umożliwia łatwe wyselekcjonowanie żądanych wierszy,
kolumn lub elementów tablic.

Generowanie wektorów
Generowanie wektorów, z zastosowaniem notacji dwukropkowej, przebiega według następujących zasad:

-

j:k – taki zapis definiuje wektor [j, j+1, j+2, ..., k],

-

j:d:k – taki zapis określa wektor [j, j+d, j+2d, ..., k].

Wykonać następujące polecenia:

>> w1 = 1:6
>> w2 = 1:0.1:2
>> w11 = 1:6.5
>> w22 = 10:10:55
>> A = [1:5; 6:10; 11:15; 16:20; 21:25]
>> b = [0:0.1:0.5]
>> B = [b; b+1; b+2; b+3; b+4; b+5; b+6]


Wybór żądanych wierszy, kolumn i elementów tablicy
Wyboru żądanych wierszy, kolumn i elementów tablicy dokonuje się za pomocą podanych poniżej zapisów:

-

A(i, j) – wypisanie elementu z i-tego wiersza i j-tej kolumny,

-

A(:, j) – wypisanie j-tej kolumny macierzy A,

-

A(i, :) – wypisanie i-tego wiersza macierzy A,

-

A(k) – wypisanie k-tego elementu macierzy A,

-

A(:) – wypisanie wszystkich elementów macierzy A w jednej kolumnie,


Wykonać następujące polecenia:

>> A
>> A(1,1)
>> A(1,2)
>> A(:, 1)
>> A(:, 3)
>> A(:, end)
>> A(1, :)
>> A(3, :)
>> A(end, :)

>> A
>> A(1)
>> A(2)
>> A(6)
>> A(7)
>> A(1:10)
>> A(1:end)
>> A(:)
>> A


5. Operatory arytmetyczne i operacje na macierzach

W MATLAB-ie wykonuje się za pomocą operatorów dwa rodzaje operacji na macierzach. Pierwszy rodzaj to

arytmetyczne operacje macierzowe określone regułami algebry liniowej (np. X*Y). Drugi rodzaj to tzw. arytmetyczne
operacje tablicowe, które są wykonywane na elementach macierzy (np. X .* Y – realizuje mnożenie elementów
wektorów lub macierzy o tych samych indeksach – X(i,j)*Y(i,j)). Operatory arytmetyczne zestawiono w poniższej
tabeli. Informacje, dotyczące sposobu działania operatorów, można uzyskach wykonując polecenia: help arith, help
slash
, help ctranspose, help kron.




background image

3

Symbol operacji

macierzowej

Nazwa operacji

Symbol operacji

tablicowej

+


*
^

/
\

.’

kon

dodawanie

odejmowanie

mnożenie

potęgowanie

dzielenie prawostronne

dzielenie lewostronne

sprzężenie macierzy

transpozycja macierzy

iloczyn tensorowy Kroneckera

+

.*
.^

./
.\

Wykonać następujące polecenia:

>> A = [1 2 3; 4 5 6; 7 8 9]
>> A + 1
>> A * 2

>> B = [1 1 1; 2 2 2; 3 3 3]
>> A.*B

>> A*B
>> A+B


6. Elementy grafiki dwuwymiarowej

Zapoznać się z opisem poleceń plot, grid, xlabel, ylabel, title, hold korzystając z systemu pomocy MATLAB-a.


Wykonać następujące polecenia:

>> x = 0:0.5:2*pi
>> y = sin(x)
>> plot(x,y)
>> plot(x,y,’:’)
>> plot(x,y,’--’)
>> plot(x,y,’-.’)

>> plot(x,y,’-’)
>> plot(x,y,’*’)
>> plot(x,y,’-*’)>> plot(x,y,'-*g')
>> grid
>> y1 = cos(x)
>> plot(x,y,’b’)

>> hold on
>> plot(x,y1,’g’)
>> hold off
>> plot(x,y)
>> y

7. Elementy grafiki trójwymiarowej

Zapoznać się z opisem poleceń plot3, meshgrid, mesh, surf, colormap, gray korzystając z systemu pomocy

MATLAB-a.

Wykonać następujące polecenia:

>> t=0:0.1:20;
>> plot3(sin(t),cos(t),t)

>> t=pi:0.01:62;
>> plot3(sin(t)./t,cos(t)./t,t)
>> xlabel('x')
>> ylabel('y')
>> zlabel('t')

>> x = -5:5
>> y = -8:2
>> [X Y] = meshgrid(x,y)
>> Z = -X.^2 - Y.^2
>> mesh(X,Y,Z)
>> mesh(x,y,Z)

>> surf(x,y,Z)
>> surf(X,Y,Z)
>> colormap(gray)
>> help gray
>> colormap(hot)
>> colormap(pink)
>> colormap(flag)



















background image

4

Ćwiczenie 2. Teoria: sieci neuronowe

1. Model sztucznego neuronu


Podobnie jak w przypadku neuronowych sieci biologicznych, podstawowymi elementami z których buduje się

sztuczne sieci neuronowe są sztuczne neurony. Sztuczny neuron jest elementem, którego własności odpowiadają
wybranym własnościom neuronu biologicznego. Z założenia nie jest więc on jego wierną kopią, lecz elementem, który
powinien spełniać określone funkcje w sztucznej sieci neuronowej.

Ogólnie sztuczny neuron można rozpatrywać jako specyficzny przetwornik sygnałów działający według

następującej zasady: na wejście przetwornika doprowadzone są sygnały wejściowe, które następnie są mnożone przez
odpowiednie współczynniki wag, ważone sygnały wejściowe są następnie sumowane i na tej podstawie wyznacza się
aktywność neuronu.

Na rys. 1 przedstawiono model sztucznego neuronu. Składa się on z dwóch bloków: bloku sumowania

∑ i bloku

aktywacji f(

ϕ).

Rys. 1. Model neuronu


W bloku sumowania wykonywane jest algebraiczne sumowanie ważonych sygnałów wejściowych, oraz

generowany jest sygnał wyjściowy

ϕ :

b

b

u

w

T

R

i

i

i

+

=

+

=

=

u

w

1

,

1

ϕ

(1)

gdzie: w – wektor współczynników wag w

1,i

, u – wektor sygnałów wejściowych u

i

, R – liczba wejść neuronu, b – próg

(bias).


Sygnał

ϕ poddawany jest przetwarzaniu przez blok aktywacji f(ϕ) realizujący zależność y = f(ϕ). Ostatecznie

sygnał wyjściowy ma postać:

( )

(

)

b

f

b

u

w

f

f

y

T

R

i

i

i

+

=

+

=

=

=

u

w

1

,

1

ϕ

(2)

Funkcja aktywacji, w zależności od konkretnego celu, jakiemu służy neuron, może przyjmować różne postacie.

Niektóre z nich to:

• funkcja skokowa unipolarna (funkcja Heaviside’a)

( ) ( )

>

=

=

0

0

0

1

1

x

x

x

x

f

jeśli

jeśli

(3)

• funkcja skokowa bipolarna

( ) ( )

>

=

=

0

1

0

1

1

x

x

x

x

f

jeśli

jeśli

(4)


• funkcja liniowa

( )

ax

x

f

=

(5)

-5

0

5

0

0.5

1

-5

0

5

-1

0

1

-5

0

5

-5

0

5

background image

5

• funkcja sigmoidalna unipolarna

( )

x

e

x

f

β

+

=

1

1

(6)

• funkcja sigmoidalna bipolarna (tangensoidalna)

( )

( )

x

x

x

x

e

e

e

e

x

x

f

+

=

= tanh

lub

( )

x

x

e

e

x

x

f

+

=

=

1

1

2

tanh

(7)


2. Sieci jednokierunkowe


Neurony połączone między sobą tworzą układ nazywany sztuczną siecią neuronową (w skrócie siecią

neuronową). W zależności od sposobu połączenia neuronów można wyróżnić sieci jednokierunkowe lub rekurencyjne
(ze sprzężeniem zwrotnym).

Sieć neuronowa jednokierunkowa jest złożona z neuronów ułożonych w warstwy o jednym kierunku przepływy

sygnałów. Połączenia międzywarstwowe występują jedynie między sąsiednimi warstwami.

Najprostszą siecią neuronową jest sieć jednowarstwowa. Tworzą ją neurony ułożone w jednej warstwie (rys. 2a,

2b). Każdy neuron posiada próg (bias) b

i

oraz wiele wag w

ij

prowadzonych do sygnałów wejściowych u

j

. Neurony

ułożone w pojedynczej warstwie działają niezależnie od siebie, stąd możliwości takiej sieci są ograniczone do
możliwości pojedynczych neuronów.

Rys. 2. Jednowarstwowa sieć neuronowa o R wejściach i S wyjściach: a) schemat pełny, b) schemat uproszczony


Każdy neuron realizuje odwzorowanie funkcyjne:





+

=

=

i

R

j

j

ij

i

b

u

w

f

y

1

(8)

gdzie: R – liczba wejść, y

i

i-te wyjście, w

ij

– waga dla i-tego neuronu i j-tego wejścia.

Powyższe równanie można zapisać również w zwięzłej postaci macierzowej:

(

)

b

Wu

y

+

= f

(9)

gdzie: u – wektor wejścia, y – wektor wyjścia, W – macierz wag.


Sieć jednowarstwowa ma niewielkie znaczenie praktyczne, jakkolwiek stosuje się ją nadal tam, gdzie istnienie

jednej warstwy jest wystarczające do rozwiązania określonego problemu.

Sieć wielowarstwową tworzą neurony ułożone w wielu warstwach, przy czym oprócz wejść i warstwy

wyjściowej istnieje co najmniej jedna warstwa ukryta.


Na rys. 3 przedstawiono sieć o jednej warstwie ukrytej, a na rys. 4 sieć o dwóch warstwach ukrytych (w

oznaczeniach przyjęto stosować indeks górny do oznaczania numeru warstwy).

-10

0

10

0

0.5

1

-10

0

10

-1

0

1

background image

6

Rys. 3. Sieć dwuwarstwowa

Rys. 4. Sieć trójwarstwowa


Sieć dwuwarstwowa realizuje następujące odwzorowanie wektora wejściowego u na wektor wyjściowy y:

(

)

(

)

(

)

2

1

1

1

2

2

2

1

2

2

b

b

u

W

W

b

y

W

y

+

+

=

+

=

f

f

f

,

(10)

lub dla k-tego wyjścia:

( )



+





+

=





+

=

=

=

=

k

S

i

i

R

j

j

ij

ki

k

S

i

i

ki

k

b

b

u

f

w

f

w

f

b

y

w

f

y

1

1

1

1

1

1

2

2

1

1

2

2

(11)

gdzie: R – liczba wejść, S

1

– liczba neuronów w 1-szej warstwie ukrytej, y

k

k-te wyjście, w

ij

, w

ki

– wagi, b

k

, b

i

– progi.


Sieci neuronowe wykorzystujące ciągłe funkcje aktywacji mają ciągłe charakterystyki. Pozwala to na

bezpośrednie zastosowanie algorytmów gradientowych do uczenia takich sieci (uczenie polega na doborze wartości
wag według określonego algorytmu, które umożliwi dostosowanie działania sieci do warunków środowiskowych
określonych w postaci określonych wymagań co do odwzorowania danych wejściowych na wyjściowe).

Sieci z funkcjami liniowymi mają nieograniczony zakres wartości wyjściowej, ale realizują tylko odwzorowanie

liniowe. Z kolei sieci zawierające funkcje sigmoidalne mogą tworzyć dowolne odwzorowanie nieliniowe o
ograniczonym zakresie wyjściowym. Aby połączyć zalety obu tych sieci – zdolność realizowania nieliniowych
odwzorowań i nieograniczoność zakresu wyjściowego – należy w warstwach ukrytych zastosować sigmoidalne funkcje
aktywacji, natomiast w warstwie wyjściowej – liniowe.

Skokowe funkcje aktywacji przyjmuje się w tego typu systemach, gdzie sygnał wyjściowy powinien

przyjmować jedną z dwóch wartości dyskretnych. W tym przypadku algorytmy gradientowe, uznawane za
najskuteczniejsze w uczeniu, nie mogą mieć zastosowania, gdyż podstawowe wymaganie dotyczące funkcji celu nie
jest spełnione.














background image

7

Przebieg ćwiczenia 2. Sieci neuronowe

1. Perceptron


Opis zastosowanych funkcji:


newp – tworzy nowy perceptron


NET = NEWP(PR,S,TF,LF)

PR – macierz określająca zakres wartości wejść sieci (liczba wejść jest określana na podstawie rozmiaru tej macierzy),

S – liczba neuronów,
TF – funkcja wyjścia perceptronu, domyślnie 'hardlim',
LF – funkcja ucząca, domyślnie 'learnp',
Funkcja zwraca: nowy perceptron net.
Więcej informacji: help newp.

newff – tworzy sieć neuronową propagacji wstecznej


NET = NEWFF(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) takes,
PR - macierz określająca zakres wartości wejść sieci (liczba wejść jest określana na podstawie rozmiaru tej macierzy),
Si - liczba neuronów w i-tej warstwie, N1 – liczba warstw,
TFi – funkcja wyjścia neuronów w i-tej warstwie, domyślnie 'tansig'.
BTF – funkcja ucząca sieć, domyślnie 'trainlm'.
BLF – funkcja ucząca wagi/bias, domyślnie 'learngdm'.
PF - funkcja błędu, domyślnie 'mse'.
Zwraca N warstwową sieć neuronową propagacji wstecznej.
Więcej informacji: help newff.

sim – oblicza odpowiedź sieci neuronowej na dany sygnał wejściowy


[Y,Pf,Af,E,perf] = SIM(net,P,Pi,Ai,T)
Parametry:
NET – Sieć neuronowa.
P – Wektor wejściowy.
Pi, Ai,T – parametry nieobowiązkowe
Funkcja zwraca:
Y – Wektor odpowiedzi sieci.
Więcej informacji: help network/sim.m.

Wykonać następujące polecenia:

Funkcją wyjścia perceptronu jest funkcja skokowa unipolarna.
Stworzenie wykresu funkcji wyjścia:
>> x=-5:0.1:5;
>> y=hardlim(x);
>> plot(x,y)
Sprawdzenie wartości funkcji w punkcie 0:
>> hardlim(0)

Tworzenie wektorów uczących P oraz T:
– wektor wejściowy sieci – pary liczb rzeczywistych (punkty na płaszczyźnie):
>> P=[-5, -5, 3, -1; -5, 5, -5, 10]
– wektor wyjściowy sieci – wartość odpowiadająca danej parze wektora wejściowego:
>> T=[1 1 0 0]
Tworzenie nowego perceptronu i przypisanie go zmiennej net:
>> net=newp([-10 10; -10 10], 1);
Inicjowanie wag sieci (nadawanie przypadkowych wartości wagom):
>> net=init(net);

Wyświetlenie wektora wag (zapisać wartości):

>> net.IW{1}
Wyświetlenie wartości biasu (zapisać wartość):

background image

8

>> net.b{1}

Obliczenie odpowiedzi sieci na wektor wejściowy P
:
>> sim(net,P)
Czy odpowiedź sieci jest równa wektorowi wyjściowemu T (wyświetlić wektor T)?
Uczenie sieci:
>> net=train(net,P,T);
Przeanalizować wykres średniokwadratowego błędu uczenia sieci.
Wyświetlenie wektora wag:
>> net.IW{1}
Wyświetlenie wartości biasu:
>> net.b{1}
Czy wektor wag oraz bias uległy zmianie?
Obliczenie odpowiedzi sieci na wektor wejściowy P:
>> sim(net,P)
Czy odpowiedź jest równa wektorowi wyjściowemu T (wyświetlić wektor T)?

Wagi oraz bias wyznaczają prostą o równaniu y=(-net.IW{1}(1)*x - net.b{1})./net.IW{1}(2) rozgraniczającą
dwie półpłaszczyzny. Do jednej z nich należą punkty, którym przyporządkowano wartości
1, a na drugiej punkty,
którym przyporządkowano wartości
0.
Wyświetlenie wektora wejściowego i wyjściowego;
symbolem kółko
(o) oznaczono współrzędne punktów, którym przyporządkowano wartość 0,
symbolem plus
(+) oznaczono współrzędne punktów, którym przyporządkowano wartość 1:
>> plotpv(P,T); grid
Wyświetlenie prostej rozdzielającej półpłaszczyzny:
>> plotpc(net.IW{1}, net.b{1})
Sprawdzić odpowiedź sieci dla punktów należących do pierwszej i drugiej półpłaszczyzny, np. punkty (-6,6) i (10,6):
>> sim(net,[-6;-6])
>> sim(net,[10;6])

Tworzenie wektorów uczących P oraz T:
– wektor wejściowy sieci – pary liczb rzeczywistych (punkty na płaszczyźnie):
>> P=[-5, -5, 3, -1, 4; -5, 5, -5, 10, 10]
– wektor wyjściowy sieci – wartość odpowiadająca danej parze wektora wejściowego:
>> T=[1 1 0 0 1]
Wyświetlenie wektora wejściowego i wyjściowego:
>> plotpv(P,T); grid
Zwrócić uwagę na położenie dodanego punktu (4,10).
Inicjowanie wag sieci (nadawanie przypadkowych wartości wagom):
>> net=init(net);
Uczenie sieci:
>> net=train(net,P,T);
Obliczenie odpowiedzi sieci na wektor wejściowy P za pomocą funkcji sim
>> sim(net,P)
Porównać odpowiedź sieci z wektorem T.
Czy sieć została poprawnie wytrenowana? Dlaczego?

2. Aproksymacja funkcji

2.1 Dokładność aproksymacji


Tworzenie wektorów uczących P oraz T:
>> P=-10:0.2:10;
>> T=sin(P);
>> plot(P,T,'-o'); grid
Tworzenie dwuwarstwowej sieci neuronowej (10 neuronów w warstwie wejściowej i 1 w wyjściowej):
>> net=newff([-10 10],[10 1],{'tansig' 'purelin'});
Maksymalna liczba prezentacji danych uczących (liczba epok):
>> net.trainParam.epochs=7;
Inicjowanie wag sieci (nadawanie przypadkowych wartości wagom):
>> net=init(net);
Obliczenie odpowiedzi nie wytrenowanej sieci na wektor wejściowy P:

background image

9

>> y=sim(net,P);
>> figure
>> plot(P,T,'-o',P,y,'-*'); grid

Uczenie sieci:
>> net=train(net,P,T);
Obliczenie odpowiedzi wytrenowanej sieci na wektor wejściowy P:
>> y=sim(net,P);
>> figure
>> plot(P,T,'-o',P,y,'-*'); grid
Ocenić dokładność aproksymacji (powiększyć wykres). Zapamiętać końcowy błąd uczenia.

Ponownie zainicjować wagi sieci i przeprowadzić jej uczenie dla 100 epok (net.trainParam.epochs=100).
Przedstawić dane uczące oraz odpowiedź sieci na wykresie.
Jak wpływa liczba epok na dokładność wytrenowania sieci neuronowej (na dokładność aproksymacji) oraz czas
uczenia.

Stworzyć sieć dwuwarstwową:

-

warstwa 1. (ukryta): 4 neuronów, tangensoidalna funkcja wyjścia (tansig),

-

warstwa 2. (wyjściowa): 1 neuron, liniowa funkcja wyjścia (purelin).

Przyjąć liczbę epok równą 100, przeprowadzić uczenie sieci dla danych uczących P oraz T.
Przedstawić na wykresie dane uczące oraz odpowiedź sieci na wektor P.
Ocenić dokładność aproksymacji.
Jak wpływa liczba neuronów w warstwie ukrytej na dokładność wytrenowania sieci neuronowej (na dokładność
aproksymacji) oraz czas uczenia.

2.2 Zdolność uogólniania sieci neuronowej


Generowanie danych uczących:
>> P=-pi:0.4:pi;
>> T=sin(P);
>> plot(P,T,'-*');
>> grid

Stworzyć sieć dwuwarstwową (zakres wartości wejść [-pi, pi]):

-

warstwa 1. (ukryta): 6 neuronów, tangensoidalna funkcja wyjścia (tansig),

-

warstwa 2. (wyjściowa): 1 neuron, liniowa funkcja wyjścia (purelin).

Przyjąć liczbę epok równą 100, przeprowadzić uczenie sieci dla danych uczących P oraz T.
Przedstawić na wykresie dane uczące oraz odpowiedź sieci na wektor P.
Ocenić dokładność aproksymacji.

Obliczenie odpowiedzi sieci na wektor wejściowy P1, zawierający punkty, których sieć neuronowa nie była
uczona:
Wygenerować wektor P1 z zakresu od -

π do π, z rozdzielczością 0,1.

Obliczyć odpowiedzi sieci y1 na wektor wejściowy P1.
Przedstawić na wykresie dane uczące oraz odpowiedź sieci na wektor P.
Przyjrzeć się otoczeniom ekstremów funkcji sinus (powiększyć wykres w tych przedziałach).

Porównanie odpowiedzi sieci na wektor wejściowy P1 z dokładnymi wartościami funkcji sin:
Wygenerować wektor ys wartości funkcji sinus dla wektora P1.
Przedstawić na wykresie funkcję sinus (wektora P1 oraz ys) oraz odpowiedź sieci na wektor P1.

Przyjrzeć się otoczeniom ekstremów funkcji sinus (powiększyć wykres w tych przedziałach).

2.3 Zdolność aproksymacyjna dwuwarstwowej sieci liniowej


Generowanie danych uczących:
>> P=-pi:0.4:pi;
>> T=sin(P);
>> plot(P,T,'-*');
>> grid

Stworzyć sieć dwuwarstwową:

background image

10

-

warstwa 1. (ukryta): 10 neuronów, liniowa funkcja wyjścia (purelin),

-

warstwa 2. (wyjściowa): 1 neuron, liniowa funkcja wyjścia (purelin).

Przeprowadzić uczenie sieci dla danych uczących P oraz T.
Przedstawić na wykresie dane uczące oraz odpowiedź sieci na wektor P.
Ocenić dokładność aproksymacji (powiększyć wykres).
Czy sieć liniowa może dobrze aproksymować funkcję nieliniową?

























































background image

11

Rozmyty system wyznaczania napiwków

1. Jedno wejście, jedno wyjście

Wejście 1: obsługa

funkcje Gaussa (gaussmf)

zła – parametry [1.5, 0],

dobra – parametry [1.5, 5],

bardzo dobra – parametry [1.5, 10]

0

2

4

6

8

10

0

0.2

0.4

0.6

0.8

1

zla

dobra

b.dobra


Wyjście: napiwek
funkcje

trójkątne (trimf)

mały – parametry: [0, 5, 10], średni – parametry: [10, 15, 20], wysoki – parametry: [20, 25, 30]

0

5

10

15

20

25

30

0

0.2

0.4

0.6

0.8

1

maly

sredni

wysoki

Baza reguł:

R1: Jeśli (obsługa = zła), to (napiwek = mały),
R2: Jeśli (obsługa = dobra), to (napiwek = średni),
R3: Jeśli (obsługa = bdobra), to (napiwek = wysoki).

2. Dwa wejścia, jedno wyjście

Wejście 2: jedzenie

funkcje trapezowe (tramf)

niesmaczne – parametry: [0, 0, 1, 3], wyśmienite – parametry: [7, 9, 10, 10]

0

2

4

6

8

10

0

0.2

0.4

0.6

0.8

1

niesmaczne

wysmienite

Baza reguł:

R1: Jeśli (obsługa = zła) lub (jedzenie = niesmaczne), to (napiwek = mały),
R2: Jeśli (obsługa = dobra), to (napiwek = średni),

R3: Jeśli (obsługa = bdobra) lub (jedzenie = wyśmienite), to (napiwek = wysoki).


Wyszukiwarka

Podobne podstrony:
PAIII cw1 matlab
PAIII cw1 matlab
Matlab cw1 2 zaoczni
matlab cw1, aaa, studia 22.10.2014, całe sttudia, III semestr, teoria obwodów cw
obl wartosc 08 04 06 cw1, 4 semestr, matlab, DwaChuja
cw1 podst matlab
Matlab cw1 2 zaoczni
SiPR cw1 przestrzen ver MatLAB
cz 1, Matlab moj
Image Processing with Matlab 33
ćw1 Maszyna turinga
MATLAB graf(1)
kod matlab
Cw08 Matlab2
Matlab wiadomości wstępne
MZ TZrokII cw1(1)

więcej podobnych podstron