SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Mit Infer.NET intelligente
Software bauen
“Nicht definierbare definieren!”
10 Schritte in Richtung intelligenter Software
Mykola Dobrochynskyy
Software Factories, 2019
ceo@soft-fact.de
1
2
Agenda
• Schritt 1. Einführung
• Schritt 2. Modell-basiertes Machine
Learning
• Schritt 3. Ungewissheit
• Schritt 4. Wahrscheinlichkeiten oder dem
Täter auf der Spur
• Schritt 5. Münzenwurf-Spiele
• Schritt 6. Würfelspiele
• Schritt 7. Monty-Hall-Problem
• Schritt 8. Wie Infer.NET funktioniert
• Schritt 9. Unterstützte Modelle
• Schritt 10. Fazit
3
Agenda
Schritt 1. Einführung
Microsoft Machine Learning.
Cloud-basierte Optionen
4
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
5
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
6
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
7
Microsoft 09.10.2018, 10:20 Uhr
Infer.NET: Machine Learning Framework wird Open Source
Das Machine Learning Framework Infer.NET von Microsoft
wird als Open Source veröffentlicht.
Geschichte
Infer.NET Projekt wird bei Microsoft Research in Cambridge
(GB) am 15 Okt. 2018 gestartet.
… und 10 Jahre später als Open-Source Projekt und Teil von
ML.NET veröffentlicht.
8
Agenda
Schritt 2. Modell-basiertes
Machine Learning (MBML)
9
Klassische ML
Algorithmen
logistic regression
Deep Learning
principal components
Boltzmann machines
SVMs (support vector
machines)
HMM
Gaussian mixture
Kalman filter
deep neural networks – FFN,
RNN/LSTM, GAN
decision trees
RVM
linear regression
Radial basis functions
Gaussian process
factor analysis
Markov random field
K-means clustering
kernel PCA
random forest
Wie unterscheidet sich ein
“klassisches” ML-Modell von einem
MBML-Modell?
Frage ans
Publikum
11
Schritt 2.
MBML
• Ziel: Ein einheitliches Framework, das die Erstellung einer breiten
Palette von maßgeschneiderten Modellen unterstützt.
• Algorithmus-basiert (klassisch): "Wie kann ich mein Problem zu
einem Standard-Algorithmus zuordnen"? (Als Modell wird
passender Algorithmus ggf. mit antrainierten Parametern
verstanden)
• Modellbasiert (MBML): "Was ist das Modell, das mein Problem
darstellt"?
Modell-basiertes Machine Learning
12
Schritt 2.
MBML
Einige potentielle Vorteile von
MBML
• Optimierte Modelle Für jede neue Anwendung
• Transparente Funktionalität
- Modelle, als kompakter C# Code ausgedrückt
- Sammlung von Modell-Buildern
• Trennung des MBML-Modell vom Trainings-
/Inferenzcode
• Neue Team-Mitglieder, die Modellierung-
Umgebung erlernen produzieren "richtigen Code"
automatisch
13
Schritt 2.
MBML
Einige potentielle Vorteile von
MBML
• Optimierte Modelle Für jede neue Anwendung
• Transparente Funktionalität
- Modelle, als kompakter C# Code ausgedrückt
- Sammlung von Modell-Buildern
• Trennung des MBML-Modell vom Trainings-
/Inferenzcode
• Neue Team-Mitglieder, die Modellierung-
Umgebung erlernen produzieren "richtigen Code"
automatisch
14
Schritt 2.
MBML
Intelligente Software
Player skill Filmeinstellungen Wörter
Kann durch ein Modell beschrieben werden
Spielergebnis TinteRatings
Ziel: Software, die sich anpassen, lernen
und begründen kann
15
Schritt 2.
MBML
Intelligente Software
Ziel: Software, die sich anpassen, lernen
und begründen kann
Spielergebnis TinteRatings
Argumentation
rückwärts
Player skill Filmeinstellungen Wörter
16
Agenda
Schritt 3. Ungewissheit
„I think it is much more interesting to live not knowing,
than have answers which might be wrong“
R. Feynman about Ucertainty of Knowing
17
Schritt 3.
Ungewissheit
Mit Ungewissheit handeln
• Wir sind unsicher über die Fähigkeit
eines Spielers (s. vorletzte Folie).
• Jedes Ergebnis liefert relevante
Informationen, aber wir sind nie ganz
sicher
• Wie können wir mit den Unsicherheiten
grundsätzlich rechnen?
18
Schritt 3.
Ungewissheit
Ungewissheit ist überall
• Welchen Film sollte der Benutzer als
nächstes ansehen?
• Welches Wort hat der Benutzer
geschrieben?
• Was hat der Benutzer gesagt?
• Welche Webseite versucht der Benutzer zu
finden?
• Auf welchen Link klickt der Nutzer?
• Welche Art von Produkt möchte der
Benutzer kaufen?
• Welche Geste macht der Benutzer?
• Und so weiter und so fort ...
19
Agenda
Schritt 4. Wahrscheinlichkeiten
oder dem Täter auf der Spur
20
Schritt 4.
Wahrscheinlichkeiten
oder dem Täter auf der Spur
Wer hat der Schatz gestohlen?
21
Schritt 4.
Wahrscheinlichkeiten
oder dem Täter auf der Spur
Wer hat der Schatz gestohlen?
Prior-Verteilung
0,3 0,7
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
P(Täter)
Krimi-Fall: Täter Prior-Verteilung
Museumsdirektor Wächetr
22
Schritt 4.
Wahrscheinlichkeiten
oder dem Täter auf der Spur
Wer hat der Schatz gestohlen?
Bedingte Verteilungen
23
Schritt 4.
Wahrscheinlichkeiten
oder dem Täter auf der Spur
24
Schritt 4.
Wahrscheinlichkeiten
oder dem Täter auf der Spur
Wer hat der Schatz gestohlen?
Rand-Verteilungen
25
Schritt 4.
Wahrscheinlichkeiten
oder dem Täter auf der Spur
Wer hat der Schatz gestohlen?
Täter-Ermittlung
Beobachtung: Nur Direktors PKW hat das Museumsgelände verlassen
P(Täter= Direktor | Wagen = Dir.-privat) = P(Wagen=Dir.-privat | Täter=Direktor) * P(Täter=Direktor) / P(Wagen = Dir.-privat)
= 0,7 * 0,3 / 0,245 = 0,857 (85,7%)
26
Schritt 4.
Wahrscheinlichkeiten
oder dem Täter auf der Spur
Ermittlungs-Formel allgemein.
Satz von Bayes
P(Täter | Wagen) = P(Wagen | Täter) * P(Täter) / P(Wagen)
Satz von Bayes
Der Satz von Bayes (auch als Formel von Bayes oder Bayes-Theorem bekannt) ist ein mathematischer
Satz aus der Wahrscheinlichkeitstheorie, der die Berechnung bedingter Wahrscheinlichkeiten
beschreibt. Er ist nach dem englischen Mathematiker Thomas Bayes benannt, der ihn erstmals in
einem Spezialfall in der 1763 veröffentlichten Abhandlung "An Essay Towards Solving a Problem in the
Doctrine of Chances" beschrieb.
Für zwei Ereignisse A und B mit einer Wahrscheinlichkeit P(B) > 0 lässt sich die Wahrscheinlichkeit von
A unter der Bedingung, dass B eingetreten ist – P(A|B), durch die Wahrscheinlichkeit von B unter der
Bedingung, dass A eingetreten ist – P(B|A), wie folgt errechnen:
P(A|B) = P(B|A) * P(A) / P(B)
dabei sind P(A) und P(B) die A-priori (unbedingte) Wahrscheinlichkeiten der jeweiligen Ereignissen A
und B.
Bayes-Satz erlaubt es die Schlussfolgerungen umzukehren. Man geht von einem bekannten bedingten
Ereignis mit einer Wahrscheinlichkeit P(B|A) aus, das beobachtet, gemessen usw. werden kann und
errechnet mit Bayes-Formel die Wahrscheinlichkeit des unbekannten bedingten Ereignisses P(A|B). Zum
Beispiel man möchte die Wahrscheinlichkeit der Schwangerschaft ermitteln, nachdem man ein
Schwangerschaft-Schnelltest durchgeführt (beobachtet) hat.
Wenn „Täter“ als „A“ und „Wagen“ als „B“ bezeichnen würde bekommt man
einen Bayes-Satz.
27
Schritt 4.
Wahrscheinlichkeiten
Wahrscheinlichkeit-Features
• Begrenzung der unendlichen Anzahl von Versuchen
• Quantifizierung der Ungewissheit
60% 40%
28
Schritt 5. Demo1.
Münzenwurf-Spiel.
“Direkte Inferenz”
Schritt 5. Münzenwurf-Spiele.
Demo 1.
using Microsoft.ML.Probabilistic.Models;
using Microsoft.ML.Probabilistic.Distributions;
…
private static void Experiment_1()
{
// PM erstellen
Variable<bool> ersteMünzeWurf = Variable.Bernoulli(0.5);
Variable<bool> zweiteMünzeWurf = Variable.Bernoulli(0.5);
Variable<bool> beideMünzenWurf =
ersteMünzeWurf & zweiteMünzeWurf;
// Inferenz ausführen
Bernoulli ergebnis = engine.Infer<Bernoulli>(beideMünzenWurf);
double beideMünzenZeigenKöpfe = ergebnis.GetProbTrue();
Console.WriteLine("Die Wahrscheinlichkeit - beide Münzen " +
"zeigen Köpfe: {0}", beideMünzenZeigenKöpfe);
….
}
29
Schritt 5. Demo 1.
Münzenwurf-Spiel.
“Rückschluss”
Schritt 5. Münzenwurf-Spiele.
Demo 1.
using Microsoft.ML.Probabilistic.Models;
using Microsoft.ML.Probabilistic.Distributions;
…
private static void Experiment_1()
{
// PM erstellen
Variable<bool> ersteMünzeWurf = Variable.Bernoulli(0.5);
Variable<bool> zweiteMünzeWurf = Variable.Bernoulli(0.5);
Variable<bool> beideMünzenWurf =
ersteMünzeWurf & zweiteMünzeWurf;
// Beobachtung: beide Münzen zeigen niemals Kopf gleichzeitig
beideMünzenWurf.ObservedValue = false;
Bernoulli ergebnis2 =
engine.Infer<Bernoulli>(beideMünzenWurf);
Bernoulli ergebnis3 =
engine.Infer<Bernoulli>(ersteMünzeWurf);
Console.WriteLine("Die Wahrscheinlichkeit - beide Münzen
zeigen Köpfe: {0}", ergebnis2.GetProbTrue());
Console.WriteLine("Erste Münze zeigt Kopf: {0}",
ergebnis3.GetProbTrue());
}
30
Schritt 6. Demo 2.
Würfelspiele
Schritt 6. Würfelspiele.
Demo 2.
// Wahrscheinlichkeit von 6 Würfelaugen ist 1 zu 6 = 1/6 ca 0,17
double erfolgWurfel = 0.17;
// PM erstellen
Variable<bool> ersterWürfelWurf = Variable.Bernoulli(erfolgWurfel);
Variable<bool> zweiterWürfelWurf = Variable.Bernoulli(erfolgWurfel);
Variable<bool> dritterWürfelWurf = Variable.Bernoulli(erfolgWurfel);
Variable<bool> alleWürfelWurf =
ersterWürfelWurf & zweiterWürfelWurf & dritterWürfelWurf;
// Inferenz-Engine (IE) erstellen
InferenceEngine engine = new InferenceEngine();
#if SHOW_MODEL
engine.ShowFactorGraph = true; // PM visualisieren
#endif
// Inferenz ausführen - alle Würfel zeigen 6 Augen
Bernoulli ergebnis1 = engine.Infer<Bernoulli>(alleWürfelWurf);
double alleWürfelZeigenSechs = ergebnis1.GetProbTrue();
Console.WriteLine("Die Wahrscheinlichkeit, dass alle Würfel "6"
zeigen, ist: {0}", alleWürfelZeigenSechs);
31
Schritt 7. Monty-Hall-Problem.
Demo 3.
Schritt 7. Demo 3.
Monty-Hall-Problem
Video-Clip anschauen
32
Schritt 7. Monty-Hall-Problem.
Demo 3.
Schritt 7. Demo 3.
Monty-Hall-Problem
33
Schritt 8.
Schritt 8. Wie Infer.NET
funktioniert
34
Schritt 8.
Infer.NET
Workflow
Wie Infer.NET funktioniert
35
Agenda
Schritt 9. Unterstützte Modelle
36
Schritt 9.
Infer.NET Modelle
Unterstützte Modelle
• Mixture models
• Factor analysis / PCA / ICA
• Logistic regression
• Discrete Bayesian networks
• Hidden Markov models
• Ranking models
• Kalman filters
• Hierarchical models
37
Schritt 10. Fazit.
Schritt 10. Fazit
38
Schritt 10. Links
• Infer.NET. Hauptseite:
https://dotnet.github.io/infer/default.html
• Infer.NET. Einführung:
https://dotnet.github.io/infer/InferNet_Intro.pdf
• Infer.NET. Einführung in die Grundlagen von Infer.NET-
Programmierung:
https://dotnet.github.io/infer/InferNet101.pdf
• Infer.NET. User Guide:
https://dotnet.github.io/infer/userguide
• Infer.NET. Open-source Quelle, Doku, Tutorials und Code-
Beispiele. GitHub.com: https://github.com/dotnet/infer
• Infer.NET. Code-Beispiele zum aktuellen Artikel:
https://github.com/softfactories/InferNET_Demos
• J. Winn, C.M. Bishop. Model-Based Machine Learning (Early
Access): http://mbmlbook.com
• Infer.NET auf Microsoft Research:
https://www.microsoft.com/en-us/research/project/infernet/
• M. Dobrochynskyy. Machine Learning mit Infer.NET,
dotnetpro 2019/5-6:
https://www.dotnetpro.de/autor/mykola-dobrochynskyy-
1100310.html
39
Schritt 10.
Zusatzlinks (1)
• Infer.NET. Variable types and their distributions:
https://dotnet.github.io/infer/userguide/Variable%20types%20a
nd%20their%20distributions.html
• Infer.NET. Open-source Ankündigung. Microsoft Blog:
https://www.microsoft.com/en-us/research/blog/the-microsoft-
infer-net-machine-learning-framework-goes-open-source/
• Bayessche Inferenz (Schlussfolgerung). Wikipedia.org:
http://en.wikipedia.org/wiki/Bayesian_inference
• Bayesian Networks (Bayes-Netzwerke). Wikipedia.org:
https://en.wikipedia.org/wiki/Bayesian_network
• Bayessche_Statistik. Wikipedia.org:
https://de.wikipedia.org/wiki/Bayessche_Statistik
• Satz_von_Bayes. Wikipedia.org:
https://de.wikipedia.org/wiki/Satz_von_Bayes
• David J.C. MacKay. Information Theory, Inference, and Learning
Algorithms. Cambridge University Press 2003:
http://www.inference.phy.cam.ac.uk/mackay/itila/book.html
• TrueSkill Ranking System. XBox Live. Microsoft Research:
http://research.microsoft.com/trueskill/
• Infer.NET NuGet Packages:
https://www.nuget.org/packages?q=Microsoft.ML.Probabilisti
• Monty-Hall- oder Ziegen-Problem. Wikipedia.org:
https://de.wikipedia.org/wiki/Ziegenproblem
40
Schritt 10.
Zusatzlinks (2)
• Infer.NET: Building Software with Intelligence (PDC Präsentation):
https://channel9.msdn.com/Events/PDC/PDC09/VTL03
• Wahrscheinlichkeitsverteilung. Wikipedia.org:
https://de.wikipedia.org/wiki/Wahrscheinlichkeitsma%C3%9F
• Gauß- oder Normalverteilung. Wikipedia.org: https://de.wikipedia.org/wiki/Normalverteilung
• Gammaverteilung. Wikipedia.org: https://de.wikipedia.org/wiki/Gammaverteilung
• Bernoulli-Verteilung. Wikipedia.org: https://de.wikipedia.org/wiki/Bernoulli-Verteilung
• A-priori-Verteilung. Wikipedia.org: https://de.wikipedia.org/wiki/A-priori-Verteilung
• A-posteriori-Verteilung. Wikipedia.org: https://de.wikipedia.org/wiki/A-posteriori-
Wahrscheinlichkeit#A-posteriori-Verteilung
• Bedingte Verteilung. Wikipedia.org:
https://de.wikipedia.org/wiki/Regul%C3%A4re_bedingte_Verteilung
• Bedingte Wahrscheinlichkeit. Wikipedia.org:
https://de.wikipedia.org/wiki/Bedingte_Wahrscheinlichkeit
• Joint probability distribution. Wikipedia.org:
https://en.wikipedia.org/wiki/Joint_probability_distribution
• Mehrdinmensionale (multivariate) Normalverteilung.
https://de.wikipedia.org/wiki/Mehrdimensionale_Normalverteilung
• Randverteilung. Wikipedia.org: https://de.wikipedia.org/wiki/Randverteilung
• A-priori-Wahrscheinlichkeit. Wikipedia.org:
• Deep Learning. Wikipedia.org: https://de.wikipedia.org/wiki/Deep_Learning
• Probabilistische Programmierung. Wikipedia.org:
https://en.wikipedia.org/wiki/Probabilistic_programming_language
• Sprachen für probabilistische Programmierung: http://probabilistic-programming.org/wiki/Home
• Edward – Tensorflow basierte Python-Bibliothek für Inferenz und Probabilistische Programmierung:
http://edwardlib.org/
• Graphviz (Graph-Visualisierung Software): https://graphviz.gitlab.io/download/
• Ockhams Rasiermesser. Wikipedia.org: https://de.wikipedia.org/wiki/Ockhams_Rasiermesser
• F. Laumann. How Bayesian methods embody Occam’s razor: https://medium.com/neuralspace/how-
bayesian-methods-embody-occams-razor-43f3d0253137
• ML.NET – Microsoft Machine Learning Framework für .NET: https://dot.net/ml
• Online Machine Learning. Wikipedia.org: https://en.wikipedia.org/wiki/Online_machine_learning
• Hyperparameter (Bayessche Statistik): https://en.wikipedia.org/wiki/Hyperparameter
• Zufallsvariable. Wikipedia.org: https://de.wikipedia.org/wiki/Zufallsvariable
• Transponierte Matrix. Wikipedia.org: https://de.wikipedia.org/wiki/Transponierte_Matrix
• Münzwurf. Wikipedia.org: https://de.wikipedia.org/wiki/M%C3%BCnzwurf
41
Schritt 10.
Zusammenfassung
• Infer.NET ist ein in C# geschriebenes open-source
Framework, das die Bayes'sche Inferenz mittels
probabilistischen Programmierens unter .NET ausführen
lässt.
• Es bietet moderne Algorithmen und Routinen, um
intelligente Features in die Apps einzubauen. Infer.NET
hat hervorragende Merkmale, die dieses Framework
auszeichnen - verschiedene Inferenz-Algorithmen,
perfekte Skalierbarkeit, Plattform-Unabhängigkeit und
Erweiterbarkeit.
• Mit modellbasiertem Ansatz lässt sich das
Domänenwissen in ein Modell integrieren. Anstatt ein
Problem einem bereits vorhandenen Lernalgorithmus
zuzuordnen, wird es direkt aus jeweiligem Modell ein
maßgeschneiderte ML-Algorithmus erstellt und als C#-
Code generiert.
• Anwendungsszenarien - Spam- und Daten-Eingabe
Prüfung/Hervorsage, Programm-Verifikation,
Personalisierung, Empfehlung, Rating, Beurteilung uvm.
42
Vielen Dank! Mykola Dobrochynskyy
Software Factories
www.soft-fact.de
ceo@soft-fact.de
ki19.eventbrite.de
developer-media.de

Mais conteúdo relacionado

Destaque

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destaque (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

DWX 2019 Session. Mit Infer.NET intelligente Software bauen

  • 1. Mit Infer.NET intelligente Software bauen “Nicht definierbare definieren!” 10 Schritte in Richtung intelligenter Software Mykola Dobrochynskyy Software Factories, 2019 ceo@soft-fact.de 1
  • 2. 2 Agenda • Schritt 1. Einführung • Schritt 2. Modell-basiertes Machine Learning • Schritt 3. Ungewissheit • Schritt 4. Wahrscheinlichkeiten oder dem Täter auf der Spur • Schritt 5. Münzenwurf-Spiele • Schritt 6. Würfelspiele • Schritt 7. Monty-Hall-Problem • Schritt 8. Wie Infer.NET funktioniert • Schritt 9. Unterstützte Modelle • Schritt 10. Fazit
  • 4. Microsoft Machine Learning. Cloud-basierte Optionen 4 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
  • 5. Microsoft Machine Learning. Lokale Optionen 5 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
  • 6. Microsoft Machine Learning. Entwicklungsplattformen & Tools 6 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
  • 7. 7 Microsoft 09.10.2018, 10:20 Uhr Infer.NET: Machine Learning Framework wird Open Source Das Machine Learning Framework Infer.NET von Microsoft wird als Open Source veröffentlicht. Geschichte Infer.NET Projekt wird bei Microsoft Research in Cambridge (GB) am 15 Okt. 2018 gestartet. … und 10 Jahre später als Open-Source Projekt und Teil von ML.NET veröffentlicht.
  • 9. 9 Klassische ML Algorithmen logistic regression Deep Learning principal components Boltzmann machines SVMs (support vector machines) HMM Gaussian mixture Kalman filter deep neural networks – FFN, RNN/LSTM, GAN decision trees RVM linear regression Radial basis functions Gaussian process factor analysis Markov random field K-means clustering kernel PCA random forest
  • 10. Wie unterscheidet sich ein “klassisches” ML-Modell von einem MBML-Modell? Frage ans Publikum
  • 11. 11 Schritt 2. MBML • Ziel: Ein einheitliches Framework, das die Erstellung einer breiten Palette von maßgeschneiderten Modellen unterstützt. • Algorithmus-basiert (klassisch): "Wie kann ich mein Problem zu einem Standard-Algorithmus zuordnen"? (Als Modell wird passender Algorithmus ggf. mit antrainierten Parametern verstanden) • Modellbasiert (MBML): "Was ist das Modell, das mein Problem darstellt"? Modell-basiertes Machine Learning
  • 12. 12 Schritt 2. MBML Einige potentielle Vorteile von MBML • Optimierte Modelle Für jede neue Anwendung • Transparente Funktionalität - Modelle, als kompakter C# Code ausgedrückt - Sammlung von Modell-Buildern • Trennung des MBML-Modell vom Trainings- /Inferenzcode • Neue Team-Mitglieder, die Modellierung- Umgebung erlernen produzieren "richtigen Code" automatisch
  • 13. 13 Schritt 2. MBML Einige potentielle Vorteile von MBML • Optimierte Modelle Für jede neue Anwendung • Transparente Funktionalität - Modelle, als kompakter C# Code ausgedrückt - Sammlung von Modell-Buildern • Trennung des MBML-Modell vom Trainings- /Inferenzcode • Neue Team-Mitglieder, die Modellierung- Umgebung erlernen produzieren "richtigen Code" automatisch
  • 14. 14 Schritt 2. MBML Intelligente Software Player skill Filmeinstellungen Wörter Kann durch ein Modell beschrieben werden Spielergebnis TinteRatings Ziel: Software, die sich anpassen, lernen und begründen kann
  • 15. 15 Schritt 2. MBML Intelligente Software Ziel: Software, die sich anpassen, lernen und begründen kann Spielergebnis TinteRatings Argumentation rückwärts Player skill Filmeinstellungen Wörter
  • 16. 16 Agenda Schritt 3. Ungewissheit „I think it is much more interesting to live not knowing, than have answers which might be wrong“ R. Feynman about Ucertainty of Knowing
  • 17. 17 Schritt 3. Ungewissheit Mit Ungewissheit handeln • Wir sind unsicher über die Fähigkeit eines Spielers (s. vorletzte Folie). • Jedes Ergebnis liefert relevante Informationen, aber wir sind nie ganz sicher • Wie können wir mit den Unsicherheiten grundsätzlich rechnen?
  • 18. 18 Schritt 3. Ungewissheit Ungewissheit ist überall • Welchen Film sollte der Benutzer als nächstes ansehen? • Welches Wort hat der Benutzer geschrieben? • Was hat der Benutzer gesagt? • Welche Webseite versucht der Benutzer zu finden? • Auf welchen Link klickt der Nutzer? • Welche Art von Produkt möchte der Benutzer kaufen? • Welche Geste macht der Benutzer? • Und so weiter und so fort ...
  • 20. 20 Schritt 4. Wahrscheinlichkeiten oder dem Täter auf der Spur Wer hat der Schatz gestohlen?
  • 21. 21 Schritt 4. Wahrscheinlichkeiten oder dem Täter auf der Spur Wer hat der Schatz gestohlen? Prior-Verteilung 0,3 0,7 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% P(Täter) Krimi-Fall: Täter Prior-Verteilung Museumsdirektor Wächetr
  • 22. 22 Schritt 4. Wahrscheinlichkeiten oder dem Täter auf der Spur Wer hat der Schatz gestohlen? Bedingte Verteilungen
  • 24. 24 Schritt 4. Wahrscheinlichkeiten oder dem Täter auf der Spur Wer hat der Schatz gestohlen? Rand-Verteilungen
  • 25. 25 Schritt 4. Wahrscheinlichkeiten oder dem Täter auf der Spur Wer hat der Schatz gestohlen? Täter-Ermittlung Beobachtung: Nur Direktors PKW hat das Museumsgelände verlassen P(Täter= Direktor | Wagen = Dir.-privat) = P(Wagen=Dir.-privat | Täter=Direktor) * P(Täter=Direktor) / P(Wagen = Dir.-privat) = 0,7 * 0,3 / 0,245 = 0,857 (85,7%)
  • 26. 26 Schritt 4. Wahrscheinlichkeiten oder dem Täter auf der Spur Ermittlungs-Formel allgemein. Satz von Bayes P(Täter | Wagen) = P(Wagen | Täter) * P(Täter) / P(Wagen) Satz von Bayes Der Satz von Bayes (auch als Formel von Bayes oder Bayes-Theorem bekannt) ist ein mathematischer Satz aus der Wahrscheinlichkeitstheorie, der die Berechnung bedingter Wahrscheinlichkeiten beschreibt. Er ist nach dem englischen Mathematiker Thomas Bayes benannt, der ihn erstmals in einem Spezialfall in der 1763 veröffentlichten Abhandlung "An Essay Towards Solving a Problem in the Doctrine of Chances" beschrieb. Für zwei Ereignisse A und B mit einer Wahrscheinlichkeit P(B) > 0 lässt sich die Wahrscheinlichkeit von A unter der Bedingung, dass B eingetreten ist – P(A|B), durch die Wahrscheinlichkeit von B unter der Bedingung, dass A eingetreten ist – P(B|A), wie folgt errechnen: P(A|B) = P(B|A) * P(A) / P(B) dabei sind P(A) und P(B) die A-priori (unbedingte) Wahrscheinlichkeiten der jeweiligen Ereignissen A und B. Bayes-Satz erlaubt es die Schlussfolgerungen umzukehren. Man geht von einem bekannten bedingten Ereignis mit einer Wahrscheinlichkeit P(B|A) aus, das beobachtet, gemessen usw. werden kann und errechnet mit Bayes-Formel die Wahrscheinlichkeit des unbekannten bedingten Ereignisses P(A|B). Zum Beispiel man möchte die Wahrscheinlichkeit der Schwangerschaft ermitteln, nachdem man ein Schwangerschaft-Schnelltest durchgeführt (beobachtet) hat. Wenn „Täter“ als „A“ und „Wagen“ als „B“ bezeichnen würde bekommt man einen Bayes-Satz.
  • 27. 27 Schritt 4. Wahrscheinlichkeiten Wahrscheinlichkeit-Features • Begrenzung der unendlichen Anzahl von Versuchen • Quantifizierung der Ungewissheit 60% 40%
  • 28. 28 Schritt 5. Demo1. Münzenwurf-Spiel. “Direkte Inferenz” Schritt 5. Münzenwurf-Spiele. Demo 1. using Microsoft.ML.Probabilistic.Models; using Microsoft.ML.Probabilistic.Distributions; … private static void Experiment_1() { // PM erstellen Variable<bool> ersteMünzeWurf = Variable.Bernoulli(0.5); Variable<bool> zweiteMünzeWurf = Variable.Bernoulli(0.5); Variable<bool> beideMünzenWurf = ersteMünzeWurf & zweiteMünzeWurf; // Inferenz ausführen Bernoulli ergebnis = engine.Infer<Bernoulli>(beideMünzenWurf); double beideMünzenZeigenKöpfe = ergebnis.GetProbTrue(); Console.WriteLine("Die Wahrscheinlichkeit - beide Münzen " + "zeigen Köpfe: {0}", beideMünzenZeigenKöpfe); …. }
  • 29. 29 Schritt 5. Demo 1. Münzenwurf-Spiel. “Rückschluss” Schritt 5. Münzenwurf-Spiele. Demo 1. using Microsoft.ML.Probabilistic.Models; using Microsoft.ML.Probabilistic.Distributions; … private static void Experiment_1() { // PM erstellen Variable<bool> ersteMünzeWurf = Variable.Bernoulli(0.5); Variable<bool> zweiteMünzeWurf = Variable.Bernoulli(0.5); Variable<bool> beideMünzenWurf = ersteMünzeWurf & zweiteMünzeWurf; // Beobachtung: beide Münzen zeigen niemals Kopf gleichzeitig beideMünzenWurf.ObservedValue = false; Bernoulli ergebnis2 = engine.Infer<Bernoulli>(beideMünzenWurf); Bernoulli ergebnis3 = engine.Infer<Bernoulli>(ersteMünzeWurf); Console.WriteLine("Die Wahrscheinlichkeit - beide Münzen zeigen Köpfe: {0}", ergebnis2.GetProbTrue()); Console.WriteLine("Erste Münze zeigt Kopf: {0}", ergebnis3.GetProbTrue()); }
  • 30. 30 Schritt 6. Demo 2. Würfelspiele Schritt 6. Würfelspiele. Demo 2. // Wahrscheinlichkeit von 6 Würfelaugen ist 1 zu 6 = 1/6 ca 0,17 double erfolgWurfel = 0.17; // PM erstellen Variable<bool> ersterWürfelWurf = Variable.Bernoulli(erfolgWurfel); Variable<bool> zweiterWürfelWurf = Variable.Bernoulli(erfolgWurfel); Variable<bool> dritterWürfelWurf = Variable.Bernoulli(erfolgWurfel); Variable<bool> alleWürfelWurf = ersterWürfelWurf & zweiterWürfelWurf & dritterWürfelWurf; // Inferenz-Engine (IE) erstellen InferenceEngine engine = new InferenceEngine(); #if SHOW_MODEL engine.ShowFactorGraph = true; // PM visualisieren #endif // Inferenz ausführen - alle Würfel zeigen 6 Augen Bernoulli ergebnis1 = engine.Infer<Bernoulli>(alleWürfelWurf); double alleWürfelZeigenSechs = ergebnis1.GetProbTrue(); Console.WriteLine("Die Wahrscheinlichkeit, dass alle Würfel "6" zeigen, ist: {0}", alleWürfelZeigenSechs);
  • 31. 31 Schritt 7. Monty-Hall-Problem. Demo 3. Schritt 7. Demo 3. Monty-Hall-Problem Video-Clip anschauen
  • 32. 32 Schritt 7. Monty-Hall-Problem. Demo 3. Schritt 7. Demo 3. Monty-Hall-Problem
  • 33. 33 Schritt 8. Schritt 8. Wie Infer.NET funktioniert
  • 36. 36 Schritt 9. Infer.NET Modelle Unterstützte Modelle • Mixture models • Factor analysis / PCA / ICA • Logistic regression • Discrete Bayesian networks • Hidden Markov models • Ranking models • Kalman filters • Hierarchical models
  • 38. 38 Schritt 10. Links • Infer.NET. Hauptseite: https://dotnet.github.io/infer/default.html • Infer.NET. Einführung: https://dotnet.github.io/infer/InferNet_Intro.pdf • Infer.NET. Einführung in die Grundlagen von Infer.NET- Programmierung: https://dotnet.github.io/infer/InferNet101.pdf • Infer.NET. User Guide: https://dotnet.github.io/infer/userguide • Infer.NET. Open-source Quelle, Doku, Tutorials und Code- Beispiele. GitHub.com: https://github.com/dotnet/infer • Infer.NET. Code-Beispiele zum aktuellen Artikel: https://github.com/softfactories/InferNET_Demos • J. Winn, C.M. Bishop. Model-Based Machine Learning (Early Access): http://mbmlbook.com • Infer.NET auf Microsoft Research: https://www.microsoft.com/en-us/research/project/infernet/ • M. Dobrochynskyy. Machine Learning mit Infer.NET, dotnetpro 2019/5-6: https://www.dotnetpro.de/autor/mykola-dobrochynskyy- 1100310.html
  • 39. 39 Schritt 10. Zusatzlinks (1) • Infer.NET. Variable types and their distributions: https://dotnet.github.io/infer/userguide/Variable%20types%20a nd%20their%20distributions.html • Infer.NET. Open-source Ankündigung. Microsoft Blog: https://www.microsoft.com/en-us/research/blog/the-microsoft- infer-net-machine-learning-framework-goes-open-source/ • Bayessche Inferenz (Schlussfolgerung). Wikipedia.org: http://en.wikipedia.org/wiki/Bayesian_inference • Bayesian Networks (Bayes-Netzwerke). Wikipedia.org: https://en.wikipedia.org/wiki/Bayesian_network • Bayessche_Statistik. Wikipedia.org: https://de.wikipedia.org/wiki/Bayessche_Statistik • Satz_von_Bayes. Wikipedia.org: https://de.wikipedia.org/wiki/Satz_von_Bayes • David J.C. MacKay. Information Theory, Inference, and Learning Algorithms. Cambridge University Press 2003: http://www.inference.phy.cam.ac.uk/mackay/itila/book.html • TrueSkill Ranking System. XBox Live. Microsoft Research: http://research.microsoft.com/trueskill/ • Infer.NET NuGet Packages: https://www.nuget.org/packages?q=Microsoft.ML.Probabilisti • Monty-Hall- oder Ziegen-Problem. Wikipedia.org: https://de.wikipedia.org/wiki/Ziegenproblem
  • 40. 40 Schritt 10. Zusatzlinks (2) • Infer.NET: Building Software with Intelligence (PDC Präsentation): https://channel9.msdn.com/Events/PDC/PDC09/VTL03 • Wahrscheinlichkeitsverteilung. Wikipedia.org: https://de.wikipedia.org/wiki/Wahrscheinlichkeitsma%C3%9F • Gauß- oder Normalverteilung. Wikipedia.org: https://de.wikipedia.org/wiki/Normalverteilung • Gammaverteilung. Wikipedia.org: https://de.wikipedia.org/wiki/Gammaverteilung • Bernoulli-Verteilung. Wikipedia.org: https://de.wikipedia.org/wiki/Bernoulli-Verteilung • A-priori-Verteilung. Wikipedia.org: https://de.wikipedia.org/wiki/A-priori-Verteilung • A-posteriori-Verteilung. Wikipedia.org: https://de.wikipedia.org/wiki/A-posteriori- Wahrscheinlichkeit#A-posteriori-Verteilung • Bedingte Verteilung. Wikipedia.org: https://de.wikipedia.org/wiki/Regul%C3%A4re_bedingte_Verteilung • Bedingte Wahrscheinlichkeit. Wikipedia.org: https://de.wikipedia.org/wiki/Bedingte_Wahrscheinlichkeit • Joint probability distribution. Wikipedia.org: https://en.wikipedia.org/wiki/Joint_probability_distribution • Mehrdinmensionale (multivariate) Normalverteilung. https://de.wikipedia.org/wiki/Mehrdimensionale_Normalverteilung • Randverteilung. Wikipedia.org: https://de.wikipedia.org/wiki/Randverteilung • A-priori-Wahrscheinlichkeit. Wikipedia.org: • Deep Learning. Wikipedia.org: https://de.wikipedia.org/wiki/Deep_Learning • Probabilistische Programmierung. Wikipedia.org: https://en.wikipedia.org/wiki/Probabilistic_programming_language • Sprachen für probabilistische Programmierung: http://probabilistic-programming.org/wiki/Home • Edward – Tensorflow basierte Python-Bibliothek für Inferenz und Probabilistische Programmierung: http://edwardlib.org/ • Graphviz (Graph-Visualisierung Software): https://graphviz.gitlab.io/download/ • Ockhams Rasiermesser. Wikipedia.org: https://de.wikipedia.org/wiki/Ockhams_Rasiermesser • F. Laumann. How Bayesian methods embody Occam’s razor: https://medium.com/neuralspace/how- bayesian-methods-embody-occams-razor-43f3d0253137 • ML.NET – Microsoft Machine Learning Framework für .NET: https://dot.net/ml • Online Machine Learning. Wikipedia.org: https://en.wikipedia.org/wiki/Online_machine_learning • Hyperparameter (Bayessche Statistik): https://en.wikipedia.org/wiki/Hyperparameter • Zufallsvariable. Wikipedia.org: https://de.wikipedia.org/wiki/Zufallsvariable • Transponierte Matrix. Wikipedia.org: https://de.wikipedia.org/wiki/Transponierte_Matrix • Münzwurf. Wikipedia.org: https://de.wikipedia.org/wiki/M%C3%BCnzwurf
  • 41. 41 Schritt 10. Zusammenfassung • Infer.NET ist ein in C# geschriebenes open-source Framework, das die Bayes'sche Inferenz mittels probabilistischen Programmierens unter .NET ausführen lässt. • Es bietet moderne Algorithmen und Routinen, um intelligente Features in die Apps einzubauen. Infer.NET hat hervorragende Merkmale, die dieses Framework auszeichnen - verschiedene Inferenz-Algorithmen, perfekte Skalierbarkeit, Plattform-Unabhängigkeit und Erweiterbarkeit. • Mit modellbasiertem Ansatz lässt sich das Domänenwissen in ein Modell integrieren. Anstatt ein Problem einem bereits vorhandenen Lernalgorithmus zuzuordnen, wird es direkt aus jeweiligem Modell ein maßgeschneiderte ML-Algorithmus erstellt und als C#- Code generiert. • Anwendungsszenarien - Spam- und Daten-Eingabe Prüfung/Hervorsage, Programm-Verifikation, Personalisierung, Empfehlung, Rating, Beurteilung uvm.
  • 42. 42 Vielen Dank! Mykola Dobrochynskyy Software Factories www.soft-fact.de ceo@soft-fact.de ki19.eventbrite.de developer-media.de