Politechnika Warszawska

Podobne dokumenty
Podstawy Sztucznej Inteligencji

MATLAB Neural Network Toolbox uczenie sieci (dogłębnie)

Algorytmy sztucznej inteligencji

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Sztuczne siei neuronowe - wprowadzenie

Oprogramowanie Systemów Obrazowania SIECI NEURONOWE

IMPLEMENTACJA SIECI NEURONOWYCH MLP Z WALIDACJĄ KRZYŻOWĄ

Sieci neuronowe w Statistica

Identyfikacja obiektów dynamicznych za pomocą sieci neuronowych

Zastosowania sieci neuronowych

Podstawowe funkcje biblioteki narzędziowej Neural Network Toolbox. Version 5 pakietu MATLAB v. 6

ZACHODNIOPOMORSKI UNIWERSYTET TECHNOLOGICZNY W SZCZECINIE

Rozdział 1 Sztuczne sieci neuronowe. Materiały do zajęć dydaktycznych - na podstawie dokumentacji programu Matlab opracował Dariusz Grzesiak

Sieci neuronowe w Statistica. Agnieszka Nowak - Brzezioska

Projekt Sieci neuronowe

Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe


Podstawy Sztucznej Inteligencji (PSZT)

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

Zastosowania sieci neuronowych

Systemy pomiarowo-diagnostyczne. Metody uczenia maszynowego wykład III 2016/2017

Elementy inteligencji obliczeniowej

Metody systemowe i decyzyjne w informatyce

MATLAB Neural Network Toolbox przegląd

sieci jednowarstwowe w MATLABie LABORKA Piotr Ciskowski

Elektroniczne materiały dydaktyczne do przedmiotu Wstęp do Sieci Neuronowych

Uczenie sieci neuronowych i bayesowskich

MODELOWANIE NEURONALNE ROZWOJU SYSTEMU ELEKTROENERGETYCZNEGO. CZĘŚĆ 2. MODELE SYSTEMU IEEE RTS

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

Temat: ANFIS + TS w zadaniach. Instrukcja do ćwiczeń przedmiotu INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE

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

Metody Sztucznej Inteligencji II

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

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Podstawy sztucznej inteligencji

Inteligentne systemy przeciw atakom sieciowym

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

HAŁASU Z UWZGLĘDNIENIEM ZJAWISK O CHARAKTERZE NIELINIOWYM

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

Rozpoznawanie obrazów

Wielowarstwowy perceptron jako klasyfikator

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

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

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

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

Systemy agentowe. Sieci neuronowe. Jędrzej Potoniec

Uczenie sieci typu MLP

Laboratorium nr 2. Identyfikacja systemu i detekcja uszkodzeń na podstawie modelu

MODELOWANIE PROCESÓW PRZETWÓRCZYCH Z UŻYCIEM SZTUCZNYCH SIECI NEURONOWYCH

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

Temat: Sieci neuronowe oraz technologia CUDA

Ćwiczenie WPK Wielowarstwowy perceptron jako klasyfikator

ALGORYTMY SZTUCZNEJ INTELIGENCJI

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

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

Sztuczne sieci neuronowe

Dokumentacja Końcowa

Systemy agentowe. Sieci neuronowe. Jędrzej Potoniec

Instrukcja realizacji ćwiczenia

NEURAL NETWORK ) FANN jest biblioteką implementującą SSN, którą moŝna wykorzystać. w C, C++, PHP, Pythonie, Delphi a nawet w środowisku. Mathematica.

Matlab podstawy + testowanie dokładności modeli inteligencji obliczeniowej

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

1 Podstawy programowania sieci neuronowych w programie Matlab 7.0

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

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

ĆWICZENIE 5: Sztuczne sieci neuronowe

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

GNU Octave (w skrócie Octave) to rozbudowany program do analizy numerycznej.

1. Logika, funkcje logiczne, preceptron.

Optymalizacja ciągła

Zrealizować sieć neuronową (learnbpm) uczącą się odwzorowania z = x 2 + y 2 dla x i y zmieniających się od -1 do 1.

Zastosowania sieci neuronowych - automatyka identyfikacja sterowanie

Systemy uczące się wykład 2

Optymalizacja optymalizacji

Wstęp do sieci neuronowych, wykład 04. Skierowane sieci neuronowe. Algorytmy konstrukcyjne dla sieci skierowanych

Elementy metod numerycznych - zajęcia 9

Metody eksploracji danych Laboratorium 2. Weka + Python + regresja

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

Metody systemowe i decyzyjne w informatyce

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.

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

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

Widzenie komputerowe

Optymalizacja systemów

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

Testowanie modeli predykcyjnych

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

Algorytm grupowania danych typu kwantyzacji wektorów

ALGORYTM RANDOM FOREST

DEKOMPOZYCJA HIERARCHICZNEJ STRUKTURY SZTUCZNEJ SIECI NEURONOWEJ I ALGORYTM KOORDYNACJI

Podstawowe operacje graficzne.

Algorytmy wstecznej propagacji sieci neuronowych

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Inteligencja obliczeniowa Laboratorium 9: Sieci neuronowe.

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

SID Wykład 8 Sieci neuronowe

Sztuczne sieci neuronowe

Streszczenie. Słowa kluczowe: modele neuronowe, parametry ciągników rolniczych

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];

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

Transkrypt:

Politechnika Warszawska Programowa realizacja sieci neuronowych Zbigniew Szymański, Stanisław Jankowski grudzień 03 Instytut Informatyki Nowowiejska 5 / 9, 00-665 Warszawa

Programowa realizacja sieci neuronowych Zbigniew Szymański, Stanisław Jankowski (z.szymanski@ii.pw.edu.pl) Streszczenie W dokumencie przedstawiono sposób realizacji sieci neuronowej w środowisku programu Matlab oraz darmowego programu Octave. Pokazano sposób odczytu wag wytrenowanej sieci oraz funkcję obliczającą jej jakobian. Słowa kluczowe: sieci neuronowe, MATLAB, Octave

3 Programowa realizacja sieci neuronowych Zbigniew Szymański, Stanisław Jankowski SPIS TREŚCI WSTĘP... 4. DANE WEJŚCIOWE... 5 SIEĆ NEURONOWA W PROGRAMIE MATLAB... 6. UCZENIE SIECI... 6. ODCZYT WAG SIECI NEURONOWEJ... 7 3 SIEĆ NEURONOWA W PROGRAMIE OCTAVE... 9 3. UCZENIE SIECI... 9 3. ODCZYT WAG SIECI NEURONOWEJ... 9 4 OBLICZANIE JAKOBIANU... 5 LITERATURA... 6

4 Wstęp W niniejszym dokumencie pokazano sposób realizacji sieci neuronowej w środowisku programów Matlab i Octave. Zakłada się, że uczona sieć będzie miała architekturę taką jak pokazano na rys... Sieć składa się z warstwy wejść (oznaczonych jako x...x inputcount ), warstwy neuronów ukrytych oraz neuronu wyjściowego. Wagi na połączeniach pomiędzy wejściami, a neuronami ukrytymi oznaczone są jako w i,k. Indeks i odpowiada numerowi wejścia, zaś indeks k numerowi neuronu ukrytego. W każdym neuronie ukrytym uwzględniono przesunięcie (ang. bias) wagi tego wejścia oznaczone są jako b in k, gdzie indeks k oznacza numer neuronu ukrytego. x w, w, hidden neuron no. v input no. w, v x w, hidden neuron no. y input no. output x inputcount... input no.inputcount b in b in b in w, w, w inputcount,... hidden neuron no. v b out bias bias Inputs Hidden layer Output Rys.. Schemat sieci neuronowej Wagi połączeń pomiędzy neuronami ukrytymi, a neuronem wyjściowym oznaczono jako v k, gdzie indeks k oznacza numer neuronu ukrytego. Waga dla wejścia bias neuronu wyjściowego oznaczona jest jako b out. Zakłada się, że funkcja aktywacji neuronów ukrytych to tangens hiperboliczny, zaś neuron wyjściowy jest liniowy.

