Neurális hálózatok... a gyakorlatban
Java NNS Az SNNS Javás változata SNNS: Stuttgart Neural Network Simulator A Tübingeni Egyetemen fejlesztik http://www.ra.cs.unituebingen.de/software/javanns/ 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 2
2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 3
Letöltés nik.uni-obuda.hu/nagygabi JavaNNS-Win.zip 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 4
Használata Meglévő hálózat megnyitása *.net: a hálózat leírása *.pat: tanítóminta Control Panel/Patterns Learning set (tanításhoz használt minta) Validation set (ellenőrző minta) lapozható, a hálózaton látszik a bemenet-kimenet Update fülön: ellenőrzés 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 5
Használata Új hálózat létrehozása Tools/Create/Layers... réteg típusának kiválasztása! (Unit type) Tools/Create/Connections... előrecsatolt hálózat (feed forward) Tanítás Control Panel/Initializing Control Panel/Learning tanító algoritmus és paramétereinek kiválasztása 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 6
2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 7
AForge.NET Andrew Kirillov C# nyelven íródott forráskóddal, példákkal közzétéve http://www.codeproject.com/kb/recipes/a forge.aspx 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 8
Letöltés nik.uni-obuda.hu/nagygabi neuralis_demo.zip NeuroFeladat.zip 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 9
Egyszerűsített változat Egy tanítható réteggel rendelkező hálózat osztályozási feladatra. Osztályok: ActivationNeuron ActivationLayer ActivationNetwork PerceptronLearning ThresholdFunction 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 10
Egyszerűsített változat Átviteli függvénye: egységugrás 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 11
Feladat Egészítsük ki a programot a tanult algoritmusokkal! neuron kimenetének számítása felügyeletes tanító algoritmus: súlytényezők korrekciója 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 12
Segítség 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 13
Megoldás 1 double sum = 0.0; for (int i = 0; i < inputscount; i++) { sum += weights[i] * input[i]; } sum += threshold; // a kimenet az átviteli függvény értéke return (output = function.function(sum)); 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 14
Megoldás 2 for (int i = 0; i < layer.neuronscount; i++) { double e = output[i] - networkoutput[i]; if (e!= 0) { ActivationNeuron neuron = layer[i]; for (int j = 0; j<neuron.inputscount; j++) { neuron[j] += learningrate*e*input[j]; } neuron.threshold += learningrate * e; error += Math.Abs(e); } } 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 15
Felkészülést segítő kérdések Neurális hálózat tervezésénél mely jellemzőket kell előre eldönteni? Hogyan épül fel egy mesterséges neuron? Melyek a gyakran használt átviteli függvények? Jellemezd az előrecsatolt rétegelt topológiát! Jellemezd a visszacsatolt rétegelt topológiát! Mi a hiba visszaterjesztés lényege? Nevezz meg egy felügyeletes tanító szabályt! Nevezz meg egy önszerveződő tanító szabályt! Milyen összefüggéssel jellemezhetjük a hálózat hibáját? Képes-e a neurális hálózat ismeretlen (nem tanult) inputot feldolgozni? 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 16
Felkészülést segítő kérdések Hogyan függ össze a tanítási tényező nagysága a tanítás időtartamával? Hogyan függ össze a tanítási tényező nagysága a tanítás pontosságával? Miért fontos a reprezentatívan választott tanító adatsor? Meg lehet-e oldani lineárisan nem elválasztható problémákat (XOR, két spirál probléma) egy tanítható rétegű hálózattal? Miért?/Miért nem? Tanítható réteg-e a bemeneti réteg? A kimeneti réteg? A rejtett rétegek? Mit jelent az, ha egy előrecsatolt rétegelt hálózatra azt mondjuk, hogy "teljesen összekötött"? 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 17
Kiegészítő anyagok http://www.ra.cs.uni-tuebingen.de/snns/ http://www.aforgenet.com/framework/ http://www.jeffheaton.com/ai/ http://www.aijunkie.com/ann/evolved/nnt1.html http://www.willamette.edu/~gorr/classes/c s449/intro.html 2012/13. tavasz nagy.gabriella@nik.uni-obuda.hu 18