SlideShare ist ein Scribd-Unternehmen logo
Machine Learning in .NET
Das Nicht-Programmierbare “programmieren“!
Drei Episoden von Machine Learning mit ML.NET
Mykola Dobrochynskyy
Software Factories, 2019
ceo@soft-fact.de
1
2
Agenda
• Einführung – Machine Learning und
ML.NET
• Episode 1. ML in .NET Apps integrieren
• Episode 2. Automated ML – ML.NET
Model-Builder und ML.NET CLI
• Episode 3. ML.NET Erweiterung mit
Tensorflow und ONNX Bibliotheken
3
Agenda
Einführung.
Machine Learning und ML.NET
Was ist Machine Learning?
Frage ans
Publikum
Das Nicht-Programmierbare „programmieren“
5
f(x)
{Frage ans
Publikum
Wie man eine Funktion in einem Computer-Programm umsetzt,
welche ausgibt, was sie auf dem Bild „sieht“
Das neue KI Paradigma – die Programmierung
durch Training ersetzen
6
Was ist ML?
AI, ML & Deep Learning Ontology
7 Source: www.deeplearningbook.org
Was ist ML?
Machine Learning - Definition
Maschinelles Lernen (ML) ist ein allgemeiner Begriff für die
künstliche Generierung von Wissen aus Erfahrung.
Ein ML System lernt aus Beispielen und kann
nach Abschluss der Lernphase verallgemeinern. D.h. es
merkt sich nicht nur die Datenbeispiele, sondern erkennt sie
in den gelernten Daten als Regelmäßigkeiten.
Definition vom Maschinellen Lernen nach Thomas Mitchell
lautet:
"A computer program is said to learn from experience E with
respect to some class of tasks T and performance measure P if
its performance at tasks in T, as measured by P, improves with
experience E".
Was ist ML?
9
5 Fragen an ML
1. Ist dies A oder B (C,D,E…)? - Classification
2. Wie viel – oder – wie viele? (Regression)
3. Wie ist dies organisiert? (Clustering)
4. Ist dies merkwürdig? (Anomaly detection)
5. Was soll ich als Nächstes tun? (Reinforcement)
10
ML Fragen 1. – 4.
Vier Machine Learning Tasks werden von ML.NET unterstützt –
Klassifizierung, Regression, Clustering und Anomalie-Entdeckung
Microsoft Machine Learning.
Cloud-basierte Optionen
11
Cloudoptionen Funktionsbeschreibung Gebotene Möglichkeiten
Azure Machine
Learning Service
Verwalteter Clouddienst für ML Trainieren, Bereitstellen und
Verwalten von Modellen in Azure
mithilfe von Python und CLI
Azure Machine Learning
Studio
Visuelle Drag-&-Drop-Oberfläche
für ML
Erstellen von, Experimentieren
mit und Bereitstellen von
Modellen mithilfe von
vorkonfigurierten Algorithmen
(Python und R)
Azure Databricks
Spark-basierte Analyseplattform Erstellen und Bereitstellen von
Modellen und Datenworkflows
Azure
Cognitive Services
Azure-Dienste mit
vorkonfigurierten KI- und ML-
Modellen
Fügen Sie Ihren Apps auf einfache
Weise intelligente Features hinzu
Azure Data Science
Virtual Machine
Virtueller Computer mit
vorinstallierten Data Science-
Tools
Entwickeln von ML-Lösungen in
einer vorkonfigurierten
Umgebung
Microsoft ML
On-Cloud
Microsoft Machine Learning.
Lokale Optionen
12
Lokale Optionen Funktionsbeschreibung Gebotene Möglichkeiten
SQL Server Machine Learning
Services
In SQL eingebettete
Analyse-Engine
Erstellen und Bereitstellen
von Modellen innerhalb
von SQL Server
Microsoft Machine Learning
Server
Eigenständiger
Enterprise-Server für
prädiktive Analyse
Erstellen und Bereitstellen
von Modellen mit R und
Python
Microsoft ML
On-Premise
Microsoft Machine Learning.
Entwicklungsplattformen & Tools
13
Entwicklungstools Funktionsbeschreibung Gebotene Möglichkeiten
ML.NET
Plattform-übergreifendes
Open-Source Machine
Learning Framework
Entwickeln von ML-Lösungen für .NET-
Anwendungen mit ML-API
Infer.NET
Plattformübergreifendes
Open-Source Machine
Learning Framework (wird
in ML.NET integriert)
Bayessche Inferenz in graphischen Modellen
und probabilistische Programmierung mit C#
auf .NET und .NET Core Plattformen
Das Microsoft Cognitive
Toolkit (CNTK) ist ein
Open-Source-Bibliothek
für Deep Learning.
Erlaubt es populäre Deep Learning Modelle
wie z.B. Multi-layer Perceptrons (MLPs),
Convolutional Neural Networks (CNNs),
Recurrent Neural Networks (RNNs/LSTMs) zu
realisieren und kombinieren.
Windows AI / ML
Windows 10 Machine
Learning Plattform
Auswerten von trainierten ONNX-Modellen
auf einem Windows 10-Gerät
Microsoft ML
Libs & Tools
14
.NET als
“Alleskönner”
DESKTOP
.NET
WEB
CLOUD
MOBILE
GAMING
IoT
ML
Warum (aus .NET perspektive) reichen
“konventionelle” Mittel wie ML Dienste oder mit
Python erstellte ML Modelle manchmal nicht?
Frage ans
Publikum
ML.NET
Merkmale
Ein Machine Learning Framework gemacht
für .NET Entwickler
.NET Skills wiederverwenden Solide und skalierbar
Custom Models, Auto ML, Builder / CLI Erweiterungen & Anbindungen
.NET Core basiert Open-source, erweiterbar
ML.NET 1.0
(Rel. 06.05.2019)
Get started: dot.net/ml
GitHub: github.com/dotnet/machinelearning
Ein Open-Source Framework für Benutzer-
spezifische Machine Learning Modelle
18
ML.NET
Framework
Ein Framework für Benutzer-spezifische
Machine Learning Modelle
19
Pre-built vs.
Custom-Models
Vorgefertigtes (pre-built)
Modell von Azure Cognitive Services
* Au
20
Pre-built vs.
Custom-Models
Benutzer-spezifisches (custom)
Modell mit ML.NET
See/Show Demo-Project: SentimentAnalysisConsoleApp
21
Cognitive Services
vs. ML.NET Custom
Model
Test-Bild: dog1.jpg
Vorhersage von Azure Machine Vision API
Vorhersage von
ML.NET
Custom Model
s. Demo-Projekt
TensorFlowEstimator
22
Was kann ich mit
ML.NET machen
23
Episode 1.
Agenda
Episode 1. Stimmungsanalyse
(aka Sentiment Analysis)
24
2 - Comment 0 - Label (Toxic)
== Are you a female????? ==
mootmootmootmootmootmootmootmootmootmo
ot
1
:::::Good enough for me; thanks for the info. I'll
check the Sheffield references later.
0
There's probably at least a website somewhere that
you could cite.
0
SUZANNE IS A LOSER!!! 1
Features (input) Label (output)
Stimmungsanalyse.
Features & Labels
Episode 1.
ML in .NET Apps
25
Stimmungsanalyse.
Analyse der ML-Aufgabe
Episode 1.
ML in .NET Apps
Fazit: eine Aufgabe der binären Klassifizierung
Ist es A or B ?
Fragestellung:
Toxischer Inhalt
Ja(1) oder Nein (0)
26
Machine Learning Workflow
Episode 1.
ML in .NET Apps
Daten aufbereiten:
• Laden
• Feature extrahieren
Build & Train:
• Modell trainieren
• Modell auswerten
Ausführen:
• Modell anwenden
• Workflow-Zyklus
ggf. wiederholen
27
Wichtige Konzepte. ML-Kontext
Episode 1.
ML in .NET Apps
// ML.NET Namespace
using Microsoft.ML;
// STEP 1.
// Create MLContext to be shared across the model
// creation workflow objects
// Set a random seed for repeatable/deterministic
// results across multiple trainings.
var mlContext = new MLContext(seed: 1);
28
Wichtige Konzepte.
Geschäftsobjekt (POCO)
Episode 1.
ML in .NET Apps
public class SentimentIssue
{
[LoadColumn(0)]
public bool Label { get; set; }
[LoadColumn(2)]
public string Text { get; set; }
}
Label rev_id comment year logged_in ns sample split
0
66667
4821
==He is a Rapist!!!!!== Please
edit the article to include this
important fact. Thank You.
Preceding unsigned comment
added by 2015 True article blocked train
1
24297
552
== Are you a female????? ==
mootmootmootmootmootmoo
tmootmootmootmoot 2005 False article random train
Datenauszug:
29
Wichtige Konzepte. Daten
Episode 1.
ML in .NET Apps
// STEP 2: Common data loading configuration
IDataView dataView =
mlContext.Data.LoadFromTextFile<SentimentIssue>(
DataPath, hasHeader: true);
// Traing/Test data split 80% to 20% respectively
TrainTestData trainTestSplit =
mlContext.Data.TrainTestSplit(
dataView, testFraction: 0.2);
IDataView trainingData = trainTestSplit.TrainSet;
IDataView testData = trainTestSplit.TestSet;
30
Wichtige Konzepte. Transformer
Episode 1.
ML in .NET Apps
// STEP 3: Common data process configuration
// with pipeline data transformations
var dataProcessPipeline =
mlContext.Transforms.Text.FeaturizeText(
outputColumnName: "Features",
inputColumnName:
nameof(SentimentIssue.Text));
Text Featurizer
Featurized Text
[0.76, 0.65, 0.44, …]
[0.98, 0.43, 0.54, …]
[0.35, 0.73, 0.46, …]
[0.39, 0, 0.75, …]
Text
==RUDE== Dude, you are rude …
== OK! == IM GOING TO VANDALIZE …
I also found use of the word "humanists” …
Oooooh thank you Mr. DietLime …
31
Wichtige Konzepte.
Trainer & Estimator
Episode 1.
ML in .NET Apps
// STEP 4: Set the training algorithm, then create and
config the modelBuilder
var trainer = mlContext.BinaryClassification
.Trainers.SdcaLogisticRegression(
labelColumnName: "Label",
featureColumnName: "Features");
var trainingPipeline =
dataProcessPipeline.Append(trainer);
32
Wichtige Konzepte.
Modell trainieren und auswerten
Episode 1.
ML in .NET Apps
// STEP 5: Train the model fitting to the DataSet
ITransformer trainedModel =
trainingPipeline.Fit(trainingData);
// STEP 6: Evaluate the model with the test data
// and show accuracy stats
var predictions = trainedModel.Transform(testData);
var metrics =
mlContext.BinaryClassification.Evaluate(
data: predictions,
labelColumnName: "Label",
scoreColumnName: "Score");
33
Wichtige Konzepte.
Modell speichern / laden
Episode 1.
ML in .NET Apps
// STEP 7.1: Save/persist the trained model
// to a .ZIP file
mlContext.Model.Save(
trainedModel, trainingData.Schema, ModelPath);
// STEP 7.2: Load saved Model
DataViewSchema loadedSchema;
var loadedTrainedModel =
mlContext.Model.Load(
ModelPath, out loadedSchema);
34
Wichtige Konzepte.
Run Predictions
Episode 1.
ML in .NET Apps
// TRY IT: Make a single test prediction after loading the
// model from a .ZIP file
SentimentIssue sampleStatement1 =
new SentimentIssue {
Text = "This is a very rude movie" };
// Create prediction engine related
// to the loaded trained model
var predEngine = mlContext.Model.CreatePredictionEngine
<SentimentIssue, SentimentPrediction>(loadedTrainedModel);
// Score 1
var resultprediction1 = predEngine.Predict(sampleStatement1);
Console.WriteLine($"Text: {sampleStatement1.Text} | Prediction:
{(Convert.ToBoolean(resultprediction1.Prediction) ? "Toxic" : "Non
Toxic")} sentiment | Probability of being toxic:
{resultprediction1.Probability} ");
35
Episode 1.
ML in .NET Apps
Episode 1. Stimmungsanalyse
Demo 1.
36
Episode 2.
Agenda
Episode 2.
Automated Machine Learning
(Auto-ML)
37
Episode 2.
Auto-ML
Welcher ML Algorithmus (Trainer)
passt am besten?
38
Welche Hyperparameter
sind richtig / optimal ?
Episode 2.
Auto-ML
39
Episode 2.
Auto-ML
Episode 2. Automated Machine
Learning (Auto-ML)
40
Automated Machine Learning
(Auto-ML)
• Aktuell als Preview-Version verfügbar
• Erstellt automatisch ML Modelle mit am besten
passenden Trainer (Algorithmus) und Einstellungen
• Wird lokal ausgeführt und unterstützt 3 ML
Aufgaben – Regression, Binäre und Multi-
Klassifizierung
• Wird in drei Varianten zur Verfügung gestellt:
• ML.NET Model Builder
• ML.NET CLI
• ML.NET AutoML API (für ISVs)
Mehr auf: aka.ms/dotnetmodelbuilder und aka.ms/mlnet-cli
Episode 2.
Auto-ML
41
Episode 2. Auto-ML
Model Builder
Demo – ML.NET Model Builder
42
Episode 2. Auto-ML
Evaluation Metrics
43
Episode 2. Auto-ML
ML.NET CLI
ML.NET CLI - Installation
Installation via CLI
Installation prüfen
44
Episode 2. Auto-ML
ML.NET CLI
ML.NET CLI – ML Lösung generieren
Derzeit werden folgende ML-Aufgaben von der ML.NET-CLI unterstützt:
• Binärklassifikation
• Multiklassifizierung
• Regression
In Zukunft: Weitere maschinelle Lernaufgaben wie Empfehlung, Ranking,
Anomalie-Erkennung, Clustering
45
Demo – ML.NET CLI
Episode 2. Auto-ML
ML.NET CLI
Anwendungsbeispiel:
mlnet auto-train --task binary-classification --dataset
"..DatawikiDetoxAnnotated40kRows.tsv" --label-column-
name Label --max-exploration-time 20
46
Episode 3.
Agenda
Episode 3.
ML.NET Erweiterung mit
Tensorflow und ONNX
Bibliotheken
Warum hätte man ML.NET
erweitern sollen / müssen?
Frage ans
Publikum
48
Episode 3.
ML.NET Extensions
• Fortgeschrittene DeepLearning Features wie Computer Vision, Speech
Recognition, Natural Language Processing (NLP), Translation etc. mit
Tensorflow / ONNX-Modellen
• Probabilistische Programmierung, Modell-basierte ML (Geschäfts-
/Problem-Modell) mit Infer.NET (nächste Session!)
• Wiederverwendung der vortrainierten Modellen – re-use, customize,
Transfer Learning*
* - „Transfer learning is a machine learning method where a model developed for a
task is reused as the starting point for a model on a second task.”
49
Episode 3.
Open AI Interop
50
Episode 3.
ML.NET Extensions
Episode 3. Demo*
ML.NET Erweiterung mit
Tensorflow und ONNX Bibliotheken
– Beispiel-Projekte unter
TensorFlowEstimator.Solution und
ObjectDection(E2E).Solution
* Es wird den Teilnehmern empfohlen selbst mit den
Beispiel-Lösungen zu „spielen“ ;)
51
Links
1. ML.NET Home: https://dot.net/ml
2. ML.NET Tutorials:
https://dotnet.microsoft.com/learn/machinelearning-ai/ml-
dotnet-get-started-tutorial/next
3. ML.NET Dokumentation: https://docs.microsoft.com/de-
de/dotnet/machine-learning/
4. ML.NET Model Builder: aka.ms/dotnetmodelbuilder
5. ML.NET CLI: aka.ms/mlnet-cli
6. ML.NET 1.0 Code on GitHub:
https://github.com/dotnet/machinelearning/
7. ML.NET Samples on GitHub:
https://github.com/dotnet/machinelearning-samples
8. Blog Cesar De la Torre (PPM ML.NETI):
https://devblogs.microsoft.com/dotnet/author/cesardl/
9. ML.NET Session on YouTube
52
Zusammenfassung
• ML.NET als ein open-source und plattformübergreifendes Framework
für maschinelles Lernen, das speziell für .NET Entwickler gebaut ist.
• Damit kann jeder eigene Machine Learning Modelle bauen, trainieren
und anwenden, ohne vertrautes .NET Eco-System verlassen zu müssen.
• ML.NET lässt typische KI-Aufgaben wie Stimmungsanalyse, Bild-
Klassifizierung, Objekterkennung, Preis- und Verkaufsvorhersage,
Empfehlung, Segmentierung, Betrugsentdeckung uvm. schnell und
einfach lösen.
• Benutzer-spezifische Modelle mit optimalen Parametern können mit
einem brandneuen AutoML-Werkzeug und dem Model Builder
generiert werden (derzeit in Preview).
• Anbindung an andere ML-Frameworks wie z.B. Tensorflow, Infer.NET,
sowie alle andere mit ONNX-Standard – MXNet, PyTorch, Caffe2,
Matlab, Chainer, CNTK , Accord.NET uvm.
• Solide und gut skaliert – wird unter anderem von Bing, Outlook, Excel,
PowerPoint (Design Ideen), PowerBI, Windows 10 (Microsoft Defender)
uvm. verwendet.
53
Vielen Dank! Mykola Dobrochynskyy
Software Factories
www.soft-fact.de
ceo@soft-fact.de
ki19.eventbrite.de
developer-media.de

Weitere ähnliche Inhalte

Ähnlich wie DWX 2019 Session. Machine Learning in .NET

CodeFluent Entities and AppSofa
CodeFluent Entities and AppSofaCodeFluent Entities and AppSofa
CodeFluent Entities and AppSofa
Mykola Dobrochynskyy
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
Ulrich Krause
 
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen AnwendungenJavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
molily
 
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdfThementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
nwilbert
 
Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010
mspgermany
 
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitUI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
Nico Orschel
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
Eduard Hildebrandt
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBR
Alexander Hundt
 
Slideshare AutoEncoder
Slideshare AutoEncoderSlideshare AutoEncoder
Slideshare AutoEncoder
Datamics
 
Machine Learning - Eine Einführung der COMLINE Business Consulting
Machine Learning - Eine Einführung der COMLINE Business ConsultingMachine Learning - Eine Einführung der COMLINE Business Consulting
Machine Learning - Eine Einführung der COMLINE Business Consulting
Christian Guenther
 
JavaFX Real-World Apps
JavaFX Real-World AppsJavaFX Real-World Apps
JavaFX Real-World Apps
Alexander Casall
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
Andreas Schreiber
 
Splunk Webinar: Machine Learning mit Splunk
Splunk Webinar: Machine Learning mit SplunkSplunk Webinar: Machine Learning mit Splunk
Splunk Webinar: Machine Learning mit Splunk
Splunk
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Andreas Schreiber
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
Nico Orschel
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
Angelo Maron
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
Jürg Stuker
 

Ähnlich wie DWX 2019 Session. Machine Learning in .NET (20)

CodeFluent Entities and AppSofa
CodeFluent Entities and AppSofaCodeFluent Entities and AppSofa
CodeFluent Entities and AppSofa
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen AnwendungenJavaScript: Von einfachen Scripten zu komplexen Anwendungen
JavaScript: Von einfachen Scripten zu komplexen Anwendungen
 
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdfThementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
 
20101117 activiti
20101117 activiti20101117 activiti
20101117 activiti
 
Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010
 
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitUI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBR
 
Slideshare AutoEncoder
Slideshare AutoEncoderSlideshare AutoEncoder
Slideshare AutoEncoder
 
Machine Learning - Eine Einführung der COMLINE Business Consulting
Machine Learning - Eine Einführung der COMLINE Business ConsultingMachine Learning - Eine Einführung der COMLINE Business Consulting
Machine Learning - Eine Einführung der COMLINE Business Consulting
 
JavaFX Real-World Apps
JavaFX Real-World AppsJavaFX Real-World Apps
JavaFX Real-World Apps
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
 
Splunk Webinar: Machine Learning mit Splunk
Splunk Webinar: Machine Learning mit SplunkSplunk Webinar: Machine Learning mit Splunk
Splunk Webinar: Machine Learning mit Splunk
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
 
20110223 activiti
20110223 activiti20110223 activiti
20110223 activiti
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 

DWX 2019 Session. Machine Learning in .NET

  • 1. Machine Learning in .NET Das Nicht-Programmierbare “programmieren“! Drei Episoden von Machine Learning mit ML.NET Mykola Dobrochynskyy Software Factories, 2019 ceo@soft-fact.de 1
  • 2. 2 Agenda • Einführung – Machine Learning und ML.NET • Episode 1. ML in .NET Apps integrieren • Episode 2. Automated ML – ML.NET Model-Builder und ML.NET CLI • Episode 3. ML.NET Erweiterung mit Tensorflow und ONNX Bibliotheken
  • 4. Was ist Machine Learning? Frage ans Publikum
  • 5. Das Nicht-Programmierbare „programmieren“ 5 f(x) {Frage ans Publikum Wie man eine Funktion in einem Computer-Programm umsetzt, welche ausgibt, was sie auf dem Bild „sieht“
  • 6. Das neue KI Paradigma – die Programmierung durch Training ersetzen 6 Was ist ML?
  • 7. AI, ML & Deep Learning Ontology 7 Source: www.deeplearningbook.org Was ist ML?
  • 8. Machine Learning - Definition Maschinelles Lernen (ML) ist ein allgemeiner Begriff für die künstliche Generierung von Wissen aus Erfahrung. Ein ML System lernt aus Beispielen und kann nach Abschluss der Lernphase verallgemeinern. D.h. es merkt sich nicht nur die Datenbeispiele, sondern erkennt sie in den gelernten Daten als Regelmäßigkeiten. Definition vom Maschinellen Lernen nach Thomas Mitchell lautet: "A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E". Was ist ML?
  • 9. 9 5 Fragen an ML 1. Ist dies A oder B (C,D,E…)? - Classification 2. Wie viel – oder – wie viele? (Regression) 3. Wie ist dies organisiert? (Clustering) 4. Ist dies merkwürdig? (Anomaly detection) 5. Was soll ich als Nächstes tun? (Reinforcement)
  • 10. 10 ML Fragen 1. – 4. Vier Machine Learning Tasks werden von ML.NET unterstützt – Klassifizierung, Regression, Clustering und Anomalie-Entdeckung
  • 11. Microsoft Machine Learning. Cloud-basierte Optionen 11 Cloudoptionen Funktionsbeschreibung Gebotene Möglichkeiten Azure Machine Learning Service Verwalteter Clouddienst für ML Trainieren, Bereitstellen und Verwalten von Modellen in Azure mithilfe von Python und CLI Azure Machine Learning Studio Visuelle Drag-&-Drop-Oberfläche für ML Erstellen von, Experimentieren mit und Bereitstellen von Modellen mithilfe von vorkonfigurierten Algorithmen (Python und R) Azure Databricks Spark-basierte Analyseplattform Erstellen und Bereitstellen von Modellen und Datenworkflows Azure Cognitive Services Azure-Dienste mit vorkonfigurierten KI- und ML- Modellen Fügen Sie Ihren Apps auf einfache Weise intelligente Features hinzu Azure Data Science Virtual Machine Virtueller Computer mit vorinstallierten Data Science- Tools Entwickeln von ML-Lösungen in einer vorkonfigurierten Umgebung Microsoft ML On-Cloud
  • 12. Microsoft Machine Learning. Lokale Optionen 12 Lokale Optionen Funktionsbeschreibung Gebotene Möglichkeiten SQL Server Machine Learning Services In SQL eingebettete Analyse-Engine Erstellen und Bereitstellen von Modellen innerhalb von SQL Server Microsoft Machine Learning Server Eigenständiger Enterprise-Server für prädiktive Analyse Erstellen und Bereitstellen von Modellen mit R und Python Microsoft ML On-Premise
  • 13. Microsoft Machine Learning. Entwicklungsplattformen & Tools 13 Entwicklungstools Funktionsbeschreibung Gebotene Möglichkeiten ML.NET Plattform-übergreifendes Open-Source Machine Learning Framework Entwickeln von ML-Lösungen für .NET- Anwendungen mit ML-API Infer.NET Plattformübergreifendes Open-Source Machine Learning Framework (wird in ML.NET integriert) Bayessche Inferenz in graphischen Modellen und probabilistische Programmierung mit C# auf .NET und .NET Core Plattformen Das Microsoft Cognitive Toolkit (CNTK) ist ein Open-Source-Bibliothek für Deep Learning. Erlaubt es populäre Deep Learning Modelle wie z.B. Multi-layer Perceptrons (MLPs), Convolutional Neural Networks (CNNs), Recurrent Neural Networks (RNNs/LSTMs) zu realisieren und kombinieren. Windows AI / ML Windows 10 Machine Learning Plattform Auswerten von trainierten ONNX-Modellen auf einem Windows 10-Gerät Microsoft ML Libs & Tools
  • 15. Warum (aus .NET perspektive) reichen “konventionelle” Mittel wie ML Dienste oder mit Python erstellte ML Modelle manchmal nicht? Frage ans Publikum
  • 16. ML.NET Merkmale Ein Machine Learning Framework gemacht für .NET Entwickler .NET Skills wiederverwenden Solide und skalierbar Custom Models, Auto ML, Builder / CLI Erweiterungen & Anbindungen .NET Core basiert Open-source, erweiterbar
  • 17. ML.NET 1.0 (Rel. 06.05.2019) Get started: dot.net/ml GitHub: github.com/dotnet/machinelearning Ein Open-Source Framework für Benutzer- spezifische Machine Learning Modelle
  • 18. 18 ML.NET Framework Ein Framework für Benutzer-spezifische Machine Learning Modelle
  • 20. 20 Pre-built vs. Custom-Models Benutzer-spezifisches (custom) Modell mit ML.NET See/Show Demo-Project: SentimentAnalysisConsoleApp
  • 21. 21 Cognitive Services vs. ML.NET Custom Model Test-Bild: dog1.jpg Vorhersage von Azure Machine Vision API Vorhersage von ML.NET Custom Model s. Demo-Projekt TensorFlowEstimator
  • 22. 22 Was kann ich mit ML.NET machen
  • 23. 23 Episode 1. Agenda Episode 1. Stimmungsanalyse (aka Sentiment Analysis)
  • 24. 24 2 - Comment 0 - Label (Toxic) == Are you a female????? == mootmootmootmootmootmootmootmootmootmo ot 1 :::::Good enough for me; thanks for the info. I'll check the Sheffield references later. 0 There's probably at least a website somewhere that you could cite. 0 SUZANNE IS A LOSER!!! 1 Features (input) Label (output) Stimmungsanalyse. Features & Labels Episode 1. ML in .NET Apps
  • 25. 25 Stimmungsanalyse. Analyse der ML-Aufgabe Episode 1. ML in .NET Apps Fazit: eine Aufgabe der binären Klassifizierung Ist es A or B ? Fragestellung: Toxischer Inhalt Ja(1) oder Nein (0)
  • 26. 26 Machine Learning Workflow Episode 1. ML in .NET Apps Daten aufbereiten: • Laden • Feature extrahieren Build & Train: • Modell trainieren • Modell auswerten Ausführen: • Modell anwenden • Workflow-Zyklus ggf. wiederholen
  • 27. 27 Wichtige Konzepte. ML-Kontext Episode 1. ML in .NET Apps // ML.NET Namespace using Microsoft.ML; // STEP 1. // Create MLContext to be shared across the model // creation workflow objects // Set a random seed for repeatable/deterministic // results across multiple trainings. var mlContext = new MLContext(seed: 1);
  • 28. 28 Wichtige Konzepte. Geschäftsobjekt (POCO) Episode 1. ML in .NET Apps public class SentimentIssue { [LoadColumn(0)] public bool Label { get; set; } [LoadColumn(2)] public string Text { get; set; } } Label rev_id comment year logged_in ns sample split 0 66667 4821 ==He is a Rapist!!!!!== Please edit the article to include this important fact. Thank You. Preceding unsigned comment added by 2015 True article blocked train 1 24297 552 == Are you a female????? == mootmootmootmootmootmoo tmootmootmootmoot 2005 False article random train Datenauszug:
  • 29. 29 Wichtige Konzepte. Daten Episode 1. ML in .NET Apps // STEP 2: Common data loading configuration IDataView dataView = mlContext.Data.LoadFromTextFile<SentimentIssue>( DataPath, hasHeader: true); // Traing/Test data split 80% to 20% respectively TrainTestData trainTestSplit = mlContext.Data.TrainTestSplit( dataView, testFraction: 0.2); IDataView trainingData = trainTestSplit.TrainSet; IDataView testData = trainTestSplit.TestSet;
  • 30. 30 Wichtige Konzepte. Transformer Episode 1. ML in .NET Apps // STEP 3: Common data process configuration // with pipeline data transformations var dataProcessPipeline = mlContext.Transforms.Text.FeaturizeText( outputColumnName: "Features", inputColumnName: nameof(SentimentIssue.Text)); Text Featurizer Featurized Text [0.76, 0.65, 0.44, …] [0.98, 0.43, 0.54, …] [0.35, 0.73, 0.46, …] [0.39, 0, 0.75, …] Text ==RUDE== Dude, you are rude … == OK! == IM GOING TO VANDALIZE … I also found use of the word "humanists” … Oooooh thank you Mr. DietLime …
  • 31. 31 Wichtige Konzepte. Trainer & Estimator Episode 1. ML in .NET Apps // STEP 4: Set the training algorithm, then create and config the modelBuilder var trainer = mlContext.BinaryClassification .Trainers.SdcaLogisticRegression( labelColumnName: "Label", featureColumnName: "Features"); var trainingPipeline = dataProcessPipeline.Append(trainer);
  • 32. 32 Wichtige Konzepte. Modell trainieren und auswerten Episode 1. ML in .NET Apps // STEP 5: Train the model fitting to the DataSet ITransformer trainedModel = trainingPipeline.Fit(trainingData); // STEP 6: Evaluate the model with the test data // and show accuracy stats var predictions = trainedModel.Transform(testData); var metrics = mlContext.BinaryClassification.Evaluate( data: predictions, labelColumnName: "Label", scoreColumnName: "Score");
  • 33. 33 Wichtige Konzepte. Modell speichern / laden Episode 1. ML in .NET Apps // STEP 7.1: Save/persist the trained model // to a .ZIP file mlContext.Model.Save( trainedModel, trainingData.Schema, ModelPath); // STEP 7.2: Load saved Model DataViewSchema loadedSchema; var loadedTrainedModel = mlContext.Model.Load( ModelPath, out loadedSchema);
  • 34. 34 Wichtige Konzepte. Run Predictions Episode 1. ML in .NET Apps // TRY IT: Make a single test prediction after loading the // model from a .ZIP file SentimentIssue sampleStatement1 = new SentimentIssue { Text = "This is a very rude movie" }; // Create prediction engine related // to the loaded trained model var predEngine = mlContext.Model.CreatePredictionEngine <SentimentIssue, SentimentPrediction>(loadedTrainedModel); // Score 1 var resultprediction1 = predEngine.Predict(sampleStatement1); Console.WriteLine($"Text: {sampleStatement1.Text} | Prediction: {(Convert.ToBoolean(resultprediction1.Prediction) ? "Toxic" : "Non Toxic")} sentiment | Probability of being toxic: {resultprediction1.Probability} ");
  • 35. 35 Episode 1. ML in .NET Apps Episode 1. Stimmungsanalyse Demo 1.
  • 36. 36 Episode 2. Agenda Episode 2. Automated Machine Learning (Auto-ML)
  • 37. 37 Episode 2. Auto-ML Welcher ML Algorithmus (Trainer) passt am besten?
  • 38. 38 Welche Hyperparameter sind richtig / optimal ? Episode 2. Auto-ML
  • 39. 39 Episode 2. Auto-ML Episode 2. Automated Machine Learning (Auto-ML)
  • 40. 40 Automated Machine Learning (Auto-ML) • Aktuell als Preview-Version verfügbar • Erstellt automatisch ML Modelle mit am besten passenden Trainer (Algorithmus) und Einstellungen • Wird lokal ausgeführt und unterstützt 3 ML Aufgaben – Regression, Binäre und Multi- Klassifizierung • Wird in drei Varianten zur Verfügung gestellt: • ML.NET Model Builder • ML.NET CLI • ML.NET AutoML API (für ISVs) Mehr auf: aka.ms/dotnetmodelbuilder und aka.ms/mlnet-cli Episode 2. Auto-ML
  • 41. 41 Episode 2. Auto-ML Model Builder Demo – ML.NET Model Builder
  • 43. 43 Episode 2. Auto-ML ML.NET CLI ML.NET CLI - Installation Installation via CLI Installation prüfen
  • 44. 44 Episode 2. Auto-ML ML.NET CLI ML.NET CLI – ML Lösung generieren Derzeit werden folgende ML-Aufgaben von der ML.NET-CLI unterstützt: • Binärklassifikation • Multiklassifizierung • Regression In Zukunft: Weitere maschinelle Lernaufgaben wie Empfehlung, Ranking, Anomalie-Erkennung, Clustering
  • 45. 45 Demo – ML.NET CLI Episode 2. Auto-ML ML.NET CLI Anwendungsbeispiel: mlnet auto-train --task binary-classification --dataset "..DatawikiDetoxAnnotated40kRows.tsv" --label-column- name Label --max-exploration-time 20
  • 46. 46 Episode 3. Agenda Episode 3. ML.NET Erweiterung mit Tensorflow und ONNX Bibliotheken
  • 47. Warum hätte man ML.NET erweitern sollen / müssen? Frage ans Publikum
  • 48. 48 Episode 3. ML.NET Extensions • Fortgeschrittene DeepLearning Features wie Computer Vision, Speech Recognition, Natural Language Processing (NLP), Translation etc. mit Tensorflow / ONNX-Modellen • Probabilistische Programmierung, Modell-basierte ML (Geschäfts- /Problem-Modell) mit Infer.NET (nächste Session!) • Wiederverwendung der vortrainierten Modellen – re-use, customize, Transfer Learning* * - „Transfer learning is a machine learning method where a model developed for a task is reused as the starting point for a model on a second task.”
  • 50. 50 Episode 3. ML.NET Extensions Episode 3. Demo* ML.NET Erweiterung mit Tensorflow und ONNX Bibliotheken – Beispiel-Projekte unter TensorFlowEstimator.Solution und ObjectDection(E2E).Solution * Es wird den Teilnehmern empfohlen selbst mit den Beispiel-Lösungen zu „spielen“ ;)
  • 51. 51 Links 1. ML.NET Home: https://dot.net/ml 2. ML.NET Tutorials: https://dotnet.microsoft.com/learn/machinelearning-ai/ml- dotnet-get-started-tutorial/next 3. ML.NET Dokumentation: https://docs.microsoft.com/de- de/dotnet/machine-learning/ 4. ML.NET Model Builder: aka.ms/dotnetmodelbuilder 5. ML.NET CLI: aka.ms/mlnet-cli 6. ML.NET 1.0 Code on GitHub: https://github.com/dotnet/machinelearning/ 7. ML.NET Samples on GitHub: https://github.com/dotnet/machinelearning-samples 8. Blog Cesar De la Torre (PPM ML.NETI): https://devblogs.microsoft.com/dotnet/author/cesardl/ 9. ML.NET Session on YouTube
  • 52. 52 Zusammenfassung • ML.NET als ein open-source und plattformübergreifendes Framework für maschinelles Lernen, das speziell für .NET Entwickler gebaut ist. • Damit kann jeder eigene Machine Learning Modelle bauen, trainieren und anwenden, ohne vertrautes .NET Eco-System verlassen zu müssen. • ML.NET lässt typische KI-Aufgaben wie Stimmungsanalyse, Bild- Klassifizierung, Objekterkennung, Preis- und Verkaufsvorhersage, Empfehlung, Segmentierung, Betrugsentdeckung uvm. schnell und einfach lösen. • Benutzer-spezifische Modelle mit optimalen Parametern können mit einem brandneuen AutoML-Werkzeug und dem Model Builder generiert werden (derzeit in Preview). • Anbindung an andere ML-Frameworks wie z.B. Tensorflow, Infer.NET, sowie alle andere mit ONNX-Standard – MXNet, PyTorch, Caffe2, Matlab, Chainer, CNTK , Accord.NET uvm. • Solide und gut skaliert – wird unter anderem von Bing, Outlook, Excel, PowerPoint (Design Ideen), PowerBI, Windows 10 (Microsoft Defender) uvm. verwendet.
  • 53. 53 Vielen Dank! Mykola Dobrochynskyy Software Factories www.soft-fact.de ceo@soft-fact.de ki19.eventbrite.de developer-media.de