یادگیری ماشین چیست؟

ماشین لرنینگ چیست؟ نوشته دوم

در نوشته قبلی در مورد اینکه ماشین لرنینگ یا یادگیری ماشین چیست، مطالب را مرور کردیم. در این نوشته مطالب دیگری را از کتاب زیر مرور میکنیم:

Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems

تفاوت دو نوع یادگیری Batch and Online در یادگیری ماشین:

در نوع Batch ابتدا سیستم ، با استفاده از دادههای آفلاین آموزش داده میشود (offline learning) و سپس روی هر سیستم موردی نظری لانچ میشود. و فرآیند آموزش ان متوقف میشود. برای مثال اگر قیمت خودروهای پژو ۲۰۶ را از سایت دیوار بخوانیم و یک سامانه تخمین قیمت طراحی کنیم ، اگر یکبار دیتا را گرفته و سامانه را آموزش دهیم ، میگوییم از روش Batch استفاده کرده ایم.

حال اگر با استفاده از یک حلقه در بازه‌های زمانی متعدد ، به طور منظم آخرین قیمت ها را از سایت بخوانیم ، میگوییم داریم Online عمل میکنیم. یک مثال بهتر سیستم مسیر یابی (Ways یا Balad) می‌باشد. در لحظه و به صورت آنلاین اطلاعات کاربران را میگیرد و مسیر بهتر (خلوت تر) را به کاربران پیشنهاد می‌دهد.

یادگیری ماشین چیست؟

به وضوح مشخص است که با روش online قیمتهای واقعی تری را خواهیم داشت. این روش بیشتر برای سیستم‌هایی مناسب است که دیتای موجود ، به طور پیوسته تغییر یا به روز رسانی میشود.

همچنین در نوع online برای دیتاهایی که حجم بزرگی دارند مناسب است. این روش با هدف بهینه سازی استفاده از مموری ماشین نیز مهم است.

(this is called out-of-core learning) به طوری که بخش کوچکی از دیتای عظیم را آورده و سیستم را آموزش میدهیم و به همین ترتیب بخش‌های دیگری از دیتای بزرگ را میاوریم و مجددا سیستم تحت آموزش را آموزش میدهیم. این عملیات تا زمانی که کل دیتا را بررسی کرده باشیم ادامه خواهد یافت.

به آنچه که در پارگراف قبلی اشاره شد ، نمیتوان گفت Online چون در واقع ممکن است به صورت offline آموزشها صورت بگیرد. بهتر است به آن بگوییم incremental learning

الگوریتم عیب یابی یا anomaly detection algorithm :

در مواردی که در حال یادگیری تدریجی (incremental) هستیم ، ممکن است بیکباره ببینیم که خروجیهای نامتعارفی در سیستم ما مشاهده میشود.

در این موقع این امکان وجود دارد که سیستم یادگیری ماشین توسط اسپمرها یا هر منبع دیگری توسط اطلاعات نادرست آموزش دیده باشد. واضح است سیستمی که به نادرستی آموزش دیده باشد مانند تیغ در کف زنگی مست خواهد بود.

یک راهکار برای جلوگیری از این مورد این است که همواره خوراک ورودی در training data set را تحت کنترل و مانیتورینگ داشته باشیم که مبادا اطلاعات غلط وارد سیستم شود.

دومدل یادگیری ماشین Instance-Based و Model-Based :

در مدل Instance-Based ، برای مثال در فرآیند تشخیص ایمیل‌های اسپم، الگوریتم طوری طراحی میشود که علاوه بر یافتن ایمیل‌های spam ، ایمیل‌هایی شبیه به spam نیز شناسایی گردد.

در حالت modelbased training ابتدا یک مدل طراحی میشود و سپس با استفاده از آن مدل ، به انجام prediction پرداخته میشود.

برای مثال فرض کنید شما میخواهید رابطه بین پول با شادی مردم را بدست آورید. ابتدا دیتاهای Better life index را از این سایت دانلود میکنیم. همچنین آمار GDP را از این سایت دانلود میکنیم. سپس با ترکیب دیتاها و sort کردن آن بر اساس GDP per capita به جدول زیر میرسیم:

یادگیری ماشین چیست؟
مقایسه شاخص GDP و میزان شادی مردم کشورهای مختلف

حال با بررسی داده‌های چند کشور به صورت رندوم ، به نمودار زیر میرسیم:

یادگیری ماشین چیست؟
آیا یک روند در این نمودار دیده می‌شود؟

به نظر میرسد که با افزایش شاخص GDP میزان شادی آن کشور کم و بیش به صورت خطی بالا میرود.

آنچه که تا اینجا انجام دادیم را Model selection میگویند. مدلی که رابطه بین میزان شادی مردم و GDP ان کشور را به ما نشان میدهد. به این مدل انتخاب شده ، میتوان یک فرمول نسبت داد:

