was die Praktikabilität in bestimmten technischen oder industriellen Steuerungen angeht, gebe ich euch völlig recht -
man kann sicher umschriebene Probleme durch andere Algorithmen oder Filter ebenfalls lösen, ich denke da nur an den Kalmanfilter oder den Partikelfilter oder AStern oder Bug2 oder Probleme wie das des "travelling Salesman".
Die "Durchschaubarkeit und Nachvollziehbarkeit" ist hier für mich gar nicht das durchschlagende Argument, gerade bei AI lege ich hier dieselben Maßstäbe an wie in der Psycholgie beim operanden Konditionieren - da weiß ich ja auch nicht, was genau im Hirn des Trainierten vorgeht, ich sehe nur die Reize, und dann die daraus erfolgende Reaktion.
Mein Ansatz war eher: mal auf einem Due ein wirklich komplexes KI Programm zu programmieren, das alle beliebigen Situationen trainierbar macht, samt Erinnerungsvermögen per Rückkopplung, in einem Umfang, was hier grade so machbar ist.
Letzlich war ich bei der Entwicklung selber sehr erstaunt, was da so an cpu-Resourcen nötig wird, wenn man etwas umsetzen will. Ich dachte zwar schon, ein DUE käme damit an seine Grenzen, und ich habe ehrlich gesagt auch vorgehabt, die eigentliche spätere Weiterentwicklung auf einem viel mächtigeren TRE vorzunehmen (den es ja wohl jetzt nicht mehr geben wird). Herausgestellt hat sich dann aber, dass der DUE in der vorliegenden Implementierung nur gut 60 Reiz-Reaktionsmuster lernen kann (ich hatte ursprünglich schon mindestens 10 mal so viele von allen auf dem DUE vorgesehen gehabt), aber immerhin konnte ich zeigen, dass sowohl die Implementierung eines rückgekoppelten Backpropagation Netzes und auch dann dessen autonomes Training theoretisch und auch praktisch auf einem DUE möglich und durchführbar ist. Mit den sehr beschränkten Möglichkeiten des DUE für diese Applikation zeigt es aber doch hier erstmalig immerhin: Es geht, es funktioniert prinzipiell und auch praktisch, und das Verhaltens-Training samt User-Interface sogar zum manuellen Patchen der Neuron-Matrix ist mit einfachen Button- und Display-Menü-Steuerungen machbar !
Auch lässt sich das antrainierte "Wissen" multipel abspeichern, dann ein alternatives Training durchführen, dieses ebenfalls abspeichern und dann wieder ein anderes (früheres oder leeres) "Gedächtnis" während der Laufzeit laden: Total Recall auf dem Arduino ^^.
Das hat immerhin bisher noch niemand auf dieser Plattform etablieren und zeigen können.
Das Programm spannt hierbei ein skalierbares Netz aus 60 Neuronen auf (plus Input-Layer von gut 100 reelen und virtuellen Sensor-Inputs), man muss zur Erweiterung nur die Konstanten für die Neuronen-Layer und die max. Lernmusterzahl vergößern:
Code:
#define NMAXIN 108 // max number of inputs (sensors)
#define NMAXHID 20 // max number of hidden layer neurons
#define NMAXOUT 20 // max number of output layer neurons
#define NMAXCONT NMAXOUT // max number of context neurons
#define NMAXPAT 60 // <<< max number of possibly trained patterns;
und schon hat man sein persönliches Netz an seine persönlichen Anforderungen auch größerer cpus mit mehr Speicher-Resourcen angepasst.
Mein Wunsch hierbei:
Code:
#define NMAXIN 1000 // max number of inputs (sensors)
#define NMAXHID 250 // max number of hidden layer neurons
#define NMAXOUT 250 // max number of output layer neurons
#define NMAXCONT NMAXOUT // max number of context neurons
#define NMAXPAT 5000 // <<< max number of possibly trained patterns;
Legt man zugrunde, dass der DUE 96kB RAM hat, und dass dieses mit den bisherigen Neuronen bis Oberkante Unterlippe ausgelastet ist, kann man sich schnell ausrechnen, in welche RAM-Größenordnungen man hier vorstoßen müsste, denn die Mächtigkeit der Netz-Matrix (d.h. des Neuronennetzes und das Gedächtnis für alle seiner trainierten Lernmuster) beträgt ja etwa (Neuronenzahl * Lernmuster).
Aber es geht!
Man reiche mir eine cpu mit entsprechender Leistungsfähigkeit und portiere das Sketch-Programm auf diese andere Plattform,
dann braucht man einzig und allein die #define-Konstanten auf die gewünschte Größe zu ändern und zu kompilieren, und, voila, schon hat man ein weit größeres lernfähiges rückgekoppeltes Netz mit Erinnerungsvermögen.
Hätte ich einen TRE, der mit Sketch/Wiring programmierbar ist, würde ich es innerhalb von 30 Sekunden eben mal schnell machen. 8-)
Lesezeichen