Einfaches Problem: SIN zu COS ...

Sie haben ein bestimmtes Projekt zu bearbeiten und wissen nicht, wie Sie an die Aufgabe heran gehen sollen? Sie sind sich nicht sicher, ob Ihr Netzentwurf zu Ihrem Problem passt oder ob es da Optimierungsmöglichkeiten gibt? Ist es überhaupt sinnvoll an Ihre Daten mit einem NN basierten Ansatz heranzugehen? Ist MemBrain das richtige Werkzeug für Ihr Problem und Ihre Infrastruktur?

Hier ist der richtige Platz für diese Art von Fragen.
Post Reply
Olio72
Posts: 3
Joined: Mon 16. Sep 2013, 01:08

Einfaches Problem: SIN zu COS ...

Post by Olio72 »

Hallo Allerseits!

Zu aller Erst: Ich bin Neuling bei Neuronalen Netzen und sehr von der Vielseitigkeit des Programms MemBrain überrascht. Gratulation Hr. Jetter!

Nun um mich ein wenig in die Thematik aus Hobbygründen einzuarbeiten, habe ich mir folgendes Problem gestellt:
Ich möchte ein Netz insofern trainieren, dass es als

1 Input Neuron den Sinuswert im Winkel von 0 bis 359 Grad (360 Trainingssätze), 4 Hiddenneuronen
und 1 Output Neuron als Cosinuswert des selben Winkels, hat.

An sich eine relativ einfache Aufgabe mit exakter Nachvollziehbarkeit von Input und Output.
Habe es simple mit dem RPROB Teacher laufen lassen und komme nicht unter Net Error nicht unter 0,49. :roll:

Meine Frage:
Wie würdet Ihr das Problem angehen? Wäre sehr interessant zu sehen, wie Profis das Netzwerk designen
und vorallem, warum :P

Neben der direkten Eingabe des Wertes über 1 InputNeuron - würde ich grundsätzlich dazu tendieren, 360 Eingabeneuronen
zu erzeugen, und das NN über eine Latte von HiddenNeuronen zu 1 Output führen. Jedes dieser Eingabeneuronen,
hätte als Input lediglich simple IO Logik, dann wäre es wahrscheinlich simple möglich, mit wahrscheinlich gutem Resultat.


Vielen Dank und sorry für meine "bescheidene Herangehensweise".
Oliver
sincos2.zip
CSV Datei, Membrain Netz und Lesson File
(4.77 KiB) Downloaded 620 times
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Einfaches Problem: SIN zu COS ...

Post by TJetter »

Hallo und herzlich willkommen im Forum!

Zwei Probleme liegen hier vor, wovon das erste ein prinzipielles ist, das zweite leicht behebbar:

1.) Es wird versucht, die Übertragungsfunktion zwischen sin und cos zu erlernen also die function

Code: Select all

cos(x) != f(sin(x))
Das geht prinzipiell nicht, der cos lässt sich aus dem sin nicht eindeutig bestimmen.
Beispiel:

Code: Select all

sin(45°) = cos (45°) = 0,707...
sin(135°) = sin(45°) = 0,707. ABER: cos(135°) = -0,707...
Zum Training erhält das Netz damit widersprüchliche Pattern:
P1: Input: 0,707, Output: 0,707
P2: Input: 0,707, Output: -0707

Was soll das Netz nun erlernen? Nun, es wird 'sein bestes' tun und am Ausgang möglichst immer nahe der 0 bleiben, so macht es über alle Pattern den geringsten Fehler ;)

2.) Das Input-Neuron ist mit der Aktivierungsfunktion 'IDENT. 0 TO 1' ausgestattet. Das Output Neuron mit der 'LOGISTIC' Funktion. Beide Funktionen besitzen einen Wertebereich von 0 bis 1, die Trainingsmuster besitzen für Input und Output aber den Wertebereich -1 bis 1. Deshalb erscheint auch beim Start des Trainings eine Warnung, dass Trainingsmuster außerhalb des zulässigen Bereichs liegen.
Hier ist die Lösung einfach: Input-Neuron auf 'IDENTICAL' umstellen, beim Output-Neuron 'TAN HYP' einstellen.
Oder aber bei den Normalisierungseinstellungen für Input- und Output-Neuron den Wertebereich -1 bis 1 einstellen und die Normalisierung aktivieren.

Viele Grüße
Thomas Jetter
Olio72
Posts: 3
Joined: Mon 16. Sep 2013, 01:08

Re: Einfaches Problem: SIN zu COS ...

Post by Olio72 »

Vielen Dank für den Support - Stimmt, ist mir
erst jetzt aufgefallen - dass IO nicht eindeutig ist.

Ich mach mich mal an die Umsetzung.

Beste Grüße
Post Reply