یادگیری ماشین

در این مدل یک attribute داریم به نام GDP_per_capita و همچنین دو عدد پارامتر داریم به نام تتاصفر و تتایک.

با کم و زیاد کردن تتایک و تتا صفر میتوان رفتار‌های متعددی را بازسازی نمود.

با توجه به شکل زیر رفتار ناشی از تغییر تتاها مشاهده میشود:

رگرسون خطی در یادگیری ماشین

کاربردی ترین مدل در یادگیری ماشین کدام است؟

قبل از اینکه به استفاده از مدل بپردازیم باید مقدار تتاها را مشخص کنیم. از کجا باید بدانیم که چه مقادیری از تتا کاربردی ترین مدل را برای ما فراهم میکند.

برای پاسخ دادن به این سوال باید باید utility function  یا fitness function را تعیین کرده و توسط آن ببینیم که مدل ما تا چه اندازه کاربردی می‌باشد. یا اینکه Cost function‌ تعریف کنیم تا ببینیم تا چه اندازه مدل ما ناکارآمد می‌باشد.

در مسائل رگرسیون خطی ، افراد معمولا از Cost function‌ استفاده میکنند. که در واقع اختلاف بین پیش‌بینیهای  مدل خطی و مثالهای (training examples) را محاسبه میکند.

هدف این است که این اختلاف یا فاصله به کمترین مقدار ممکن Minimum برسد. اینجا کاربرد الگوریتم رگرسیون خطی مشخص میشود.

شما داداه‌های آموزشی (training examples) را به سیستم میدهید و بهترین حالت پارامترها را که به مدل شما فیت میشود را پیدا میکنید. به این فرآیند آموزش مدل یا (training the model) میگوییم.

در مدل فرضی ما، الگوریتم به این نتیجه میرسد که تتا صفر و تتا یک در حالتی که مقادیر زیر را داشته باشند ، بهترین عملکرد صورت خواهد پذیرفت:

حال همانگونه که در شکل زیر نیز میبینیم ، مدل تهیه شده ، بر داده‌های آموزشی فیت (تاحد خوبی) شده است:

داده های آموزشی در یادگیری ماشین

پیش بینی کردن یا Prediction:

در این مرحله از یادگیری ماشین وقت آن رسیده که سیستم را وادار کنیم برای ما پیش‌بینی (Predict) انجام دهد.

فرض کنید میخواهیم بدانیم مقدار شادی مردم فلان کشور چقدر است.

برای مثال به شاخص GDP کشور cypreus نگاه میکنیم و میبینیم که عددی برابر ۲۲۵۸۷$  میباشد.

بعد از اجرای مدلمان که آنرا طراحی کرده ایم به این جواب میرسیم که شاخص رضایت از زندگی (life satisfaction) حدود ۵٫۹۶ ‌خواهد بود:

در ادامه کدهای پایتونی که این محاسبات را برای ما انجام میدهند را میبینیم:

پایتون در یادگیری ماشین

و :

آموزش یادگیری ماشین

آنچه در بالا استفاده کردیم روش model based learning  بود.

 اگر به جای آن از الگوریتم instance-based learning ‌ استفاده کرده بودیم ، متوجه میشدیم که اسلوونی شاخص GDP نزدیک به کشور Cyprus یعنی ۲۰۷۳۵ دلار دارد.

و مطابق آنچه که آمارهای OECD به ما میدهد میبینیم که شاخص رضایت از زندگی در اسلوونی برابر ۵٫۷ است.

بنابراین بدون محاسبات نیز، منطقی بودن عدد بدست آمده در محاسبات بالا را میتوان درک کرد.

اگر مقداری zoom out ‌کنیم و به دو کشور نزدیک بعدی (پرتقال و اسپانیا) نگاه کنیم میبینیم که شاخص رضایت از زندگی این دو کشور برابر ۵٫۱ و ۶٫۵  ‌می‌باشد.

میانگین این سه عدد برابر ۵٫۷۷ می‌باشد که بسیار به آنچه که مدل ما پیش بینی میکند نزدیک است.

این الگوریتم ساده regression   k-nearest neighbors‌ نام دارد. K ‌در این مورد برابر با ۳ بوده است.

اگر میخواستیم مسئله قبلی را به روش  K nearst حل کنیم ، کافی بود جابه‌جایی زیر را در برنامه خود انجام دهیم:

کا‌رهای کامل تری نیز میتوان انجام داد. برای مثال در نظر گرفتن attributeهای دیگری نظیر، نرخ بیکاری ، آلودگی هوا، تورم .

نوشته بعدی : اصول اجرای یک پروژه ماشین لرنینگ چیست؟ (بزودی)

منبع :

Hands-On Machine Learning with Scikit-Learn and TensorFlow

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *