Wstęp. Spis treści. Krótka historia sztucznych sieci neuronowych. powrót

Podobne dokumenty
Przetwarzanie danych i rozwiązywanie problemów

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Inteligentne systemy informacyjne

Podstawy Sztucznej Inteligencji (PSZT)

Zadanie: Filtr adaptywny

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

MODELOWANIE RZECZYWISTOŚCI

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

SIECI NEURONOWE Liniowe i nieliniowe sieci neuronowe

Metody Sztucznej Inteligencji II

IMPLEMENTACJA SIECI NEURONOWYCH MLP Z WALIDACJĄ KRZYŻOWĄ

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

Sztuczne sieci neuronowe

Wstęp do sztucznych sieci neuronowych

wiedzy Sieci neuronowe

Temat: Sieci neuronowe oraz technologia CUDA

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

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

Wykład 1: Wprowadzenie do sieci neuronowych

Sztuczne sieci neuronowe

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

Uczenie sieci typu MLP

Elementy inteligencji obliczeniowej

Elementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD X: Sztuczny neuron

Uczenie sieci neuronowych i bayesowskich

Podstawy sztucznej inteligencji

Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe.

Inteligentne systemy przeciw atakom sieciowym

Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe

Oprogramowanie Systemów Obrazowania SIECI NEURONOWE

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

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.

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

Lekcja 5: Sieć Kohonena i sieć ART

HAŁASU Z UWZGLĘDNIENIEM ZJAWISK O CHARAKTERZE NIELINIOWYM

I EKSPLORACJA DANYCH

Obliczenia Naturalne - Sztuczne sieci neuronowe

Optymalizacja optymalizacji

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

ELEMENTY SZTUCZNEJ INTELIGENCJI. Sztuczne sieci neuronowe

Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe

Zastosowania sieci neuronowych

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

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

Sztuczne sieci neuronowe (SNN)

Optymalizacja ciągła

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

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


Definicja perceptronu wielowarstwowego

Podstawy Sztucznej Inteligencji Sztuczne Sieci Neuronowe. Krzysztof Regulski, WIMiIP, KISiM, B5, pok. 408

OCENA DZIAŁANIA AE. METODY HEURYSTYCZNE wykład 4 LOSOWOŚĆ W AE KRZYWE ZBIEŻNOŚCI ANALIZA STATYSTYCZNA:

1. Logika, funkcje logiczne, preceptron.

SIECI NEURONOWE Wprowadzenie

Uczenie sieci radialnych (RBF)

METODY INŻYNIERII WIEDZY

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

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

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

Sztuczna inteligencja

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

Sztuczne siei neuronowe - wprowadzenie

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

Sztuczne sieci neuronowe. Uczenie, zastosowania

wiedzy Sieci neuronowe (c.d.)

Algorytmy sztucznej inteligencji

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

6. Perceptron Rosenblatta

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

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

Badacze zbudowali wiele systemów technicznych, naśladujących w komputerze ludzki mózg. Najbardziej pożyteczne okazały się sieci neuronowe.

Sztuczne sieci neuronowe

Widzenie komputerowe

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

Podstawy Sztucznej Inteligencji

Wstęp do teorii sztucznej inteligencji

SZTUCZNA INTELIGENCJA

CZYM SĄ OBLICZENIA NAT A URALNE?

Systemy Inteligentnego Przetwarzania wykład 1: sieci elementarne

WYKŁAD 4 PLAN WYKŁADU. Sieci neuronowe: Algorytmy uczenia & Dalsze zastosowania. Metody uczenia sieci: Zastosowania

Sieci neuronowe i ich ciekawe zastosowania. Autor: Wojciech Jamrozy III rok SMP / Informatyka

Metody sztucznej inteligencji

Uczenie się pojedynczego neuronu. Jeśli zastosowana zostanie funkcja bipolarna s y: y=-1 gdy z<0 y=1 gdy z>=0. Wówczas: W 1 x 1 + w 2 x 2 + = 0

Wstęp do kognitywistyki. Wykład 3: Logiczny neuron. Rachunek sieci neuronowych

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

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

