Künstliche Intelligenz ist auf dem Vormarsch. Kaum ein Unternehmen hat nicht schon da oder dort KI im Einsatz. Mit dem vermehrten Einsatz von KI drängen aber auch immer mehr Werkzeuge auf den Markt, die die Erstellung von KI Solutions erleichtern soll. Wo aber können welche Tools zum Einsatz kommen und welche sind überhaupt verfügbar?
Eines dieser Werkzeuge, die Microsoft zur Verfügung stellt, ist das ML.NET Framework. ML ist frei verfügbar, open-source und cross-platform, da es auf .NET CORE aufsetzt. Es ist einfach in andere .NET Anwendungen zu integrieren. c# oder f# Entwickler können die Lösungen as-is verwenden oder auch den Source Code modifizieren. Damit eignet sich ML.NET hervorragend auch, um im Bereich von SharePoint KI einzubinden. Noch befindet sich ML.NET allerdings in Entwicklung, was API Änderungen nach sich ziehen kann.
Komponenten
ML.NET verfügt zur Umsetzung einer Machine Learning Solution über ein breites Sortiment an bereits verfügbaren Komponenten, die erweitert und auch ergänzt werden können. Grundsätzlich gliedert sich jede Solution in drei Bereiche:
- Daten
- Training
- Evaluierung
Im Datenbereich werden die Daten eingelesen und bei Bedarf in Training und Testing aufgeteilt. Durch Transformatoren, die später in der Pipeline definiert werden, können die Daten in die notwendige Form für das Training gebracht werden.
Im Trainingsbereich wird der entsprechende Trainingsalgorithmus ausgewählt und mit den entsprechenden Parametern versehen. Hier können verschiedene Algorithmen, supervised oder unsupervised, verwendet werden. In diesem Bereich finden auch die meisten Anpassungen für eine individuelle Lösung statt.
Im Evaluierungsbereich wird die implementierte Lösung auf ihre Funktionalität und Effizienz geprüft. Durch diesen Feedbackschritt werden neue Iterationen durch die vorherigen Schritte angestoßen.
Am Ende der Suche nach einer geeigneten Lösung steht das Model, das einfach als .zip gespeichert und damit an beliebiger Stelle verwendet werden kann. Die Speicherung des Models markiert das Ende des Developments und übergibt die Lösung damit an den produktiven Einsatz.
Pipeline
Das Herz des ML.NET Frameworks ist die Klasse „Pipeline“. Grundsätzlich ist die Pipeline eine Queue, in der alle Schritte der Transformationen, das Training und auch Supportoperationen definiert werden. Innerhalb der Pipeline werden zum Beispiel Textdaten in numerische Daten umgewandelt, fehlende Werte ersetzt, Zwischencaching der Daten bestimmt, Datenwerte ausgewählt, Trainer definiert und deren Parameter gesetzt und Rückumwandlung von numerischen Daten in Textdaten durchgeführt. Da jeder Lösung unterschiedliche Daten zugrunde liegen und auch unterschiedliche Trainer verwendet, kann die Pipeline sehr unterschiedlich definiert sein. Die grundsätzliche Struktur sowie einige Schritte wie die Einbindung eines Trainers bleiben jedoch immer gleich.
Im folgenden sind zwei Beispiele zur Pipeline angeführt (V0.10):
var pipeline = mlContext.Transforms.Conversion.MapValueToKey("Label")
.Append(mlContext.Transforms.Concatenate("Features",
"SepalLength", "SepalWidth", "PetalLength",
"PetalWidth"))
.AppendCacheCheckpoint(mlContext)
.Append(mlContext.MulticlassClassification.Trainers
.StochasticDualCoordinateAscent(labelColumn: "Label",
featureColumn: "Features"))
.Append(mlContext.Transforms.Conversion
.MapKeyToValue("PredictedLabel"));
var pipeline = mlContext.Transforms.Concatenate(DefaultColumnNames
.Features, nameof(IrisDataCluster.SepalLength),
nameof(IrisDataCluster.SepalWidth),
nameof(IrisDataCluster.PetalLength),
nameof(IrisDataCluster.PetalWidth))
.Append(mlContext.Clustering.Trainers.KMeans
(featureColumn: DefaultColumnNames.Features,
clustersCount: 3));
Roadmap
Derzeit ist die Version 0.11 verfügbar. Es gibt jedoch auch schon Beispiele für Version 0.12. Diese sollte laut Ankündigung die letzte vor der ersten Release Version V1.0. In den folgenden Links finden sich Informationen zu ML.NET und dessen geplante Roadmap.
MS .NET Machine Learning Repository
Weitere Links zur Reihe: