Megosztás a következőn keresztül:


Mi az a mélytanulás?

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.

egyetlen réteg diagramja a neurális hálózatban

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

TensorFlow egy mélytanulási keretrendszer, amely gazdag ökoszisztémával és a TensorFlow Hubszámos előre betanított modellel rendelkezik.

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.