Algorytmy wstecznej propagacji sieci neuronowych

Podobne dokumenty
Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Optymalizacja ciągła

Algorytm wstecznej propagacji błędów dla sieci RBF Michał Bereta

Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe

Uczenie sieci typu MLP

Podstawy Sztucznej Inteligencji (PSZT)

Temat: Sieci neuronowe oraz technologia CUDA

Zastosowania sieci neuronowych

8. Neuron z ciągłą funkcją aktywacji.

Elementy inteligencji obliczeniowej

Prognozowanie kierunku ruchu indeksów giełdowych na podstawie danych historycznych.

Sieci neuronowe w Statistica

METODY INŻYNIERII WIEDZY

Temat: Sztuczne Sieci Neuronowe. Instrukcja do ćwiczeń przedmiotu INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE

wiedzy Sieci neuronowe

Wstęp do sieci neuronowych, wykład 6 Wsteczna propagacja błędu - cz. 3

ALGORYTMY SZTUCZNEJ INTELIGENCJI

Optymalizacja ciągła

Zastosowania sieci neuronowych

Techniki Optymalizacji: Stochastyczny spadek wzdłuż gradientu I

Widzenie komputerowe

PROGNOZOWANIE OSIADAŃ POWIERZCHNI TERENU PRZY UŻYCIU SIECI NEURONOWYCH**

BIOCYBERNETYKA SIECI NEURONOWE. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Najprostsze modele sieci z rekurencją. sieci Hopfielda; sieci uczone regułą Hebba; sieć Hamminga;

Sieci neuronowe w Statistica. Agnieszka Nowak - Brzezioska

1. Historia 2. Podstawy neurobiologii 3. Definicje i inne kłamstwa 4. Sztuczny neuron i zasady działania SSN. Agenda

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka Adaline.

Uczenie sieci neuronowych i bayesowskich

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

wiedzy Sieci neuronowe (c.d.)

Zastosowanie optymalizacji rojem cząstek (PSO) w procesie uczenia wielowarstwowej sieci neuronowej w problemie lokalizacyjnym, kontynuacja badań

Rozpoznawanie obrazów

Sztuczne sieci neuronowe

I EKSPLORACJA DANYCH

2.4. Algorytmy uczenia sieci neuronowych

Sztuczne sieci neuronowe Ćwiczenia. Piotr Fulmański, Marta Grzanek

Definicja perceptronu wielowarstwowego

SIEĆ NEURONOWA DO OCENY KOŃCOWEJ PRZEDSIĘWZIĘCIA (PROJEKTU)

Metody systemowe i decyzyjne w informatyce

Projekt Sieci neuronowe

DEKOMPOZYCJA HIERARCHICZNEJ STRUKTURY SZTUCZNEJ SIECI NEURONOWEJ I ALGORYTM KOORDYNACJI

Optymalizacja systemów

Podstawy Sztucznej Inteligencji

Algorytm grupowania danych typu kwantyzacji wektorów

Literatura. Sztuczne sieci neuronowe. Przepływ informacji w systemie nerwowym. Budowa i działanie mózgu

Sztuczna inteligencja

Wstęp do teorii sztucznej inteligencji Wykład III. Modele sieci neuronowych.

synaptycznych wszystko to waży 1.5 kg i zajmuje objętość około 1.5 litra. A zużywa mniej energii niż lampka nocna.

WYKORZYSTANIE SIECI NEURONOWEJ DO BADANIA WPŁYWU WYDOBYCIA NA SEJSMICZNOŚĆ W KOPALNIACH WĘGLA KAMIENNEGO. Stanisław Kowalik (Poland, Gliwice)

Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe.

KADD Minimalizacja funkcji

Sieci M. I. Jordana. Sieci rekurencyjne z parametrycznym biasem. Leszek Rybicki. 30 listopada Leszek Rybicki Sieci M. I.

SIEĆ NEURONOWA DO OCENY KOŃCOWEJ PRZEDSIĘWZIĘCIA (PROJEKTU)

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych

1. Logika, funkcje logiczne, preceptron.

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

Aproksymacja funkcji a regresja symboliczna

Przykładowe funkcje przejścia używane przy budowie sztucznych neuronów

