Nach einigen Irrwegen komme ich hier her zurück.
Ich will versuchen, das Ursprungsthema dieses Threads zu lösen. Weil wir kommen, egal, worum es bei KI hier geht, immer wieder auf dasselbe zurück. In jedem neuen Thema immer wieder dieselben Fragen und Lösungswünsche.
Deshalb Suche ich jetzt ein paar Sachen zusammen und versuche eine Art Zwischenstand darzustellen:
Das war mein Wunschzettel, hinzu packe ich Sachen, die ich gefunden habe und von denen ich denke, dass sie zum jeweiligen Thema passen und markiere mal, wie weit ich gekommen bin:
1. Was sind Neuronen in einem NN?
https://www.roboternetz.de/community...ion-der-Zellen
2. Wie bilde ich ein Neuron im Programm (Arduino-C-Code) ab/nach?
Die Funktion mittels Funktionen in der Programmiersprache (hier bin ich schon weit gekommen), die berechneten Gewichte, die auch aus dem Lernen resultieren, in Arrays.
3. Wie funktioniert die Gewichtung in einem NN, wie bilde ich dies im Programmcode ab/nach?
Etwas umfangreiches Thema und komplizierter, aber nicht unmöglich, es allgemeinverständlich darzustellen. Dafür gibt es mehrere Funktionen, die auch in C abgebildet werden können.
Das ist für mich erst einmal erledigt.
4. Wie "lernt" das Netz, wie bilde ich dies im Programmcode ab/nach?
Indem ein Fehlerwert (positiv oder negativ) aus dem Signal der Ausgangsneuronen berechnet wird und dieser den Gewichten der Neuronenverbindungen hinzugefügt wird.
Dafür wird ein Vergleichsmuster benötigt. Für versteckte Neuronenschichten (zwischen Ein- und Ausgangsneuronen) gibt es ein ähnliches Verfahren, aber keinen direkten Vergleichswert.
Wie wird es nachgebildet: hat sich so weit aufgeklärt.
Allerdings lässt mich die Dokumentation, bezüglich des Programmcodes (MXTs verlinkte Seite), mit Details gerade etwas im Stich. Gwisse Teile im Quelltext, die aber auch äußerst wichtig sind, sind nicht genau erklärt. Hier muss ich den Programmcode nachempfinden und aufbauen, um die einzelnen Schritte und Zusammenhänge besser zu verstehen.
5. Wie entsteht aus einem Eingangsmuster eine Zuordnung am Ausgang?
Durch die Prozesse innerhalb der Neuronen, deren Verbindungen untereinander (die üblicher Weise immer von einem Neuron zu allen anderen Neuronen, in der nächsten Schicht, existieren) und deren Gewicht. Durch Wiederholung im Lernprozess entsteht im gesamten Netz langsam eine Gewichtsverteilung, die das Eingangsmuster auf das Ausgangsmuster abzubilden vermag.
6. Wie speichere ich Gewichte aus dem Netz und lade sie wieder dort hinein, um das Netz verschiedene Aufgaben erledigen zu lassen?
Die Gewichte befinden sich in Arrays und können dort nicht nur berechnet werden, sondern auch geladen, gelöscht und daraus gespeichert. Es muss das gesamte Array gespeichert werden.
7. Wie weiß ein Netz, wann es alles fertig ist mit Lernen und wann es das Gelernte anwenden kann, also wie schalte ich ein Netz um, von Lernen auf Anwenden und wie sieht dies im Programmcode ganz genau aus, wie wird es realisiert?
In der einfachen Variante hat das Netz kein Wissen darüber, wie es von Lernen auf Ausgabe umschalten sollte. Ein eigenständiges Verhalten eines neuronales Netzes ist so erst mal gar nicht gegeben. Im Grunde werden in einer Schleife, bis das gewünschte Ergebnis erreicht ist, Werte aus Arrays immer wieder berechnet. Die Berechnungen bauen auf Werten, aus den vorhergehenden Berechnungen, auf. Das neuronale Netz als solches tut gar nichts. Wann gelernt wird oder nicht, entscheidet einzig der Entwickler der Software, in einem Programmablauf.
Ich glaube, Erklärungen kann man kaum genug haben. Deshalb hier nochmal ein Link (deutschprachig): http://www.informatik.uni-ulm.de/ni/...gen/Ruland.pdf
MfG
![]()
Lesezeichen