Liste der Anhänge anzeigen (Anzahl: 1)
Mein neuronales Netz funktioniert noch nicht, bzw. wahr ich in letzter Zeit ein wenig faul. Mein eigentliches Prinzip wäre aber folgendes:
1.) Grundlegend ist das Perzeptron. (mehrere Eingänge, einen Output)
2.) Weiters kommen die Schichten die aus Perzeptronen in einer Schicht bestehen. Die Schichten dienen dazu, dass (das Programm, Mensch, Formel) weiß welches Perzeptron zu welcher Schicht gehört. Da ja Neuronale Netze normalerweiße Schichtweiße arbeiten.
3.) Als letztes verbinde ich die Schichten zu einer Neuronenmatrix. Damit ich weiß in welcher Reihenfolge die Schichten kommen.
Bild dazu im Anhang.
Die Verbindung stelle ich durch Zeiger her. Beispiel zur Grafik: Wir nehmen Perzeptron 1 und 2. Nun hat Perzeptron 1 als Input die Werte der Neuronen 1, 2 und 3 und als Output den Wert von Neuron 4. Das Perzeptron 2 hat als Input den Wert der Neuronen 4, 5 und 6. Der Wert von Neuron 4 ist somit sowohl Output von Perzeptron 1 und Input von Perzeptron 2.
Programmiertechnisch habe ich das mit Zeiger gelöst. Das heißt das das Perzeptron 1 einen Zeiger (Output) auf den Wert von Neuron 4 hat und Perzeptron einen Zeiger (Input) auf das Neuron 4 hat.
Hoffe das war verständlich geschrieben. Weitere Schritte sollten ziemlich logisch sein wenn man das Prinzip seines Lernalgorythmus verstanden hat. (Backpropagation, usw.)
Liste der Anhänge anzeigen (Anzahl: 1)
Evolutive Neuronale Netze
Hallo zusammen. Ich arbeite derzeit an einem Netzsimulator in C++.
Mein Ziel ist es ein Programm zu entwerfen das einfach und autonom Netze für komplexe Anwendungen "züchtet"
Wie schon im Titel erwähnt beschreite ich dabei hinsichtlich der Lernfunktion ungewöhnliche Wege. Ich verzichte nämlich völlig darauf.
Zu Grunde liegt bei mir ein Neuronales Netz das Vollverbunden ist sowohl in vorwärts als auch in entgegengesetzter Richtung. Dadurch lässt sich ein zeitliches "Gedächtnis" realisieren
Wie lernt nun das Netz?
Ganz einfach: durch Mutation und Selektion. Eine Population von Standartnetzen wird auf eine Simulationswelt losgelassen. Die Gewichte sind rnd initialisiert.
Eine Fitnessfunktion ermittelt wie erfolgreich ein Netz ist.
Ist genügend Zeit vergangen werden schlechte Netze gelöscht, Erfolgreiche in mutierter Form vervielfältigt. Dabei werden sowohl Gewichte bzw. die Größe des Netzes geringfügig geändert.
Der ganze Prozess ist sehr zeitaufwändig, allerdings sollte sich ein sehr effizientes Netz herauskristallisieren, welches dann eventuell auf Hardware übertragen lässt.
Der eigentliche Sinn dahinter ist dass der Anwender nur Eingänge und Ausgänge, sowie die Fitnessfunktion anpassen muss, und automatisch gute Netze erhält
Was haltet ihr davon?
Bei Interesse gehe ich gerne auch auf Details ein