WYKŁAD 9 METODY ZMIENNEJ METRYKI

ZASTOSOWANIE SIECI NEURONOWYCH DO OPTYMALIZACJI WARUNKÓW OBRÓBKI CIEPLNEJ STOPÓW Mg-Al

Pochodna funkcji. Pochodna funkcji w punkcie. Różniczka funkcji i obliczenia przybliżone. Zastosowania pochodnych. Badanie funkcji.

Optymalizacja optymalizacji

Uczenie sieci radialnych (RBF)

Sieci neuronowe do przetwarzania informacji / Stanisław Osowski. wyd. 3. Warszawa, Spis treści

Wstęp do teorii sztucznej inteligencji Wykład II. Uczenie sztucznych neuronów.

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Wstęp do sztucznych sieci neuronowych

Wprowadzenie do sieci neuronowych i zagadnień deep learning

ĆWICZENIE 5: Sztuczne sieci neuronowe

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

ZACHODNIOPOMORSKI UNIWERSYTET TECHNOLOGICZNY W SZCZECINIE

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka ADALINE.

Optymalizacja ciągła

Zastosowanie optymalizacji rojem cząstek (PSO) w procesie uczenia wielowarstwowej sieci neuronowej w problemie lokalizacyjnym

Kwantyzacja wektorowa. Kodowanie różnicowe.

Sztuczne sieci neuronowe. Krzysztof A. Cyran POLITECHNIKA ŚLĄSKA Instytut Informatyki, p. 335

Wprowadzenie do Sieci Neuronowych Laboratorium 05 Algorytm wstecznej propagacji błędu

Algorytmy sztucznej inteligencji

Sieć przesyłająca żetony CP (counter propagation)

SIECI RBF (RADIAL BASIS FUNCTIONS)


Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Sieci neuronowe jako sposób na optymalizacje podejmowanych decyzji. Tomasz Karczyoski Wydział W-08 IZ

SIECI NEURONOWE Liniowe i nieliniowe sieci neuronowe

PRÓBA ZASTOSOWANIA SIECI NEURONOWYCH DO PROGNOZOWANIA OSIADAŃ POWIERZCHNI TERENU POWSTAŁYCH NA SKUTEK EKSPLOATACJI GÓRNICZEJ**

Podstawy sztucznej inteligencji

Metody Sztucznej Inteligencji II

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Oprogramowanie Systemów Obrazowania SIECI NEURONOWE

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Zastosowanie metod eksploracji danych Data Mining w badaniach ekonomicznych SAS Enterprise Miner. rok akademicki 2013/2014

Sztuczne sieci neuronowe

Funkcje wielu zmiennych

Estymacja wektora stanu w prostym układzie elektroenergetycznym

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

SZTUCZNA INTELIGENCJA

sieci jednowarstwowe w MATLABie LABORKA Piotr Ciskowski

Wstęp do sieci neuronowych laboratorium 01 Organizacja zajęć. Perceptron prosty

IX. Rachunek różniczkowy funkcji wielu zmiennych. 1. Funkcja dwóch i trzech zmiennych - pojęcia podstawowe. - funkcja dwóch zmiennych,

Transkrypt:

Algorytmy wstecznej propagacji sieci neuronowych Mateusz Nowicki, Krzysztof Jabłoński 1 Wydział Inżynierii Mechanicznej i Informatyki Politechnika Częstochowska Kierunek Informatyka, Rok III 1 krzysztof.jablonski@hotmail.com Streszczenie Tematem ninejszego artykułu jest analiza działania sieci neuronowych budowanych w oparciu o koncepcję propagacji wstecznej, przez którą to rozumiany jest pewien algorytm służący do procesu uczenia sieci oparty na propagacji wstecznej błędu uzyskanego dla zadanego zestawu danych uczących. Algorytm ten jest jednym z najczęściej wybieranych przy budowie sieci neuronowych ze względu na względną prostotę jego implementacji oraz szereg czynników, które pozwalają dopasować utworzoną sieć do swoich potrzeb. Sieci budowane w oparciu o algorytm propagacji wstecznej są budowane najczęściej na podstawie wielowarstwowej architekturzy sieci bez dowiązań wstecznych. W artykule pozostanie przyjęte, iż właśnie taka architketura pozostanie użyta. 1 Wstęp Sieci neuronowe oparte na algorytmie propagacji wstecznej błędu zbudowane są z co najmniej trzech warstw: wejściowej, wyjściowej oraz pozostałych ukrytych. Każda warstwa złożona jest z przynajmniej jednego neuronu - podstawowego nośnika informacji w sieci. Poszczególne warstwy są połączone są ze sobą dowiązaniami, które to łączą wszystkie neurony warstwy wyższej ze wszystkimi neuronami warstwy niższej. Każde dowiązanie posiada przypisaną wagę; w momencie, gdy próbka wyrażona jako liczba rzeczywista przechodzi przez dane powiązanie, wartość próbki jest przemnażana przez współczynnik równy wadze. Dodatkowo, każdy neuron charakteryzuje przypisana mu funkcja aktywacyjna, której zastosowanie powoduje zmniejszenie liniowości otrzymywanych wyników. Każdy neuron może posiadać przypisaną inną funkcję aktywacyjną niż pozostałe neurony - nie jest to jednak praktyka polecana: praktycznie zawsze wybrana funkcja aktywacyjna charakteryzuje wszystkie neurony składające się na sieć. Funkcję aktywacyjną posiadają wszytkie neurony oprócz neuronów wejściowych oraz tak zwanych bias neuronów, które to mają za zadanie zmienić wartość zwracaną przez neurony tak, aby odpowiadało to preferencjom konstruktora sieci. Bias neurony działają jak neurony wejściowe z tą różnicą, iż mają przypisaną wartość stałą oraz mogą być obecne zarówno w warstwie wejściowej, jak i warstwach ukrytych. W praktyce nie ma potrzeby 1

dodawania więcej niż jednego bias neuronu na warstwę. Posiadając informację o danych wejściowych, można wyliczyć wartości neuronów dla warstw pośrednich oraz wyjściowej. Wzór służący do tego celu posiada przedstawioną poniżej postać: n j = actv( i max i=1 n i w i j ) Aplikując ten wzór dla wszystkich neuronów kolejnych warstw, neurony warstwy wyjściowej będą przechowywać rezultat końcowy. Jeżeli znana jest próbka danych wyjściowych przyporządkowanych do danej próbki wejściowej, można porównać ją z wynikami uzyskanymi w wartwie wyjściowej. Różnica między tymi wartościami zwana jest błędem (lokalnym). Algorytm propagacji wstecznej błędu wykorzystuje informację o tak uzyskanym błędzie w celu znielowania jego wartości do progu ustalonego przez konstruktora sieci, który powinien być możliwie bliski zeru. Najczęściej dobiera się wartości mieszczące się w zakresie (0, 1] punktów procentowych dla wskaźnika błędu globalnego jako błędu średniokwadratowego. 2 Algorytm propagacji wstecznej Algorytm propagacji wstecznej jest często używaną metodą uczenia wielowarstwowych sieci jednokierunkowych. Może być on użyty w każdej takiej sieci, która posiada rożniczkowalną funkcję aktywacyjną. Pochodna tej funkcji będzie użyta podczas uczenia. Aby nauczyć sieć neuronową, trzeba wyznaczyć metodę obliczania błędu globalnego, który jest jednocześnie wskaźnikiem poprawności działania takowej (im mniejszy, tym lepiej). Błąd globalny obliczany jest na podstawie błędów lokalnych - odchyleń między wartościami oczekiwanymi a wartościami otrzymanymi w wartwie wyjściowej sieci neuronwej. Istnieje kilka metod obliczania błędu globalnego. Najczęściej używany jest błąd średniokwadratowy. Inne metody, jak wyciąganie średniej kwadratowej, stosowane są w bardziej wyspecjalizowanych dziedzinach, jak analiza fali [1]. W celu nauczenia sieci neuronowej musimy zminimalizować ten błąd. By to zrobić trzeba zmodyfikować wagi połączeń neuronów. Musimy wyznaczyć funkcję która obliczy nam stopień błędu, przy czym funkcja ta musi być matematycznie różniczkowalna. Ponieważ sieć używa różniczkowalnej funkcji aktywacyjnej, aktywacje neuronów wyjściowych mogą być uznane jako rożniczkowalne funkcje wejścia i wag. Jeżeli funkcja błędu również jest różniczkowalną funkcją to jest ona różniczkowalną funkcją tych wag. To pozwala nam wyznaczyć pochodną błędu używając tych wag. Następnie uzywając tych pochodnych obliczane są współczynnki, o jakie modyfikowane są wartości wag. Dzięki takiemu zabiegowi następuje minimalizacja występujących błędów. Jest kilka sposobów odnajdywania wag minimalizujących funkcję błędu. Najczęściej używanym podejściem jest metoda gradientu prostego. Gradientem oznaczamy współczynnik nachylenia stycznej funkcji błędu w punkcie określonym jako aktualna wartość wagi. Dla każdej iteracji uczenia wartość delty aplikowanej do każdej wagi obliczana jest za pomocą następującego wzoru: w i j = α δe δw i j + β w 1 i j 2

δe gdzie w i j oznacza wartość zmiany wagi, α - wartość współczynnika uczenia, δw i j - wartość gradientu, β - wartość momentum, oraz w 1 i j oznacza wartość zmiany wagi w poprzedniej iteracji uczenia. Współczynnik uczenia posiada największy wpływ na szybkość, a zarazem efektywność uczenia sieci. Skaluje on stosunek aplikowania gradientu w stosunku do delty wagi. Ustalenie zbyt wysokiego współczynnika uczenia może powodować utratę zbieżności do oczekiwanego wyniku, natomiast dobór zbyt niskiego współczynnika powoduje znaczne spowolnienie samego procesu uczenia bez znacznej poprawy jego jakości. Momentum jest współczynnikem, który pozostał dodany w celu rozwiązania problemu tendencji wchodzenia w minima, które nie są minimami najbardziej optymalnymi. Zastosowanie momentum pozwala zapobiec temu zjawisku. Stosowanie momentum wiąże się również z wymuszeniem kierunku zmiany delty wagi; dobranie ujemnego momentum może spowodować spowolnienie zbieżności do minimum [5]. Użycie tego współczynnika nie jest obowiązkowe. 3 Obliczanie gradientów Wyznaczenie wartości gradientów dla poszczególnych wag w iteracji uczenia jest procesem składającym się z kilku kroków [1] : Wyznaczenia wartości błędu; Wyznaczenia wartości delty warstwy dla neuronów wyjściowych; Wyznaczenia wartości delty warstwy dla neuronów ukrytych/wewnętrznych; Wyznaczenia wartości indywidualnych gradientów. Wyznaczenie wartości błędu jest operacją trywialną i nie pozostanie tutaj poruszona. Delta warstwy jest wartością stałą dla każdej iteracji uczenia, mającą bezpośrednie przełożenie na wartość gradientu. Do obliczenia wartości delty warstwy dla neuronów wyjściowych służy wzór: δ i = E i actv(n i ) Z kolei wartość delty warstwy dla neuronów warstw ukrytych określona jest wzorem: δ i = actv(n i ) j (w i j δ j ) Warto zauważyć, iż nie są liczone wartości delty warstwy dla neuronów wejściowych oraz bias neuronów warstw ukrytych. Wynika to z bardzo prostej przyczyny - neurony te nie posiadają bezpośrednich wiązań wchodzących, zatem liczenie dla nich delty warstw jest zabiegiem zbytecznym, ponieważ delty takiej nie można nigdzie zaaplikować. Znając wartości delty warstwy dla wszystkich neuronów uczestniczących podczas przetwarzania algorytmu, można przystąpić do obliczenia wartości gradientów wag. Wartość gradientu dla wagi między neuronem warstwy wyższej (i) a neuronem warstwy niższej (j) wyznaczana jest w następujący sposób: 3

