Der Tag t ist gekommen, was tun mit NNSpace?

Es ist der Tag t in einer schönen gemütlichen Firma f, als plötzlich der Kunde k hereingeplatzt kommt und den Programmierer x mit einer ganz verrückten Idee i nervt, die darin besteht, dass er die Kursdaten einer Aktie a für die nächste Zeit vorausberechnen möchte. Er hat gehört, dass so etwas möglich ist und erwartet von der Firma seines Vertrauens(f) jetzt die Lösung. Nun stellen sich dem Programmierer x verschiedene Möglichkeiten:

Möglichkeit 1

Der Tag t ist der Geburtstag des Programmierers x, also hat er keine Lust sich mit solchen Dingen rumzuplagen, von denen er sowieso keine Ahnung hat. Deshalb sagt es zum Kunde k das Problem i sei nicht lösbar(denkt sich dabei seinen Teil über das Problem i). Der Kunde k geht verärgert zur Konkurrenz. Keine gute Idee.

Möglichkeit 2

Der Programmierer x ist ein hervorragender Auskenner in Neurocomputing und künstlicher Intelligenz. Er beginnt sofort ein Programm zu schreiben was 25.000 Euro kostet und drei Monate in der Entwicklung dauert. Der Kunde k kann aufgrund der hohen Kosten nur noch Verluste verbuchen, obwohl er jetzt bessere Aussagen über die Aktien treffen kann sind seine Ausgaben für das Programm höher. Deshalb geht der Kunde k pleite. Pech für die Firma f, die jetzt schon wieder einen Kunden weniger hat.

Möglichkeit 3

Der Programmierer x kennt eine hervorragendes Software s, in die er ein Paar Daten eingibt, und die ihm dann automatisch die Berechnung durchführt. Der Kunde k freut sich ungemein, macht Gewinn, setzt weiterhin auf die Firma f und sorgt für regelmäßige Einnahmen.

Das Problem:

Es gibt zwar Software für dieses Beispiel(z.B. Analysis Services, SQL Server) bei denen ist allerdings schon eine Menge vorkonfiguriert, sodass man wenig Spielraum hat. Manche Sachen sind damit auch einfach nicht machbar. Dann gibt es die andere Seite, nämlich Programme wie MemBrain(was mich an LabView erinnert, und LabView mag ich nicht), wo man dann mal so 2000 Neuronen per Hand eingeben muss. Das macht sicherlich Spaß, wenn man mal 2000 Minuten nichts zu tun hat… Aber das hat auch noch einen Nachteil für mich, wenn man alle Neuronen einzeln sieht, wird das alles sehr unübersichtlich. Zusammenfassen ist eines der grundlegendsten Prinzipien in NNSpace(Zumal dieselbe Eingabe vielleicht eine halbe Minute dauert)

Was ich wirklich sagen will ist: Wozu ist NNSpace eigentlich gut, wenn es doch schon Software gibt(das Software Sinn macht glaubt jetzt zumindest die Firma f)

Die Antwort:

Ich hab 2 generelle Probleme mit den existierenden Programmen: Sie sind entweder „zu sehr konfiguriert“ oder „zu sehr konfigurierbar“. Es macht doch wenig Sinn jedes einzelne Neuron einzugeben, wenn sowieso alle die gleichen Eigenschaften haben.

Die Idee ist(nochmal zusammengefasst):

OK, der Tag t+1 ist fast gekommen und ich hab nicht Geburtstag, deshalb muss ich jetzt Schluss machen.

NNSpace CTP 1, Willkommen in der AI des 21. Jahrhunderts

Jetzt ist es so weit, die erste Vorabversion von NNSpace geht an den Start. Sorry für alle unfertig aussehenden Fenster, vielleicht noch nicht 100% die allerschnellsten Algorithmen(vor allen Dingen Backprop läuft erst auf einem Kern und noch nicht parallel). Es ist nur als eine kleine Testversion gedacht. Feedback, Verbesserungsvorschläge bitte an mich schicken(die Adressen stehen auf der Startseite des Programms). Achtung, ich empfehle nicht das Ding irgendwie schon einzusetzen, sollte ich doch irgendwie mal noch einen Bug drin haben, kann es sein, dass eine spätere Version nicht mehr abwärtskompatibel ist(was ich natürlich vermeiden will, aber man kann ja nie wissen). Hier mal die Downloadlinks:

Binaries herunterladen: http://compositedevtec.square7.ch/nnspace/downloads/binaries.zip, Achtung, wer es noch nicht installiert hat, braucht noch das .NET Framework 4.0: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&displaylang=en)

So, und jetzt noch ein paar Bildchen vom aktuellen Stand(das Training läuft gerade noch):

1. Mustererkennung von Ziffern, oberste 2 Schichten, Backpropagation (fertig)

2. Mustererkennung von Ziffern, alle Schichten, Backpropagation (fast fertig)

Simple Sample XOR – Einfaches Beispiel mit NNSpace

Das erste Release schreitet mit mächtigen Schritten voran, in ein paar Tagen, wenn die letzten Bugs erstmal raus sind gehts an den Start mit der ersten Beta Version von NNSpace. Als Vorgeschmack jetzt schon mal das XOR Sample, in einem völlig neuen Aufzug. Ich mal jetzt einfach der Vollständigkeit halber das Bild nochmal hin. Die Trainingsdaten sind denkbar einfach:

Eingabedaten Ausgabedaten
0;0 0
1;0 1
0;1 1
1;1 0

Die werden einfach so als Textdateien abgespeichert und können dann vom Programm geladen werden. Man muss jetzt aber immer für jede Trainigsdatenkonfiguration(also für jede Schicht) eine eigene Textdatei anlegen, man kann das nicht mehr in einer machen. Für mich macht das sehr viel Sinn, weil diese Dateien leichter verständlich sind als zum Beispiel so was:

0;0
0
1;0
1
0;1
1
1;1
0

Und weil die Dinger immer gehen. Also wenn ich mal drei Trainingsdatensets brauch: kein Problem, mach ich eben drei Textdateien(kommt normalerweise nicht vor, aber eine Datei ist bei unsupervised learning erforderlich). In einer Datei macht man da mehr Aufwand, als was es bringen würde. Ich finds einfach besser die Trainingsdaten für die Schichten zu trennen. So, nu aber Schluss mit dem Gerede, hier mal ein Video (anstatt der ganzen Screenshots immer):