trainbpx-funkcja, Studia, Sem 4


0x08 graphic
Politechnika Rzeszowska

Wydział Elektrotechniki i Informatyki

Katedra Informatyki i Automatyki

Sztuczna Inteligencja

PROJEKT

Wykonał:

Charchut Artur

Rzeszów 2010

SPIS TREŚCI

1. Wstęp

Tematem projektu było zrealizować sieć neuronową (trainbpx) uczącą się odwzorowania funkcji z = sin(x*y*pi) dla x i y zmieniających się od -1 do 1.

Niniejsza dokumentacja jest słownym opisem działań, jakie zostały wykonane w celu zrealizowania wyżej wymienionego zagadnienia. Do wykonania tego projektu został użyty program firmy MathSoft - Matlab w wersji: 7.1.0.246 (R14).

2. Opis teoretyczny

2.1 Definicja i opis sieci neuronowej

Sieć neuronowa (sztuczna sieć neuronowa) - ogólna nazwa struktur matematycznych
i ich programowych lub sprzętowych modeli, realizujących obliczenia lub przetwarzanie sygnałów poprzez rzędy elementów, zwanych sztucznymi neuronami, wykonujących pewną podstawową operację na swoim wejściu. Oryginalną inspiracją takiej struktury była budowa naturalnych neuronów oraz układów nerwowych, w szczególności mózgu.

(Źródło: pl.wikipedia.org/wiki/Sieć_neuronowa)

Czasem nazwą sztuczne sieci neuronowe określa się interdyscyplinarną dziedzinę wiedzy zajmującą się konstrukcją, trenowaniem i badaniem możliwości tego rodzaju sieci.

Podstawową cechą różniącą SSN od programów realizujących algorytmiczne przetwarzanie informacji jest zdolność generalizacji czyli uogólniania wiedzy dla nowych danych nieznanych wcześniej, czyli nie prezentowanych w trakcie nauki. Określa się to także jako zdolność SSN do aproksymacji wartości funkcji wielu zmiennych w przeciwieństwie do interpolacji możliwej do otrzymania przy przetwarzaniu algorytmicznym.