δe δw i j = δ k n i Tak odnalezione wartości gradientów można wykorzystać do wprowadzenia zmian wartości wag zgodnie ze wzorem podanym w punkcie 3) artykułu. 4 Metody aplikowania zebranych zmian Zebrane w procesie propagacji wstecznej błędu gradienty można zaaplikować do wag dowiązań na dwa różne sposoby, znane w literaturze angielskiej jako batch oraz online. Istnieją sprzeczności co do tego, która metoda powinna być stosowana przy konstrukcji sieci [2,3] pod względem uzyskiwanej szybkości uczenia sieci (liczby epok potrzebnych do poprawienia współczynnika błędu do oczekiwanej wartości) oraz rozwiązania problemu wejścia w minimum lokalne, które może spowodować spowolnienie uczenia sieci, bądź nawet doprowadzić do niepoprawnego jej nauczenia. Zasadnicza różnica między metodami polega na częstotliwości aplikowania gradientów do wag. Metoda batch zakłada zbieranie próbek gradientów dla wszystkich próbek danych uczących w postaci ich sumy przed ich zaaplikowaniem. W myśl metody online zmiany gradientów aplikowane są dla każdej próbki z zestawu uczącego. Każda zmiana aplikowana do wartości wag sieci neuronowej wiąże się ze zmianą położenia danej sieci na tak zwanej przestrzeni wagowej sieci neuronowej, która to jest indywidualna dla każdej tworzonej sieci. Jej kształt zależy od indywidualnych parametrów sieci oraz zestawu uczącego - dla różnych zestawów różne wartości wag stanowią możliwie najlepsze optimum pod kątem minimalizacji błędu. Na każdej tak zdefiniowanej powierzchni znajdują się punkty zwane minimami lokalnymi - proces uczenia sieci powinien dążyć do tego, aby znaleźć minimum o najmniejszej wartości błędu. Przedstawiającym się tutaj problemem jest wejście uczonej sieci w minimum, które nie jest tym najbardziej optymalnym. Stąd przedstawia się problem z metodą typu batch. Przełożenie sposobu aplikowania gradientów na powierzchnię błędu powoduje przesuwanie się po niej w postaci wektora, który jest sumą wektorów od wszystkich obliczonych gradientów. Może być to przyczyną wielu niepożądanych skutków, takich jak potencjalne ominięcie poszukiwanego minimum. Problem ten nasila się zwłaszcza przy dużym zbiorze danych uczących, gdzie suma wektorowa tak zebranych danych może znacząco opóźnić proces znalezienia optymalnego minimum. Rozwiązaniem tego problemu może być zmniejszenie współczynnika uczenia, co może zwiększyć dokładność takiej metody kosztem spowolnienia procesu uczenia. Zaletą tej metody jest natomiast możliwość efektywnej implementacji wielowątkowej, co pomaga lepiej wykorzystać zasoby procesora. Można spotkać się z przypadkami, gdzie stosowane jest rozwiązanie hybrydowe, które jako pierwsze stosuje metodę online do naprowadzenia sieci do pozycji możliwie bliskiej minimum optymalnemu, po czym to stosowana jest metoda batch. Innym znanym podejściem jest tak zwany mini-batch, który do zliczenia sumy gradientów używa tylko części próbek z zestawu uczącego. Metoda ta nie jest jednak często stosowana. 4

5 Metodyki obliczania błędów W ramach artykułu pozostaną poruszone trzy metody obliczania błędów wraz z ich krótką charakterystyką. 5.1 Bład średniokwadratowy Najczęściej wykorzystywanym błędem jest błąd średniokwadratowy. Pojęcie to może być dobrze znane ze statystyki. Wzór służący do obliczenia takiego błędu prezentuje się następująco: MSE = 1 n n i=1 E i 2 Błąd średniokwadratowy określany jest w stosunku procentowym. Podczas uczenia, wartości te zbiegają się szybko do 1-2 punktów procentowych, aby następnie szybko zniwelować różnice między kolejnymi epokami. 5.2 Bład sumy kwadratów Odmianą błędu średniokwadratowego jest błąd sumy kwadratów, w którym stosunek sumy kwadratów błędów nie definiuje się jako liczby zliczanych błędów, a jako połowa tej sumy. MSE = 1 2 n i=1 E i 2 Błąd ten wyrażany jest jako liczba rzeczywista. Metoda to nie jest wykorzystywana często - z przypadkami jej użycia można się spotkać w przypadku bardziej wyspecjalizowanych algorytmów uczących, jak chociażby algorytm Levenberga-Marquardta [1]. 5.3 Bład średniej kwadratowej Kolejny z rzadziej wybieranych błędów, określany, podobnie jak błąd średniokwadratowy, za pomocą punktów procentowych. W porównaniu do błędu średniokwadratowego, jego wartości zbiegają się szybko do wartości ok. 2-5 punktów procentowych. 1 MSE = n n i=1 E i 2 6 Funkcje aktywacyjne Jednym z najważniejszych elementów sieci neuronowych są funkcje aktywacyjne. Każdy neuron sieci przetwarza swoje dane wejściowe na podstawie przypisanej mu funkcji aktywacyjnej. Jako że wyniki zwracane przez poszczególne neurony mają charakter binarny tzn. przyjmują jedną z dwóch wartości (lub bardzo im bliskie), funkcje aktywacjne mają na celu zmniejszenie amplitudy wyników wyjściowych neuronów do pewnej skończonej 5