5 + v + v + b Wzór opisujący wyjście y z sieci neuronowej: y = v tanh + L + out tanh ( w, x + w, x + L + winputcount, xinputcount + bin ) ( w x + w x + L + w x + b ), tanh, ( w x + w x + L + w x + b ),. Dane wejściowe inputcount,, inputcount in + + inputcount, inputcount in _ Przykłady do uczenia sieci neuronowej znajdują się w pliku tekstowym w formacie przedstawionym na rys... Wiersze pliku dane.txt zawierają kolejne przykłady zbioru uczącego. Kolumny (z wyjątkiem ostatniej) odpowiadają wejściom x k sieci neuronowej. Ostatnia kolumna to etykieta (klasa) przykładu w zadaniach klasyfikacji lub wartość funkcji w zadaniach regresji. +.55854e-00.33676e-00 -.0000000e+000.4959056e-00 -.5963097e-00 -.0000000e+000 4.5648e-00 3.87779e-00 -.0000000e+000.43537e-00.87373e-00.0000000e+000 -.488808e-00 6.8784e-00.0000000e+000 7.68976e-00-8.939996e-00 -.0000000e+000.565776e-00.77808e-00 -.0000000e+000 3.60490e-00-7.7998340e-00 -.0000000e+000... Rys.. Przykładowe dane wejściowe zwartość pliku dane.txt

6 Sieć neuronowa w programie Matlab. Uczenie sieci Listing. przedstawia skrypt główny przygotowujący dane oraz wywołujący funkcje odpowiedzialną za uczenie. Funkcja importdata wczytuje dane z pliku tekstowego w formacie przedstawionym na rys... W przykładowym programie po wczytaniu danych tablica dane zawiera trzy kolumny kol. i zawierają wartości wejść, zaś kol. 3 wartości etykiet. Funkcja train_net przyjmuje trzy parametry. Pierwszy to tablica zawierająca wartości wejść x dla przykładów ze zbioru uczącego. Wiersze tablicy odpowiadają kolejnym przykładom. Drugi parametr to tablica zawierająca etykiety lub watości funkcji. Zaś ostatni parametr oznacza liczbę neuronów w warstwie ukrytej. Funcja zwraca obiekt reprezentujący sieć neuronową. Obiekt ten może być wykorzystany np. do odczytu wag sieci. Listing.. Uczenie sieci neuronowej plik main.m % plik: main.m % opis: przykładowy skrypt pokazujący użycie sieci neuronowych w % programie MATLAB % autor: Zbigniew Szymański <z.szymanski@ii.pw.edu.pl> % data: 03--0 clc; clear; %wyczyszczenie okna komend Matlaba %czyści pamięć Matlaba % Import danych z pliku tekstowego dane=importdata('dane.txt'); % Opis tablicy 'dane': % kolumny, - współrzędne punktów do klasyfikacji % kolumna 3 - etykieta punktu {-,} % Uczenie sieci neuronowej liczba_neuronow_ukrytych=4; [net]=train_net(dane(:,:),dane(:,3),liczba_neuronow_ukrytych); Listing. przedstawia implementację funkcji train_net dokonującej uczenia sieci neuronowej. Funkcja newff tworzy nowy obiekt sieci typu feed-forward backpropagation network. Wywołanie funkcji init powoduje zainicjowanie wag sieci wartościami losowymi. W kolejnych liniach ustawiane są parametry algorytmu uczenia wartość błędu przy której przerywany jest proces uczenia (zbyt niski poziom błędu może mieć niekorzystny wpływ na generalizację sieci), oraz maksymalna liczba epok uczenia. Ustawienie właściwości net.trainparam.showwindow na wartość false powoduje, że podczas uczenia nie będzie wyświetlane okno prezentujące jego przenbieg. Wywołanie funkcji train rozpoczyna pierwszą fazę proces uczenia (dobór wag metodą propagacji wstecznej błędu). Po jej zakończeniu zmieniana jest funkcja ucząca na Levenberg a

