- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 50

Thema: lernfähiger Lininenfolger mit KI

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #27
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.668
    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)

Berechtigungen

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

12V Akku bauen