ML.NET یک فریمورک یادگیری ماشین رایگان، چند پلتفرمی و متن باز است که برای اضافه کردن قابلیتهای یادگیری ماشین (Machine Learning) به برنامههای NET. طراحی شده است. تجزیه و تحلیل احساسات، پیشبینی قیمت و طبقهبندی تصاویر تنها چند مورد از کاربردهای ML.NET هستند.
ML.NET در کنفرانس بیلد در می 2018 به صورت عمومی منتشر شد. مایکروسافت، ML.NET 1.0 را یک سال بعد در بیلد 2019 منتشر کرد. ML.NET 1.0 به لطف قابلیتها و ابزارهای بیشتری که به همراه داشت، آموزش مدلهای اختصاصی ML را برای توسعهدهندگان .NET آسانتر کرد. در این مقاله، در ابتدا به این سوال پاسخ میدهیم که منظور از ML.NET چیست و چرا توسط مایکروسافت ارائه شد. سپس مزایا و کاربردهای ML.NET را بهصورت کامل توضیح میدهیم.
منظور از ML.NET چیست؟
با توجه به نوپا بودن ML.NET احتمالا خیلی از افراد هنوز به شکل دقیق نمیدانند که منظور از ML.NET چیست. اگر بخواهیم یک تعریف مختصر ارائه کنیم، میتوان گفت که ML.NET یک فریمورک یادگیری ماشین رایگان، متن باز و چند پلتفرمی است که توسط مایکروسافت برای پلتفرم .NET منتشر شده است.
اگر به دنبال یک آموزش جامع و کاربردی در زمینه ML.NET میگردید که بطور عملی هوش مصنوعی را در بستر دات نت با سی شارپ به شما آموزش دهد، بهتر است نگاهی به دوره آموزش یادگیری ماشین با ml.net بیاندازید!
تاریخچه و دلیل انتشار ML.NET
همانطور که میدانید، زبان برنامهنویسی پایتون، به دلیل سهولت استفاده و فراوانی کتابخانهها و فریم ورکها، یک زبان محبوب برای یادگیری ماشین و علم داده است. بسیاری از دانشمندان داده ترجیح میدهند مدلهای یادگیری خود را در پایتون با استفاده از فریمورکهای مختلف یادگیری ماشین مانند TensorFlow، Scikit Learn و ... آموزش دهند. از طرفی دیگر، توسعه دهندگان اپلیکیشنها، معمولا زبانهای برنامه نویسی مانند C# و Java را برای ادغام و استفاده از این مدلها ترجیح میدهند.
همین تفاوتهایی که بین فناوریها و فریمورکهای مختلف وجود دارد، باعث میشود بسیاری از شرکتها برای استفاده از نرمافزارهای بر پایه مدلهای ML با چالش روبرو شوند.
مایکروسافت برای حل این مشکل ML.NET را ارائه داد. ML.NET به توسعه دهندگان .NET اجازه میدهد در محیط داتنت، مدلهای یادگیری ماشین سفارشی خود را ایجاد کنند؛ به این مدلها آموزش دهند و نهایتا در کارهای مورد نظر از آنها استفاده کنند. بهطور مثال، C# و F# در حال حاضر توسط ML.NET پشتیبانی میشوند. همچنین از آنجایی که ML.NET چند پلتفرمی است، روی Mac OS X ، Linux و Windows قابل استفاده است. در نتیجه تقریبا تمام کاربران و توسعه دهندگان میتوانند به سرعت و راحتی هرچه تمامتر، مدل ML اختصاصی خود را با استفاده از ML.NET در کارهای مختلف استفاده کنند.
کاربردهای ML.NET چیست؟
مهمترین مزیت ML.NET این است که تقریبا هیچ محدودیتی برای ساخت مدلهای هوش مصنوعی و ساخت اپلیکیشن برای کاربردهای مختلف ندارد. برخی از حوزههایی که ML.NET بهطور گسترده در آنها مورد استفاده قرار میگیرد، عبارتند از:
- تحلیل احساسات
- تشخیص هرزنامه
- تشخیص کلاهبرداری
- پیشنهاد محصول/فیلم
- پیشبینی قیمت
- پیشبینی فروش
- تشخیص کارت اعتباری جعلی
- آموزش طبقهبندی تصاویر
- تشخیص اشیاء
معماری ML.NET
ML.NET یک چارچوب یادگیری ماشین متنباز و چند پلتفرمی است که برای توسعهدهندگان .NET طراحی شده است. این چارچوب به شما امکان میدهد مدلهای یادگیری ماشین سفارشی را در برنامههای .NET خود بسازید و ادغام کنید.
معماری ML.NET از چندین مؤلفه اصلی تشکیل شده است:
- کتابخانه هسته: این کتابخانه شامل کلاسها و توابعی است که برای ساخت، آموزش و ارزیابی مدلهای یادگیری ماشین استفاده میشود.
- موتور اجرایی: این موتور مدلهای یادگیری ماشین را اجرا میکند. موتور میتواند از CPU، GPU یا سایر سختافزارهای شتابدهنده استفاده کند.
- کتابخانههای یادگیری ماشین: این کتابخانهها پیادهسازیهای الگوریتمهای یادگیری ماشین محبوب مانند رگرسیون خطی، جنگلهای تصادفی و شبکههای عصبی را ارائه میدهند.
- کتابخانههای داده: ابزارهایی برای بارگذاری، تمیز کردن و تبدیل دادهها را ارائه میدهند.
- کتابخانههای مدلسازی: برای ساخت و ذخیرهسازی مدلهای یادگیری ماشین، ابزارهایی را ارائه میدهند.
- کتابخانههای پیشبینی: این کتابخانهها ابزارهایی برای استفاده از مدلهای یادگیری ماشین برای پیشبینیها را ارائه میدهند.
این مؤلفهها با هم کار میکنند تا به شما امکان دهند مدلهای یادگیری ماشین را به روشی ساده و کارآمد بسازید و ادغام کنید.
MLContext در ML.NET
MLContext کلاس اصلی در ML.NET است که برای ایجاد اشیاء دیگر در کتابخانه استفاده میشود. این یک نقطه ورود واحد برای تمام عملیات یادگیری ماشین در برنامه شما فراهم میکند. برخی از وظایف اصلی که میتوانید با استفاده از MLContext انجام دهید عبارتند از:
- بارگذاری دادهها: برای بارگذاری دادهها از انواع مختلف منابع، مانند فایلهای متنی، پایگاههای داده و حافظه
- تبدیل دادهها: برای تبدیل دادهها به فرمتی که برای الگوریتمهای یادگیری ماشین مناسب است. این ممکن است شامل تمیز کردن دادهها، مقیاس گذاری دادهها و کدگذاری دادهها باشد.
- آموزش مدل: برای آموزش مدلهای یادگیری ماشین با استفاده از مجموعه دادههای آموزشی
- ارزیابی مدل: برای ارزیابی عملکرد مدلهای یادگیری ماشین در مجموعه دادههای تست
- ذخیره مدل: برای ذخیره مدلهای یادگیری ماشین در دیسک
- بارگذاری مدل: برای بارگذاری مدلهای یادگیری ماشین از دیسک
- استفاده از مدل: برای استفاده از مدلهای یادگیری ماشین برای پیش بینی در دادههای جدید
در اینجا یک نمونه کد C# برای نشان دادن نحوه استفاده از MLContext برای بارگذاری دادهها، آموزش یک مدل و پیش بینی با استفاده از مدل آورده شده است:
var mlContext = new MLContext();
// Load the data
var data = mlContext.Data.LoadFromTextFile<IrisData>("iris.data.txt", separator: ",");
// Train the model
var model = mlContext.Regression.TrainLinearRegression(data.Label, data.Features);
// Make a prediction
var prediction = model.Predict(new IrisData() { SepalLength = 5.1f, SepalWidth = 3.5f, PetalLength = 1.4f, PetalWidth = 0.2f });
Console.WriteLine($"Predicted label: {prediction.PredictedLabel}");
این کد یک مدل رگرسیون خطی را برای پیش بینی نوع گل زنبق بر اساس طول و عرض کاسبرگ و گلبرگ آموزش می دهد.
مزایای کلیدی ML.NET چیست؟
میتوان گفت ML.NET تقریبا هر ویژگی مثبتی که یک توسعهدهنده به آن نیاز دارد را بهصورت یکجا فراهم کرده است. همین مسئله، باعث شده تا در مدت زمان کوتاهی ML.NET به انتخاب اول تعداد زیادی از افراد در سراسر جهان تبدیل شود. در ادامه به معرفی تعدادی از مزایای ML.NET میپردازیم.
آسانتر شدن پروسه ساخت و اجرای مدلها
Model Builder یک مکانیزم ابزار سازی پیچیده است که همراه با ML.NET ارائه شده است. این مکانیزم، از Automated ML (یا AutoML) برای سادهسازی فرآیند ساخت مدل استفاده میکند. این قابلیت کار را برای توسعه دهندگان بسیار ساده میکند و آنها میتوانند مدلهای خود را با وارد کردن دادهها راهاندازی و اجرا کنند. بقیه فرآیند ساخت مدل از جمله ایجاد کد برای استفاده از آن مدلها، توسط AutoML انجام میشود. همچنین این قابلیت شما را قادر میسازد از فریمورکهای یادگیری ماشین محبوب مانند TensorFlow و ONNX برای استفاده از مدلها در NET. با استفاده از ML.NET بهرهمند شوید.
رایگان و متنباز بودن ML.NET
از آنجایی که ML.NET یک فریمورک رایگان و متنباز است، از نظر مستقل بودن و زمینه مشابه با سایر فریم ورکهای دات نت مانند Entity Framework ASP.NET (یا حتی NET Core)، میتوانید از آن در تمام برنامههای .NET استفاده کنید. این ویژگی شامل برنامهها و خدمات وب (ASP.NET MVC، Razor Pages، Blazor، Web API) و برنامههای دسکتاپ WPF و WinForms میباشد.
امکان استفاده در فضای ابری
همانطور که اشاره شد، استفاده از ML.NET در فضای وب و برنامههای دسکتاپ امکانپذیر است. این بدان معناست که مدلهای ML.NET را میتوان بهصورت محلی (Local) یا در فضای ابری مانند Microsoft Azure ایجاد و استفاده کرد.
چند پلتفرمی بودن ML.NET
از آنجایی که ML.NET چند پلتفرمی است، میتوانید از آن در هر سیستمعاملی مانند ویندوز، لینوکس و mac OS استفاده کنید. همچنین استفاده از ML.NET در ویندوز برای ادغام هوشمصنوعی و یادگیری ماشین در برنامهها با استفاده از فریمورک سنتی .NET امکانپذیر است.
کاربردهای آفلاین
مدلهای ML.NET را میتوان در کاربردهای آفلاین نظیر برنامههای دسکتاپ WPF و WinForms یا هر برنامه آفلاین دات نت (به استثنای پردازندههای ARM که در حالحاضر پشتیبانی نمیشوند) آموزش داد و استفاده کرد.
دسترسی به لینکهای NimbusML
لینکهای NimbusML پایتون نیز از طریق ML.NET در دسترس هستند. اگر شما یک دانشمند داده هستید که در پایتون مهارت بیشتری دارید و یا به هر دلیلی استفاده از این زبان را ترجیح میدهید، میتوانید از NimbusML برای توسعه مدلهای ML.NET در پایتون استفاده کنید. همچنین این امکان وجود دارد که مدلهای توسعه داده شده را در برنامههای .NET اختصاصی خودتان ادغام کنید.
ابزاری مناسب برای توسعه دهندگان پایتون
دانشمندان داده و توسعهدهندگان پایتون که با تخمینگرها و تبدیلهای یادگیری scikit و همچنین سایر کتابخانههای محبوب پایتون مانند NumPy و Pandas آشنا هستند، به راحتی میتوانند از NimbusML برای ایجاد و آموزش مدلهای ML.NET استفاده کنند.
مقاله ارتباط پایتون با هوش مصنوعی میتواند کمک زیادی به شما در این مورد کند.
شروع کار با ML.NET
در این بخش، گامهای اولیه برای شروع کار با ML.NET را به طور جامع و کاربردی شرح خواهیم داد.
-
نصب و راه اندازی ML.NET:
مراحل نصب: برای نصب ML.NET، میتوانید از دو روش زیر استفاده کنید:
- استفاده از دستورالعملهای مایکروسافت: به وب سایت رسمی مایکروسافت مراجعه کنید و از دستورالعملهای گام به گام ارائه شده برای نصب ML.NET استفاده نمایید.
- استفاده از Visual Studio Installer: برای این کار باید Visual Studio Installer را نصب کنید و در هنگام نصب، گزینه ML.NET را به همراه سایر ابزارهای .NET انتخاب نمایید.
-
آموزش ساخت اولین مدل ML.NET:
پروژههای نمونه: برای شروع آسان، میتوانید از پروژههای نمونه موجود در وب سایت رسمی مایکروسافت استفاده کنید. این پروژهها نمونههایی از مدلهای یادگیری ماشین مختلف را ارائه میدهند که میتوانید از آنها برای یادگیری نحوه کار با ML.NET استفاده کنید.
آموزشهای آنلاین: منابع آموزشی آنلاین متعددی مانند دورههای ویدیویی و مقالات آموزشی در دسترس هستند که میتوانید از آنها برای یادگیری نحوه ساخت اولین مدل ML.NET خود استفاده کنید.
-
ابزارها و کتابخانههای محبوب ML.NET:1
ML.NET SDK: ابزار اصلی برای توسعه مدلهای یادگیری ماشین در ML.NET است که شامل مجموعه کاملی از ابزارها و کلاسها برای کار با دادهها، آموزش مدلها و استقرار آنها میباشد.
NuGet packages: مجموعهای از کتابخانههای شخص ثالث هستند که امکانات مختلفی را به ML.NET اضافه میکنند. این کتابخانهها میتوانند برای انجام وظایف مختلفی مانند پیش پردازش داده، تجزیه و تحلیل متن، پردازش تصویر و ... استفاده شوند.
Visual Studio Tools for ML.NET: ابزاری بصری در Visual Studio است که به شما امکان میدهد مدلهای یادگیری ماشین را به طور بصری طراحی و آموزش دهید. این ابزار برای مبتدیان و کاربرانی که میخواهند بدون نوشتن کد زیاد، مدلهای ساده بسازند، بسیار مفید است.
توجه داشته باشید که قبل از شروع کار با ML.NET شما باید با اصول یادگیری ماشین آشنایی داشته باشید. همچنین، ممکن است در هنگام کار با ML.NET، با مشکلات و چالشهایی روبرو شوید. در چنین مواردی، میتوانید از انجمنهای آنلاین و گروههای حمایتی استفاده کنید و از تجربیات و راهنماییهای سایر کاربران بهره ببرید.
برای شروع یادگیری ML.NET میتوانید در دوره آموزش هوش مصنوعی با ML.NET ثبت نام کنید، که هوش مصنوعی و یادگیری ماشین را در بستر دات نت با سی شارپ بطور جامع و عملی به شما آموزش میدهد.
جمعبندی
ML.NET یک ابزار عالی برای توسعه دهندگان دات نت است که علاقهمند به یادگیری ماشین هستند. مایکروسافت با ایجاد دسترسی به کتابخانهها و اجازه کار با یادگیری ماشین در چارچوب دات نت، فرآیند را برای توسعهدهندگان دات نت که تمایلی به یادگیری پایتون ندارند، ساده کرده است.
با این حال، ML.NET ممکن است برای برخی از علاقهمندان به پایتون و دانشمندان داده جذاب نباشد. از طرف دیگر، مزایایی نیز برای توسعهدهندگان پایتون ارائه میدهد، از جمله امکان ادغام مدلهای از پیش آموزش دیده در برنامههای خود. به عنوان مثال، کاربران میتوانند یک مدل را با استفاده از PyTorch آموزش دهند، آن را به فرمت ONNX تبدیل کنند و سپس در .NET از آن استفاده کنند. بطور کلی اگر از علاقمندان به حوزه هوش مصنوعی و استفاده از آن در اپلیکیشنهای خود هستید، به هیچوجه نباید ML.NET را از دست دهید!
سوالات متداول
-
آیا ML.NET رایگان است؟
بله! ML.NET یک فریمورک رایگان، متنباز و چند پلتفرمی است.
-
کاربرد ML.NET در یادگیری ماشین چگونه است؟
ML.NET این امکان را برای توسعهدهندگان فراهم میکند تا مدلهای یادگیری اختصاصی را به شکلی بسیار ساده بسازند و از آنها در برنامههای خود استفاده کنند.