wartości. Kilka najczęściej używanych funkcji aktywacyjnych to: funkcja unipolarna sigmoidalna, funkcja bipolarna sigmoidalna oraz tangens hiperboliczny. 6.1 Funkcja sigmoidalna unipolarna Unipolarna funkcja sigmoidala wyraża się następującym wzorem: f (x) = 1 1+e x Funkcja ta jest szczególnie przydatna w sieciach uczonych propagacją wsteczną, ponieważ jest łatwa do rozróżnienia co minimalizuje złożoność obliczeniową procesu uczenia. Poniżej wykres: 6.2 Funkcja sigmoidalna bipolarna Bipolarna funkcja sigmodialna wyraża się następującym wzorem: f (x) = 1 e x 1+e x Funkcja ta jest podobna do funkcji sigmoidalnej i przydaje się w sieciach których wartości wyściowe znajdują się w zakresie [ 1,1]. 6

6.3 Tangens hiperboliczny Tangens hiperboliczny może być łatwo zdefiniowany jako stosunek pomiędzy hiperbolicznm sinuesem i cosinusem lub stosunkiem różnicy do sumy funkcji eksponencjalnych w punktach x i -x tghx = sinhx coshx = ex e x e x +e x Tangens hiperboliczny zachowuje się podobnie jak funkcja sigmoidalna. Zbiór wartości funkcji mieści się w zakresie od -1 do 1. 7

7 Podsumowanie Jako dziedzina rozwijana od lat siedemdziesiątych XX wieku, sieci neuronowe oparte na propagacji wstecznej dorobiły się szerokiej analizy, zwłaszcza pod kątem optymalizacyjnym. Algorytmy są cały czas rozwijane - między innymi powstało wiele wariantów dokonujących zmiany współczynników uczenia oraz momentum w trakcie uczenia. Mnogość możliwości konfiguracyjnych z pewnością przemawia do implementacji takich algorytmów w tworzonych sieciach. Kwestie poruszone w tym artykule to jednak zaledwie czubek góry lodowej - jednakże dobra znajomość teoretyczna tematu nie wystarczy do tworzenia dobrych jakościowo sieci. Aby dobrze zapoznać się z dziedziną, warto samemu podjąć się próbie utworzenia takowej w zastosowaniu do różnych dziedzin, w tym nie tylko inżynieryjnych. Optymalizacja zmiennych takich jak stosunek neuronów wejściowych do wyjściowych, liczba oraz rozmiar warstw ukrytych sieci czy stopień optymalizacji interpretacji sygnałów wyjściowych względem sygnałów wejściowych [6] wymaga dużego doświadczenia praktycznego w poruszonej w tym artykule dziedzinie. Literatura [1] J. Heaton, Introduction to the Math of Neural Networks, Heaton Research, 2011 [2] J. Heaton, Introduction to Neural Networks in C#, Second Edition, Heaton Research, 2008 [3] D. R. Wilson, T. R. Martinez, The general inefficiency of batch training for gradient descent learning, 2003 [4] B. Karlik, A. V. Olgac, Performance Analysis of Various Activation Functions in Generalized MLP Architectures of Neural Networks [5] V. V. Phansalkar, P. S. Sastry, Analysis of the Back- Propagation Algorithm with Monumentum, 1994 [6] D. C. Plaut, S. J. Nowlan, G. E. hinton Experiments on Learning by Back Propagation, 1986 8