Nach dem ersten Artikel ist das Laufen kein Problem. Das war der Zweck. Nur gibt es eine Begrenzung der Maximalgewichte:
Derzeit ist die Einschränkung der in diesen Mikrocontroller eingebetteten Architektur nur durch die Anzahl der benötigten Gewichte begrenzt. Das neuronale Netzwerk ist derzeit auf 256 Gewichte begrenzt. Für die meisten eingebetteten Anwendungen sollte dieses Gewicht von 256 das System jedoch nicht einschränken.
Was das Training betrifft, so empfängt der PIC-Controller, soweit ich die beschriebene Implementierung verstehe, Parameter von einer externen Quelle.
Die Vorwärtsberechnungen des neuronalen Netzwerks werden so geschrieben, dass jedes Neuron einzeln in einer Reihe verschachtelter Schleifen berechnet wird. Die Anzahl der Berechnungen für jede Schleife und die Werte für jeden Knoten werden alle in einem einfachen Array im Speicher gespeichert.
[...]
Diese Arrays enthalten die Architektur und die Gewichte des Netzwerks. Derzeit werden diese Arrays zu Demonstrationszwecken zum Zeitpunkt der Programmierung des Chips vorinstalliert, in der endgültigen Version wäre dies jedoch nicht erforderlich. Der Mikrocontroller kann leicht so modifiziert werden, dass er einen einfachen Bootloader enthält, der die integrierte serielle RS232-Schnittstelle verwendet, die die Daten für die Gewichte und die Topographie von einem entfernten Standort empfängt. Dies würde es ermöglichen, die Gewichte oder sogar das gesamte Netzwerk zu modifizieren, während sich der Chip im Feld befindet.
Ich vermute, dass das Training auch extern durchgeführt wird.
Das Papier enthält auch Referenzen für Trainer für neuronale Netze, die wahrscheinlich zur Bestimmung der im Speicher des PIC vorprogrammierten Werte verwendet wurden.
- Wilamowski, BM; Cotton, N.; Hewlett, J.; Kaynak, O., "Neuronaler Netzwerktrainer mit Lernalgorithmen zweiter Ordnung",
- Wilamowski, BM; Cotton, NJ; Kaynak, O.; Dundar, G.,
"Verfahren zur Berechnung des Gradientenvektors und der Jacobi-Matrix in willkürlich verbundenen neuronalen Netzen"
Jetzt habe ich mir die erste angesehen, die Netzwerkarchitekturen und Algorithmen beschreibt, die mit ihnen verwendet werden können. Die hier verwendete Neural Network Trainer-Software ist jedoch in MATLAB implementiert.
Derzeit ist nur sehr wenig Trainingssoftware für neuronale Netze verfügbar, mit der vollständig verbundene Netze trainiert werden können. Zu diesem Zweck wurde in MATLAB ein Paket mit einer grafischen Benutzeroberfläche entwickelt. Mit dieser Software kann der Benutzer auf einfache Weise sehr komplexe Architekturen sowie Anfangsgewichte, Trainingsparameter, Datensätze und die Auswahl mehrerer leistungsstarker Algorithmen eingeben.
Ich muss erwähnen, dass die vollständig verbundenen Netzwerke für dieselbe Aufgabe eine niedrigere Gewichtungszahl haben als eine Schicht für Schicht-Architektur. Das macht es besser für Mikrocontroller geeignet.
Ich bin kein Experte für neuronale Netze und es ist ziemlich komplex, so dass ich mich irren kann, aber basierend auf diesen Papieren würde ich sagen, dass der Ansatz von Cotton, Wilamowski und Dündar eine externe, leistungsfähigere Plattform erfordert, um das Training durchzuführen.
Über das Ausführen eines neuronalen Netzwerks auf einem Mikrocontroller hat ST Microelectronics gerade ein Toolkit STM32Cube.AI angekündigt : Konvertieren Sie neuronale Netzwerke in optimierten Code für STM32 , um vorab trainierte neuronale Netzwerke aus gängigen Bibliotheken in die meisten ihrer STM32-MCUs zu konvertieren .