-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: weltweit erstes Neuronales Jordan Netz auf Arduino Due !

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.451

    weltweit erstes Neuronales Jordan Netz (Neural Net) auf Arduino Due !

    Anzeige

    mein letztes größeres Projekt:
    das weltweit erste Neuronale Jordan Netz (Neural Net) auf Arduino Due !
    (lernfähiges mehrschichtiges rückgekoppeltes neuronales Netz):

    http://www.mindstormsforum.de/viewto...&t=5601#p67272
    (Stand: 30.5.2015, inzwischen in einigen Modulen weiter entwickelt)

    share and enjoy!
    Geändert von HaWe (18.08.2015 um 11:14 Uhr)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.451
    Stiichwörter für Suchmaschinen:
    Neuronales Netz Neural Net Jordan Netz Jordan Net Backpropagation Netz Backpropagation Net
    rückgekoppeltes Neuronales Netz Recurrent neural network

    http://www.mindstormsforum.de/viewto...&t=5601#p67272
    Geändert von HaWe (18.08.2015 um 15:30 Uhr)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    49
    Beiträge
    1.245
    Zweifellos eine tolle Leistung aber: ich denke, nicht nur mir geht es so, dass ich den konkreten Nutzen nicht wirklich erkenne.
    Da hilfts auch nix, wenn du es mehrmals postest.

    Im Ernst: ich hab sogar ein Buch über Neuronale Netze, und generell interessiert mich das Thema schon, aber scheinbar kann einem _niemand_ in vernünftigen Worten und mit nem _konkreten, funktionierenden Beispiel_ erklären, welche Vorteile da sind...von einigen speziellen Anwendungen abgesehn (Sprach-oder Mustererkennung, aber solche Sachen gehn auch _ohne_ neuronale Netze ganz gut).
    Immerhin isses ja doch ein ziemlicher Aufwand.
    Und: ich hab den Beitrag bei Mindstorms überflogen (für mich redest du wie ein Wissenschaftler, die Hälfte versteh ich nich), aber ich bin _nicht_ schlau draus geworden, wozu genau das nun in deinem Fall gut sein sollte.

    Erklär es mal, wenn du ne Diskussion willst- aber bitte auf deutsch.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.451
    besser als ich es unter http://www.mindstormsforum.de/viewto...&t=5601#p47811 (und folgende Posts) auf deutsch erklärt habe, kann ich es leider nicht erklären (außer, ich würde sehr weit ausholen und ein eigenes Buch darüber schreiben....)

    Aber es gibt ja bereits sehr gute Bücher darüber, um die Grundlagen und auch Anwendungsbereiche zu erklären, ich könnte es selber nicht annähernd so gut selber schreiben, und es würde verständlicherweise den Rahmen eines Forums-Topics sprengen. Die Betonung bei dieser Art KI liegt eben auf "lernfähig", und zwar zur Laufzeit - d.h. Lernen an Erfolg und Misserfolg, so wie es lebendige Wesen tun: das finde ich das Faszinierende daran.
    Aber man braucht zum Verständnis auch zugegebenermaßen sehr gute Mathekenntnisse, das stimmt.
    Auch kann man bestimmte Aufgaben sicher auch anders lösen, auch das stimmt, nur muss man dazu den Zweck und alle Reaktions-Möglichkeiten bereits vor der Compilierzeit kennen und festlegen -
    aber noch nichtmal diese spezielle Aufgabe oder Zweckbestimmung muss ich aber beim neuronalen Netz schon zur Compilierzeit definieren, denn jedes Verhalten kann theoretisch erst später zur Laufzeit trainiert werden (die passende Sensorik und Motorik vorrausgesetzt).

    Außerdem ist ein Neuronales Netz nach entsprechendem Grund-Training auch in der Lage, völlig neue Situationen zu erkennen und auf sie sinnvoll zu reagieren, die vorher überhaupt noch nie definiert oder trainiert wurden (evtl weil sie gar nicht vorhersehbar waren), und dies funktioniert allein aus der Kenntnis der bereits bekannten (rudimentären) Lernmuster heraus.
    Aber ebenfalls ja: auch das Grund-Training ist bereits sehr aufwändig, nur lernt ja auch ein Kind nicht in 1 Tag auf 2 Beinen zu gehen.

    Ich selber beschäftige mich auch schon seit ca. 9-10 Jahren mit der Thematik und mir waren die beiden Bücher
    Lämmel+Cleve, Künstliche Intelligenz, Lepzig 2004 (2) und
    Burkhard Lenze, Einführung in die Mathematik neuronaler Netze, Berlin 2003 (2)
    sehr hilfreich.
    Beide sind sehr gut verständlich, und ich bin sicher, wenn du sie erfolgreich durchgearbeitet hast, dann siehst auch du deutlich klarer.
    Orientierend kannst du dir sicher auch Videos bei Youtube ansehen, um einen sehr groben Überblick zu bekommen (ich habe früher auch mal so angefangen, allerdings war da die Ausbeute noch deutlich geringer als heute) - ein Lehrbuch werden sie sicherlich aber nicht ersetzen:

    https://www.google.de/search?q=youtu...NKnoywO265OwBQ

    Diese beiden Videos habe ich gerade selber unter dieser Google-Suche zum ersten Mal gesehen, ich finde sie ganz nett, wenngleich sie auch sehr speziell und alles andere als erschöpfend oder absolut repräsentativ sind:



    Geändert von HaWe (18.08.2015 um 20:41 Uhr)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  5. #5
    Erfahrener Benutzer Begeisterter Techniker Avatar von Andre_S
    Registriert seit
    26.06.2005
    Beiträge
    310
    Hallo,

    interessantes Thema!

    Hatte mich vor Jahren auch mal näher damit beschäftigt und um es etwas besser zu verstehen einen Mini-Taschenrechner auf dieser Basis erstellt. Das Ganze war einfach und überschaubar, sowie auf Grund des minimalen Leistungsumfanges auch recht schnell angelernt.
    Als Beispiel konnte ich mir das Ganze dann auch noch bei zwei Antriebs-Motoren, einem Bumper und zwei gerichteten Entfernungsmessern vorstellen, wobei auch der Lernprozess schon erheblich wäre.

    Allerdings habe ich dann Überlegungen getroffen, wie ich dies unter den Gesichtspunkten bezüglich des aktuellen Bot anwenden könnte.
    - drehzalreguliertes Antriebssystem mit Encodern, Rampen, sowie Strom und Spannungüberwachung
    - mehrere Sonarsensoren mit verschieden ausgerichteten Keulen
    - Kollisionsbumpern
    - Kinect-System zur Tiefenmessung bei Umrissprojektion
    - Kompass und Lagesensoren
    - inzwischen auch noch ein Rotationslaser
    Hinzu kommen verfälschte Messwerte durch Umgebungseinflüsse, besonders beim Kompass aber auch andere Einflussfaktoren.

    Da fehlte mir dann völlig der Ansatz für ein neuronales Netz, was beherrschbar , noch zeitrelevant anlernbar wäre und letztendlich auch noch ein komplexes Ziel verfolgen könnte. Also später mehr als nur eine kollisionsfreie Bewegung. Einfach nur ein trial & error führt da wohl in absehbarer Zeit nicht zum Erfolg.
    Und das ist ja „nur“ das Antriebssystem,… da kommen ja noch viele andere Dinge, wie Spracherkennung, Ausgabe, Raderdedektion, Objekterkennung etc. hinzu.

    So gesehen habe ich mich ganz schnell wieder den für mich überschaubaren Möglichkeiten gewidmet, denn zu einem „Chappie“ ist es wohl noch ein sehr sehr langer Weg.


    Gruß André
    http://home-robotics.de
    ____________________________

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.266
    Ich finde das Thema neuronale Netze auch faszinierend.
    Möchte aber auch nachdem die neuronalen Netze hier überschwinglich gelobt wurden auch mal die Schattenseiten davon aufzeigen.
    Zum einen wie schon erwähnt: Die Beherrschbarkeit bzw. komplexität des Netzes. Viele Ein und Ausgabevektoren bedeuten auch einen enormen Lernaufwand. Hier muss man zunächst die Ein und Ausgabeschichten passend modellieren, und danach einen ausreichend großen Satz an Testdaten bereitstellen. Insbesondere in der autonomen Robotik zeigen sich hier bereits die ersten Probleme auf. So kann man bei Bildverarbeitung sehr leicht passende Testdaten generieren, will man jedoch einem Roboter autonome Navigation durch eine unbekannte Umgebung beibringen steht man hier vor einigen Problemen.

    Weiterhin hat man bei neuronalen Netzen gerne auch Probleme, dass das Netz auf ein bestimmtes Merkmal aber nicht den allgemeinen Fall trainiert wird. Beispiel hierfür. Ein Netz soll auf Fahrzeuge eines bestimmten Herstellers trainiert werden. Mit den Testdaten klappt das auch wunderbar, in Praxis jedoch gar nicht. Es stellt sich dann heraus. Die Testbilder hatten alle hellen Hintergrund, da Netz hat den hellen Hintergrund und nicht Merkmale des Fahrzeugs gelernt. In diesem Fall klingt das Problem leicht vermeidbar, diesen Fehler kann es jedoch auch wesentlich weniger offensichtlich geben.

    Am Institut für Anthropomatik bei uns an der Uni war das Argument gegen neuronale Netze: Man kann nicht einsehen was das Netz letzendlich macht. Man kann nicht zeigen, dass der vom Netz gefundene Algorithmus optimal für das Problem ist. Nachdem man auch nicht einsieht, was das Netz macht kann man auch kaum von Hand nachoptimieren. Insbesondere in der Industrierobotik ist das stark von Nachteil, da man hier Zeit und damit Kosten sparen will bzw. muss.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.451
    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-)
    Geändert von HaWe (19.08.2015 um 13:28 Uhr)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.04.2015
    Beiträge
    196
    Hallo HaWe,

    einige Fragen hab ich dazu.

    - Ist diese Funktion "Summe(Eingänge) * Gewicht - Schwellwert" in der gezeigten Grafik "Schematischer Aufbau eines Computerneurons" die intern ablaufende Neuronfunktion? (Klingt so überraschend simpel).
    - Im ersten verlinkten Video sehe ich am unteren Rand so eine Pünktchengrafik. 5 Pünktchen hoch und gaaanz breit. Was zeigt die genau? Sind die flimmernden Pünktchen die Ausgänge der Neuronen? Und in welche Richtung laufen die Schichten? Bei 5 eingezeichneten Linien als Abstandswerte liegt der Verdacht nahe, es läuft horizontal durch die Schichten? Allerdings sehe ich dann die Ausgänge nicht.
    - Wenn Du so ein Netz aufbaust und anlernst, wie legst Du fest, wieviele Schichten du brauchst und wie breit eine Schicht sein muss? Ist das einfaches Ausprobieren oder steckt da eine Logik hinter? (Ich hab mal so was ähnliches, wie im ersten Video mit mehreren PID-Reglern durchsimuliert, da war mir recht schnell klar, was ich an Reglern brauchte und wie ich sie untereinander in Relation zu setzen habe. Naja, die Regelparameter musste ich natürlich selbst einstellen).
    - In Bezug auf die vorhergehende Frage: Ein neuronales Netz löst eine Problemstellung. Bezogen auf das erste Video kann ich mir gut vorstellen, dass die Bahn des Autochens auch ein Rundkurs sein kann oder einige Kurven mehr haben kann. Die Problemstellung ist ja gelöst, das Autochen wird auch diese neuen Routen meistern können. Wenn ich jetzt aber z.B. eckige 90°-Winkel-Kurven in den Parcours einführe und deshalb ein Umlernen/ Erweitern des Netzes erforderlich ist (du bekommst ja ganz andere Eingangswerte der Sensoren mit sprunghaften Änderungen), ist dann der gesamte vorhergehende Lernvorgang für die Katz oder kannst Du dann nach der Erweiterung des Netzes noch irgendetwas von den alten Neuron-Parametern verwenden? Also hat das Netz dann etwas dazugelernt oder die neue Problemstellung komplett neu erlernt?

    Sorry, die Fragen mögen etwas naiv klingen, allerdings hab ich überhaupt keine praktische Erfahrung mit neuronalen Netzen. Aber interessieren tut's mich trotzdem.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.451
    hallo,
    was das einzelne Neuron angeht: ja, das stimmt, es folgt aber noch die Aktivierungsfunktion.
    Trainiert werden die Gewichte und die Schwellwerte eines jeden einzelnen Neurons, und bei jedem einzelnen Lernschritt innerhalb eines zusammenhängenden Lern- bzw. Trainings-Zyklus' wird dazu-gelernt, nichts wird gelöscht - aber möglicherweise wird altes Wissen modifiziert, eingeschränkt, erweitert, generalisiert, was auch immer, damit jetzt immer noch oder wieder alles gelernte zusammenpasst. Nur wenn eine bestimmte Input-Konstellation aller 100 oder 1000 Inputs 100%ig mit einer früher trainierten identisch ist und wenn nun die neue Reaktion die alte ersetzen soll, wird die neue die alte überschreiben - leicht unterschiedliche Muster-Konstellationen werden nebeneinander existent bleiben.

    Wie das genau funktioniert, kann ich hier nicht erklären, ich müsste dazu hier ein eigenes Lehrbuch schreiben - ich muss daher auf die beiden oben erwähnten Lehrbücher verweisen.

    Was die Programme in den Videos genau machen, weiß ich nicht, sie sind nur illustrativ und stammen nicht von mir selber, aber in dem darüber stehenden Suchlink findest du weitere, die ggf. besser erklärt und weiter verlinkt sind.

    In meinem NN-Thread
    http://www.mindstormsforum.de/viewto...&t=5601#p67273
    http://www.mindstormsforum.de/viewto...&t=5601#p47811
    habe ich erklärt, was mir in der Kürze eines Forums-Topics möglich ist, daher muss ich für weitergehende Erklärungen auf Fachbücher verweisen, auch im Internet findet sich einiges - z.B. auch
    http://www.cs.bham.ac.uk/~jxb/NN/nn.html
    Geändert von HaWe (19.08.2015 um 13:30 Uhr)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  10. #10
    Robobionic
    Gast
    Zitat Zitat von HaWe Beitrag anzeigen
    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.
    Hallo HaWe, erstmal Gratulation für Dein Projekt.

    Ein Lernfähiges System ist natürlich auch unabhängig von der Rechendauer etwas ziemlich kostbares, vor allem wenn man es unter diesen Voraussetzungen entwickelt hat.
    Die Realtime Berechnungsgrenzen und Lernzeit über native code zu optimieren hat Dir wieviel an Zeit gebracht?

    Du hattest das Projekt ja mit Backpropagation begonnen, also keine Möglichkeit die erlernten Erfahrungswerte und Muster abzurufen.
    Demnach war das Stunden oder Tagelange lernen umsonst und musstest nachträglich jede Menge Aufwand investieren um es überhaupt irgendwie autonom hinzubiegen.

    Dein Aufwand ist schon bemerkenswert, aber wie gehst Du mit der Skalierbarkeit um?
    Ich meine für den praktischen Einsatz müssen die Neuronengrenzen doch Hardwarebedingt echt ein Alptraum für Dich sein.

    Wie auch immer, danke das Du Deine Leidenschaft mit uns teilst ... Tolles Projekt.

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. weltweit erstes Neuronales Jordan Netz auf Arduino Due !
    Von HaWe im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 26.10.2016, 21:25
  2. weltweit erstes Neuronales Jordan Netz auf Arduino Due
    Von HaWe im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 17.08.2015, 16:02
  3. Neuronales Netz zur Mustererkennung
    Von Che Guevara im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 14.02.2012, 13:06
  4. Neuronales Netz mit dem Atmega8
    Von Spartakus im Forum AVR Hardwarethemen
    Antworten: 7
    Letzter Beitrag: 19.03.2006, 09:46
  5. Neuronales Netz
    Von matren im Forum Software, Algorithmen und KI
    Antworten: 39
    Letzter Beitrag: 26.07.2004, 01:52

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •