Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Deep Learning ist ein Dachbegriff für maschinelle Lerntechniken, die "tiefe" neurale Netzwerke nutzen. Heute ist Deep Learning einer der sichtbarsten Bereiche des maschinellen Lernens aufgrund seines Erfolgs in Bereichen wie Computervision, natürlicher Sprachverarbeitung und – wenn es auf Verstärkung des Lernens angewendet wird – Szenarien wie Spielspiel, Entscheidungsfindung und Simulation.
Ein entscheidendes Element für den Erfolg von Deep Learning war die Verfügbarkeit von Daten, Compute- und Softwareframeworks und Laufzeiten, die die Erstellung neuronaler Netzwerkmodelle und deren Ausführung für Rückschlüsse erleichtern. Beispiele für solche Frameworks sind TensorFlow, (Py)Torch und ONNX.
ML.NET bietet Zugriff auf einige dieser Frameworks. Daher können ML.NET Benutzer Deep Learning-Modelle nutzen, ohne von Grund auf neu beginnen zu müssen.
Deep Learning vs Machine Learning
Deep Learning basiert auf neuralen Netzwerkalgorithmen. Dies steht im Gegensatz zu herkömmlichen oder klassischen Maschinellen Lerntechniken, die eine breitere Vielfalt von Algorithmen wie generalisierte lineare Modelle, Entscheidungsstrukturen oder Supportvektormaschinen (SUPPORT Vector Machines, SVM) verwenden. Die unmittelbarste, praktische Auswirkung dieses Unterschieds besteht darin, dass Deep Learning-Methoden für einige Arten von Daten besser geeignet sein können. In einigen Fällen scheinen klassische maschinelle Lerntechniken wie gradientengeboostete Bäume (XGBoost, LightGBM und CatBoost) einen Vorteil bei tabellarischen Daten zu haben. Bei weniger strukturierten Daten wie Text und Bildern werden neurale Netzwerke tendenziell besser ausgeführt. Der beste Ansatz ist, immer mit Ihrer speziellen Datenquelle und Ihrem Anwendungsfall zu experimentieren, um selbst zu bestimmen, welche Techniken für Ihr Problem am besten geeignet sind.
Bei klassischen Maschinellen Lernaufgaben vereinfacht ML.NET diesen Experimentierprozess durch Automatisiertes Maschinelles Lernen (AutoML). Weitere Informationen zu AutoML finden Sie unter Was ist Automated Machine Learning (AutoML)?.
Neurale Netzwerkarchitekturen
Einer der wichtigsten Unterscheidungsmerkmale von Deep Learning ist die Verwendung von künstlichen neuralen Netzwerkalgorithmen. Auf hoher Ebene können Sie sich neurale Netzwerke als Konfiguration von "Verarbeitungseinheiten" vorstellen, bei denen die Ausgabe jeder Einheit die Eingabe einer anderen darstellt. Jede dieser Einheiten kann einen oder mehrere Eingaben annehmen und führt im Wesentlichen eine gewichtete Summe seiner Eingaben aus, wendet einen Offset (oder "Bias") gefolgt von einer nicht-linearen Transformationsfunktion (als "Aktivierung" bezeichnet) an. Verschiedene Anordnungen dieser Komponenten wurden verwendet, um Entscheidungsgrenzen in Klassifizierung, Regressionsfunktionen und anderen Strukturen zu beschreiben, die für maschinelle Lernaufgaben zentral sind.
In den letzten zehn Jahren hat sich die Zahl der Fälle, Anwendungen und Techniken des Deep Learning erhöht. Diese Zunahme wird teilweise durch eine zunehmende Vielfalt von Vorgängen gesteuert, die in neurale Netzwerke integriert werden können, eine umfangreichere Reihe von Anordnungen, in die diese Vorgänge konfiguriert werden können, und eine verbesserte berechnungsbasierte Unterstützung für diese Verbesserungen. Im Allgemeinen können neurale Netzwerkarchitekturen in die folgenden Kategorien unterteilt werden:
- Neuronales Feed-Forward-Netzwerk
- Konvolutionales neurales Netzwerk
- Wiederkehrendes neurales Netzwerk
- Generatives adversariales Netzwerk
- Transformatoren
Weitere Details finden Sie im Leitfaden für künstliche neuronale Netzwerke.
Wofür kann ich Deep Learning verwenden?
Deep Learning-Architekturen haben bei Aufgaben mit unstrukturierten Daten wie Bildern, Audio und Freiformtext eine gute Leistung gezeigt. Infolgedessen wird Deep Learning zur Lösung von Problemen wie:
- Bildklassifizierung
- Audioklassifizierung
- Übersetzung
- Textgenerierung
- Textklassifizierung
Deep Learning in ML.NET
Für das Training eines deep Learning-Modells von Grund auf müssen mehrere Parameter, eine große Menge bezeichneter Schulungsdaten und eine große Menge an Rechenressourcen (Hunderte von GPU-Stunden) festgelegt werden. ML.NET ermöglicht es Ihnen, diesen Prozess durch die Verwendung von vortrainierten Modellen und Techniken wie Transferlernen und Feinabstimmung abzukürzen.
ML.NET können Sie auch Modelle importieren, die in anderen Frameworks trainiert wurden, und sie in Ihren .NET-Anwendungen nutzen.
Je nach Szenario können Sie lokale GPU sowie Azure GPU-Computeressourcen verwenden, um Deep Learning-Modelle zu trainieren und zu nutzen.
Trainieren von benutzerdefinierten Modellen
ML.NET stellt APIs bereit, um benutzerdefinierte Deep Learning-Modelle zu trainieren und sie zu verwenden, um Vorhersagen in Ihrer .NET-Anwendung zu erstellen.
Diese APIs werden von TorchSharp und TensorFlow.NETunterstützt.
Bildklassifizierung
In ML.NET können Sie den ImageClassification Satz von APIs verwenden, um benutzerdefinierte Bildklassifizierungsmodelle zu trainieren.
Eine Schulungspipeline für die Bildklassifizierung in ML.NET könnte wie folgt aussehen:
//Append ImageClassification trainer to the pipeline containing any preprocessing transforms.
pipeline
.Append(mlContext.MulticlassClassification.Trainers.ImageClassification(featureColumnName: "Image")
.Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel");
// Train the model.
var model = pipeline.Fit(trainingData);
// Use the model for inferencing.
var predictedData = model.Transform(newData).GetColumn<string>("PredictedLabel");
Informationen zu den ersten Schritten bei der Schulung benutzerdefinierter Bildklassifizierungsmodelle in ML.NET finden Sie unter Trainieren eines Bildklassifizierungsmodells in Azure mithilfe von Model Builder.
Objekterkennung
mit ML.NET können Sie benutzerdefinierte Objekterkennungsmodelle im Modell-Generator mithilfe von Azure Machine Learning trainieren. Sie benötigen lediglich ein bezeichnetes Dataset, das Informationen zu Begrenzungsrahmen und den Kategorien enthält, denen die Objekte in den Begrenzungsrahmen angehören.
Das Ergebnis des Schulungsvorgangs ist ein ONNX-Modell, das dann mit der ApplyOnnxModel Transformation verwendet werden kann, um Vorhersagen zu erstellen.
Derzeit gibt es keine lokale Unterstützung für die Objekterkennung in ML.NET.
Informationen zum Trainieren von benutzerdefinierten Objekterkennungsmodellen mit ML.NET finden Sie unter Erkennen von Stoppschildern in Bildern mit dem Lernprogramm "Modell-Generator".
Textklassifizierung
Das Klassifizieren von Freiformtext, unabhängig davon, ob es sich um Kundenrezensionen oder Geschäftsnotizen handelt, ist ein wichtiger Bestandteil vieler Prozesse.
In ML.NET können Sie den TextClassificationTrainer Satz von APIs verwenden, um benutzerdefinierte Textklassifizierungsmodelle zu trainieren. Die Technik zum Trainieren von benutzerdefinierten Textklassifizierungsmodellen in ML.NET wird als Feinabstimmung bezeichnet. Ein Fine-Tuning ermöglicht es Ihnen, ein vortrainiertes Modell zu übernehmen und die für Ihre Domäne oder Ihr Problem spezifischen Ebenen mit Ihren eigenen Daten neu zu trainieren. Dies bietet Ihnen den Vorteil, ein Modell zu haben, das besser auf die Lösung Ihres Problems zugeschnitten ist, ohne den Prozess der Schulung des gesamten Modells von Grund auf neu durchgehen zu müssen. Das von der Textklassifizierungs-API verwendete vortrainierte Modell ist eine TorchSharp-Implementierung von NAS-BERT.
Eine Textklassifizierungsschulungspipeline in ML.NET könnte wie folgt aussehen:
// Define training pipeline using TextClassification trainer
var pipeline =
mlContext.Transforms.Conversion.MapValueToKey("Label","Sentiment")
.Append(mlContext.MulticlassClassification.Trainers.TextClassification(sentence1ColumnName: "Text"))
.Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));
// Train the model
var model = pipeline.Fit(trainingData);
// Use your model to make predictions
var predictedData = model.Transform(newData).GetColumn<string>("PredictedLabel");
Um zu beginnen, Textklassifizierungsmodelle mit ML.NET zu trainieren, finden Sie im Tutorial Analysieren der Stimmung von Websitekommentaren in einer Webanwendung mit dem ML.NET Model Builder weitere Informationen.
Ähnlichkeit des Satzes
Aufgaben wie die semantische Suche basieren auf der Bestimmung, wie ähnlich zwei Sätze oder Textabschnitte einander sind.
ML.NET stellt den SentenceSimilarityTrainer Satz von APIs bereit, die dieselben zugrunde liegenden Modell- und Feinabstimmungstechniken wie die TextClassificationTrainerverwenden. Anstatt jedoch eine Kategorie als Ausgabe zu erzeugen, erzeugt sie einen numerischen Wert, der angibt, wie ähnlich zwei Passagen sind.
Eine Schulungs- und Ableitungspipeline für die Ähnlichkeit von Sätzen in ML.NET könnte wie folgt aussehen:
// Define the pipeline.
var pipeline = mlContext.Regression.Trainers.SentenceSimilarity(sentence1ColumnName: "Sentence", sentence2ColumnName: "Sentence2");
// Train the model
var model = pipeline.Fit(trainingData);
// Use the model to make predictions and extract their similarity values.
var score = model.Transform(newData).GetColumn<float>("Score");
Informationen zu den ersten Schritten mit Satzähnlichkeit finden Sie in den Beispielen im dotnet/machinelearning-samples-Repository.
Nutzen von vortrainierten Modellen
ML.NET stellt APIs bereit, um Modelle in anderen Formaten wie TensorFlow und ONNX zu nutzen und sie zu verwenden, um Vorhersagen in Ihrer .NET-Anwendung zu erstellen.
Diese APIs werden von TensorFlow.NET und der ONNX-Runtime-unterstützt.
TensorFlow
TensorFlow ist ein Deep Learning Framework mit einem reichhaltigen Ökosystem und einer Vielzahl von vortrainierten Modellen, die im TensorFlow Hubzur Verfügung stehen.
Mit ML.NET können Sie diese vortrainierten TensorFlow-Modelle verwenden und sie für die Ableitung innerhalb Ihrer .NET-Anwendungen verwenden.
Eine Ableitungspipeline mit einem vortrainierten TensorFlow-Modell könnte wie folgt aussehen:
// Load TensorFlow model
TensorFlowModel tensorFlowModel = mlContext.Model.LoadTensorFlowModel(_modelPath);
//Append ScoreTensorFlowModel transform to your pipeline containing any preprocessing transforms
pipeline.Append(tensorFlowModel.ScoreTensorFlowModel(outputColumnName: "Prediction/Softmax", inputColumnName:"Features"))
// Create ML.NET model from pipeline
ITransformer model = pipeline.Fit(dataView);
var predictions = model.Transform(dataView).GetColumn<float>("Prediction/Softmax");
Um mit vortrainierten TensorFlow-Modellen in ML.NET zu arbeiten, schauen Sie sich das Tutorial zur Stimmungsanalyse von Filmkritiken mit einem vortrainierten TensorFlow-Modell in ML.NET an.
ONNX
Das Open Neural Network Exchange (ONNX) ist ein Open-Source-Format, das die Interoperabilität zwischen Machine Learning- und Deep-Learning-Frameworks ermöglicht. Dies bedeutet, dass Sie ein Modell in einem der vielen beliebten Machine Learning-Frameworks wie PyTorch trainieren, in DAS ONNX-Format konvertieren und das ONNX-Modell in einem anderen Framework wie ML.NET nutzen können.
Das ONNX-Modell-Repository mehrere vortrainierte ONNX-Modelle hostet, die Sie für die Ableitung in einer Vielzahl von Aufgaben verwenden können.
Mit ML.NET können Sie diese vortrainierten ONNX-Modelle verwenden und für die Ableitung innerhalb Ihrer .NET-Anwendungen verwenden.
Eine Ableitungspipeline mit einem vortrainierten ONNX-Modell könnte wie folgt aussehen:
// Append ApplyOnnxModel transform to pipeline containing any preprocessing transforms
pipeline.Append((modelFile: modelLocation, outputColumnNames: new[] { TinyYoloModelSettings.ModelOutput }, inputColumnNames: new[] { TinyYoloModelSettings.ModelInput })
// Create ML.NET model from pipeline
var model = pipeline.Fit(data);
// Use the model to make predictions
var predictions = pipeline.Fit(data).GetColumn<float[]>(TinyYoloModelSettings.ModelOutput);
Informationen zu den ersten Schritten bei der Verwendung von vortrainierten ONNX-Modellen mit ML.NET finden Sie im Tutorial Objekterkennung mithilfe von ONNX in ML.NET.