65
edits
No edit summary |
|||
Line 1: | Line 1: | ||
== Processing == | == Processing == | ||
[[Image:processing_env_example.png | [[Image:processing_env_example.png|thumb|right|200px|Processing IDE]] | ||
[[Processing]] ist eine Programmiersprache und Entwicklungsumgebung, die 2001 am Massachusetts Institute of Technology von den Erfindern [http://benfry.com/ Ben Fry] und [http://reas.com/ Casey Reas] als quelloffenes Projekt ins Leben gerufen wurde. Die Sprache wurde speziell für die Bereiche Simulation und Animation entworfen und richtet sich daher vorwiegend an Personen aus der Gestaltung und Kunst. | [[Processing]] ist eine Programmiersprache und Entwicklungsumgebung, die 2001 am Massachusetts Institute of Technology von den Erfindern [http://benfry.com/ Ben Fry] und [http://reas.com/ Casey Reas] als quelloffenes Projekt ins Leben gerufen wurde. Die Sprache wurde speziell für die Bereiche Simulation und Animation entworfen und richtet sich daher vorwiegend an Personen aus der Gestaltung und Kunst. | ||
Line 6: | Line 6: | ||
Weitere Informationen bzgl. Processing und dessen Verwendung lassen sich auf der [http://processing.org/learning/ Hauptseite] und im Wiki-Eintrag zu [[Processing]] finden. | Weitere Informationen bzgl. Processing und dessen Verwendung lassen sich auf der [http://processing.org/learning/ Hauptseite] und im Wiki-Eintrag zu [[Processing]] finden. | ||
<br clear="all" /> | |||
== Neuronale Netze == | == Neuronale Netze == | ||
Line 24: | Line 25: | ||
|} | |} | ||
Bei dem | Bei dem unten aufgeführtem Beispiel handelt es sich um eine leicht modifizierte Version eines neuronalen Netzes von Daniel Shiffman <ref>Daniel Shiffman: [http://www.shiffman.net/teaching/nature/nn/ The Nature of Code - Neural Networks]</ref>. Mittels eines [http://en.wikipedia.org/wiki/Multilayer_perceptron Multilayer Perceptrons] wird hier versucht das nichtlinear trennbare [http://en.wikipedia.org/wiki/Xor XOR Problem] zu lösen. Jede Ecke des Würfels entspricht einer 0 oder 1, wobei sich gleiche Werte je Fläche diagonal spiegeln, d.h. benachbarte Eckpunkte sind niemals beide gleichzeitig 0 oder 1, sondern immer im Wechsel. Zwischen 2 Eckpunkten wird entlang der Flächen interpoliert, sodass man für Werte zwischen 0 und 1 eine Annährung erhält. Zur Verdeutlichung wurde in den folgenden Beispielbildern als mögliches Antwortpaar für das Training via [http://en.wikipedia.org/wiki/Backpropagation Backpropagation] [0.2, 0.8] gewählt (siehe angepasste Wahrheitstabelle links). Damit wird keine Anpassung an 0 und 1, sondern eben an 0.2 und 0.8 vorgenommen. | ||
[[Image:processing_neural_network_xor_1.png|thumb|left|100px|XOR possible state (1)]] | [[Image:processing_neural_network_xor_1.png|thumb|left|100px|XOR possible state (1)]] | ||
Line 41: | Line 42: | ||
Network net = new Network(2,3); | Network net = new Network(2,3); | ||
</source> | </source> | ||
<br clear="all" /> | |||
=== Trainieren des neuronalen Netzes === | === Trainieren des neuronalen Netzes === | ||
Line 76: | Line 78: | ||
</source> | </source> | ||
Um den mittleren quadratischen Fehler zu erhalten, berechnet man zunächst die Ausgabe des gesamten Netzes und anschließend den Fehler wie folgt: | Um nach jedem Durchlauf den mittleren quadratischen Fehler zu erhalten, berechnet man zunächst die Ausgabe des gesamten Netzes und anschließend den Fehler wie folgt: | ||
<source lang="java"> | <source lang="java"> | ||
Line 151: | Line 153: | ||
</source> | </source> | ||
Zunächst wird die derzeitige Netzausgabe via eines [http://en.wikipedia.org/wiki/Feed-forward#Feed-forward_systems_in_computing Feed-forward] Systems berechnet - Ebene für Ebene werden die Ausgabewerte einzelner Neuronen | Zunächst wird die derzeitige Netzausgabe via eines [http://en.wikipedia.org/wiki/Feed-forward#Feed-forward_systems_in_computing Feed-forward] Systems berechnet - Ebene für Ebene werden die Ausgabewerte einzelner Neuronen akkumuliert, um am Ende eine Netzausgabe zu erhalten. | ||
<source lang="java"> | <source lang="java"> | ||
Line 211: | Line 213: | ||
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. | 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 | Unter näherer Betrachtung der hier vorgestellten Library scheint eine solche mit wenig Aufwand umsetzbar. Zumindest Konzepte wie simple Multilayer Perceptrons mit jeweils nur einer Lage Input, Hidden und Output Neuronen stellen keine Herausforderung dar. | ||
== Referenzen == | == Referenzen == |
edits