Vorschläge für die nächste Version

Haben Sie Verbesserungsvorschläge oder Wünsche für eine neue MemBrain-Version? Haben Sie einen Bug entdeckt, der behoben werden sollte? Möchten Sie einfach nur eine positive oder negative Bewertung hinterlassen?

Dann ist dieses Forum der richtige Platz, um Ihren Beitrag einzubringen.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Vorschläge für die nächste Version

Post by Admin »

Somit hättest Du nun mich (fast) zum erröten gebracht ;)

Auf jeden Fall vielen Dank für das tolle Feedback, geht runter wie Öl...

Bzgl. des 'Lesson-Editors': Ja, der ist bedienungstechnisch nicht gerade ein Designerstück, das muss ich unumwunden zugeben. Er ist halt auch nicht nur ein einfacher Daten-Editor geblieben (was zu Anfang mal angedacht war), sondern hat auch immer mehr Kommando-Funktionen erhalten. Da sind es mit der Zeit immer mehr Buttons geworden. Auf der anderen Seite hat man schnell alles im Zugriff, wenn man das 'Dickicht' mal durchschaut hat.

Falls es Design-Vorschläge gibt, den Lesson-Editor zu verschönern und intuitiver zu machen, dann immer her damit. Seine grundsätzliche Funktionalität und seine Einbettung in MemBrain würde ich aber nur ungern ändern, es hängt schon vieles an diesem Konzept dran. Lieber investiere ich Zeit in neue Funktionaliäten. Z.B. möchte ich die Skript-Sprache gerne so erweitern, dass richtiges Programmieren damit möglich wird, also inklusive Variablen, Konstrukten zur Ablaufsteuerung usw. Bisher ist ja nur eine Art Batchabarbeitung implementiert. Das ist aber natürlich ein etwas größeres Ding, wird also ein Weilchen dauern.

Viele Grüße
Thomas Jetter
User avatar
Seppy
Posts: 47
Joined: Fri 5. Dec 2008, 04:48
Location: 90537 Feucht

Re: Vorschläge für die nächste Version

Post by Seppy »

Hallo Thomas,
der Lesson-Editor ist O.K. (keine Designvorschläge).
War am Anfang nur etwas ungewohnt.
(Ich mach jetzt alles über CSV-Dateien und MemBrain Script).

Über die Feiertage werde ich meinen ganzen Mü.. mal in PERL gießen.
Vorverarbeitung der Rohdaten, starten eines spez. Netzes u.s.w...
Man bräuchte nur ein BISSCHEN mehr Zeit :twisted:

Und der "Mann AUF DEM MOND / 67" sagte, es wäre ein "rissiger Sprung für die Menschheit",
(Ja, wenn man Variablen in MemBrain Script verarbeiten könnte)...

So, das war's für heute, die "Alten Herrn" müssen jetzt in Ihre 2 Meter.
(NEIN NICHT DIESE 2 Meter, die man in der Erde versenkt) :lol:

Gruss Seppy
Wer arbeitet macht Fehler, wer wenig arbeitet macht wenig Fehler, wer nicht arbeitet macht keine Fehler, wer keine Fehler macht wird befördert.
User avatar
Seppy
Posts: 47
Joined: Fri 5. Dec 2008, 04:48
Location: 90537 Feucht

Re: Vorschläge für die nächste Version

Post by Seppy »

Hallo Thomas,
wie wäre es mit einer Zeitanzeige/Stopuhr beim lernen des Netzes, vielleicht auch ein Lernabbruch nach Zeit.
hab nämlich das Problem, wenn ich mehrere Netze hintereinander trainiere und mal kurz weg bin (Eine rauchen, in der Arbeit), ich dann nicht einschätzen kann, bei welchem Netz er gerade ist.

Abbruch nach Zeit:
Ich möchte z.B. von Sonntag - Montag das Netz 10 x trainieren, 24h/10Netze, jedes Netz hat 2,4 Stunden für's lernen und die Prognose wäre pünktlich fertig.

Kommentare in Inputdaten:
Bei Zeitreihen wäre es vielleicht sinnvoll wenn man das Datum in den Inputs belassen könnte.
Ich denke da entweder an ein Sonderzeichen (wie Kommentare im C-Sourcecode) oder an eine Checkbox im Lessoneditor, die man für eine oder mehrere Spalten ein/aus machen kann.

