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

قبل از اینکه انگشت‌هامون را برای یادگیری ماشین به دکمه‌های کیبرد برسونیم خوبه که مفاهیم اون رو با هم مرور کنیم و کمی در مورد واژگانی که توی این دوره ازشون استفاده می‌شه با هم هم‌زبون بشیم.

یادگیری ماشین چی هست؟ تعریفی که من ارائه می‌دم اینه: علم و فنی که با استفاده از اون کامپیوتر با مشاهده‌ داده‌ها و شناخت الگو‌ها امکان پیش‌بینی، دسته‌بندی و یا تصمیم‌گیری در مواجه با داده‌ها یا موقعیت‌های جدید رو پیدا می‌کنه.

مثلا می‌تونه صورت ما رو توی یک عکس مدرسه‌ای شناسایی کنه، می‌تونه مقالات ویرگول رو دسته‌بندی کنه و یا می‌تونه توی بازی تخت نرد با توجه به بازی حریف و تاس انداخته شده بهترین بازی رو انجام بده.




رایج‌ترین دسته‌بندی برای الگوریتم‌های یادگیری ماشین به این صورته:

دسته‌بندی الگوریتم‌های ماشین لرنینگ- عکس از کتاب یادگیری ماشین با پایتون نوشته سباستین راچکا و وحیدمیرجلیلی
دسته‌بندی الگوریتم‌های ماشین لرنینگ- عکس از کتاب یادگیری ماشین با پایتون نوشته سباستین راچکا و وحیدمیرجلیلی


یادگیری با ناظر(supervised learning) که در اون مجموعه‌ای از داده‌ها با لیبل وجود دارن، مثل یک مجموعه عکس که برچسب خورده یا یک دیتاست از دانش‌آموز‌های مدرسه گل‌ها و در آمدشون ۱۰ سال بعد از فارغ‌التحصیلی. در مورد اول هدف شما برچسب زنی عکس‌های آتی هست(دسته‌بندی) و در مورد دوم هدف شما تخمین درآمد دانش‌آموزان فعلی بعد از فارغ‌التحصیلی(رگرسیون).فرآیند یادگیری با ناظر به صورت تصویری توی شکل زیر مشخصه:

یادگیری با ناظر- عکس از کتاب یادگیری ماشین با پایتون نوشته سباستین راچکا و وحیدمیرجلیلی
یادگیری با ناظر- عکس از کتاب یادگیری ماشین با پایتون نوشته سباستین راچکا و وحیدمیرجلیلی


یادگیری بدون ناظر(unsupervised learning) که در اون هیچ برچسبی وجود نداره و کامیپوتر به صورت خودکار در مورد دسته‌بندی اون‌ها تصمیم‌ می‌گیره. فرض کنید که مقالات ویرگول رو بدون استفاده از تگ‌ها دسته‌بندی کنید. الگوریتم‌های بدون ناظر سعی می‌کنند با استفاده از الگوهای موجود متن‌ها شبیه به هم رو پیدا کنند و ازش استفاده کنند.

یادگیری تقویتی -Reinforcement Learning- یک از روش‌های جذاب یادگیری ماشین هست. در این روش ماشین یک سیستم رو به صورتی توسعه میده که در اون بازیکن(agent) به تکرار یک فرایند تصمیم‌ خودش رو بهبود میده. مثال معروف و ابتداییش این روش یک بازی موش، گربه و پنیره که در اون موش سعی می‌کنه بدون اینکه گیر گربه بیفته مسیر رسیدن به پنیر یا پنیرها رو پیدا کنه، مثال معروفش هم بازی آلفا گو هست که توسط مغز گوگل -google brain- توسعه داده شد. البته یادگیری تقویتی یک مثال کاربردی هم داره، سیستم‌های پیشنهاد دهنده، مثل پیشنهاد دهنده فیلم و موسیقی برای شما و پیشنهاد دهنده تبلیغ برای یوتوب!

چرخه یادگیری تقویتی- عکس از کتاب یادگیری ماشین با پایتون نوشته سباستین راچکا و وحیدمیرجلیلی
چرخه یادگیری تقویتی- عکس از کتاب یادگیری ماشین با پایتون نوشته سباستین راچکا و وحیدمیرجلیلی




https://virgool.io/@ghodsizadeh/%D9%82%D8%B3%D9%85%D8%AA-%D8%B5%D9%81%D8%B1%D8%AF%D9%88%D8%B1%D9%87-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B1%D9%88%D8%B2%D9%87%D8%A7%DB%8C-%D9%82%D8%B1%D9%86%D8%B7%DB%8C%D9%86%D9%87-ooa5tkefxkjw
  • نمونه تمرین-training example: یک سطر از جدول داده‌ها که به صورت معادل به اون رکورد، نمونه و یا مشاهده هم می گن.
  • تمرین-training: فیت کردن مدل، برای مدل های پارامتری معادل تخمین پارامتر‌های مدل است.
  • ویژگی‌-Feature: تمام اطلاعاتی که توضیح دهنده ویژگی مشاهده یا نمونه ما است و معمولا با xنمایش داده میشه.
  • هدف-Target: متغیری که نشون دهنده ویژگی مشاهده است. همان برچسب، لیبل و یا متغیر وابسته که با y نشان داده می‌شه.
  • داده‌تمرین- Training set: بخشی از داده که برای تمرین مدل و تخمین زدن‌ پارامتر ها ازش استفاده می‌شه.
  • هایپر پارامتر:پارامتر‌های که ما با استفاده از آن رفتار مدل را هدایت می‌کنیم. مثل لایه‌های شبکه‌ عصبی. در مقابل پارامتر‌هایی که مدل با الگوریتم‌های بهینه‌سازی تعیین می‌کند مانند وزن متغیر‌ها.
  • داده تست- Test set: بخشی از داده که برای ارزیابی مدل استفاده مشه.
  • تابع هزینه- Cost function: که تابعی هست که با حداقل کردن اون-مثلا حداقل کردن تعداد خطا‌ها- پارامتر‌های مدل تخمین زده می‌شن.

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



نقشه راه برای ساخت یک سیستم یادگیری ماشین

معمولا برای رسیدن به یک مدل کاربردی پیش‌بینی کننده شما نیاز به طی کردن ۴ مرحله دارید.

۱- پیش‌پردازش-Preprocessing: توی این مرحله شما داده‌های خام و برچسب‌های اونها رو دارید. سعی می‌کنید از بین داده‌ها بهترین ویژگی‌ها رو انتخاب کنید، داده‌ها رو به شکلی تبدیل کنید که پردازش برای کامپیوتر و الگوریتم‌ها ممکن و سریع باشه و در نهایت داده‌‌هاتون رو به دو بخش تمرین و تست تقسیم می‌کنید.

یک مثال از پیش‌پردازش تبدیل داده‌ها به داده‌های بین بازه [0,1] یا انتقالشون به فضای توزیع نرمال استاندارد است.

۲- یادگیری: در مرحله دوم داده‌های تمیز خودتون رو به مدل میفرستید و مدل با حداقل کردن تابع هزینه خودش به پارامتر‌هایی میرسه که بهترین پیش‌بینی رو برای داده‌های تمرین می‌تونن داشته باشند.

۳- ارزیابی: مرحله سوم مرحله حساسی هست هم برای ما هم برای مدل. اینجا جایی است که مدل رو در با استفاده از داده‌‌های تست آزمایش می‌کنیم. اگر نتایج خوب بود به مرحله ۴ میریم ولی اگر نتایج خوب نبود، باید به مرحله اول رفت، داده‌ها رو مجددا در صورت نیاز پردازش کرد و بعد در مرحله دوم هایپرپارامتر‌های مدل رو تغییر می‌دیم و این چرخه را تا رسیدن به نتیجه مطلوب ادامه می‌دیم.

۴- پیش‌بینی: در این مرحله مدل ما برای استفاده آماده است و می‌شه با ورود داده‌های جدید از نتایج پیش‌بینی‌اش استفاده کرد.

فرایند ساخت یک سیستم یادگیری ماشین- عکس از کتاب یادگیری ماشین با پایتون نوشته سباستین راچکا و وحیدمیرجلیلی
فرایند ساخت یک سیستم یادگیری ماشین- عکس از کتاب یادگیری ماشین با پایتون نوشته سباستین راچکا و وحیدمیرجلیلی




عکس از unsplash
عکس از unsplash

خب فکر می‌کنم برای قسمت اول یادگیری ماشین کافی باشه. در قسمت بعدی برای اولین بار سعی می‌کنیم یک مدل یادگیری ماشین رو پیاده کنیم. احتمالا بخش بیشتر محتوا در صفحه گیتهاب دوره قرار خواهد گرفت.


به امید دیدار تا قسمت دوم.


فهرست مطالب

۰-مقدمه دوره یادگیری ماشین

‍۱-یادگیری ماشین چیست؟(همین پست)

۲- پیاده سازی اولین مدل یادگیری ماشینی

۳- آشنایی با مدل‌‌های scikit-learn(هفته اول فروردین ۹۹)