Machine Learning
Beim Maschinellen Lernen wird ein Modell für die Lösung einer Aufgabe optimiert. Diesen Prozess bezeichnet man als Training. Mithilfe von trainierten Modellen können komplexe Datenanalysen automatisch durchgeführt werden. Damit lassen sich aufwändige, manuell erstellte Programm-Konstrukte ersetzen. Sowohl das Erstellen, das Training als auch die Ausführung der Machine Learning-Modelle erfolgt in der TwinCAT 3 Echtzeitumgebung, mit Hilfe der bereitgestellten Machine Learning-Funktionen. Die damit lösbaren Aufgaben sind vielfältig und lassen sich grob in fünf Aufgabengebiete (Klassifikation, Anomalie-Erkennung, Regression, Clusteranalyse und Merkmals-Transformation) einteilen. Je nach Aufgabengebiet stehen verschiedene Modelltypen zur Verfügung, die jeweils allgemeine oder aufgabenspezifische Vor- und Nachteile haben.
Beim Maschinellen Lernen unterscheidet man zwischen überwachtem (supervised) und unüberwachtem Lernen (unsupervised). Beim überwachten Lernen benötigt man zusätzliche Informationen wie annotierte (z.B. gelabelte) Datensätze, damit das Modell eine Abbildung in bekannte Kategorien (Klassen) oder auf gewünschte Zielgrößen lernen kann. Danach kann das Modell eine Vorhersage (Prädiktion) der Kategorien bzw. Zielgrößen für die unbekannten Daten treffen. Dem gegenüber erfolgt das unüberwachte Lernen ohne Zusatzinformationen nur auf der Basis der Merkmale selbst.
Alle Modelle der Klassifikation und Regression lassen sich generell dem überwachten Lernen zuordnen. Demgegenüber werden alle Modelle zur Anomalie-Erkennung und Clustering dem unüberwachten Lernen zugeordnet. Bei der Merkmalstransformation gibt es beide Möglichkeiten, so basiert das Verfahren zur Linear Discriminant Analysis auf dem überwachten Lernen und die Principal Component Analysis auf dem unüberwachten Lernen.
Die folgende Zuordnung von Modell-Typen zu Aufgabengebieten hilft bei der Auswahl geeigneter Modelle. Es ist zu beachten, dass hier speziell die Handhabung von maschinellem Lernen in TwinCAT Vision aufgezeigt wird und nicht im Allgemeinen.
Modell-Typen | Klassifikation | Anomalie-Erkennung | Regression | Clustering | Merkmals-Transformation |
---|---|---|---|---|---|
Boost Classifier | x |
|
|
|
|
K-Means++ |
| x |
| x |
|
K-Nearest Neighbors | x | x | x |
|
|
Linde–Buzo–Gray |
| x |
| x |
|
Linear Discriminant Analysis |
|
|
|
| x |
Normal Bayes Classifier | x | x |
|
|
|
Principal Component Analysis |
|
|
|
| x |
Random Forest | x |
| x |
|
|
Simplified TopoART | x | x | x | x |
|
Support Vector Machine | x | x | x |
|
|
Support Vector Machine- | x |
|
|
|
|
Es können nur Modelle verwendet werden, die über eine der F_VN_Create
-Funktionen aus der Machine Learning Gruppe erstellt wurden. Die so erzeugten und im Nachgang trainierten Modelle lassen sich über die FB_VN_WriteMlModel und FB_VN_ReadMlModel Bausteine auf die Festplatte speichern oder laden. Der Import von extern trainierten Modellen, z.B. als ONNX-Dateien, ist nicht vorgesehen.
Grundsätzliches Vorgehen beim maschinellen Lernen:
- Problemstellung analysieren und gewünschtes Ergebnis definieren:
- Daraus ergibt sich unter anderem das Aufgabengebiet, sowie die verwendbaren Modell-Typen.
- Sammeln von Daten:
- Trainings-, Validierungs- und Testdaten
- Die Daten müssen Informationen enthalten, die zum Lösen der Problemstellung geeignet sind.
- Die Daten müssen alle Varianten und Ausprägungen abdecken, die später vorkommen können.
- Beim überwachten Lernen müssen die Daten zusätzlich annotiert werden.
- Auswahl und Extraktion von geeigneten Merkmalen:
- Welche Merkmale sind einmalig, speziell oder liefern relevante Informationen zur Unterscheidung?
- Redundante Merkmale sollten vermieden werden.
- Dabei kann eine Merkmalstransformation hilfreich sein.
- Zum Schluss sollte eine Merkmalsnormalisierung durchgeführt werden, damit die Wertebereiche der unterschiedlichen Merkmale vergleichbar und die Anforderungen des Modells erfüllt werden.
- Bestimmung eines geeigneten Modells und der Hyperparameter (Validieren und Optimieren).
(Training des ausgewählten Modells mit den ermittelten Hyperparametern auf den Trainings- und Validierungsdaten). - Abschließender Test mit zuvor nicht verwendeten, unabhängigen Daten.
Die Daten müssen in Form von Samples vorliegen. Ein Sample ist dabei ein Vektor, der aus Merkmalen besteht. Die Merkmale können sowohl greifbare Größen des assoziierten Bildes (z.B. Farbwerte) oder Konturwerte (z.B. in Form des Schwerpunkts) etc. sein, als auch abstrakte Größen (z.B. das Ergebnis einer PCA), die zwar statistisch das Bild sinnvoll beschreiben, die vom Benutzer jedoch nicht direkt gedeutet werden können. Für das Training von überwachten Modellen werden für jedes Sample Zusatzinformationen wie z.B. eine Klassenzuordnung benötigt. Eine Ansammlung von mehreren Samples wird als Batch bezeichnet.
Abhängig vom Modelltyp stehen Funktionen zum Sample- und / oder Batch-Training sowie zur Prädiktion zur Verfügung. Bei einigen Modellen kann ein Nachtraining stattfinden, um das Modell während der Laufzeit weiter zu optimieren oder auf neue Gegebenheiten anzupassen.
Merkmalsextraktion
Die Merkmalsextraktion beinhaltet die Extraktion von numerischen Merkmalen aus Bilddaten und ist ein wesentlicher Bestandteil einer Machine Learning-Lösung. Dabei muss man unterscheiden, ob ein Merkmal direkt von einer Funktion bestimmt werden kann, ob eine Kombination von Funktionen notwendig ist oder ob es logische Merkmale eines Objekts sind, die zur Unterscheidung verwendet werden können, wie z.B. eine Anzahl von Löchern. Im Kapitel Funktionen zur Merkmalsextraktion finden Sie eine beispielhafte Auflistung.
Merkmalsnormalisierung
Die Skalierung von Merkmalen zur Normalisierung wird in erster Linie durchgeführt, um sicherzustellen, dass alle Merkmale gleichermaßen zum Lernprozess des Modells beitragen. Merkmale mit größeren Werten können die Abstandsberechnungen dominieren, wodurch distanzbasierte Modelle empfindlicher auf diese Merkmale reagieren. Um das zu vermeiden und die Anforderungen des Modells zu erfüllen, empfehlen wir generell eine Merkmalsnormalisierung durchzuführen.
Die Funktion F_VN_GetFeatureScales stellt drei Skalierungsmöglichkeiten (ETcVnFeatureScalingType) bereit. Darüber hinaus kann man auch eine eigene Skalierung erstellen und verwenden. Die Anwendung der Skalierung erfolgt mit der Funktion F_VN_FeatureScaling.
Gleiche Merkmals-Extraktion und -Normalisierung Es ist zu beachten, dass alle Verarbeitungsschritte sowohl beim Training als auch bei der Anwendung eines Modells durchgeführt werden müssen. Daher müssen die Funktionen an beiden Stellen ausgeführt werden und ggfs. Parameter für die spätere Verwendung gespeichert werden. |