در مقاله یادگیری عمیق چیست با یکی از مهمترین و پرکاربردترین الگوریتم های یادگیری ماشین آشنا شدیم.در این مقاله کتابخانه های یادگیری عمیق که در پروژه ها استفاده می شوند را توضیح می دهیم.
. . . .
الگوریتمهای یادگیری ماشین
الگوریتمهای ساده یادگیری ماشین شامل الگوریتم های یادگیری بانظارت و بدون نظارت است که با جزئیات آن ها در مقاله انواع یادگیری ماشین آشنا شدیم.
یادگیری بانظارت شامل رگرسیون خطی، رگرسیون منطقی (Logistic regression)، درختهای تصمیم (Decision trees) و k نزدیکترین همسایه (K nearest neighbors) و یادگیری بدون نظارت شامل خوشهبندی k-means و الگوریتمهای کاهش بُعد می باشد.
برای تحلیل مجموعهدادههای بزرگ، از الگوریتمهای پیشرفته مثل مدلهای مارکوف (Markov Models)، ماشینهای بردار پشتیبان (Support Vector Machine)، Q-learning و همینطور یک سری از الگوریتمهای ساده مثل دستهبندی، KNN و kmeans استفاده می شود. در این مسیر می توان از شبکههای عصبی (Neural Networks) استفاده کرد که کتابخانههای پیشرفته یادگیری ماشین مخصوص خودشان را دارند. در زیر تعدادی از کتابخانه های یادگیری عمیق بررسی میشوند.
دوره آموزشی: برای یادگیری برنامه نویسی الگوریتمهای یادگیری ماشین، دوره آموزش یادگیری ماشین به زبان ساده با پایتون را رایگان در کانال یوتیوب دیتاهاب ببینید.
کتابخانه های یادگیری عمیق
-
کتابخانه Tensorflow
درحالیکه کتابخانه Scikit-learn شامل طیف وسیعی از الگوریتمهای معروف و رایج است، Tensorflow یک کتابخانه یادگیری ماشین مناسب برای یادگیری عمیق (Deep Learning) است، چون بسیاری از تکنیکهای پیشرفته از جمله محاسبه اتوماتیک پس انتشار (Back-propagation)/کاهش گرادیان (Gradient decent) را دارد. این فریمورک به علت منابع کاربردی، مستندات کافی و فرصتهای شغلی زیاد، امروزه یک انتخاب مناسب برای یادگیری است. تا سالهای اخیر، Theano رقیب جدی Tensorflow بود ولی از اواخر 2017، گسترش و توسعه این فریمورک رسماً متوقف شد.
-
کتابخانه Keras
Keras یکی از کتابخانه های یادگیری عمیق است. این کتابخانه متنباز به زبان پایتون است که بر روی Tensorflow، Theano و دیگر فریمورکها اجرا میشود و به کاربر این امکان را میدهد تا با تعداد خطوط کد کمتر، آزمایشهای سریعتری داشته باشند. مثل یک قالب وردپرسی، keras یک کتابخانه مینیمال و ماژولار است که سریع آماده و راهاندازی میشود ولی نسبت به Tensorflow و دیگر کتابخانهها انعطافپذیری کمتری دارد.
-
کتابخانه Caffe
Caffe کتابخانهای متنباز است که عموماً برای پیادهسازی معماریهای یادگیری عمیق برای دستهبندی تصاویر و قطعهبندی (Segmentation) تصاویر مورداستفاده قرار میگیرد. Caffe با ++C نوشته شده است ولی یک رابط (Interface) پایتونی دارد که برای افزایش سرعت، امکان بهرهگیری از GPU و استفاده از CuDNN شرکت Nvidia را فراهم میکند.
-
کتابخانه Torch
Torch در سال 2002 ارائه شد و در جامعهی یادگیری عمیق بسیار شناخته شده است. یک کتابخانه متنباز مبتنی بر زبان برنامهنویسی Lua است. Torch طیفی از الگوریتمهای یادگیری عمیق را ارائه میدهد و در Facebook، Google، twitter، NYU، IDIAP، Purdue و همینطور دیگر شرکتها و آزمایشگاههای تحقیقاتی مورداستفاده است.
دوره آموزشی: برای آشنایی با کتابخانههای یادگیری عمیق و انجام پروژههای کاربردی دوره آموزش متن کاوی فارسی با شبکههای عصبی را ببینید.
یادگیری ماشین جمعی یا گروهی (Ensemble Machine Learning)
یک روش پیشرفته دیگر که گاهی در کنار شبکههای عصبی مورداستفاده قرار میگیرد، یادگیری جمعی (Ensemble learning) نامیده میشود. این تکنیک الگوریتمها و روشهای آماری را ترکیب میکند تا یک مدل یکپارچه تولید کند که در مقاله روش های یادگیری جمعی بیشتر بررسی میشود.
مراحل یک پروژه یادگیری ماشین
اولین پروژه یادگیری ماشین برای ساخت مدل های ساده
- ورودی داده هایی با ساختار جدولی و نمودارهای پراکندگی است،
- فراخوانی کتابخانههای یادگیری ماشین در پایتون از جمله Numpy، Pandas و Scikit-learn برای استفاده از الگوریتم های یادگیری ماشین آماده،
- مدل سازی با الگوریتمهای ساده یادگیری بانظارت (رگرسیون خطی، رگرسیون منطقی، درخت تصمیم، k نزدیکترین همسایه) و بدون نظارت (خوشهبندی k-means)
مراحل یادگیری ماشین برای ساخت مدل های پیشرفته
- بیگ دیتا به عنوان داده ورودی،
- استفاده از GPU به جای CPU برای پردازش حجم زیاد داده،
- استفاده از الگوریتمهای یادگیری ماشین پیشرفته ای که کتابخانه های یادگیری عمیق مانند Tensorflow و keras دارند.
. . . .
و در انتها…
در چندین مقاله اخیر با شبکه های عصبی و یادگیری عمیق کامل آشنا شدیم که مباحث نسبتا سخت اما بسیار مهمی هستند. مقاله بعدی درباره یکی از آسان ترین الگوریتم ها صحبت می کنیم. در مقاله درخت تصمیم چیست به بررسی درخت تصمیم و درخت تصادفی می پردازیم که از ساده ترین الگوریتم های یادگیری ماشین هستند.