Zastosowania sieci neuronowych

Sztuczne Sieci Neuronowe. Wiktor Tracz Katedra Urządzania Lasu, Geomatyki i Ekonomiki Leśnictwa, Wydział Leśny SGGW

Sieci neuronowe w Statistica

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

Sieć Hopfielda. Sieci rekurencyjne. Ewa Adamus. ZUT Wydział Informatyki Instytut Sztucznej Inteligencji i Metod Matematycznych.

Redakcja: Urszula Markowska-Kaczmar Halina Kwaśnicka SIECI NEURONOWE W ZASTOSOWANIACH. Praca zbiorowa

Praktyczne informacje o sieciach neuronowych. Elżbieta Dłubis. Państwowa Wyższa Szkoła Zawodowa w Chełmie

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

Prof. Stanisław Jankowski

Elementy kognitywistyki III: Modele i architektury poznawcze

Celem tych ćwiczeń jest zapoznanie się z klasyfikacją za pomocą sieci neuronowych.

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

1.7. Eksploracja danych: pogłębianie, przeszukiwanie i wyławianie

Automatyczna predykcja. Materiały/konsultacje. Co to jest uczenie maszynowe? Przykład 6/10/2013. Google Prediction API, maj 2010

Transkrypt:

powrót Spis treści 1 Wstęp 1.1 Krótka historia sztucznych sieci neuronowych 1.2 Ogólne spojrzenie na sieci neuronowe 1.3 Ogólne cechy sieci neuronowych 1.4 Sieci w technice 1.5 Kierunki badań i zastosowań sieci neuronowych 1.6 Podstawowe pytania praktyczne 2 Sieci liniowe 2.1 Co może robić sieć liniowa? 2.1.1 Odwzorowania liniowe 2.1.2 Obliczenia służące klasyfikacji 2.2 Uczenie sieci liniowej 2.2.1 Przykład funkcji kosztu 2.2.2 Uwagi 2.2.3 Rozszerzenie metody spadku gradientowego na sieć złożoną z wielu jednostek 2.3 Przyspieszanie uczenia 2.4 Ograniczenia sieci elementów liniowych Wstęp Krótka historia sztucznych sieci neuronowych McCulloch i Pitts (1943)[1] pierwszy matematyczny opis działania neuronu i przetwarzania przez niego danych. Proste neurony, które mogły modelować funkcje logiczne takie jak OR lub AND; w ich pracach nie ma jeszcze opisu koncepcji uczenia Von Neumann The computer and the brain (1958): historyczna praca teoretyczna [2]. Wprowadza pomysł uczenia zamiast programowania. Perceptron Rosenblatta [3] (1958) rozpoznawanie znaków alfanumerycznych, sam perceptron symulowany był na komputerze IBM 704 w Cornell Aeronautical Laboratory. Realizacja sprzętowa: opis:[4] zdjęcie: [5] Był wrażliwy na transformacje znaków Działał poprawnie (w zakresie swoich możliwości) nawet po uszkodzeniu kilku jednostek ADALINE (ADAptive LInear Element)

stworzony w 1960 przez Widrowa i Hoffa (ze Stanford University). ADALINE był analogowym urządzeniem elektronicznym. Okres frustracji i zniechęcenia W 1969 Minsky i Papert w swojej książce dowodzili ograniczenia jednowarstwowych sieci neuronowych typu perceptronu i uogólnili je na sieci wielowarstwowe:...our intuitive judgment that the extension (to multilayer systems) is sterile. Efekt: obcięcie funduszy na badania sieci neuronowych Lata 70-te były okresem zahamowania funduszy, ale wymyślono w tym czasie kilka ciekawych rozwiązań: Anderson i Kohonen niezależnie opracowali koncepcję sieci asocjacyjnych. Werbos (1974) po raz pierwszy opracował i użył metody wstecznej propagacji błędu do uczenia sieci neuronowej, ale musiało minąć kilka lat zanim pomysł ten się rozpowszechnił. Fukushima (F. Kunihiko) w 1975 zbudował Cognitron a w 1978 rozbudowana wersja Neocognitron [6] potrafiła rozpoznawać nawet bardzo skomplikowane znaki (pismo chińskie) i była odporna na zniekształcenia, przeskalowania, przesunięcia i obroty znaków. ART Steve Grossberg i Gail Carpenter w 1988 wymyślili, w oparciu o analogie biologiczne, sieci ART (Adaptive Resonance Theory)[7]. Od końca lat 80-tych, na skutek nagromadzenia pozytywnych przykładów i rozwoju komputerów pozwalających na symulacje sieci neuronowych, nastąpił gwałtowny rozwój badań nad sieciami neuronowymi. Ogólne spojrzenie na sieci neuronowe Źródłem inspiracji wspólnym dla większości sztucznych sieci neuronowych jest ludzki mózg.

Schematyczny rysunek neuronu Mózg składa się z prawie biliona (10 12 ) komórek nerwowych, czyli neuronów (rys. 1) i wspomagających ich pracę komórek glejowych, których jest dziesięciokrotnie więcej. Za funkcje intelektualne odpowiada głównie kora mózgowa. Jej grubość to ok. 3mm 5 6 warstw komórek nerwowych. Każdy neuron może się łączyć, przez wypustki zwane aksonami (rys. 2), nawet z ponad dziesięcioma tysiącami innych neuronów. Miejsce połączenia zakończenia aksonu z ciałem następnego neuronu zwane jest synapsą. Przetwarzanie informacji w neuronie opiera się na sumowaniu potencjałów postsynaptycznych, powstających w odpowiedzi na impulsy dochodzące z zakończeń aksonów innych neuronów. Jeśli wypadkowy potencjał przekroczy próg, generowany jest impuls, który przemieszcza się wzdłuż aksonu jako potencjał czynnościowy. Gdy dotrze do synapsy, pobudza kolejny neuron drogą chemiczną, dzięki neurotransmiterom (wyjątkiem są synapsy elektryczne, występujące częściej niż sądzono pierwotnie). Jeśli suma wygenerowanych w ten sposób potencjałów postsynaptycznych przekroczy próg pobudzenia, generowany jest kolejny potencjał czynnościowy, który przemieszcza się... itd. Neurony (komórki móżdżku) - rysunek z Estructura de los centros nerviosos de las aves, Santiago Ramon y Cajal, Madrid,

1905 Poglądowe animacje: Sumowanie i potencjałów postsynaptycznych i przesyłanie informacji przez potencjały czynnościowe: [8] Działanie synapsy: [9] Ogólne cechy sieci neuronowych odporność na zniekształcenia bodźców odporność na uszkodzenia fragmentów sieci zdolność do generalizacji zdobytej wiedzy uczenie przykładami zamiast programowania algorytmicznego równoległe przetwarzanie danych - szczególnie interesująca własność w przypadku implementacji na maszynach wieloprocesorowych i hardware'owych. To w jaki sposób modeluje się sieć neuronową zależy w dużej mierze od tego, do jakiego celu ma służyć dany model. Wraz z rozwojem dziedziny modelowania sieci neuronowych wyraźnie zarysował się podział na: Biologicznie realistyczne sieci neuronowe modelowanie i testowanie hipotez dotyczących biologicznych sieci neuronowych. Tym nurtem nie będziemy zajmować się na tych zajęciach. Sztuczne sieci neuronowe do zastosowań technicznych i praktycznych. Ten typ sieci będziemy dalej rozważać. Sieci w technice W kontekście zastosowań technicznych ogólnie możemy powiedzieć, że: Sieć neuronowa, to zbiór połączonych prostych jednostek przetwarzających, których działanie jest luźno inspirowane biologicznymi neuronami. Wiedza i możliwości sieci przechowywane są w postaci architektury sieci i siły (wagi) połączeń pomiędzy jednostkami. Wagi ustalane są w procesie zwanym uczeniem. Jednostka przedstawiona na powyższym rysunku wykonuje następujące obliczenia:

Kierunki badań i zastosowań sieci neuronowych rozpoznawanie kontekstowe i inwariantne obrazów: kompresja, segmentacja, odtwarzanie, rozumienie diagnostyka medyczna sterowanie i optymalizacja sztuczna inteligencja ekonomia - szczególnie przydatne zastosowanie, gdy nie ma dobrej teorii. predykcja: ocena zdolności kredytowej, prognozy zmian rynku, wspomaganie inwestycji giełdowych kwalifikacja i rozpoznawanie podmiotów gospodarczych: np.: czy dane przedsiębiorstwo należy do zwyżkujących, w stanie stagnacji czy też jest w regresji kojarzenie i analiza danych data mining optymalizacja decyzji gospodarczych Podstawowe pytania praktyczne Jaką wybrać architekturę sieci? Warstwowa feedforeward, ze sprzężeniami zwrotnymi, a może każdy z każdym? Ile elementów sieci potrzeba? Jakie powinny być funkcje aktywacji? Aktualizacja synchroniczna czy asynchroniczna, deterministyczna czy losowa? Jak nauczyć sieć? Jeśli może nauczyć się na przykładach, to ilu przykładów potrzeba? Ile potrzeba cykli uczenia? Czy przykłady muszą zawierać porządane odpowiedzi (uczenie z nadzorem i bez)? Czy może sieć uczyć się w czasie rzeczywistym, czy uczenie musi być oddzielone od korzystania z sieci? Co potrafią zrobić różne typy sieci? Czy potrafią uogólniać generalizować na podstawie poznanych przykładów? Jak zrealizować sieci? Sprzętowo czy symulując na komputerach? Sieci liniowe Sieci neuronowe możemy sobie wyobrażać w postaci grafów skierowanych. Ich krawędzie odpowiadają połączeniom między jednostkami i wykonują operację mnożenia przez wagę, zaś w ich wierzchołkach znajdują się jednostki wykonujące pewne działania, np. sumowanie wejść i zastosowanie do tej sumy jakiejś funkcji. Koncepcję tą ilustruje poniższy rysunek (rys. 3 i rys. 4):

Sieć złożona z jednego neuronu jako graf. Wejścia do jednostki stanowią warstwę wierzchołków wejściowych, jej wagi są własnością krawędzi. Sieć złożona z dwóch jednostek. Wartości z wierzchołków wejściowych przekazywane są przez krawędzie do wierzchołków położonych w kolejnej warstwie. Pierwszą siecią, którą będziemy omawiać jest sieć złożona z jednostek liniowych. Oznacza to, że funkcja występująca w dotychczasowych schematach to funkcja liniowa. Co może robić sieć liniowa? Odwzorowania liniowe W przypadku sieci przedstawionej na rys. 3 wyjście można zapisać jako: Rozpoznajemy tu znane z poprzedniego wykładu równanie regresji liniowej! A zatem najprostsza sieć

liniowa formalnie realizuje regresję liniową. Aby dostrzec co realizuje sieć złożona z wielu elementów liniowych przekształćmy nieco rys. 4 do postaci rys. 5. Wagi związane z jednostką 'm-tą' są grupowane w wektory wag. Sieć złożona z 'k' jednostek liniowych. Wartości z 'n' wierzchołków wejściowych przekazywane są przez krawędzie do wierzchołków położonych w kolejnej warstwie. Zapiszmy wartości podawane na wierzchołki wejściowe jako wektor kolumnowy: Jest on wspólny dla wszystkich jednostek. Wektor wag związanych z 'm-tą' jednostką zapiszmy jako wektor wierszowy: z wektorów tych możemy zbudować macierz : Jeśli teraz zapiszemy wektor wyjściowy jako wektor kolumnowy: że: To widać, Oznacza to, że warstwa liniowa dokonuje pewnego przekształcenia linowego z przestrzeni do przestrzeni zadanego przez macierz. Jednym z powszechnych zastosowań jest konstrukcja automatycznie adaptujących się filtrów liniowych. Obliczenia służące klasyfikacji Inną możliwością zastosowania sieci liniowej jest możliwość "rozpoznawania" pewnych wzorców

