close
Business strategy businessman holding a blackboard planning and finding a solution through a chalk drawing of a maze

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:

Georg Selig

The author Georg Selig

Georg Selig hat sein Informatik-Studium an der TU-Wien im Jahr 2008 abgeschlossen und ist als SharePoint Senior Developer tätig. Georg bringt mehr als 10 Jahre Berufserfahrung im Bereich der Software-Entwicklung mit Fokus auf Microsoft .net-Sprachen mit. Heute arbeitet er in einem SharePoint Development Team im Bereich der SharePoint Add-On und SharePoint Produktentwicklung in einem Wiener SharePoint und Office 365 Beratungsunternehmen. Im Zuge seiner Arbeit wurden von ihm Produkte für SharePoint 2010, SharePoint 2013, SharePoint 2016 und Office 365 SharePoint Online ins Leben gerufen. Heute beschäftigt sich Georg mit der Erstellung von hybriden Softwareprodukten (Development) für SharePoint 2016, SharePoint Online mit und ohne Azure (PaaS).

Leave a Response