Validierung eines KNN

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
Sascha2202
Posts: 1
Joined: Mon 27. Dec 2010, 18:51

Validierung eines KNN

Post by Sascha2202 »

Hallo zusammen,

im Rahmen meiner Diplomarbeit soll ein KNN zur Prognose erstellt werden.

Hier mal schnell die Problemstellung:

Training des Netzes.
Validierung des Netzes.
Testen des Netzes und Auswahl eines geeigneten Netzes anhand eines statistischen Maßes.
Anwendung zu Prognosezwecken.

Eine Sache ist mir noch ganz gar unklar:

Die Literatur empfiehlt die Datensätze in 3 verschiedene Sets zu unterteilen (Training, Validierung und Test).

Welche Frage ich mir nicht beantworten kann ist, was macht das Netz mit den Validierungsdaten???

Beim Training werden die Gewichte nach der Lernregel verändert. Beim Test und der Anwendung nicht mehr. Was passiert mit den Validierungsdaten??
Es heisst nur, dass man die Validierungsdaten dem Netz präsentieren soll. Wenn der Netzfehler der Validierungsdaten wieder ansteigt, lernt das Netz die Daten auswendig, was nicht sinnvoll ist. Die optimale Netzkonstellation ist wohl dann erreicht, wenn der Fehler der Validierungsdaten quasi sein Minimum erreicht hat. So weit ist das ja nachvollziehbar.

Wie kann ich das in Membrain implementieren bzw. was macht das Validierungsskript, welches zur Verfügung steht?

Gibt es denn eine Reihenfolge? Also erst Trainingsdaten mit Gewichtsmodifikation anhand einer Lernregel und dann die Validierung --> Werden die Gewichte dann modifiziert? Oder läuft die Verarbeitung parallel ab, nur ohne, dass das Netz Kenntnis von der Validierungsdaten besitzt?


Viele Grüße


Sascha
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Validierung eines KNN

Post by Admin »

Sascha2202 wrote:Die Literatur empfiehlt die Datensätze in 3 verschiedene Sets zu unterteilen (Training, Validierung und Test).
Das kenne ich so nicht. Ist mit 'Test' vielleicht der Praxistest im realen Einsatz des Netzes gemeint?

Prinzipiell sollte man ein NN mit einem Trainingsdatensatz trainieren (nur in dieser Phase werden Gewichte verändert) und entweder anschließend oder (noch besser) gleich während des Trainings mit einem Validierungsdatensatz validieren.
MemBrain bietet dazu die Möglichkeit, im Lesson-Editor mehrere Lessons gleichzeitig zu laden. Mit der momentan aktiven Lesson - Einstellung über 'Currently Edited (Training) Lesson') - wird trainiert. Der Netzfehler wird immer in Bezug auf die 'Net Error Lesson' (ebenfalls im Lesson-Editor einstellbar) berechnet.
Nun kann man für die Trainingslesson und die Net Error Lesson entweder ein und die selbe Lesson wählen (so dass also der Netzfehler während des Trainings in Bezug auf die Trainingsdaten berechnet wird) oder aber man wählt als Net Error Lesson eine Validierungslesson aus. Tut man das Letztere, dann wird zum Training nur die Trainingslesson verwendet, der Netzfehler wird aber von MemBrain gleich während des Trainings in Bezug auf die Validierungsdaten berechnet. Dabei werden die Gewichte im Netz durch die Validierungsdaten nicht verändert, sie fließen also nicht in das Training ein.
So kann man also während des Trainings schon den Validierungsfehler sehen und das Training abbrechen, bevor er wieder ansteigt.

Man kann übrigens die Validierungslesson im Lesson-Editor auch während des Trainings umschalten, ohne dass das Training davon beeinflusst wird. Es ist also möglich während des Trainings zwischen verschiedenen Validierungslessons hin- und herzuschalten.

Am besten schreibt man sich ein kleines Skript, das das Laden und Einstellen der Lessons sowie den Start des Trainings usw. automatisiert. Das spart nicht nur Zeit und Mühe, es macht den Ablauf auch besser reproduzierbar, weil es Fehler vermeidet, man verklickt sich halt doch schnell mal.

Der User 'Seppy' hat hier im Forum schon ein recht umfangreiches 'Basisskript' zum Anpassen gepostet, mit dem solltest Du schon mal einen guten Start haben.

