GMU:Neuronale Netze - eine Einführung für Künstler/Präsentation/Neuronale Netze in Processing: Difference between revisions

From Medien Wiki
Line 173: Line 173:
</sourceu>
</sourceu>


Daraufhin werden zuerst die äußeren Gewichte, vom Output zum Hidden Layer, angepasst.
Daraufhin werden zuerst die äußeren Gewichte, vom Output zum Hidden Layer, angepasst. Der hier verwendete ETA bestimmt zusätzlich den Lernfortschritt. Je größer dieser Wert, desto schneller lernt das Netz (mit größeren Sprüngen). Dabei kann es jedoch passieren, dass die Anpassungen zu schnell zu ungenau werden, oder man sogar zwischen Ergebnissen hin und her springt.


<source lang="java">
<source lang="java">
Line 180: Line 180:
for (int i = 0; i < connections.size(); i++) {
for (int i = 0; i < connections.size(); i++) {
   Connection c = (Connection) connections.get(i);
   Connection c = (Connection) connections.get(i);
  // The weight is adjusted depending on the incoming input,
  // and a calculated difference between expected the answer
  // and overall net result, as well as a predefined defined ETA
   c.adjustWeight(deltaOutput * c.getFrom().getOutput() * ETA);
   c.adjustWeight(deltaOutput * c.getFrom().getOutput() * ETA);
}
}
Line 205: Line 208:
return result;
return result;
</source>
</source>
Dies sei nur ein Beispiel bzgl. neuronaler Netze in Processing. Desweiterin existiert noch die Möglichkeit [http://leenissen.dk/fann/ FANN] Java Bindings zu benutzen. Dabei handelt es sich um eine Open Source (Fast Artificial) Neural Network Library, deren Multilayer Netzwerke in C implementiert sind und damit einen klaren Geschwindigkeitsvorteil bieten.
Unter näherer Betrachtung der hier vorgestellten Library scheint eine solche mit wenig Aufwand umsetzbar. Zumindest einfache Konzepte wie primitive Multilayer Perceptrons mit jeweils nur einer Lage Input, Hidden und Output Neuronen stellen keine Herausforderung dar.


== Referenzen ==
== Referenzen ==