- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 50

Thema: lernfähiger Lininenfolger mit KI

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    72
    Beiträge
    13.155
    mein vorschlag wäre, dass sich einer, der sich auskennt, gedanken darüber macht, wie man zum KI und NN einen arduino nutzen könnte und schön step by step das ganze aufbaut. Von der beschaltung, bis hin zu basis der software, vielleicht mal einiges anhand von beispielen erklärt.
    Ich gehe mal davon aus, dass niemand etwas dagegen hätte, nur in der Zeit bis soetwas von selbst passiert kann man ja unterschiedliche Erklärungen suchen die es schon gibt und vergleichen wie gut sie den Anforderungen entsprechen.
    Etwas in der Art wie hier oder eine der anderen.
    https://www.youtube.com/watch?v=bxe2T-V8XRs

    https://www.3blue1brown.com/neural-networks
    https://www.youtube.com/watch?v=2-Ol7ZB0MmU
    ...

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    [nicht ernst gemeint]

    Zitat Zitat von inka Beitrag anzeigen
    Nun, wer machts?
    Da gibt es so eine geflügelte Antwort: "Der, der fragt!"

    Zitat Zitat von inka Beitrag anzeigen
    ich trau mich mal aus der deckung
    Ok !

    [/nicht ernst gemeint]



    - - - Aktualisiert - - -

    Wenn man das nicht jeden Tag macht oder schon längere Zeit mit dem Thema zu tun hat, ist es insgesamt eine Herausforderung. Wenn man das richtig aufdröseln und später auch noch im Aufbau und zweckbestimmt variieren will, muss man bis auf die unterste Ebene durchgestiegen sein. Wenngleich man nicht unbedingt den wissenschaftlichen Hintergrund im Detail verstanden haben muss. Aber die Grundfunktionen müssen "sitzen". Selbst das Beispiel von MXTs verlinkter Seite ist nicht gerade für Einsteiger die erste Wahl. Weil dort schon Indizes für mehrere Muster drin enthalten sind. Das spiegelt sich auch in den Formeln wider, die dann gleich noch etwas komplizierter werden. Das auf das Nötigste abzuspecken, ist für Einstiger in die Materie nicht so schnell gemacht. Gemeinsam würde es vielleicht schneller gehen.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Moppi Beitrag anzeigen
    [nicht ernst gemeint]



    Da gibt es so eine geflügelte Antwort: "Der, der fragt!"



    Ok !

    [/nicht ernst gemeint]
    ok, danke...
    ich kenne nur die zwei hier: Rumgucker und HaWe. Beide zusammen? Das wäre doch ein super gespann...
    Man munkelt ja schon...
    gruß inka

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Um aber nochmals auf den Kern zurückzukommen, folgendes.
    DIE, programmiertechnisch und vom Verstehen der Materie her, einfachste Struktur für ein KNN gibt es eigentlich nicht.
    Ein Beispiel ist die Aktivierungsfunktion. Wenn man die einfach linear gestaltet, stößt man früher oder später auf Probleme, die das Netz womöglich nicht lösen kann. Dasselbe gilt für Lernen aus Fehlern. In manchen Fällen funktionieren solche Funktionen besser und in anderen Fällen andere Funktionen, was die Lerngeschwindigkeit und Genauigkeit anbelangt. Es kann wohl auch zu so einer Art Dauerschleife im Netz kommen, wo das Netz nie zu einem Ergebnis kommt. Aus diesen und anderen Gründen werden in den Netzen oft nichtliniare Funktionen verwendet. Da geht es dann nicht mehr nur um "0" und "1" oder "an" und "aus", sondern da wird schon mal ein Tangensberechnung bemüht oder was anderes.
    Ich bin aber nicht der Spezi für solche Dinge.

    Vielleicht kann sich Stochri nochmal äußern, wie (oder mit welchen "Basics") er sich das vorstellt umzusetzen?


    MFG

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Ich bin mit dem Thema noch nicht durch, aber ich habe zumindest einmal den Linienfolgermechanismus mit einer Wahrheitstabelle getestet.
    Als Quellcode habe ich den genommen, wo MXT den Link auf die Beispielseite gesetzt hat.

    Es sind etwa 2400 bis 2800 Trainingszyklen notwendig, bis die vorgegebene Genauigkeit erreicht wurde. Die Werte, welche diese bestimmen, wurden aus dem Originalquelltext beibehalten.
    Das Training dauert, auf einem nodeMCU ESP-12E, ca. 5 Sekunden.

    Da es sich um analoge Berechnungen handelt, sind die Werte der Ausgabeneurone Fließkomma-Näherungswerte. Eine Berechnung im KNN stellt immer eine Annäherung dar.
    Würden die Ausgaben, ohne Nachkommastellen, gerundet, erhielte man das gewünschte Ergebnis, als "0" oder "1".

    Die Trainingszyklen variieren bei jedem Neustart, weil in den Berechnungen Zufallswerte mitspielen. So werden u.a. die Neuronengewichte Anfangs mit Zufallswerten und nicht mit immer gleichen festen Werten initialisiert.
    Die Fließkommaergebnisse variieren genau so, weil es Näherungswerte sind und eben in den Berechnungen Zufallswerte mitspielen.



    Im Input haben wir 2 Eingänge. Der Erste, für den linken Sensor. Der Zweite für den rechten Sensor. In der Mitte der Sensoren soll die schwarze Linie verlaufen.

    Im Output haben wir 2 Ausgänge.
    Der Erste, für den linken Motor, der langsam vorwärts fährt oder steht (0); oder schneller vorwärts fährt (1).
    Der Zweite, für den rechten Motor, der langsam vorwärts fährt oder steht (0); oder schneller vorwärts fährt (1).


    1. Wenn sich der linke Sensor neben der schwarzen Linie befindet (0), kann der linke Motor laufen (1).
    2. Wenn sich der rechte Sensor neben der schwarzen Linie befindet (0), kann der rechte Motor laufen (1).
    3. Wenn sich der linke Sensor auf der schwarzen Linie befindet (1), kann der linke Motor stehen oder langsam drehen (0).
    4. Wenn sich der rechte Sensor auf der schwarzen Linie befindet (1), kann der rechte Motor stehen oder langsam drehen (0).

    Das Ergebnis des neuronalen Netzes sieht dazu so aus; zum Vergleich wird Target (das Muster, auf das zuvor trainiert wurde) mit ausgegeben; Target ist eine Vorgabe und wird nicht durch das neuronale Netz erzeugt:

    Input 0 0 Target 1 1 Output 0.98662 0.98579
    Input 1 0 Target 0 1 Output 0.01587 0.99852
    Input 0 1 Target 1 0 Output 0.99999 0.00660
    Input 1 1 Target 1 0 Output 0.99995 0.01100

    Input sind die Werte des linken und rechten Lichtsensors, auf die das KNN eine Ausgabe (Output) für den linken und rechten Motor erzeugen würde, um das Fahrzeug zu steuern.

    Das stellt für mich jetzt den einfachsten Fall einer solchen Steuerung dar, den man mit einem KNN umsetzen kann. Sozusagen das Notwendigste. Das Trainingsset ist als Wahrheitstabelle fest vorgegeben und wird durch die CPU so lange abgearbeitet, bis die richtigen Reaktionen der Ausgänge, auf die Eingangssignale, stattfinden.
    Verwendet habe ich 2 Eingangsneuronen, 2 versteckte Neuronen und 2 Ausgangsneuronen.

    Mit einem versteckten Neuron funktioniert es auch. Die Ergebnisse sind dann etwas genauer, die Trainingsphase dauert aber ca. 9 Sekunden, bei ca. 9000 Zyklen:

    Input 0 0 Target 1 1 Output 0.98612 0.98504
    Input 1 0 Target 0 1 Output 0.01456 0.99999
    Input 0 1 Target 1 0 Output 1.00000 0.00847
    Input 1 1 Target 1 0 Output 1.00000 0.00998

    Mit 10 versteckten Neuronen, ca. 900 Trainingszyklen, bei 4 Sekunden:

    Input 0 0 Target 1 1 Output 0.98621 0.98668
    Input 1 0 Target 0 1 Output 0.01535 0.99720
    Input 0 1 Target 1 0 Output 0.99992 0.00877
    Input 1 1 Target 1 0 Output 0.99469 0.00908

    Mit 20 versteckten Neuronen, ca. 800 Trainingszyklen, bei 4 Sekunden:

    Input 0 0 Target 1 1 Output 0.98555 0.98742
    Input 1 0 Target 0 1 Output 0.01570 0.99923
    Input 0 1 Target 1 0 Output 0.99999 0.00424
    Input 1 1 Target 1 0 Output 0.99645 0.01238

    Mit 50 versteckten Neuronen dauern die Berechnungen ca. 12 Sekunden, bei ca. 650 Trainingszyklen:

    Input 0 0 Target 1 1 Output 0.98657 0.98793
    Input 1 0 Target 0 1 Output 0.01528 0.99561
    Input 0 1 Target 1 0 Output 0.99999 0.00667
    Input 1 1 Target 1 0 Output 0.99218 0.01062






    MfG


    - - - Aktualisiert - - -

    Übrigens ließe sich nach so einem Schema auch die in einem anderen Thread angezweifelte Waschmaschinensteuerung realisieren.
    Geändert von Moppi (13.12.2019 um 19:26 Uhr)

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen