- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 21

Thema: weltweit erstes Neuronales Jordan Netz auf Arduino Due !

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    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.

  2. #2
    HaWe
    Gast
    ich bin nicht sicher, ob ich dich richtig verstehe - aber über Backpropagation Learning laufen sowohl das "einfache" als auch das Jordan Backpropagation Netz.
    Beide Netze können grundsätzlich ihre Lern-Matrix auf SD Card speichern und wieder abrufen.
    Der Unterschied ist, dass das Jordan-Netz auch bei identischen punktuellen Sensorkonstellationen berücksichtigen kann, wie sich ihr ZUstand in der zurückliegenden Vergangenheit entwickelt hat: hier habe ich es erklärt:
    http://www.mindstormsforum.de/viewto...&t=5601#p67272

    Begonnen habe ich aber nicht mit Backpropagation, sondern mit einschichtigen Feed-Forward-Netzen und der der Perception Training Rule.

    Die Skalierbarkeit heißt nichts anderes, als dass ich die Netzmatrix-Dimension frei durch einfache Definitionen der Arraygrößen vorwählen kann, so kann ich die Netzgröße und die Anzahl der gelernten Input-Output-Pattern den Erfordernissen und der cpu bzw. dem verfügbaren RAM jederzeit anpassen, ohne das ganze Programm neu schreiben zu müssen. Alle Neuronen samt allen ihren Verknüpfungen miteinander in sämtlichen Schichten werden automatisch angepasst und korrekt initialisiert. Einfach nach Größenänderung neu kompilieren, fertig, läuft.

    Im Moment ist es für den DUE ausgereizt, für größere cpus / RAM könnte man es noch ein Riesen-Stück hochskalieren (hätte man z.B. einen TRE mit Sitara und mit 1GB statt 96kB RAM samt Sketch/Wiring per Arduino IDE). Da es den aber nicht gibt, ist hier für mich erstmal Ende Gelände mit dem momentanen Ausbau.
    https://blog.arduino.cc/category/arduino/tre/

    Aber vielleicht kommt er ja doch noch irgendwann, oder irgendwer bringt irgendwann WiringPi samt Arduino-IDE auf einem Raspi etc. zum Laufen.

    Nicht verstanden habe ich allerdings deine Frage "Die Realtime Berechnungsgrenzen und Lernzeit über native code zu optimieren hat Dir wieviel an Zeit gebracht?"
    Geändert von HaWe (19.08.2015 um 22:40 Uhr)

  3. #3
    Robobionic
    Gast
    Zitat Zitat von HaWe

    Begonnen habe ich aber nicht mit Backpropagation, sondern mit einschichtigen Feed-Forward-Netzen und der der Perception Training Rule.
    Klar, mir gings um Deinen Plan und Implementierung der mehrschichtigen Netze.
    Dein Netz hat zu dem Zeitpunkt also immer alles neu berechnet aber noch nicht gelernt , zumindest konnte es durch Erfahrung noch keine Entscheidungen treffen.


    Zitat Zitat von HaWe
    Nicht verstanden habe ich allerdings deine Frage "Die Realtime Berechnungsgrenzen und Lernzeit über native code zu optimieren hat Dir wieviel an Zeit gebracht?"
    Speichergrenzen waren für Dich ja keine optimalen Voraussetzungen wegen limitierter Neuronen.
    Durch die Abhängigkeit mehrschichtiger Netze musstest Du ja das Lerntraining optimieren.

    Waren native Executables nur Deine Theorie, oder hast Du dadurch die Performance der NXC VMs in den Griff bekommen?

    Zitat Zitat von HaWe

    Im Moment ist es für den DUE ausgereizt, für größere cpus / RAM könnte man es noch ein Riesen-Stück hochskalieren (hätte man z.B. einen TRE mit Sitara und mit 1GB statt 96kB RAM samt Sketch/Wiring per Arduino IDE). Da es den aber nicht gibt, ist hier für mich erstmal Ende Gelände mit dem momentanen Ausbau.
    https://blog.arduino.cc/category/arduino/tre/
    Das hatte mich interessiert, danke.

  4. #4
    HaWe
    Gast
    Ach so, du meinst die beiden Plattformen NXT vs. DUE im Vergleich...:

    cpu-Takt NXT=48MHz, DUE=84 MHz,
    RAM NXT =48kB , DUE=96kB

    Viel extremer sind aber execution speed und auch verfügbares RAM während der Laufzeit, da der NXC-Bytecodeinterpreter sehr langsam ist und selber als VM auch RAM benötigt (frei mit NXC-VM=30kB). Mein Benchmark-Test http://www.mindstormsforum.de/viewto...p=64772#p64772 verdeutlicht es besser.

    Die Geschwindigkeit von Sketch C Execetubles auf Arduino DUE gegenüber NXC-Bytecode ist bei dieser Applikation (mit überwiegend float-Arithmetik, aber auch umfangreicher Pointer-Nutzung ) in etwa 200x schneller.

    (edit: ) Was die Netzarchitektur angeht, so bietet der DUE grob geschätzt ein halbes Dutzend mal so viel Speicher für Neuronen, direkt vergleichen kann ich es nicht, da FF- und Jordan-Netze in ihrem Code nicht vergleichbar sind. Allein die Jordan-Netzstruktur verschlingt aber schon extrem viel RAM, besonders beim Training für temporäre Variablen (gut noch mal so viel wie das reine Netz).
    Geändert von HaWe (20.08.2015 um 09:13 Uhr)

  5. #5
    HaWe
    Gast
    gerade erst gelesen...:
    Dein Netz hat zu dem Zeitpunkt also immer alles neu berechnet aber noch nicht gelernt , zumindest konnte es durch Erfahrung noch keine Entscheidungen treffen.
    nee, wie kommst du darauf? Dinge lernen und entsprechend der Netzmatrix aus den Inputs (Reizen) die entsprechenden Outputs (Reaktionen) generieren, dann gelernte Dinge als "Gedächtnis" auf Flash oder SD speichern, später wieder ein "Gedächtnis" der gelernten Dinge laden:
    das könnrn bzw. konnten alle Netze (bereits schon die FF-Netze auf dem NXT), es ist ja nur eine simple Datensatz-schreib/lese-Funktion, die unabhängig vom Netz mit allen möglichen Daten funktioniert. Ich habe lediglich ein paar neue SD-API-Funktionen ähnlich denen von stdio.h dafür zusätzlich geschrieben (u.a. fprintf und fscanf), da es sie bei Arduino noch nicht gab.

  6. #6
    Robobionic
    Gast
    Hallo HaWe, da habe ich mich wohl etwas missverstaendlich ausgedrueckt.

    Ich war davon ausgegangen das Du Dir am Anfang noch nicht sicher ueber die Anforderungen und zukuenftige Entwicklung warst.

    Ich kam darauf weil Backpropagation keine Moeglichkeiten fuer "Erinnerungen" bietet. Ich dachte dies sei der Grund fuer Dich gewesen weshalb Du es dann erst spaeter mit Jordan umgesetzt hast.

  7. #7
    HaWe
    Gast
    ich glaube, das mit den "Erinnerungen" hast du falsch verstanden.
    Erinnern an gelernte Muster kann sich jedes Netz (z.B. beim mobilen Robot bei <50 cm Abstand ein Hindernis umfahren oder beim Anstoßen in Stück zurückfahren),
    aber ein Jordan Netz hat noch ein zusätzliches "automatisches Kurzzeitgedächtnis", um Situationen besser einzuordnen ("Was ist gerade kurz vorher geschehen und was hat sich soeben verändert?").
    Wenn nämlich der Abstand jetzt zwar 49cm ist, aber kurz vorher war er noch 47cm, dann entfernt er sich ja bereits wieder und muss gar nicht mehr irgendwas umfahren. Das könnte z.B. bei einem Tier als Hindernis passieren, das sich inzwischen bewegt hat - oder er fährt bereits schon schräg dran vorbei oder sogar rückwärts - oder was auch immer.
    Ich fürchte, du musst dazu wirklich mal eine gewisse Zeit investieren, um dich in die Theorie der Neuronalen Netze einzuarbeiten... bei mir sind es insgesamt fast 10 Jahre, allerdings mit enormen Unterbrechungen...
    Geändert von HaWe (20.08.2015 um 16:52 Uhr)

Ä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, 20:25
  2. weltweit erstes Neuronales Jordan Netz auf Arduino Due
    Von HaWe im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 17.08.2015, 15:02
  3. Neuronales Netz zur Mustererkennung
    Von Che Guevara im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 14.02.2012, 12:06
  4. Neuronales Netz mit dem Atmega8
    Von Spartakus im Forum AVR Hardwarethemen
    Antworten: 7
    Letzter Beitrag: 19.03.2006, 08:46
  5. Neuronales Netz
    Von matren im Forum Software, Algorithmen und KI
    Antworten: 39
    Letzter Beitrag: 26.07.2004, 00:52

Berechtigungen

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

Labornetzteil AliExpress