(Źródło: http://sites.google.com/site/darekwsb/darcco-wsb)

0x01 graphic

Taką sieć nazywa się trójwarstwową. Występują tu połączenia pomiędzy warstwami neuronów typu każdy z każdym. Sygnały wejściowe podawane są do warstwy wejściowej neuronów, których wyjścia stanowią sygnały źródłowe dla kolejnej warstwy. Można wykazać, że sieć trójwarstwowa nieliniowa jest w stanie odwzorować praktycznie dowolne odwzorowanie nieliniowe.

Każda warstwa neuronów posiada swoją macierz wag w , wektor przesunięć b , funkcje aktywacji f i wektor sygnałów wyjściowych y . Wartość wyjścia reprezentuje wzór:

y = f(w*x+b)

(Źródło: PRz, KIiA, Sztuczna inteligencja, Laboratorium,

Ćw9 Sieć jednokierunkowa wielowarstwowa, Roman Zajdel)

2.2 Podstawowe funkcje aktywacji neuronu

Funkcja przejścia określa zależność wyjścia neuronu od jego wejścia. Może być funkcją liniową lub nieliniową. Szczegółowo funkcja ta jest dobierana w zależności od charakteru problemu jaki ma rozwiązywać projektowana sieć. Trzy podstawowe funkcje przejścia przedstawione zostały na rys. 2.

0x01 graphic

Rys. 2. Trzy podstawowe funkcje aktywacji neuronu:

(Źródło: http://sites.google.com/site/darekwsb/darcco-wsb)

Najczęściej stosuje się sieci dwu lub trzywarstwowe zawierające sigmoidalne funkcje przejścia w warstwie pierwszej i drugiej oraz liniowe lub skokowe w warstwie ostatniej (wyjściowej). Sieci o większej ilości warstw są stosowane bardzo rzadko do szczególnych zastosowań.

2.3 Trainbpx - opis i wywołanie

Trainbpx - trening sieci jednokierunkowej (do 3 warstw) z tzw. szybka propagacja wsteczna błędu. Funkcja przeprowadza trening nieliniowej sieci jednokierunkowej z zastosowaniem technik: adaptacyjnej zmiany współczynnika prędkości uczenia oraz członu momentum. W efekcie uczenie sieci trwa znacznie krócej, a prawdopodobieństwo utknięcia w lokalnym minimum funkcji błędu sieci zostaje zmniejszone. (http://ssn.elektrotechnika.ip.pwsz.edu.pl/nnt/nnt2.php)

Algorytm wstecznej propagacji błędu - Jest to podstawowy algorytm uczenia nadzorowanego wielowarstwowych jednokierunkowych sieci neuronowych. Podaje on przepis na zmianę wag wij dowolnych połączeń elementów przetwarzających rozmieszczonych w sąsiednich warstwach sieci. Nazwa wywodzi się od kolejności warstw w jakiej liczony jest błąd. Aby usprawnić uczenie stosuje się mechanizm zmiany współczynnika uczenia, oraz mechanizm zmiany współczynnika momentu w każdej iteracji. (http://www.neuron.kylos.pl/pliki/jednokier/jednokier4.html)

Wywołanie:

[W, B, TE, TR] = trainbpx (W, B, 'F', P, T, TP)

Argumenty:

Wi - macierz współczynników wagowych i-tej warstwy (wymiar Si*R, Si - ilość neuronów w i-tej warstwie, R - ilość wejść warstwy)

Bi - wektor współczynników progowych i-tej warstw (wymiar Si*l)

Fi - funkcja aktywacji i-tej warstwy

P - macierz wektorów wejściowych (wymiar R*Q, R - liczba wejść sieci, Q - ilość wektorów)

T - macierz zadanych wektorów wyjściowych (wymiar S*Q, S - liczba wyjść sieci)

TP - wektor parametrów (opcjonalny):

TP(1) - częstotliwość aktualizacji wykresu błędu sieci

TP(2) - maksymalna liczba cykli treningowych

TP(3) - graniczny błąd średniokwadratowy) sieci

TP(4) - współczynnik prędkości uczenia

Dodatkowe elementy wektora parametrów:

TP(5) - współczynnik wzrostu prędkości uczenia

TP(6) - współczynnik redukcji prędkości uczenia

TP(7) - stała momentum

TP(8) - maksymalna wartość współczynnika błędu

Wielkości zwracane:

Wi - macierz nowych współczynników wagowych i-tej warstwy (wymiar Si * R)

Bi - wektor nowych współczynników progowych warstwy (wymiar Si*l)

TE - liczba przebytych cykli treningowych

TR - średniokwadratowy błąd sieci.

(http://ssn.elektrotechnika.ip.pwsz.edu.pl/nnt/nnt2.php)

3. Rozwiązanie problemu

3.1 Skrypt programu Matlab

0x08 graphic


3.2 Tabela wyników

Tabele przedstawiają niektóre wyniki nauki sieci neuronowej. Największy wpływ na wartość błędu ma liczba kroków (błąd jest odwrotnie proporcjonalny do współczynnika ep). Wpływ na błąd mają także pozostałe współczynniki, jednak ich wybór bywa kłopotliwy. Najlepszym sposobem jest przeprowadzenie dużej ilości eksperymentów i na ich podstawie można otrzymać najlepszy wynik.


S1

S2

lr

ep

SSE

10

5

0,1

1000

3,15

10

8

0,1

1000

5,8

15

7

0,1

1000

1,69

15

10

0,1

1000

1,69

20

10

0,1

1000

0,32

20

15

0,1

1000

0,32

20

18

0,1

1000

0,31

20

18

0,01

1000

0,89

30

10

0,1

1000

0,18

30

15

0,1

1000

0,089

30

15

0,01

1000

0,25

30

15

0,001

1000

0,51

30

20

0,1

1000

0,24

30

25

0,1

1000

0,52

40

15

0,1

1000

0,16

40

15

0,01

1000

0,13

40

15

0,001

1000

0,29

40

20

0,1

1000

0,75

40

25

0,1

1000

0,24

40

30

0,1

1000

0,99

40

35

0,1

1000

0,8

50

20

0,1

1000

0,86

50

25

0,01

1000

0,41

50

25

0,001

1000

0,19

50

25

0,1

1000

0,34

50

30

0,1

1000

0,75

50

35

0,1

1000

1,44

50

40

0,1

1000

0,88

50

45

0,1

1000

1,1

60

20

0,1

1000

0,52

60

25

0,1

1000

0,56

60

30

0,1

1000

0,81

S1

S2

lr

ep

SSE

60

35

0,1

1000

0,67

60

40

0,1

1000

0,84

60

45

0,1

1000

0,59

60

50

0,1

1000

1

60

25

0,01

1000

0,37

60

25

0,001

1000

0,24

70

30

0,001

1000

0,19

70

40

0,001

1000

0,59

70

50

0,001

1000

1,03

70

60

0,001

1000

0,98

80

50

0,001

1000

0,68

80

60

0,001

1000

0,89

80

70

0,001

1000

1,12

80

50

0,0001

1000

0,72

90

60

0,001

1000

0,85

90

70

0,001

1000

1,13

90

80

0,001

1000

1,02

90

60

0,0001

1000

0,69

100

60

0,001

1000

0,81

100

70

0,001

1000

0,82

100

80

0,001

1000

1,06

100

90

0,001

1000

1,63

100

60

0,0001

1000

0,96

100

60

0,01

1000

1,52

120

50

0,001

1000

0,74

120

70

0,001

1000

0,57

120

90

0,001

1000

0,99

120

100

0,001

1000

1,95

120

70

0,0001

1000

0,55

40

15

0,01

3000

0,025

40

15

0,01

6000

0,013

40

15

0,01

10000

0,0079


3.3 Wykresy

      1. Wykres funkcji z = sin(x * y * pi)

0x01 graphic

      1. Wykres wyniku nauki sieci dla S1 = 40, S2 = 15, lr = 0.01 i ep = 10 000

0x01 graphic

      1. Wykres błędu

0x01 graphic

      1. Wykres przebiegu nauki sieci

0x01 graphic

4. Podsumowanie

Wyznaczanie odpowiednich parametrów i nauka sieci neuronowej to zajęcie bardzo czasochłonne. W szczególności trenowanie sieci opiera się na doborze najodpowiedniejszej ilości neuronów w poszczególnych warstwach, a także współczynnika uczenia. Wybór ilości kroków nauki sieci jest kompromisem posiedzi wielkością błędu, a czasem uczenia sieci. Im więcej kroków, tym trenowanie sieci jest dłuższe lecz dokładniejsze i bliższe oczekiwanym wynikom.

W praktyce tworzy się sieci do rozwiązywania bardziej złożonych problemów niż w niniejszym projekcie. Sieci takie składają się z setek lub tysięcy neuronów i uczone są bardzo dużymi ilościami danych. Nauka takiej sieci trwa bardzo długo, wiec potrzebne są szybkie komputery z dużymi ilościami pamięci, a tworzenie takich sieci wymaga dużo wiedzy i doświadczenia.

11

clear all

nntwarn off;

X = -1:.1:1;

Y = -1:.1:1;

Z = zeros(length(X), length(Y));

XX = [];

YY = [];

ZZ = [];

for i = 1:length(X),

for j = 1:length(Y),

XX = [XX X(i)];

YY = [YY Y(j)];

Z(i,j) = sin(X(i)*Y(i)*pi);

ZZ = [ZZ, Z(i,j)];

end

end;

P = [XX; YY];

S1 = 30;

S2 = 15;

[S3, Q] = size(ZZ);

[W1,B1,W2,B2,W3,B3] = initff (P,S1,'tansig',S2,'tansig',S3,'purelin');

df = 25; %czestotliwość aktualizacji wykresu

me = 10000; %max liczba cykli

eg = 1e-4; %graniczny błąd

lr = 0.1; %współczynnik prędkości uczenia

lrinc = 1.01; %mnożnik do wzrostu lr

lrdec = 0.95; %mnożnik do zmniejszenia lr

mom = 0.99; %współczynnik momentum

err = 1.2; %maksymalny stosunek do starego błędu

TP=[df me eg lr lrinc lrdec mom err];

[W1,B1,W2,B2,W3,B3,TE,TR] = TRAINBPX(W1,B1,'tansig',W2,B2,'tansig',W3,B3,'purelin',P,ZZ,TP);

wyn_nauki = zeros(size(Z)); %macierz wartości

error = zeros(size(Z));

for i = 1:length(X),

for j = 1:length(Y),

a_(i,j) = simuff([X(i) Y(j)]', W1,B1,'tansig',W2,B2,'tansig',W3,B3,

'purelin');

error(i,j) = Z(i,j) - wyn_nauki(i,j);

end

end

figure(1)

mesh(X,Y,Z);

figure(2)

mesh(X,Y,wyn_nauki);

figure(3)

mesh(X,Y,error);



Wyszukiwarka

Podobne podstrony:
trainbpx - funkcja, Studia, Sem 4
trainbpa - poker, Studia, Sem 4
grunty sprawko, Studia, Sem 4, Semestr 4 RŁ, gleba, sprawka i inne
MSI sciaga z konspekow, Studia, Studia sem IV, Uczelnia Sem IV, MSI
Elektrowrzeciono, Studia, Studia sem III, Uczelnia
SURTEL, Politechnika Lubelska, Studia, Studia, sem VI, energoelektronika, Energoelektronika, Surtel
lista poleceń, Politechnika Lubelska, Studia, Studia, sem I - II, materialy na studia
Odziaływanie wiatru, Studia, Sem 5, SEM 5 (wersja 1), Konstrukcje Metalowe II, Konstrukcje stalowe I
Test-Elektronika D, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym
Re, Studia, Studia sem IV, Uczelnia Sem IV, WM
teczka, Studia, Sem 1,2 +nowe, Semestr1, 2 semestr, nieogarniete
ściąga chemia wykład, Studia, Sem 1,2 +nowe, ALL, szkoła, Chemia
sprawozdnie 5, Politechnika Lubelska, Studia, Studia, sem I - II, materialy na studia

więcej podobnych podstron