"حقیقت اینه که ماشین ها یاد نمی گیرند. کاری که یادگیری ماشین انجام میده، پیدا کردن یک فرمول ریاضی است که وقتی بر روی یکسری از ورودی ها اعمال میشه، خروجی مطلوب ما رو میده.
حالا پس چرا مشاین لرنینگ: دلیلش قدرت مارکتینگ بیشتر این کلمه برای مشتری ها و کلاینت هاست. "
اینها جملاتی از کتاب صدصفحه ای یادگیری ماشین، اثر آندری بورکوف هست. این کتاب یکی از پرفروش ترین کتاب ها در زمینه هوش مصنوعی و یادگیری ماشین است. آندری بورکوف، کتابش رو بر اساس سیاست، اول بخوایند و بعد پرداخت کنید منتشر کرده است. بنابراین شما می توانید کتاب رو به صورت رایگان دانلود کنید و در صورتی که کتاب برای شما مناسب بود، هزینه آنرا پرداخت کنید. نکته ای که این کتاب داره اینه که سعی کرده در 135 صفحه (که با اسم اصلی کتاب هم تناقض دارد-که فکر کنم اینم برای مارکتینگ بهتر کتاب بوده) الگوریتم های کاربردی یادگیری ماشین و فرومول های لازم برای استفاده از اونها رو برای ما روشن کنه.
من قصد دارم مطالب اصلی این کتاب رو تو یک سری از مقالات مرتبط خلاصه کنم، تا مخاطب فارسی بتونه مطالب رو راحت تر بخونه و هر جا هم نیاز بود مطالبی رو که به نظرم می تونه به فهم مطلب کمک کنه رو اضافه کنم. بخش هایی که از متن کتاب نیست و خودم اضافه کردم، به صورت هایلایت تو متن مشخص شده. شما هر جا نیاز داشتید می تونید به کتاب اصلی مراجعه کنید و توضیحات تکمیلی رو اونجا بخونید.
لینک صفحه ویکی کتاب: http://themlbook.com/wiki/doku.php
- مقدمه:
1-1 یادگیری ماشین چیست؟
یادگیری ماشین رو می شه اینطور تعریف کرد: 1- جمع اوری داده 2- ساخت یک مدل آماری از روی داده ها. این مدل آماری در واقع برای حل مسائل واقعی به کار میره.
برای اینکه مفهوم یادگیری ماشین رو یخورده بیشتر شرح بدیم، مثال زیر رو درنظر بگیرید:
فرض کنید به شما مواد اولیه غذا و دستور پخت رو میدند. خروجی از این دو مورد یه غذای پخته شده و احتمالا خوشمزه است. (اگر دستورپخت رو به درستی پیاده سازی کردید). حالا یادگیری ماشین چیکار می کنه؟ شما به مدل خودتون مواد اولیه و غذای خوشمزه رو میدید و اون به شما دستور پخت رو میده. و این کجا به درد می خوره. اونجا که شما ورودی و خروجی ور دارید ولی نمی دونید که چطور این ورودی منجر با اون خروجی شده.
1-2- انواع یادگیری
یادگیری سه نوع اصلی داره، یادگیری با نظارت، بدون نظارت و تقویت شده
1-2-1 یادگیری با نظارت
هدف یک الگوریتم یادگیری نظارت شده استفاده از مجموعه داده برای تولید مدلی است که یک بردار ویژگی(Feature Vector) x را به عنوان ورودی و برچسب هر ردیف از داده ها را به عنوان خروجی می گیرد و مدلی رو به شما میدهد که برچسب هر ردیف از داده ها رو پیش بینی می کنه. در واقع ما برای هر ورودی، یک یا چند خروجی داریم و قصد داریم رابطه ای بین این ورودی و خروجی پیدا کنم تا برای داده های بعدی، خروجی رو پیش بینی کنیم.
2-2-1 یادگیری بدون نظارت
هدف یک الگوریتم یادگیری بدون نظارت ، ایجاد مدلی است که یک بردار ویژگی x را به عنوان ورودی بگیرد و آن را به بردار دیگری یا به یک مقدار تبدیل کند که بتواند برای حل یک مسئله عملی استفاده کند. خوشه بندی یا کلاسترینگ(Clustering) یک نمونه از الگوریتم های بدون نظارته.
1-2-3 یادگیری نیمه نظارتی
در این نوع مسائل ما هم داده های برچسب گذاری شده و هم بدون برچسب داریم. هدف الگوریتم یادگیری نیمه نظارت شده همان هدف الگوریتم یادگیری نظارت شده است. اینجا ما امیدواریم که استفاده از بسیاری از داده های بدون برچسب می تواند به الگوریتم یادگیری کمک کند تا مدل بهتری پیدا کند
1-2-4 یادگیری تقویتی
هدف الگوریتم یادگیری تقویتی، یادگیری خط مشی است. خط مشی تابعی است (شبیه مدل یادگیری تحت نظارت) که بردار ویژگی های یک حالت را به عنوان ورودی در نظر گرفته و عملکرد بهینه ای را برای اجرای در آن حالت خروجی می دهد. این عمل در صورتی بهینه است که میانگین پاداش مورد انتظار را به حداکثر برساند.
در واقع شبیه برنامه ریزی پویا ما دنبال بهینه کردن حرکت بعدی هستیم به طوری که امید انتظاری پاداش نهایی بیشینه شود.
1-3 یادگیری با نظارت چطور کار می کند؟
تو این بخش به طور خلاصه نحوه کار یادگیری با نظارت و توضیح میدیم. در واقع این بخش فقط یه مثال حل میشه وجزییات مدلها تو بخش های بعدی صحبت میشه. دلیل اینکه یادگیری با نظارت انتخاب شد اینه که این نوع یادگیری ماشین بیشترین استفاده رو داره.
مساله زیر رو در نظر بگیرید. فرض کنید تو شرکت گوگل برای بهبود سروی جی-میل می خواد تشخیص بوده کدوم ایمیل ها اسپم هستند و کدو ها اسپم نیستند. در واقع برچسب داده های “spam” و “not-spam” خواهد بود. حالا بردار ویژگی های ما xرو باید تعریف کنیم. فرض کنید مهندس علوم داده ما تصمیم می گیره بر اساس کلمات موجود داخل ایمیل این ویژگی ها رو بسازه. اون یک لیست از کلمات رو در نظر می گیره که برای تشخیص اسپم بودن ایمیل به کار میاد. فرض کنید این لیست شامل 20،000 کلمه است. این ترتیب بردار ویژگی های یا x شامل 20،000 بعد خواهد بود و اگر کلمه ای در متن ایمیل بود، مقدار بردار برای اون ایمیل برابر 1 و اگر در متن ایمیل وجود نداشت مقدار برابر صفر میشه.
حالا فرض کنید ما 10 هزار ایمیل داریم که قبلا برچسب گذاری کردیم. حالا بر اساس لیست کلماتی که تعریف کردیم، بردار ویژگی هامون رو ایجاد می کنیم. هدف ما اینه که با کمک این داده های برچسب گذاری شده بتونیم مدلی بسازیم که اگر دفعه بعد ایمیل جدیدی رسید، این مدل خودش با دقت بالایی تشخیص بده که اسپم هست یا خیر.
مدلی که برای این مساله انتخاب کردیم Support Vector Machine(SVM)است. این الگورتم لیبل های +1 (spam) و -1 (not-spam) رو به عنوان برچسب داده ها درنظر می گیره.
این الگوریتم یک خط فرضی(در فضای چند بعدی هایپر پلن) می کشه و داده هایی که بالای خط هستند رو به عنوان +1 و زیر خط رو -1 در نظر می گیره. در یادگیری ماشین، به مرز بین دو کلاس مختلف، مرز تصمیم گیری(Decision Boundary) می گند.
معادله هایپر پلن از طریق زیر به دست میاد.
wx-b=0
برچسب داده ها از طریق علامت بردار ویژگی ها در wx-bبه دست میاد:
y=sign(wx-b)
هدف الگوریتم هم یافتن مقدار بهینه w و b است. شکل زیر یه مدل svm در فضای دو بعدی و مرز تصمیم گیری رو نشون میده.
مرز تصمیم گیری هم از طریق مساله بهینه سازی زیر به دست میاد.
Minimum ||w|| s.t: yi(wxi-b)>=1 for i=1, ..., N
هدف ما هم حداقل کردن اندازه مرز تصمیم گیری است.
این یه مدل SVM بود. اینجا ما یه مدل خطی رو برای مرز تصمیم گیری معرفی کردیم. بعضی اوقات ساخت یه مدل خطی به درستی داده های مارو کلاس بندی نمی کنه. SVM می تونه با استفاده از کرنل ها(kernel) مدل غیر خطی بسازه. این روش ها در بخش سوم توضیح داده میشه.
بعد از ساخت مدل ما باید دقت مدل رو ارزیابی کنیم. خوب بعد از ارزیابی و تایید مدل ما از اون برای حل مسائل واقعی استفاده می کنیم و اگر نیاز شد باید دوباره اون رو به روز کنیم.
برای پیاده سازی یه پروژه ML معمولا باید یکسری مراحل طی بشه تا مطمین باشیم که خروجی کار، از طریق یک مسیر درست طی شده و قایل اتکا است. به این مسیر پایپلاین پروژه می گن. شکل زیر پایپلاین یک پروژه ML رو نشون میده.
تو مساله ما برای مشخص کردن اسپم بودن یک ایمیل
1- تعریف مساله: پیش بینی “spam” یا “not-spam” برای یک ایمیل دریافتی
2- داده ها: لیست 10 هزار تایی ایمیل ها و برچسب گذاری اونها
3- ارزیابی: تعریف معیار های ارزیابی که نشون میده یک مدل خوب عمل می کنه یا نه(تو مثال ما در این مورد بحث نشده ولی دقت به عنوان یکی از معیار ها در اخر کار نام برده شد)
4- ویژگی ها: تعریف لیست کلمات و اندازه گذاری مقدار اونها برای هر ایمیل
5- مدل سازی: انتخاب SMV و مدلسازی داده ها با استفاده از داده های مرتبط با 10 هزار ایمیل
6- آزمایش: بهینه سازی مدل از طریق تابع بهینه سازی تعریف شده( و یا بررسی مدل های دیگه ای که می تونستیم به جای SVM استفاده کنیم)
و تمام این مراحل یه صورت مداوم در حال اجرا و بهبود هستش.
تو فصل دوم در مورد نمادها و نشانه گذاری ها و یخورده هم در مورد اصول اولیه آمار صحبت خواهیم کرد که میتونید از لینک زیر مطالعش کنید.