Zitat:
Hmm, also ... ich nehme mal an, du willst in der Lernphase dem Netz verschiedene Trainingsmuster (Sinus, Rechteck, Dreieck) zeigen. Nach der Lernphase soll das Netz dann in der Lage sein, neue Muster, die auch etwas verrauscht sein können, einer der drei Klassen Sinus, Rechteck, Dreieck zuzuordnen.
Du brauchst also 3 Neuronen (Perzeptronen) mit jeweils 10 gewichteten Eingängen und je einem Ausgang.
Nachfolgend bezeichne ich mal deine 10 Byte große Liste als "Vektor". (nur aus Gewohnheit)
0.1 Erstelle eine Menge an Trainingsvektoren (Trainingsbeispiele) und normiere sie. (siehe Normalisierung von Vektoren)
0.2 Wähle die Gewichte an den Eingängen der 3 Neuronen zufällig
Trainingsphase:
1. wähle zufällig einen der normalisierten Trainingsvektoren
2. berechne für jedes der 3 Neuronen die Erregung (Gewichtsvektor mal Eingabevektor)
3. wähle das Neuron mit der größten Erregung
4. ersetze den Gewichtsvektor des gewählten Neurons durch (alter Gewichtsvektor + Eingabevektor)
5. normiere den neuen Gewichtsvektor
6. springe zu 1. (Abbruch nach einer bel. Anzahl von Trainingsschritten)
Was is jetzt passiert? Jedes der 3 Neuronen repräsentiert jetzt eine der 3 Musterklassen. Gibt man nun ein neues Muster ein, wird das jenige Neuron die größte Erregung zeigen, dessen Klasse dem Eingabemuster am ählichsten ist.
Problem: Das Netz kann keine verschobenen Formen erkennen. Eine Sinuskurve, die während der ersten Bytes ansteigt ist also etwas anderes, als eine Kurve, die am Anfang fällt. Um solche Sachen zu Erkennen muß man irgendeine Verschiebungs-invariante Darstellung finden (Fouriertransformation oder sowas), aber das is dann eine andere Geschichte.
Vielleicht hilft das erstmal bissel weiter. Ansonsten sind wie immer diverse Skripte von Uni-Vorlesungen zu empfehlen. Zum Beispiel hier: