Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pembelajaran mendalam adalah istilah payung untuk teknik pembelajaran mesin yang memanfaatkan jaringan neural "mendalam". Saat ini, pembelajaran mendalam adalah salah satu area pembelajaran mesin yang paling terlihat karena keberhasilannya di bidang seperti visi komputer, pemrosesan bahasa alami, dan—ketika diterapkan pada pembelajaran penguatan—skenario seperti bermain game, pengambilan keputusan, dan simulasi.
Elemen penting untuk keberhasilan pembelajaran mendalam adalah ketersediaan data, komputasi, kerangka kerja perangkat lunak, dan runtime yang memfasilitasi pembuatan model jaringan neural dan eksekusinya untuk inferensi. Contoh kerangka kerja tersebut termasuk TensorFlow, (Py)Torch, dan ONNX.
ML.NET menyediakan akses ke beberapa kerangka kerja ini. Akibatnya, ML.NET pengguna dapat memanfaatkan model pembelajaran mendalam tanpa harus memulai dari awal.
Pembelajaran mendalam vs pembelajaran mesin
Pembelajaran mendalam bergantung pada algoritma jaringan neural. Hal ini berbeda dengan teknik pembelajaran mesin tradisional atau klasik, yang menggunakan berbagai algoritma yang lebih luas seperti model linier umum, pohon keputusan, atau Mesin Vektor Dukungan (SVM). Implikasi praktis yang paling langsung dari perbedaan ini adalah bahwa metode pembelajaran mendalam dapat lebih cocok untuk beberapa jenis data. Kadang-kadang, teknik pembelajaran mesin klasik seperti pohon penambah gradien (XGBoost, LightGBM, dan CatBoost) tampaknya lebih unggul untuk data tabular. Untuk data yang kurang terstruktur seperti teks dan gambar, jaringan neural cenderung berkinerja lebih baik. Pendekatan terbaik adalah selalu bereksperimen dengan sumber data dan kasus penggunaan khusus Anda untuk menentukan sendiri teknik mana yang paling sesuai untuk masalah Anda.
Untuk tugas pembelajaran mesin klasik, ML.NET menyederhanakan proses eksperimen ini melalui Pembelajaran Mesin Otomatis (AutoML). Untuk informasi selengkapnya tentang AutoML, lihat Apa itu Pembelajaran Mesin Otomatis (AutoML)?.
Arsitektur jaringan neural
Salah satu karakteristik pembeda utama pembelajaran mendalam adalah penggunaan algoritma jaringan neural buatan. Pada tingkat tinggi, Anda dapat menganggap jaringan neural sebagai konfigurasi "unit pemrosesan" di mana output setiap unit merupakan input dari unit lain. Masing-masing unit ini dapat menerima satu atau banyak input, dan pada dasarnya melakukan jumlah berbobot dari input-inputnya, menerapkan offset (atau "bias") yang diikuti oleh fungsi transformasi non-linier (disebut "aktivasi"). Pengaturan yang berbeda dari komponen-komponen ini telah digunakan untuk menjelaskan batas keputusan dalam klasifikasi, fungsi regresi, dan struktur lain yang terpusat untuk tugas pembelajaran mesin.
Dekade terakhir telah melihat peningkatan kasus, aplikasi, dan teknik pembelajaran mendalam. Peningkatan ini sebagian didorong oleh bertambahnya variasi operasi yang dapat dimasukkan ke dalam jaringan neural, adanya pengaturan yang lebih bervariasi untuk mengkonfigurasi operasi-operasi tersebut, serta dukungan komputasi yang semakin baik untuk kemajuan ini. Secara umum, arsitektur jaringan neural dapat dikelompokkan ke dalam kategori berikut:
- Jaringan saraf maju
- Jaringan neural konvolusional
- Jaringan saraf berulang
- Jaringan adversarial generatif
- Transformers
Untuk detail selengkapnya, lihat panduan jaringan neural buatan .
Untuk apa saya dapat menggunakan pembelajaran mendalam?
Arsitektur pembelajaran mendalam telah menunjukkan performa yang baik dalam tugas yang melibatkan data yang tidak terstruktur, seperti gambar, audio, dan teks bentuk bebas. Akibatnya, pembelajaran mendalam telah digunakan untuk menyelesaikan masalah seperti:
- Klasifikasi gambar
- Klasifikasi audio
- Terjemahan
- Pembuatan teks
- Klasifikasi teks
Pembelajaran mendalam dalam ML.NET
Melatih model pembelajaran mendalam dari awal memerlukan pengaturan beberapa parameter, sejumlah besar data pelatihan berlabel, dan sejumlah besar sumber daya komputasi (ratusan jam GPU). ML.NET memungkinkan Anda mempersingkat proses ini dengan menggunakan model yang telah dilatih dan teknik transfer pengetahuan seperti pembelajaran alih dan penyesuaian.
ML.NET juga memungkinkan Anda mengimpor model yang dilatih dalam kerangka kerja lain dan menggunakannya dalam aplikasi .NET Anda.
Bergantung pada skenarionya, Anda dapat menggunakan GPU lokal serta sumber daya komputasi Azure GPU untuk melatih dan menggunakan model pembelajaran mendalam.
Melatih model kustom
ML.NET menyediakan API untuk melatih model pembelajaran mendalam kustom dan menggunakannya untuk membuat prediksi di dalam aplikasi .NET Anda.
API ini didukung oleh TorchSharp dan TensorFlow.NET.
Klasifikasi gambar
Dalam ML.NET Anda dapat menggunakan set API ImageClassification untuk melatih model klasifikasi gambar kustom.
Alur pelatihan klasifikasi gambar di ML.NET mungkin terlihat seperti berikut ini:
//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");
Untuk mulai melatih model klasifikasi gambar kustom di ML.NET, lihat Melatih model klasifikasi gambar di Azure menggunakan Model Builder.
Deteksi objek
ML.NET memungkinkan Anda melatih model deteksi objek kustom di Model Builder menggunakan Azure Machine Learning. Yang Anda butuhkan adalah himpunan data berlabel yang berisi informasi kotak pembatas dan kategori objek yang berada dalam kotak pembatas tersebut.
Hasil dari proses pelatihan adalah model ONNX yang kemudian dapat digunakan dengan transformasi ApplyOnnxModel untuk membuat prediksi.
Saat ini, tidak ada dukungan lokal untuk deteksi objek di ML.NET.
Untuk melatih model deteksi objek kustom dengan ML.NET, lihat Mendeteksi rambu berhenti dalam gambar dengan tutorial Model Builder.
Klasifikasi teks
Mengklasifikasikan teks bentuk bebas, apakah itu ulasan pelanggan atau memo bisnis adalah bagian penting dari banyak proses.
Di ML.NET, Anda dapat menggunakan kumpulan API TextClassificationTrainer untuk melatih model klasifikasi teks kustom. Teknik yang digunakan untuk melatih model klasifikasi teks kustom dalam ML.NET dikenal sebagai penyempurnaan. Penyempurnaan memungkinkan Anda mengambil model yang telah dilatih sebelumnya dan melakukan pelatihan ulang lapisan khusus pada domain atau masalah Anda menggunakan data Anda sendiri. Ini memberi Anda manfaat memiliki model yang lebih disesuaikan untuk menyelesaikan masalah Anda tanpa harus melalui proses pelatihan seluruh model dari awal. Model yang telah dilatih sebelumnya yang digunakan oleh API Klasifikasi Teks adalah implementasi TorchSharp dari NAS-BERT.
Alur pelatihan klasifikasi teks di ML.NET mungkin terlihat seperti berikut ini:
// 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");
Untuk mulai melatih model klasifikasi teks dengan ML.NET, lihat Menganalisis sentimen komentar situs web dalam aplikasi web menggunakan tutorial ML.NET Model Builder.
Kesamaan kalimat
Tugas seperti pencarian semantik mengandalkan penentuan seberapa mirip dua kalimat atau bagian teks satu sama lain.
ML.NET menyediakan set API SentenceSimilarityTrainer yang menggunakan model yang mendasar dan teknik penyempurnaan yang sama dengan TextClassificationTrainer. Namun, alih-alih menghasilkan kategori sebagai output, itu menghasilkan nilai numerik yang mewakili seberapa mirip dua bagian.
Alur pelatihan dan inferensi untuk kesamaan kalimat dalam ML.NET mungkin terlihat seperti berikut ini:
// 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");
Untuk mulai menggunakan kesamaan kalimat, lihat sampel di repositori dotnet/machinelearning-samples .
Menggunakan model yang telah dilatih sebelumnya
ML.NET menyediakan API untuk menggunakan model dalam format lain seperti TensorFlow dan ONNX dan menggunakannya untuk membuat prediksi di dalam aplikasi .NET Anda.
API ini didukung oleh TensorFlow.NET dan ONNX Runtime.
TensorFlow
TensorFlow adalah kerangka kerja pembelajaran mendalam dengan ekosistem yang kaya dan berbagai model yang telah dilatih sebelumnya yang tersedia di TensorFlow Hub.
Dengan ML.NET, Anda dapat mengambil model TensorFlow yang telah dilatih sebelumnya dan menggunakannya untuk inferensi di dalam aplikasi .NET Anda.
Alur inferensi yang menggunakan model TensorFlow yang telah dilatih mungkin terlihat seperti berikut ini:
// 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");
Untuk mulai menggunakan model TensorFlow yang telah dilatih sebelumnya dengan ML.NET, lihat Movie meninjau analisis sentimen menggunakan model TensorFlow yang telah dilatih sebelumnya dalam tutorial ML.NET.
ONNX
Open Neural Network Exchange (ONNX) adalah format sumber terbuka yang dirancang untuk memungkinkan interoperabilitas antara pembelajaran mesin dan kerangka kerja pembelajaran mendalam. Ini berarti Anda dapat melatih model dalam salah satu dari banyak kerangka kerja pembelajaran mesin populer seperti PyTorch, mengonversinya menjadi format ONNX, dan menggunakan model ONNX dalam kerangka kerja yang berbeda seperti ML.NET.
Repositori model ONNX menghosting beberapa model ONNX yang telah dilatih sebelumnya yang dapat Anda gunakan untuk inferensi dalam berbagai tugas.
Dengan ML.NET, Anda dapat mengambil model ONNX yang telah dilatih sebelumnya ini dan menggunakannya untuk inferensi di dalam aplikasi .NET Anda.
Alur inferensi menggunakan model ONNX yang telah dilatih sebelumnya mungkin terlihat seperti berikut ini:
// 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);
Untuk mulai menggunakan model ONNX yang telah dilatih sebelumnya dengan ML.NET, lihat deteksi Objek menggunakan ONNX dalam tutorial ML.NET.
