Ich möchte ein >einfaches< neuronales Netz programmieren. Gleich mal
vorweg, noch versteh ich nicht allzuviel von dem Thema, hab nur die
ersten paar Seiten eines Buches darüber gelesen. Trotzdem wollte ich
direkt parallel dazu schon ein wenig experimentieren und dabei meine
C++-/Softwareengeneeringkentnisse auffrischen (ist ne Weile her).
Entsprechend gespannt bin ich darauf, wie ihr meint, wie man das
ordentlich OOP-konform lösen sollte.
Die Klasse1 ist ein Unit bzw. Neuron. Die Klasse2 ist die Verbindung zu
einem anderen Unit. Ich nenne die Klasse2 LineOut. Lineout enthält einen
Zeiger auf Unit-Objekt sowie die Gewichtung der Verbindung. Die
hauptsächlichen Methoden der LineOut-Klasse sind fire()(stimuliert das
Unit, auf das der Zeiger zeigt) und setWeight(int)(verändert die
Gewichtung der Verbindung). Ein Objekt der Klasse1, also ein
Unit-Objekt, kennt mehrere Lineout-Objekte, weil ein Unit mit mehreren
anderen Units verbunden ist.
Die wichtigste Eigenschaft der Unit-Klasse ist der Schwellenwert. Wenn
die Summe der Gewichtungen aller LineOut-Objekte die ein Unit
stimulieren größer ist als dieser Schwellenwert, stimuliert dieses Unit
seinerseits alle seine LineOut-Objekte, die dann die Units stimulieren,
auf die sie zeigen.
Sollte das Ergebnis, dass das Netz liefert, richtig sein, sollen die die
Gewichtungen erhöht werden, die erfolgreich Units stimuliert haben. Ist
das Ergebnis falsch, werden sie verringert.
Vielleicht hat dieses Konzept den Namen neuronales Netz noch nicht
verdient, trotzdem geht es in die Richtung und ihr wisst, worauf ich
hinaus will.
Sollte ein Unit-Objekt seine LineOut-Objekte vielleicht nicht selber
erzeugen? Oder sollte die Verbindung zwischen Units nicht mit einer
separaten Klasse gelöst sein?
Bin gespannt!