Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A mély tanulás a "mély" neurális hálózatokat használó gépi tanulási technikák gyűjtőkifejezése. Ma a mély tanulás a gépi tanulás egyik leglátottabb területe, mivel olyan területeken sikeres, mint a számítógépes látás, a természetes nyelvi feldolgozás, és – ha megerősítési tanulásra alkalmazzák – olyan forgatókönyvek, mint a játék, a döntéshozatal és a szimuláció.
A mély tanulás sikerének egyik kulcsfontosságú eleme az adatok, a számítás, a szoftveres keretrendszerek és a futtatókörnyezetek rendelkezésre állása, amelyek megkönnyítik a neurális hálózati modellek létrehozását és azok következtetésre történő végrehajtását. Ilyen keretrendszerek például a TensorFlow, a (Py)Torch és az ONNX.
ML.NET hozzáférést biztosít ezen keretrendszerek némelyikéhez. Ennek eredményeképpen ML.NET felhasználók anélkül használhatják ki a mélytanulási modellek előnyeit, hogy az alapoktól kellene kezdeniük.
Mély tanulás és gépi tanulás
A mély tanulás neurális hálózati algoritmusokra támaszkodik. Ez ellentétben áll a hagyományos vagy klasszikus gépi tanulási technikákkal, amelyek olyan algoritmusok szélesebb körét használják, mint például az általánosított lineáris modellek, a döntési fák vagy a támogatási vektorgépek (SVM). Ennek a különbségnek a legközvethetőbb gyakorlati következménye, hogy a mélytanulási módszerek jobban alkalmazhatók bizonyos típusú adatokhoz. Bizonyos esetekben a klasszikus gépi tanulási technikák, mint például a grádientnövelt fák (XGBoost, LightGBM és CatBoost) előnyt jelenthetnek a táblázatos adatok esetében. A kevésbé strukturált adatok, például a szöveg és a képek esetében a neurális hálózatok általában jobban teljesítenek. A legjobb módszer mindig az, hogy kísérletezzen az adott adatforrással és használati esettel annak meghatározásához, hogy melyik technikák működnek a legjobban a problémához.
A klasszikus gépi tanulási feladatok esetében ML.NET leegyszerűsíti ezt a kísérletezési folyamatot az Automatikus gépi tanulás (AutoML) használatával. További információ az AutoML-ről: Mi az automatikus gépi tanulás (AutoML)?.
Neurális hálózati architektúrák
A mélytanulás egyik fő megkülönböztető jellemzője a mesterséges neurális hálózati algoritmusok használata. Magas szinten a neurális hálózatok a "feldolgozási egységek" konfigurációjának tekinthetők, ahol az egyes egységek kimenete egy másik bemenetét képezi. Ezen egységek mindegyike egy vagy több bemenetet vehet igénybe, és lényegében a bemenetek súlyozott összegét hajtja végre, eltolást (vagy "torzításokat") alkalmaz, majd egy nem lineáris transzformációs függvényt (az úgynevezett "aktiválást"). Ezeknek az összetevőknek a különböző elrendezéseit használták a besorolás, a regressziós függvények és a gépi tanulási feladatok központi struktúráinak döntési határainak leírására.
Az elmúlt évtizedben megnőtt a mélytanulás eseteinek, alkalmazásainak és technikáinak száma. Ezt a növekedést részben a neurális hálózatokba beépíthető műveletek növekvő választéka, a műveletek konfigurálható elrendezéseinek gazdagabb készlete, valamint a fejlesztések számítási támogatása javítja. A neurális hálózati architektúrák általában a következő kategóriákba csoportosíthatók:
- Előrecsatolt neurális hálózat
- Konvolúciós neurális hálózat
- Ismétlődő neurális hálózat
- Generatív versengő hálózat
- Transformers
További részletekért lásd a mesterséges neurális hálózatok útmutatójában.
Mire használhatom a mély tanulást?
A mélytanulási architektúrák jó teljesítményt mutattak a strukturálatlan adatokat, például képeket, hangokat és szabad formátumú szövegeket tartalmazó feladatokban. Ennek eredményeképpen a mély tanulás olyan problémák megoldására lett használva, mint a következők:
- Képbesorolás
- Hangbesorolás
- Fordítás
- Szöveg létrehozása
- Szövegbesorolás
Mély tanulás az ML.NET
A mélytanulási modell alapoktól való betanításához több paramétert, nagy mennyiségű címkézett betanítási adatot és nagy mennyiségű számítási erőforrást (több száz GPU-órát) kell beállítani. ML.NET lehetővé teszi a folyamat gyorsítását előre betanított modellek és tudásátviteli technikák, például a transzfertanulás és a finomhangolás használatával.
ML.NET lehetővé teszi a más keretrendszerekben betanított modellek importálását és azok használatát a .NET-alkalmazásokban.
A forgatókönyvtől függően helyi GPU- és Azure GPU-számítási erőforrásokat is használhat mélytanulási modellek betanításához és felhasználásához.
Egyéni modellek betanítása
ML.NET API-kat biztosít az egyéni mélytanulási modellek betanítása és azok használatával előrejelzések készítésére a .NET-alkalmazásban.
Ezeket az API-kat TorchSharp és TensorFlow.NETműködteti.
Képbesorolás
A ML.NET az api-k ImageClassification készletével taníthat be egyéni képbesorolási modelleket.
A képbesorolási betanítási folyamat a ML.NET a következőképpen nézhet ki:
//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");
Az egyéni képbesorolási modellek ML.NET való betanításának megkezdéséhez tekintse meg Képosztályozási modellek betanítását az Azure-ban a Model Builderhasználatával.
Objektumészlelés
ML.NET lehetővé teszi egyéni objektumészlelési modellek betanítása a Model Builderben az Azure Machine Learning használatával. Mindössze egy címkézett adatkészletre van szüksége, amely a határolókeret adatait és a határolókeretek objektumainak kategóriáit tartalmazza.
A betanítási folyamat eredménye egy ONNX-modell, amely a ApplyOnnxModel átalakítással használható előrejelzések készítéséhez.
Jelenleg nincs helyi támogatás az objektumészleléshez a ML.NET.
A(z) ML.NET rendszerrel egyéni objektumészlelési modelleket taníthat be: lásd a(z) Model Builder oktatóanyag a stop-jelek képeken történő észlelésére.
Szövegbesorolás
A szabad formátumú szövegek besorolása, függetlenül attól, hogy ezek az ügyfelek véleményei vagy üzleti feljegyzései, számos folyamat fontos részét képezik.
A ML.NET az api-k TextClassificationTrainer készletével egyéni szövegbesorolási modelleket taníthat be. A ML.NET egyéni szövegbesorolási modellek betanítására használt technika a finomhangolás. A finomhangolás lehetővé teszi, hogy egy előre betanított modellt használjon, és a saját adataival újratanítsa azokat a rétegeket, amelyek az Ön tartományára vagy problémájára jellemzőek. Ez azzal az előnnyel jár, hogy olyan modellel rendelkezik, amely jobban igazodik a probléma megoldásához anélkül, hogy végig kellene haladnia a teljes modell teljesen új betanításának folyamatán. A Text Classification API által használt előre betanított modell NAS-BERTTorchSharp-implementációja.
A ML.NET szövegbesorolási betanítási folyamata a következőnek tűnhet:
// 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");
A szövegbesorolási modellek ML.NET való betanításához tekintse meg a Webhely megjegyzéseinek elemzése webalkalmazásban ML.NET Model Builder oktatóanyag használatával című témakört.
Mondatok hasonlósága
Az olyan feladatok, mint a szemantikai keresés, a két mondat vagy szövegrészlet egymáshoz való hasonlóságának meghatározásán alapulnak.
ML.NET SentenceSimilarityTrainer API-kat biztosít, amelyek ugyanazokat a mögöttes modellt és finomhangolási technikákat használják, mint a TextClassificationTrainer. Azonban ahelyett, hogy egy kategóriát állít elő kimenetként, numerikus értéket állít elő, amely a két hasonló szakaszt mutatja.
A mondatok hasonlóságára vonatkozó betanítási és következtetési folyamat ML.NET a következőhöz hasonlóan nézhet ki:
// 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");
A mondathasonlósággal való kezdéshez tekintse meg a példákat a dotnet/machinelearning-samples adattárban.
Előre betanított modellek felhasználása
ML.NET API-kat biztosít a modellek más formátumokban, például a TensorFlow és az ONNX használatára, és előrejelzések készítésére a .NET-alkalmazásban.
Ezek az API-k a TensorFlow.NET és a ONNX Runtimeáltal működnek.
TensorFlow
A ML.NET segítségével ezeket az előre betanított TensorFlow-modelleket használhatja a .NET-alkalmazásokban való következtetéshez.
Egy előre betanított TensorFlow-modellt használó következtetési folyamat a következőképpen nézhet ki:
// 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");
Az előre betanított TensorFlow-modellek ML.NET-tel való használatának megkezdéséhez tekintse meg a filmkritika hangulatelemzés egy előre betanított TensorFlow-modell használatával az ML.NET oktatóanyagban.
ONNX
A nyílt neurális hálózati exchange (ONNX) egy nyílt forráskódú formátum, amely lehetővé teszi a gépi tanulás és a mélytanulási keretrendszerek közötti interoperabilitást. Ez azt jelenti, hogy betaníthat egy modellt az olyan népszerű gépi tanulási keretrendszerek egyikében, mint a PyTorch, onnx formátumba konvertálhatja, és az ONNX-modellt egy másik keretrendszerben, például ML.NET használhatja.
Az ONNX-modelladattár számos előre betanított ONNX-modellt üzemeltet, amelyet számos különböző tevékenységben használhat a következtetéshez.
A ML.NET segítségével ezeket az előre betanított ONNX-modelleket használhatja a .NET-alkalmazásokban való következtetéshez.
Egy előre betanított ONNX-modellt használó következtetési folyamat a következőképpen nézhet ki:
// 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);
Az előre betanított ONNX-modellek ML.NET-tel való használatának megkezdéséhez tekintse meg az ONNX-alapú objektumészlelést az ML.NET oktatóanyagban.