Neurale Netze
-
Ich bin beim stöbern im Internet auf Artikel über den Einsatz neuraler Netze in der Informatik gestoßen. Bisher wusste ich noch garnicht, dass es sowas gibt
Naja, die Grundzüge solcher Netze habe ich ja schon verstanden, trotzdem habe ich einige Verständnisschwierigkeiten, welche das Internet nicht lösen konnte. Ein einzelnes Neuron bekommt nun von einem anderen Neuron einen Input - in C++ wäre ja dies ein niedriger Double-Wert. Im Neuron wird nun mittelt einiger Schwellwerte der Output daraus berechnet, allerdings wie wird dies genau berechnet ? Im Internet habe ich dazu nur wiedersprüchliche Quellcodes gefunden, die mich nicht erleuchten konnten. Wäre schön wenn jemand eine Erklärung dafür hätte oder Links posten könnte.
-
AFAIK gibt es da nicht DIE Berechnungsmethode. Das kannst du so machen, wie es dir gerade paßt. Wenn du dich an natürlichen Neuronen orientieren willst, dann gibt es nur 2 Werte: Unterhalb des Schwellenwertes feuert das Neuron nicht, da wäre der Wert also 0, oberhalb des Schwellenwertes feuert das Neuron, was man dann wohl durch einen anderen Wert repräsentiert. Dazwischen gibt es keine Werte.
Ein einzelnes Neuron bekommt nun von einem anderen Neuron einen Input
Vielleicht habe ich dich ja falsch verstanden, aber du scheinst zu denken, dass der Input nur von einem anderen Neuron kommt. Der Input kommt aber i.d.R. von vielen anderen Neuronen. Das können durchaus einige zehntausend Neuronen sein, zumindest in natürlichen neuronelen Netzen. Bei künstlichen neuronalen Netzen ist die Vernetzung viel geringer, aber auch da ist es meistens mehr als ein Neuron, welches den Input gibt.
-
Die einzelnen Inputs werden zunächst individuell gewichtet und dann summiert: S = x[0]*w[0] + x[1]*w[1] + ... + x[n-1]*w[n-1] (in den w's steckt, wenn man so will, das Gedächtnis des Netzes). Auf das S kann man dann irgendeine Schwellwertfunktion anwenden um die Antwort des Neurons zu bestimmen. Im Unterschied zu natürlichen NNs sollte diese keine abrupte Sprungfunktion sein, eher sowas arctan-ähnliches.
Die Details variieren natürlich unter den verschiedenen Netztypen.
-
Vielleicht habe ich dich ja falsch verstanden, aber du scheinst zu denken, dass der Input nur von einem anderen Neuron kommt.
Ne, das war mir schon klar, ich bin dann bloß in den Singular gerutscht beim Schreiben
Mir ist es jetzt schon etwas klarer, schonmal danke, aber die Schwellwerte für die Eingangssignale müssen sich doch auch verändern, wie es in der Natur passiert. Wie kann man dies berechnen ? Am liebsten wäre es mir, wenn jemand zufällig nen Beispielcode hätte.
-
Habe ich zwar, aber ich denke nicht, daß das viel nützt. Von welchem Neuron sprechen wir? Sigma-Pi? Feed-Forward-Netze? Wieviele Schichten? Und es gibt einige Einschränkungen, die man wissen sollte, bevor man loslegt.
Ein sehr schönes Buch dazu ist http://www.amazon.de/exec/obidos/ASIN/3897220210
-
schau Dir mal das hier an.
nen Sourceode dazu findest Du auf www.docjunior.de in der C-Section..