Und ich erlaube mir, noch ein Stück weiter zu gehen...
wenn es ein NEUTRALES Neuron gäbe, könnte man im Lessoneditor einen bestimmten Input/Output auskommentieren, dann im Netz das entsprechende Neuron von In-Output auf Neutral setzen (das Neuron und alle Links von/zu diesem Neuron sind deaktiviert).
Damit könnte man zeitweise In/Outpus schnell de/aktivieren, ohne die Daten zu ändern, evtl. auch für die Hidden,alle Neuronen.

Und noch Einer:
Bei Zeitreihen könnte man auch die ältesten Werte langsam verblassen lassen.
(Neue Werte haben hohes Gewicht, alte Werte werden von der Gewichtung immer leichter).

Schon klar, es gibt z.Z. wichtigeres, ist mir nur so durch meine grauen Neuronen geschossen...

Seppy
Wer arbeitet macht Fehler, wer wenig arbeitet macht wenig Fehler, wer nicht arbeitet macht keine Fehler, wer keine Fehler macht wird befördert.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Vorschläge für die nächste Version

Post by Admin »

Hallo Seppy,

mir fällt gerade auf, dass ich auf Deine letzten Vorschläge noch gar nicht geantwortet habe, sorry...

Ich werde mir das alles mal durch den Kopf gehen lassen und evtl. das eine oder andere davon implementieren. Vielen Dank für Deinen Input!

Am meisten reizt mich für die Zukunft allerdings der Ausbau der Skriptsprache (Variablen, Ablaufkonstrukte), so dass ich das als Erstes angehen möchte.

Einen Guten Rutsch ins neue Jahr und viele Grüße!
Thomas Jetter
User avatar
Seppy
Posts: 47
Joined: Fri 5. Dec 2008, 04:48
Location: 90537 Feucht

Re: Vorschläge für die nächste Version

Post by Seppy »

Hallo Thomas,
auch Dir ein erfolgreiches (MemBrain) und gesundes neues Jahr 2009.

Du musst nicht auf alle meine Vorschläge antworten (trotzdem danke), sind ja nur einige Sachen die mir bei der Arbeit mit MemBrain so eingefallen sind.
(Sinnvoll oder nicht musst Du natürlich selbst entscheiden).

Für die Scriptsprache hätte ich aber noch einen:
Ich versuche z.Z. den ganzen Ablauf zu Automatisieren und arbeite im Moment noch mit den Rohdaten (Dax Kurs ca: 1400-8500).
Das Netz und alles andere wird schon über Script gesteuert, aber ich müsste das Netz vor jedem Lerndurchlauf z.Z. NOCH mit dem "Normalization Wizard" normalisieren.

Wäre eine feine Sache wenn das über's Script möglich wäre:
1. Netz laden.
2. Lerndaten laden.
3. Das Script markiert alle Input-Neuronen.
4. Der "Normalization Wizard" normalisiert alle Inputs (OHNE Benutzer-Rückfrage).
5. Das Script markiert alle Output-Neuronen.
6. Der "Normalization Wizard" normalisiert alle Outputs (OHNE Benutzer-Rückfrage).

Notwendig, da sich die Lerndaten bei jedem Durchlauf ändern.

Lerndaten z.B. die letzten 5 Jahre, eine Woche später fällt der älteste Input raus, und die nächste Woche (Input) kommt rein.
(FIFO, first in, first out).

schon klar, ich hab eine BLÜHENDE FANTASIE...
Aber vielleicht kannst Du es ja doch irgendwie, irgendwann einmal mit reinbacken !

Gruss Seppy
Wer arbeitet macht Fehler, wer wenig arbeitet macht wenig Fehler, wer nicht arbeitet macht keine Fehler, wer keine Fehler macht wird befördert.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Vorschläge für die nächste Version

Post by Admin »

3. Das Script markiert alle Input-Neuronen.
4. Der "Normalization Wizard" normalisiert alle Inputs (OHNE Benutzer-Rückfrage).
5. Das Script markiert alle Output-Neuronen.
6. Der "Normalization Wizard" normalisiert alle Outputs (OHNE Benutzer-Rückfrage).
Ein guter Vorschlag, nehme ich mir vor. Allerdings werde ich wohl nicht den Umweg über das Markieren gehen und auch nicht den Wizard starten sondern das alles im Hintergrund in einem Zug durchführen.

Für die Skript-Sprache schwebt mir momentan entweder Lua (http://www.lua.org/) oder AngelScript (http://www.angelcode.com/angelscript/) vor, Favorit ist momentan AngelScript. Damit wird volles Programmieren über die Skriptsprache möglich, mit allem, was man sich so wünschen kann. Das selbst zu implementieren, wäre ein eigenes Großprojekt, das macht keinen Sinn. Deshalb werde ich wahrscheinlich eine dieser beiden Skripting-Engines einsetzen.

Der einzige Nachteil ist, dass die bisherige 'Skriptsprache' von MemBrain damit über Bord geworfen werden muss. Das sehe ich aber vor dem Hintergrund der immensen Vorteile durch eine echte, vollständige Skripting-Engine als absolut vernachlässigbares Problem. Durch den begrenzten Funktionsumfang des bisherigen Skriptings sind die Skripte nicht so komplex, als dass sie nicht schnell in die neue Skriptsprache übertragen werden könnten.

Viele Grüße!
Thomas Jetter
User avatar
Seppy
Posts: 47
Joined: Fri 5. Dec 2008, 04:48
Location: 90537 Feucht

Re: Vorschläge für die nächste Version

Post by Seppy »

Hallo Thomas,
das sieht aber mächtig komplex/umfangreich aus.
MemBrain ist z.Z. sehr benutzerfreundlich, würde Lua/Angelscript dem nicht entgegen wirken ?

Die Scriptsprache von MemBrain ist überschaubar, funktionell und vollkommen ausreichend.
Es fehlen nur noch Variablen, evtl. EINFACHE Kontroll/Schleifenfunktionen (if then/while do) und einige wenige zusätzliche Funktionen.
Dann ist es doch PERFEKT, einfach zu lernen und man kann eigentlich alles damit realisieren.

Wäre nicht ein Variablenaustausch zwischen Windows Scripting Host (cscript.exe / wscript.exe) und MemBrainScript denkbar, dieser ist bei Windows sowieso schon dabei ?
Dann könnte man Schleifen u.s.w. mit WinScript schreiben, Variablen an MBScript übergeben und wieder zurück an WinScript.
Vielleicht würde dann schon ein entsprechendes Tutorial mit einigen Beispielen ausreichen.

Welchen Zeit/Arbeitsaufwand hätten beide Varianten und welche Vorteile bringen sie?
1. Variablen in MBScript einfügen.
2. Alles über Bord werfen und Lua/Angel einfügen.

Der Lernaufwand für Lua/Angel wäre für die meisten User vermutlich OVERKILL.
(Was bringt die beste Sprache wenn sie dann nicht gesprochen wird).

Gruss Seppy
Wer arbeitet macht Fehler, wer wenig arbeitet macht wenig Fehler, wer nicht arbeitet macht keine Fehler, wer keine Fehler macht wird befördert.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Vorschläge für die nächste Version

Post by Admin »

Hallo Seppy,

ich verstehe Deine Bedenken, aber das ist glaub' ich nicht so wild. Ein MemBrain-Skript kann mit AngelScript fast genauso simpel aussehen wie bisher, es wird sich an den zur Verfügung stehenden Befehlen nicht sehr viel ändern, außer dass Parameter eben in Klammern und mit Kommata getrennt übergeben werden, anstatt wie bisher mit Leerzeichen. Es werden sich ein paar Schreibweisen ändern und es wird im einfachsten Fall das Ganze Skript in einer main() Funktion geklammert sein, was aber über ein Beispiel-Skript auch kein Problem darstellen sollte.

Wer dann aber kann und will, der kann von der einfachen Schleife bis hin zum komplexen Programm alles anstellen. Ich möchte da nicht auch noch den Windows Skripting Host reinmischen, das wird alles sehr unübersichtlich und insgesamt kein schönes Konstrukt.

In die Richtung 'ein paar einfache if/then/do/while' dachte ich zunächst auch. Wenn man sich aber ein paar konkrete Gedanken darum macht, dann ist das Ganze alles andere als einfach und schnell zu implementieren. Da ist man Ruck-Zuck bei einem richtig komplexen Interpreter, denn Schleifen können verschachtelt sein und andere Konstrukte beinhalten, es gibt dann auf einmal Rückgabewerte von Funktionen, die ganze Verarbeitung von arithmetischen Ausdrücken muss mit rein usw. (sonst nützen die if/then usw. grade mal gar nix). Das ist alles andere als trivial und definitiv ein ganz eigenes Projekt. Compilerbau ist eine ganz eigene Disziplin in der Informatik. Deshalb ist es so schön, dass andere Leute sich ganz speziell um sowas kümmern und man die Ergebnisse 'einfach so' in eigene Programme einbinden kann und (kostenlos!) darf.
'Einfach so' heißt natürlich nicht 'mal schnell' aber es ist definitiv der schnellste und sicherste Weg zu einem robusten und sauberen Skripting zu kommen.

Ich werde die Integration von AngelScript mal antesten, um abschätzen zu können, was es an Aufwand bedeutet. Ich bin mir sicher, dass Du bei Erfolg der Integration ganz schnell 'Feuer und Flamme' sein wirst, sobald Du mal Blut geleckt hast ;)

Allerdings wird das alles noch eine ganze Weile dauern. Ich muss auch erst mal lesen, probieren und wieder lesen. Möchte das aber auf jeden Fall für die MemBrain-User vermeiden, keine Angst!

Viele Grüße
Thomas Jetter
User avatar
Seppy
Posts: 47
Joined: Fri 5. Dec 2008, 04:48
Location: 90537 Feucht

Re: Vorschläge für die nächste Version

Post by Seppy »

Hallo Thomas,
so gesehen hast Du natürlich vollkommen recht, eine ECHTE Programmier/Scriptsprache ist Gold wert.
Das mit den verschachtelten Schleifen (Rückgabewerte, etc.) leuchtet mir auch ein.
Wegen Win Scripting Host dachte ich nur (Warum das Rad neu erfinden wenn Win schon alles mitbringt).
(Der Weg des geringsten Wiederstands).

Aber noch was anderes:
Du hast mal geschrieben, dass es für den Teacher sehr schwierig sei, den optimalen Zeitpunkt zum Abbruch des Lernvorgangs festzustellen.
Ist auch logisch, sonst müsste er ja auch alle vorherigen Zustände zwischenspeichern.
Aber beim Lernen versucht man doch einen möglichst niedrigen Net-Error zu erreichen (Korrigier mich bitte wenn das falsch ist).

Theorie:
Wenn man jetzt eine zweite Anzeige des "Net Errors" hätte, die aber nur mit dem normalen Net Error fällt, aber nicht mehr mit diesem steigt, hätte man eine Anzeige "Best/Lowest Net Error".

Diesen Wert oder knapp darüber könnte man jetzt als Abbruchkriterium dem Teacher übergeben und hätte beim nächsten Durchlauf einen Lernerfolg nahe am OPTIMUM; oder etwa nicht ???

Wie sieht das in der Praxis aus ???

Und jetzt will ich Dich nicht länger vom lesen/probieren (AngelScript) abhalten.

Ich freu mich schon auf "MemBrain full Scripting Inside".

Gruss Seppy
Wer arbeitet macht Fehler, wer wenig arbeitet macht wenig Fehler, wer nicht arbeitet macht keine Fehler, wer keine Fehler macht wird befördert.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Vorschläge für die nächste Version

Post by Admin »

Hallo Seppy,

ja, eine solche Minimalwertbestimmung könnte durchaus Sinn machen.

Im Übrigen wird das mit dem Skripting dann alles möglich werden, da man im Skript ja auf den Netzfehler zugreifen können wird. Das macht ausgezeichnete Fortschritte mit AngelScript! Die bisher verfügbaren Befehle habe ich schon fast alle integriert. Jetzt kommt aber erst einmnal ein Umzug bei mir dazwischen... Dann wird es weiter gehn mit den restlichen und vor allem mit neuen Befehlen. Z.B. möchte ich auch Message Boxen ermöglichen, über die man Meldungen des Skripts anzeigen kann oder beim Benutzeer Ja/Nein/Abbrechen oder einen Wert abfragen kann... Und der Pattern Error Viewer natürlich.

Noch weitere Ideen?

Viele Grüße,
Thomas Jetter
Post Reply