Home

Lernsoftware zur visuellen Darstellung von Backpropagation in neuronalen Netzen

Belegarbeit 6 Fachsemester im Fach Neuronale Netze Fakultät Informatik HTW Dresden

erstellt durch: Robin Günther




Dokumentation

  1. Einleitung

  2. Was ist Backpropagation?

  3. Netz

    1. Anlegen

    2. Laden

    3. Speichern

  4. Datensatz

    1. Laden

    2. Speichern

    3. Hinzufügen

    4. Löschen

  5. Gewichtsfunktion wählen

  6. Abruchbedienung

  7. Lernrate

  8. Netz trainieren

    1. Datensatz wählen

    2. Initialisieren

    3. Gewünschte Information einstellen

    4. Schrittweise lernen

    5. Lernen bis Abbruchbedingung

  1. Einleitung

  2. Dieser Beleg entstand im Rahmen des Faches Neuronale Netz an der HTW Dresden.
    Ziel dieses Beleges ist es die Vorgänge in einem Neuronalen Netz mittels dem Backpropagationverfahren grafisch darzustellen.
    Um eine Systemunabhänigkeit zu erreichen wurde JAVA mit der Erweiterung JAVA3D als Programmiersprache gewählt.
    Die Erweiterung JAVA3D kann für:


    geladen werden. Zur Installation folgen sie bitten den Hinweisen auf den jeweiligen Seiten.
    Der Beleg liegt in 3 Versionen zum Download bereit:



    Die Dateien in ein geeignetes Verzeichniss entpacken, in das Verzeichniss wechseln und den Beleg mittels:
    java -jar Backpropagation.jar
    starten.
  3. Was ist Backpropagation?

  4. Ein neuronales Netz hat verschieden Bestandteile.

    • Neuronen, diese haben eine Aktivierungszustand, eine Aktivierungsfunktion und eine Ausgabefunktion
    • Verbindungsnetzwerk, Art der Verbindung der Neuronen untereinander. Den Verbindungen sind Gewichte zugeordnet, die sich beim Lernen verändern können.
    • Propagierungsfunktion, dient zur Berechnung des Input eines Neuronens aus der Ausgabe der Vorgänger Neuronen.
    • Lernregel, ist ein Algorithmus für das Lernen. Dabei soll aus der vorgegebenen die gewünschte Ausgabe entstehen.

    Das Backpropagationverfahren ist eine Lernregel. Bei diesem Algorithmus gibt es ein Datenfluss von den Eingangsneuronen zu den Ausgangsneuronen und eine Fehlerfluss von den Ausgangsneuronen zu den Eingangsneuronen.
    Der Fehler in den Hiddenschichten wird immer aus den Fehlern der nachfolgenden Schicht berechnet. Die Neuberechnung der Gewichte erfolgt mittels der verallgemeinerten Delta-Regel.
  5. Netz

  6. Ein Neuronales Netz besteht aus einer Inputschicht, aus keiner, einer oder mehreren Hiddenschichten und einer Outputschicht. Ausserdem kann in der Input-, und der Hiddenschicht ein Baisneuron eingefügt werden.
    Je nachdem was das Netz lernen soll, variieren die Anzahl der Neuronen in den jeweiligen Schichten. In diesem Programm werden die Neuronen im Fenster 3DGrafik als verschieden farbige Kugeln dargestellt.

    1. Anlegen

    2. Mittels dem Menupunkt:
      Netz ->Anlegen
      kann man ein neues Netz erstellen. Bei dem nun erscheinenden Eingabefenster gibt man die Anzahl der Inputneuronen, die Anzahl der Hiddenschichten und die Anzahl der Hiddenneuronen je Schicht, sowie die Anzahl der Outputneuronen an.
      Ausserdem kann wählen ob in der Inputschicht oder den Hiddenschichten ein Baisneuron eingesetzt werden soll.
      Mittels OK wird die Eingabe bestätigt. Das Netz wird nun im "Reiter" Grafik im Fenster 3DGrafik dargestellt.
      Wird ein neues Netz erstellt wird die Tabelle mit den Datensätzen gelöscht. Ist der Erhalt der Datensätze gewünscht, sollte man diese vorher speichern

    3. Laden

    4. Ein vorher gespeichertes Netz kann man unter dem Menupunkt:
      Netz ->Laden
      laden.
      Wie auch beim Anlegen wird das Netz im "Reiter" Grafik im Fenster 3DGrafik dargestellt und die Datensätze gelöscht.
    5. Speichern

    6. Ein vorher angelegtes Netz kann man in einer Datei abspeichern. Gespeichert wird allerdings nur der Netzaufbau. Das heisst die Gewichte der Verbindungen werden nicht mit gespeichert. Speichern kann man ein Netz unter:
      Netz ->Speichern
      Der Menupunkt Speichern wird nur freigegeben wenn vorher ein Netz angelegt oder geladen wurde.
  7. Datensatz

  8. Ein Datensatz im Sinnes dieses Beleges ist eine Kombination aus der angelegten Eingabe an den Inputneuronen und der gewünschten Ausgabe an den Outputneuronen.
    Jedem Inputneuron kann eine Eingabe und jedem Outputneuron eine Ausgabe zugeordnet werden. Dies geschieht im "Reiter" Datensaetze. Jede Zeile dieser zwei Tabellen stellt ein Datensatz dar.

    1. Laden

    2. Vorher gepeicherte Datensätze können über den Menueintrag:
      Datensaetze ->Datensatz laden
      geladen werden.
      Dieser Menupunkt wird allerdings erst aktiviert nachdem ein Netz erstellt oder geladen wurde. Beim Laden der Datensätze wird ü,berprüft ob diese überhaupt zu dem Netz passen.
      Das heisst es wird geprüft ob die Anzahl der Input und Outputneuronen des Netzes mit der jeweiligen Anzahl des geladen Datensatzes übereinstimmt.

    3. Speichern

    4. Einmal erstellt Datensätze können auch gespeichert werden. Dabei werden die Datensätze in einem speziellen Format in die gewählte Datei gespeichert.
      Der dazugehörige Menueintrag:
      Datensaetze ->Datensatz laden

    5. Hinzufügen

    6. Im "Reiter" Datensaetze findet man den Button Datensatz hinzufuegen. Mittels diesem Buttons ist es möglich ein Datensatz dem Netz hinzuzufügen.

    7. Löschen

    8. Im "Reiter" Datensaetze findet man den Button Datensatz loeschen. Mittels diesem Buttons ist es möglich ein Datensatz zulöschen.

  9. Gewichtsfunktion wählen

  10. Im "Reiter" Berechnung findet man eine Auswahl von Gewichtsfunktionen und eine grafische darstellung des Verlaufes der jeweiligen Gewichtsfunktion.
    Man kann den Parameter a verändern. Diese Parameter verändert den Anstieg der Funktion. Bei der linearen Funktion kann man ausserdem den Parameter b verändern. Dies ist der Sdchnittpunkt mit der X-Achse.
    Die gewählte Funktion wird zum Training des Netzes verwendet. Wird die Funktion während des Trainings verändert, wird das Netz neu Initialisiert.
  11. Abruchbedienung

  12. Im "Reiter" Berechnung findet man ebenso die Abruchbedienung. Die Abruchbedienung legt fest, wieviele Iterationen zum Lernen des Netzes durchgeführt werden sollen.
    Zwei Abruchbedienung stehen zur Verfügung:

    • Anzahl der Iterationen
    • mittlerer Quadratischer Fehler

    Bei der Anzahl der Iterationen legt man fest wieviel Iterationen durchgeführt werden sollen.
    Bei dem mittleren Quadratischen Fehler wird solange gelernt, bis der mittlere Quadratische Feher, unter dem eingegebenen Wert liegt.
  13. Lernrate

  14. Mit der Lernrate kann man die strärke der Verbindungsäderung steuern. Eine hohe Lernrate bedeute eine Starke Änderung der Gewichte in der Lernphase.

  15. Netz trainieren

  16. Während der Trainingsphase eines Netze legt man verschiedenen Muster an, die das Netz lernen soll. Diese Muster nennt man Trainingsmuster.
    Diese Muster wählt man aus den vorhandenen Muster aus. Die verbleibenden Muster nennt man Testmuster. Mit ihnen wird festgestellt wie gut das Netz auf die Erkennung der Muster trainiert ist.
    Im Vorliegenden Beleg wurde nur die Trainingsphase implementiert.

    1. Datensatz wählen

    2. Im "Reiter" Grafik kann man aus den vorher eingegebenen Datensätzen einen auswählen. Mit diesem wird das Netz im folgenden trainiert.

    3. Initialisieren

    4. Mit dem Button Initialisieren wird das Netz initialisiert. Das heisst es werden die Gewichte der Verbindungen mit einem Zufallswert belegt, und die gewünschte Ein-, und Ausgabe an die Neuronen angelegt.

    5. Gewünschte Information einstellen

    6. Mittels der vier Buttons im Feld Anzeige, kann man auswählen welche Informationen in der Grafik angezeigt werden sollen. Zur Auswahl stehen:
      • Nettoinput
      • Output
      • der Fehler der einzelnen Neuronen
      • der gewählt Datensatz

    7. Schrittweise lernen

    8. In diesem Beleg gibt es zwei Möglichkeiten das Netz zu trainieren. Eine davon ist das schrittweise Vorgehen.
      Hierbei werden die einzelnen Phase des Backpropagation durchlaufen, und zu jeder Phase eine Erklärung angegeben.

    9. Lernen bis Abbruchbedingung

    10. Die zweite Möglichkeit das Netz zu trainieren besteht darin, das Netz solange den gewählten Datensatz lernen zu lassen bis die eingestellte Abbruchbedinung erreicht ist.