wejściowych. Jak to się dzieje? W tym zastosowaniu musimy zapewnić sobie, że zarówno wektor wejściowy jak i wektor wag są unormowane: oraz W tej sytuacji wyjście 'm-tej' jednostki jest: gdzie jest kątem między wektorami i. Czyli czym mniejszy kąt między tymi wektorami, tzn. są one do siebie bardziej podobne, tym większy sygnał wyjściowy z neuronu. W tym sensie możemy powiedzieć, że neuron "rozpoznaje" wzorce podobne do zapamiętanych w wagach. Uczenie sieci liniowej Celem uczenia sieci jest taka modyfikacja jej wag aby błąd popełniany przez sieć dla przykładów ciągu uczącego był możliwie mały. Przypadek sieci zbudowanej z pojedynczego elementu jest dokładnym odpowiednikiem regresji liniowej. Podobnie jak dla regresji liniowej możemy i tu wprowadzić pojęcie funkcji kosztu zdefiniowanej jako: tu wartość pożądana dla przykładu wynosi zaś oznacza faktyczna odpowiedź sieci dla tego przykładu. Analogicznie jak w przypadku regresji liniowej możemy zastosować algorytm spadku gradientowego w wersji stochastycznej lub zbiorczej. W aktualnej notacji wersja zbiorcza algorytmu wygląd tak (dla -tej wagi): zaś w przypadku metody spadku stochastycznego należy wylosować przykład -ty z ciągu uczącego i

zmodyfikować wagi tak: Przykład funkcji kosztu Rozważmy funkcję kosztu dla neuronu o dwóch wejściach i jednym wyjściu. Realizuje on odwzorowanie liniowe. Niech ciąg uczący będzie {(1,2), (1.5, 3)}. Możemy obliczyć błąd jaki popełnia nasz neuron dla wielu wartości 'w' i dla wielu wartości 'b'. Wykreślając tą wartość we współrzędnych (w,b) otrzymujemy powierzchnię funkcji błędu jak na rys. obok (dla lepszego uwidocznienia kształtu powierzchnia ta został ucięta na poziomie koszt =1). Powierzchnia błędu z naszego przykładu. Kod rysujący powierzchnię błędu # -*- coding: utf-8 -*- from matplotlib.pyplot import plot, show, figure, draw from mpl_toolkits.mplot3d import axes3d import numpy as np def koszt(w,b,cu): z = np.zeros((len(w),len(b))) for i,to_w in enumerate( w): for j,to_b in enumerate( b): for x, y in CU: z[j,i] += ( (to_w*x[1] + to_b) - y)**2 return z # tworzymy ciąg uczący CU from pybrain.datasets import SupervisedDataSet CU = SupervisedDataSet(2, 1)

CU.addSample((1, 1), (2,)) CU.addSample((1, 1.5), (3,)) # zakres wag do sprawdzenia w = np.linspace( -1,5, 150) b = np.linspace(-5, 6, 150) # obliczmy pow. błędu, czyli wartość błędu dla każdego punktu przestrzeni parametrów. z = koszt(w,b,cu) z[np.where(z>1)]=1 fig = figure() ax = fig.gca(projection='3d') W,B = np.meshgrid(w,b) ax.plot_surface(b, W, z, rstride=3, cstride=3, alpha=0.3) ax.set_xlabel('b') ax.set_ylabel('w') ax.set_zlabel('koszt') ax.set_zlim(, 1) show() Uwagi Powierzchnia błędu w przypadku gdy wzorce nie rozpinają całej przestrzeni wejść. Jak wpływa dobór ciągu uczącego na to, czego sieć się nauczyła? Funkcja kosztu dla sieci liniowej ma jedno minimum i jest to minimum globalne. Jeśli ciąg uczący rozpina przestrzeń możliwych wejść, to sieć dąży do globalnego minimum. Jeśli w przestrzeni możliwych wejść istnieje podprzestrzeń ortogonalna do podprzestrzeni wzorców w ciągu uczącym, to sieć dąży do minimum parabolicznej rynny. Zastanówmy się: Jak szybka jest zbieżność i od czego zależy? Uczenie sieci elementów liniowych

Rozszerzenie metody spadku gradientowego na sieć złożoną z wielu jednostek Algorytm spadku gradientowego przenosi się w naturalny sposób na sieć elementów liniowych w postaci warstwy: w ciągu uczącym zamiast wartości z podajemy wektor wartości pożądanych zamiast modyfikować wektor wag, modyfikujemy macierz wag Sieci liniowe MADALINE (Many Adaptive Linear Elements) z tym algorytmem uczenia, są wykorzystywane były jako filtry adaptacyjne np.: do tłumienia echa w liniach telefonicznych do poprawiania stosunku sygnału do szumu, czyli do filtrowania Przyspieszanie uczenia Kontrolowanie wartości parametru. Uczenie rozpoczynamy od stosunkowo dużych wartości. Następnie stopniwo zmniejszamy jego wartość. Dodanie składnika bezwładności: gdzie: k - kook uczenia, zaś jest poprzednią zmianą wagi. Dla prawie płaskiej powierzchni kosztu mamy: Podstawiając do poprzedniego równania mamy Po przekształceniu dostajemy:

Oznacza to, że dla prawie płaskiej powierzchni błędu otrzymujemy efektywny współczynnik uczenia większy niż w przypadku algorytmu bez bezwładności. Dla typowych wartości otrzymujemy około 10 krotne przyspieszenie! i Kod ilustrujący zbieżność metody gradientowej # -*- coding: utf-8 -*- from pybrain.structure import FeedForwardNetwork, LinearLayer, FullConnection from pybrain.supervised.trainers import BackpropTrainer from matplotlib.pyplot import plot, show, ion, ioff, figure, contour, draw from mpl_toolkits.mplot3d import axes3d import matplotlib.animation as animation import numpy as np def update_line(num, data, line): line.set_data(data[...,:num]) return line, def koszt(w,b,cu): z = np.zeros((len(w),len(b))) for i,to_w in enumerate( w): for j,to_b in enumerate( b): for x, y in CU: z[j,i] += ( (to_w*x[1] + to_b) - y)**2 return z # wytwarzamy pustą sieć siec = FeedForwardNetwork() # tworzymy węzły wejściowe i wyjściowe warstwawejsciowa = LinearLayer(2) warstwawyjsciowa = LinearLayer(1) # dodajemy węzły do sieci siec.addinputmodule(warstwawejsciowa) siec.addoutputmodule(warstwawyjsciowa) # łączymy węzły wej_do_wyj = FullConnection(warstwaWejsciowa, warstwawyjsciowa) wej_do_wyj.params[] = -0.1 wej_do_wyj.params[1] = 2. siec.addconnection(wej_do_wyj)

# inicjujemy sieć siec.sortmodules() # tworzymy ciąg uczący CU from pybrain.datasets import SupervisedDataSet CU = SupervisedDataSet(2, 1) CU.addSample((1, 1), (2,)) CU.addSample((1, 1.5), (3,)) # zakres wag do sprawdzenia w = np.linspace( 1.9, 2.1, 50) b = np.linspace(-0.1, 0.1, 50) # obliczmy wartości pow. błędu. z = koszt(w,b,cu) fig2 = figure(2) contour(b,w,z,np.linspace(0.0001,0.1,10)) trainer = BackpropTrainer(siec, CU,learningrate=0.08, momentum=0.9) punkt, = plot(siec.params[],siec.params[1],'*') data = np.zeros((2,200)) for i in range(200): trainer.train() data[:,i] = siec.params[], siec.params[1] line_ani = animation.funcanimation(fig2, update_line, 200, fargs=(data, punkt), interval=50, blit=true,repeat=false) show() Szablon:End hidden Ograniczenia sieci elementów liniowych sieć może jedynie realizować liniowe odwzorowania w odróżnieniu od sieci nieliniowych, liniowe sieci wielowarstwowe nie wnoszą jakościowo nic w stosunku do sieci jednowarstwowych, bo złożenie operacji liniowych da nam i tak operację liniową