Viele Grüße
Thomas Jetter
User avatar
Hanisch
Posts: 15
Joined: Thu 31. Mar 2011, 17:14
Location: Mannheim

Re: Validierung eines KNN

Post by Hanisch »

Hallo,
nach Lektüre mehrfacher Litaeraturquellen hab ich glaub ich das Rätsel um die Unterscheidung zwischen Validierungs- und Testdaten entschlüsselt.
Also die "Testdaten" sin eine abgesonderte Menge an Daten aus der Menge der gesamt-Erhobenen Daten, die nicht zum Training eingesetzt werden,
und repräsentieren somit den "Praxistest".
Der Unterschied zu den Validierungsdaten liegt darin, dass man diese ja zum Training eingesetzt hat (indem man sie für die ENtscheidung genutzt hat, wann man das Training abbricht).
Also sind die Validierungsdaten im gegensatz zu den Testdaten nicht völlig unabhängig - da man mit diesen ja sein Training optimiert.
Mit den Testdaten überprüft man also, ob man unabhängige Daten mit dem KNN vorhrsagen könnte.

Also:
Trainingsdaten --> dienen zum Trainieren des Netzes, anhand dieser wird das Netz verändert
Validierungsdaten --> überprüfen die Vorhersagemöglichkeit des Netzes während des Training, und dienen als Abbruchkriterium für das Training
Testdaten --> dienen als unabhängige Datenmenge, die überprüft ob vom Training unabhängige Daten vorhergesagt werdne können
(glaub ich zumindest... hab dazu auch noch ein paar Fragen - später)
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Validierung eines KNN

Post by Admin »

Hanisch wrote:Trainingsdaten --> dienen zum Trainieren des Netzes, anhand dieser wird das Netz verändert
Validierungsdaten --> überprüfen die Vorhersagemöglichkeit des Netzes während des Training, und dienen als Abbruchkriterium für das Training
Testdaten --> dienen als unabhängige Datenmenge, die überprüft ob vom Training unabhängige Daten vorhergesagt werdne können
Also ich kann das bedingt nachvollziehen: Natürlich nutzt man idealerweise die Validierungsdaten zur Ermittlung des Abbruchkriteriums.
Gleichzeitig testet man damit aber auch die Generalisierungsfähigkeit des Netzes, die Validierungsdaten beeinflussen die Gewichte im Netz ja nicht direkt.

Trotzdem kann ein weiterer Test mit einem zusätzlichen, ebenfalls unabhängigen Datensatz natürlich Sinn machen, die Gewissheit steigt natürlich schon noch einmal, wenn man auch mit einem zweiten Datensatz eine gute Generalisierung erhält.

Ich würde sagen, da wir alle keine besseren Quellen kennen, akzeptieren wir doch die Zusammenfassung oben einfach und sind damit wieder ein bisschen schlauer.

Vielen Dank für die Recherche und den Post!

Viele Grüße
User avatar
Hanisch
Posts: 15
Joined: Thu 31. Mar 2011, 17:14
Location: Mannheim

Re: Validierung eines KNN

Post by Hanisch »

Gerne doch,
also um die Recherche vollständig erscheinen zu lassen, referenzier ich auch mal die zwei Schriften auf die sich meine Rückschlüsse hauptsächlich beziehen:

Mitterer, Alexander
Optimierung vielparametriger Systeme in der Kfz-Antriebsentwicklung
Statistische Versuchsplanung und Künstlich Neuronale Netze in der Steuergeräteauslegung zur Motorabstimmung
Fortschr.-Ber. VDI-Reihe 12 Nr.434. Düsseldorf: VDI Verlag 2000
ISBN 3-18-343412-1

Chalid el Dsoki
Reduzierung des experimentellen Versuchsaufwandes durch künstlich neuronale Netze
TU Darmstadt, Dissertation 2010, Shaker Verlag 2010 Aachen
ISBN 978--8322-9234-8

A. Mitterer hat zudem auch die Kreuzvalidierung erwähnt - und deren Möglichkeit zur Bewertung der Modellqualität - nutzt diese allerdings zur Bestimmung eines Trainings-Abbruch-Punktes.

Viele Grüße
Thomas
Post Reply