Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Derin öğrenme, "derin" sinir ağlarından yararlanan makine öğrenmesi tekniklerine yönelik bir şemsiye terimidir. Günümüzde derin öğrenme, bilgisayar görme, doğal dil işleme ve pekiştirmeye uygulandığında oyun oynama, karar alma ve simülasyon gibi senaryolardaki başarısı nedeniyle makine öğrenmesinin en görünür alanlarından biridir.
Derin öğrenmenin başarısının önemli bir öğesi, sinir ağı modellerinin oluşturulmasını ve çıkarım için yürütülmesini kolaylaştıran verilerin, işlem, yazılım çerçevelerinin ve çalışma zamanlarının kullanılabilirliğidir. Bu çerçevelere örnek olarak TensorFlow, (Py)Torch ve ONNX verilebilir.
ML.NET bu çerçevelerden bazılarına erişim sağlar. Sonuç olarak, ML.NET kullanıcılar sıfırdan başlamak zorunda kalmadan derin öğrenme modellerinden yararlanabilir.
Derin öğrenme ve makine öğrenmesi karşılaştırması
Derin öğrenme, sinir ağı algoritmalarına dayanır. Bu, genelleştirilmiş doğrusal modeller, karar ağaçları veya Destek Vektör Makineleri (SVM) gibi daha çeşitli algoritmalar kullanan geleneksel veya klasik makine öğrenmesi tekniklerinin aksinedir. Bu farkın en acil ve pratik etkisi, derin öğrenme yöntemlerinin bazı veri türleri için daha uygun olmasıdır. Bazı durumlarda, gradyan artırılmış ağaçlar (XGBoost, LightGBM ve CatBoost) gibi klasik makine öğrenimi tekniklerinin tabular veriler için avantaj sağladığı görülüyor. Metin ve görüntü gibi daha az yapılandırılmış veriler için sinir ağları daha iyi performans gösterme eğilimindedir. En iyi yaklaşım her zaman belirli veri kaynağınızla denemeler yapmak ve hangi tekniklerin sorununuz için en uygun olduğunu kendiniz belirlemek için kullanım örneğidir.
Klasik makine öğrenmesi görevleri için ML.NET Otomatik Makine Öğrenmesi (AutoML) aracılığıyla bu deneme sürecini basitleştirir. AutoML hakkında daha fazla bilgi için bkz. Otomatik Makine Öğrenmesi (AutoML) nedir?.
Sinir ağı mimarileri
Derin öğrenmenin temel ayırt edici özelliklerinden biri yapay sinir ağı algoritmalarının kullanılmasıdır. Üst düzeyde sinir ağlarını, her birimin çıkışının başka bir birimin girişini oluşturduğu "işlem birimleri" yapılandırması olarak düşünebilirsiniz. Bu birimlerin her biri bir veya birden çok girişi alabilir, girdilerinin ağırlıklı bir toplamını hesaplar, ardından bir ofset (veya "sapma") uygular ve sonunda "aktivasyon" olarak adlandırılan doğrusal olmayan bir dönüştürme işlevi gerçekleştirir. Sınıflandırma, regresyon işlevleri ve makine öğrenmesi görevlerinin merkezi olan diğer yapılardaki karar sınırlarını tanımlamak için bu bileşenlerin farklı düzenlemeleri kullanılmıştır.
Sinir ağı tek katmanı temsil eden
Son on yılda derin öğrenme vakalarında, uygulamalarında ve tekniklerinde artış görüldü. Bu artış kısmen sinir ağlarına dahil edilebilen çeşitli işlemler, bu işlemlerin yapılandırılabildiği daha zengin bir dizi düzenleme ve bu iyileştirmeler için geliştirilmiş hesaplama desteği ile yönlendirilir. Genel olarak sinir ağı mimarileri aşağıdaki kategorilere göre gruplandırılabilir:
- İleri beslemeli sinir ağı
- Kıvrımlı sinir ağı
- Yenileyici sinir ağı
- Saldırgan ağ oluşturma
- Transformers
Daha fazla ayrıntı için yapay sinir ağları kılavuzuna bakın.
Derin öğrenmeyi ne için kullanabilirim?
Derin öğrenme mimarileri görüntüler, ses ve serbest biçimli metin gibi yapılandırılmamış veriler içeren görevlerde iyi bir performans göstermiştir. Sonuç olarak, derin öğrenme aşağıdaki gibi sorunları çözmek için kullanılmıştır:
- Görüntü sınıflandırması
- Ses sınıflandırması
- Çeviri
- Metin oluşturma
- Metin sınıflandırması
ML.NET'te derin öğrenme
Derin öğrenme modelini sıfırdan eğitme, çeşitli parametreler, büyük miktarda etiketlenmiş eğitim verileri ve çok miktarda işlem kaynağı (yüzlerce GPU saati) ayarlamayı gerektirir. ML.NET, önceden eğitilmiş modeller ve transfer öğrenimi ile ince ayar gibi bilgi aktarım tekniklerini kullanarak bu süreci kısaltmanızı sağlar.
ML.NET ayrıca diğer çerçevelerde eğitilen modelleri içeri aktarmanıza ve bunları .NET uygulamalarınızda kullanmanıza olanak tanır.
Senaryoya bağlı olarak, derin öğrenme modellerini eğitmek ve kullanmak için yerel GPU ve Azure GPU işlem kaynaklarını kullanabilirsiniz.
Özel modelleri eğitin
ML.NET özel derin öğrenme modellerini eğitmek ve bunları .NET uygulamanızın içinde tahminlerde bulunmak için kullanmak için API'ler sağlar.
Bu API'ler TorchSharp ve TensorFlow.NETtarafından desteklenir.
Görüntü sınıflandırması
ML.NET özel görüntü sınıflandırma modellerini eğitmek için ImageClassification API kümesini kullanabilirsiniz.
ML.NET bir görüntü sınıflandırma eğitim işlem hattı aşağıdaki gibi görünebilir:
//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");
ML.NET'da özel görüntü sınıflandırma modellerini eğitmeye başlamak için bkz. Model Builderkullanarak Azure'da görüntü sınıflandırma modelini eğitin.
Nesne algılama
ML.NET, Azure Machine Learning kullanarak Model Builder'da özel nesne algılama modellerini eğitmene olanak tanır. Tek ihtiyacınız olan sınırlayıcı kutu bilgilerini içeren etiketli bir veri kümesi ve sınırlayıcı kutulardaki nesnelerin ait olduğu kategorilerdir.
Eğitim sürecinin sonucu, tahminlerde bulunmak için ApplyOnnxModel dönüşümüyle birlikte kullanılabilen bir ONNX modelidir.
Şu anda, ML.NET nesne algılama için yerel destek yoktur.
özel nesne algılama modellerini ML.NET ile eğitmek için bkz. Model Builder ile görüntülerde durma işaretlerini algılama öğreticisi .
Metin sınıflandırması
İster müşteri gözden geçirmeleri ister iş notları olsun, serbest biçimli metinleri sınıflandırmak birçok sürecin önemli bir parçasıdır.
ML.NET'da, özel metin sınıflandırma modellerini eğitmek için TextClassificationTrainer API kümesini kullanabilirsiniz. ML.NET özel metin sınıflandırma modellerini eğitmek için kullanılan teknik, ince ayar olarak bilinir. İnce ayar, önceden eğitilmiş bir model almanıza ve kendi verilerinizi kullanarak etki alanınıza veya sorununuza özgü katmanları yeniden eğitmenizi sağlar. Bu, tüm modeli sıfırdan eğitme sürecinden geçmek zorunda kalmadan sorununuzu çözmek için daha uyarlanmış bir modele sahip olma avantajı sunar. Metin Sınıflandırma API'sinin kullandığı önceden eğitilmiş model, TorchSharp uygulamalı NAS-BERT'dır.
ML.NET'daki bir metin sınıflandırması eğitim işlem hattı aşağıdaki gibi görünebilir:
// 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");
ML.NET ile metin sınıflandırma modellerini eğitmeye başlamak için ML.NET Model Builder kullanarak web uygulamasındaki web sitesi açıklamalarının yaklaşımını analiz etme öğreticisine bakın.
Cümle benzerliği
Anlamsal arama gibi görevler, iki cümlenin veya metin parçasının birbirine ne kadar benzer olduğunu belirlemeye dayanır.
ML.NET, TextClassificationTrainerile aynı temel modeli ve ince ayarlama tekniklerini kullanan SentenceSimilarityTrainer API kümesi sağlar. Ancak, çıkış olarak bir kategori oluşturmak yerine, iki pasajın ne kadar benzer olduğunu gösteren sayısal bir değer üretir.
ML.NET tümce benzerliği için bir eğitim ve çıkarım işlem hattı aşağıdaki gibi görünebilir:
// 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");
Cümle benzerliğini kullanmaya başlamak için dotnet/machinelearning-samples deposundaki örneklere bakın.
Önceden eğitilmiş modelleri kullanma
ML.NET, Modelleri TensorFlow ve ONNX gibi diğer biçimlerde kullanmak ve bunları .NET uygulamanızın içinde tahmin yapmak için kullanmak için API'ler sağlar.
Bu API'ler TensorFlow.NET ve ONNX Runtimetarafından desteklenir.
TensorFlow
TensorFlow, TensorFlow Hub'nde bulunan zengin bir ekosisteme ve çeşitli önceden eğitilmiş modellere sahip bir derin öğrenme çerçevesidir.
ML.NET ile bu önceden eğitilmiş TensorFlow modellerini alabilir ve .NET uygulamalarınızda çıkarım için kullanabilirsiniz.
Önceden eğitilmiş bir TensorFlow modeli kullanan çıkarım işlem hattı aşağıdaki gibi görünebilir:
// 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");
ML.NET ile önceden eğitilmiş TensorFlow modellerini kullanmaya başlamak için, ML.NET öğreticisine bakın ve önceden eğitilmiş TensorFlow modelini kullanarak yapılan Film incelemeleri duygu analizini inceleyin.
ONNX
Açık Sinir Ağı Değişimi (ONNX), makine öğrenmesi ile derin öğrenme çerçeveleri arasında birlikte çalışabilirliği sağlamak için tasarlanmış bir açık kaynak biçimidir. Bu, PyTorch gibi birçok popüler makine öğrenmesi çerçevelerinden birinde modeli eğitebileceğiniz, ONNX biçimine dönüştürebileceğiniz ve ONNX modelini ML.NET gibi farklı bir çerçevede kullanabileceğiniz anlamına gelir.
ONNX model deposu, çok çeşitli görevlerde çıkarım için kullanabileceğiniz önceden eğitilmiş birkaç ONNX modelini barındırıyor.
ML.NET ile bu önceden eğitilmiş ONNX modellerini alabilir ve .NET uygulamalarınızda çıkarım için kullanabilirsiniz.
Önceden eğitilmiş bir ONNX modeli kullanan çıkarım işlem hattı aşağıdaki gibi görünebilir:
// 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);
ML.NET ile önceden eğitilmiş ONNX modellerini kullanmaya başlamak için ML.NET öğreticisinde ONNX kullanarak nesne algılamayı bölümüne bakın.