7 Marquard a i uczenie jest kontynuowane, aż do osiągnięcia założonego poziomu błędu lub liczby epok. Listing.. Funkcja ucząca sieć neuronową function [net]= train_net(train_set,labels,hidden_neurons_count) %Opis: funkcja tworząca i ucząca sieć neuronową %Parametry: % train_set: zbiór uczący - kolejne punkty w kolejnych wierszach % labels: etykiety punktów - {-,} % hidden_neurons_count: liczba neuronów w warstwie ukrytej %Wartość zwracana: % net - obiekt reprezentujący sieć neuronową %inicjalizacja obiektu reprezentującego sieć neuronową %funkcja aktywacji: neuronów z warstwy ukrytej - tangens hiperboliczny, % neuronu wyjściowego - liniowa %funkcja ucząca: gradient descent backpropagation - propagacja wsteczna % błędu net=newff(train_set',labels',hidden_neurons_count,... {'tansig', 'purelin'},'traingd'); rand('state',sum(00*clock)); net=init(net); net.trainparam.goal = 0.0; net.trainparam.epochs = 00; net.trainparam.showwindow = false; net=train(net,train_set',labels'); %inicjalizacja generatora liczb %pseudolosowych %inicjalizacja wag sieci %warunek stopu poziom błędu %maksymalna liczba epok %nie pokazywać okna z wykresami %w trakcie uczenia %uczenie sieci %zmiana funkcji uczącej na: Levenberg-Marquardt backpropagation net.trainfcn = 'trainlm'; net.trainparam.goal = 0.0; %warunek stopu poziom błędu net.trainparam.epochs = 00; %maksymalna liczba epok net.trainparam.showwindow = false; %nie pokazywać okna z wykresami %w trakcie uczenia net=train(net,train_set',labels'); %uczenie sieci. Odczyt wag sieci neuronowej Do analizy sieci neuronowej konieczna jest znajomość jej wag. Na listingu. pokazano w jaki sposób można je odczytać. Listing.. Odczyt wag sieci neuronowej %NN weights w = net.iw{} ; bin=net.b{}; v = net.lw{,}'; bout = net.b{}; %weights inputs->hidden neurons %input bias %weights hidden neurons->output %output bias Tablica zawierająca wagi połączeń wejść z neuronami ukrytymi zapisana jest w składowej IW{} obiektu reprezentującego sieć neuronową. Tablica ta na potrzeby niniejszego przykładu została transponowana, aby oznaczenia były zgodne z rys... Kolejne wiersze tablicy

8 odpowiadają kolejnym wejściom sieci, zaś kolumny neuronom ukrytym. Np. w(,) oznacza wagę połączenia pierwszego wejścia z drugim neuronem ukrytym..9706-5.4645-4.0344 5.094 9.4974 5.750-8.400-0.87 Rys.. Przykładowa zawartość zmiennej w z listingu. Bias neuronów ukrytych zapisany jest w składowej b{} obiektu reprezentującego sieć neuronową. -5.6489 -.7649.765-3.766 Rys.. Przykładowa zawartość zmiennej bin z listingu. Tablica zawierająca wagi połączeń pomiędzy neuronami ukrytymi, a neuronem wyjściowym zapisana jest w składowej LW{,} obiektu reprezentującego sieć neuronową. Tablica ta na potrzeby niniejszego przykładu została transponowana, aby oznaczenia były zgodne z rys....309 -.77 -.576 -.343 Rys.3. Przykładowa zawartość zmiennej v z listingu. Bias neuronu wyjściowego zapisany jest w składowej b{} obiektu reprezentującego sieć neuronową.

9 3 Sieć neuronowa w programie Octave Program Octave można pobrać ze strony [4]. Do realizacji sieci neuronowych (w sposób odpowiadający realizacji w programie Matlab) wymagane jest pobranie pakietu nnet[6] i zainstalowanie w programie Octave komendą pkg install nnet-0..3.tar.gz. 3. Uczenie sieci Listing 3. przedstawia skrypt główny przygotowujący dane oraz wywołujący funkcje odpowiedzialną za uczenie. Funkcja loaddata wczytuje dane z pliku tekstowego w formacie przedstawionym na rys... W przykładowym programie po wczytaniu danych tablica dane zawiera trzy kolumny kol. i zawierają wartości wejść, zaś kol. 3 wartości etykiet. Funkcja train_net przyjmuje trzy parametry. Pierwszy to tablica zawierająca wartości wejść x dla przykładów ze zbioru uczącego. Wiersze tablicy odpowiadają kolejnym przykładom. Drugi parametr to tablica zawierająca etykiety lub watości funkcji. Zaś ostatni parametr oznacza liczbę neuronów w warstwie ukrytej. Funcja zwraca obiekt reprezentujący sieć neuronową. Obiekt ten może być wykorzystany np. do odczytu wag sieci. 3. Odczyt wag sieci neuronowej Odczyt wag sieci neuronowej odbywa się tak samo jak w programie Matlab i jest opisany w pkt...

0 Listing 3.. Uczenie sieci neuronowej plik main.m % plik: main.m % opis: przykładowy skrypt pokazujący użycie sieci neuronowych w % programie Octave % autor: Zbigniew Szymański <z.szymanski@ii.pw.edu.pl> % data: 03--6 clc; clear; %wyczyszczenie okna komend %usunięcie wszystkich zmiennych % Import danych z pliku tekstowego dane=load('dane.txt'); % Opis tablicy 'dane': % kolumny, - współrzędne punktów do klasyfikacji % kolumna 3 - etykieta punktu {-,} % Uczenie sieci neuronowej liczba_neuronow_ukrytych=4; [net]=train_net(dane(:,:),dane(:,3),liczba_neuronow_ukrytych); %klasyfikacja danych ze zbioru uczącego wyniki=sign(sim(net,dane(:,:)')'); %analiza wyników klasyfikacji TP=size(find(dane(idx_poz,3)==),) %liczba True Positives TN=size(find(dane(idx_neg,3)==-),) %liczba True Negatives FP=size(find(dane(idx_poz,3)==-),) FN=size(find(dane(idx_neg,3)==),) %liczba False Positives %liczba False Negatives %TP+TN+FP+FN == rozmiar zbioru %Wizualizacja wyników klasyfikacji idx_poz=find(wyniki(:)==); idx_neg=find(wyniki(:)==-); idx_blad=find(wyniki(:)~=dane(:,3)); %indeksy przykladow %zaklasyfikowanych jako pozytywne %indeksy przykladow %zaklasyfikowanych jako negatywne %indeksy błędnie zaklasyfikowanych %przykładów figure(00); plot(dane(idx_blad,),dane(idx_blad,),'ob'); %wykreślenie błędnie %zaklasyfikowanych próbek hold on; %wyniki klasyfikacji - klasa pozytywna plot(dane(idx_poz,),dane(idx_poz,),'.r'); %wyniki klasyfikacji - klasa negatywna plot(dane(idx_neg,),dane(idx_neg,),'.k'); hold off;

Listing 3.. Funkcja ucząca sieć neuronową function [net]= train_net(train_set,labels,hidden_neurons_count) %Opis: funkcja tworząca i ucząca sieć neuronową %Parametry: % train_set: zbiór uczący - kolejne punkty w kolejnych wierszach % labels: etykiety punktów - {-,} % hidden_neurons_count: liczba neuronów w warstwie ukrytej %Wartość zwracana: % net - obiekt reprezentujący sieć neuronową %inicjalizacja obiektu reprezentującego sieć neuronową %funkcja aktywacji: neuronów z warstwy ukrytej - tangens hiperboliczny, % neuronu wyjściowego - liniowa %funkcja ucząca: Levenberg-Marquard input_count=size(train_set,); pr=min_max(train_set'); %określenie minimalnych i %maksymalnych wartości dla %każdego wejścia net=newff(pr, [hidden_neurons_count ],{'tansig', 'purelin'}, 'trainlm'); rand('state',sum(00*clock)); %inicjalizacja generatora liczb %pseudolosowych %inicjalizacja wag sieci net.iw{} = (rand(hidden_neurons_count, input_count)-0.5)/(0.5/0.5); net.lw{} = (rand(, hidden_neurons_count) - 0.5) / (0.5 / 0.5); net.b{} = (rand(hidden_neurons_count, ) - 0.5) / (0.5 / 0.5); net.b{} = (rand() - 0.5) / (0.5 / 0.5); net.trainparam.goal = 0.0; net.trainparam.epochs = 300; net=train(net,train_set',labels'); %warunek stopu - poziom błędu %maksymalna liczba epok %uczenie sieci

4 Obliczanie Jakobianu Jakobian jest macierzą, której kolejne kolumny zawierającą pochodne wyjścia sieci względem jej parametrów. Kolejne wiersze odnoszą się do kolejnych próbek zbioru uczącego. parametry (wagi) próbki Rys 3.. Struktura Jakobianu Wzór na wartość y wyjścia sieci neuronowej przedstawiono w pkt.. Wzory na pochodne wyjścia sieci względem kolejnych wag przedstawione są na kolejnej stronie. Do obliczenia pochodnych wykorzystano poniższe wzory: Pochodna funkcji złożonej: [f(g(x))] =f (g(x)) g (x) Pochodna funkcji tangens hiperboliczny: tanh (x)=-tanh (x) Funkcja realizująca obliczanie Jakobianu sieci neuronowej została przedstawiona na listingu 3. (kod funkcji jest taki sam zarówno dla środowiska Matlab jak i Octave). Parametrami funkcji są obiekt reprezentujący sieć neuronową i tablica zawierająca w kolejnych wierszach próbki zbioru uczącego (kolumny tablicy odpowiadają wejściom sieci neuronowej).

3 Pochodne po wagach -szego neuronu ukrytego: = v ( tanh ( w, x + w, x + L + winputcount, xinputcount + bin ) x w,... = v tanh w, x + w, x + L + winputcount, xinputcount + b w inputcount, [ ] [( ( ) x ] Pochodna po bias ie -szego neuronu ukrytego: = v tanh w, x + w, x + L + w b... in [( ( x + b )] inputcount, inputcount in Pochodne po wagach ostatniego neuronu ukrytego: = w v... v, w in inputcount [( tanh ( w x + w x + L + w x + b ) x ] = inputcount,,, inputcount, inputcount in _ [( tanh ( w x + w x + L+ w x + b ) x ],, Pochodna po bias ie ostatniego neuronu ukrytego: = b v in _ inputcount, inputcount in _ [( tanh ( w x + w x + L+ w x + b )],, inputcount, inputcount Pochodne po wagach neuronu wyjściowego: v = tanh( w, x + w, x + L + winputcount, xinputcount + bin )... v = tanh w, x + w, x + L + winputcount, xinputcount + b Pochodna po bias ie neuronu wyjściowego: = b out in _ ( ) in _ inputcount

4 Listing 3.. Funkcja obliczająca Jakobian sieci neuronowej function Z = calc_jacobian(net, trainset) %calc_jacobian calculates jacobian for a NN with: % hidden tansig layer ('' neurons) % output linear neuron % input layer ('inputcount' inputs) % author: Zbigniew Szymański <z.szymanski@ii.pw.edu.pl> = net.layers{}.dimensions; %NN weights w = net.iw{}'; %weights inputs->hidden neurons bin=net.b{}; %input bias v = net.lw{,}'; %weights hidden neurons->output bout = net.b{}; %output bias inputcount= net.inputs{}.size; paramscount = numel(w)+numel(bin)+numel(v)+numel(bout); samplescount = size(trainset, ); Z = zeros(samplescount,paramscount); for sample_no=:samplescount param_no=; %partial derivatives of the output with respect to %hidden neuron weights for hidden_no=: tanh_param=0; for i=:inputcount tanh_param=tanh_param+w(i,hidden_no)*... trainset(sample_no,i); end tanh_param=tanh_param+bin(hidden_no); end for input_no=:inputcount Z(sample_no,param_no)=... v(hidden_no)*(-tanh(tanh_param).^)*... trainset(sample_no,input_no); param_no=param_no+; end %partial derivatives of the output with respect to %hidden neuron biases for hidden_no=: tanh_param=0; for i=:inputcount tanh_param=tanh_param+w(i,hidden_no)*... trainset(sample_no,i); end tanh_param=tanh_param+bin(hidden_no); end Z(sample_no,param_no)=... v(hidden_no)*(-tanh(tanh_param).^); param_no=param_no+; kontynuacja na następnej stronie

5 end %partial derivatives of the output with respect to %output neuron weights for hidden_no=: tanh_param=0; for i=:inputcount tanh_param=tanh_param+w(i,hidden_no)*... trainset(sample_no,i); end tanh_param=tanh_param+bin(hidden_no); end Z(sample_no,param_no)=tanh(tanh_param); param_no=param_no+; %partial derivatives of the output with respect to %output neuron bias Z(sample_no,param_no)=; kontynuacja z poprzedniej strony

6 5 Literatura. Dokumentacja Neural Network Toolbox, Matlab, 03 http://www.mathworks.com/help/nnet/index.html. Dokumentacja funkcji z Neural Network Toolbox, Matlab, 03 http://www.mathworks.com/help/nnet/functionlist.html 3. Stanisław Jankowski, Statystyczne systemy uczące się modelowanie i klasyfikacja; Materiały do wykładu i projektu, Instytut Systemów Elektronicznych PW, 03 4. Strona projectu GNU - Octave http://www.gnu.org/software/octave/ 5. Pakiety do programu Octave - Octave-Forge - Extra packages for GNU Octave http://octave.sourceforge.net/ 6. Pakiet nnet programu Octave http://octave.sourceforge.net/nnet/index.html Najaktualniejsza wersja niniejszego opracowania wraz z plikami przykładowymi jest do pobrania ze strony: http://galera.ii.pw.edu.pl/~zsz/sieci_neuronowe