مروری بر یادگیری ماشین (قسمت دوم)

این پست تقریبا خلاصه‌ای از قسمت های اولیه‌ی فصل پنجم کتاب یادگیری عمیقه و اسم این فصل هست Machine Learning Basics. کتاب با فرمت HTML و فصل به فصل تو سایتی که لینک کردم به رایگان در دسترسه. Yoshua Bengio و Ian Goodfellow از نویسندگان این کتاب هستند.

قسمت اول این خلاصه رو هم ‌می‌تونین اینجا ببینین.


  • رگولاریزیشن (Regularization) یعنی هر گونه تغییری توی الگوریتم یادگیری که برای کاهش خطای تست انجام می‌شه. مثلا این تغییر می‌تونه تو تابع هزینه و به صورت اضافه کردن یه عبارت جدید بهش باشه، مثلا شکل 0 یه رگولازیشین L2 رو نشون می‌ده.
شکل 0
شکل 0
  • همونطور که گفتیم رگولازیشین فقط باعث کاهش خطای تست می‌شه و نه خطای train. حتی ممکنه استفاده ازش باعث بشه خطای train بیشتر بشه.
  • پارامترهای مدل (وزن ها) توسط الگوریتم یادگیری به دست میان. اما هایپرپارامترها توسط الگوریتم یادگیری به دست نمیان (و خودمون تعیینشون می‌کنیم)، و این کار معمولا دو تا دلیل داره: 1) بهینه کردن اون هایپرپارامتر مشکله. 2) یادگیری اون هایپرپارامتر روی دادگان train اشتباهه و منجر به overfit می‌شه.
  • معمولا همه‌ی هایپرپارامترهایی که روی ظرفیت مدل تاثیر دارن (مثل درجه‌ی چندجمله ای تو رگرسیون خطی) جزو دسته‌ی دوم هستند، یعنی هایپرپارامترهایی که توسط الگوریتم یادگیری یادگرفته نمی‌شن چون یادگرفتنشون روی دادگان train اشتباهه و منجر به overfit می‌شه.
  • به طور کلی با کمک دادگان train پارامترها توسط الگوریتم یادگرفته می‌شن.
  • با کمک دادگان validation که معمولا حدود 20% از دادگان train هستند می‌تونیم هایپرپارامترهای درست رو به دست بیاریم. یعنی می‌تونیم اول هایپرپارامترها رو تعیین کنیم. بعد روی دادگان train الگوریتم رو اجرا کنیم. بعد نتایج رو روی دادگان validation ببینیم و با توجه به نتایج هایپرپارامترهای جدیدی رو تعیین کنیم و دوباره این مراحل رو تکرار کنیم تا به هایپرپارامترهای درست برسیم. و درنهایت روی دادگان test نتیجه رو بررسی می‌کنیم.
  • اگر کل داده‌ها اونقدر کم باشن که نتونیم سه تا مجموعه train, test, validation از توش دربیاریم می‌تونیم از cross-validation استفاده کنیم.
  • به هر تابعی از داده می‌گیم تخمین نقطه‌ای یا آماره (point estimation/statistic). فرم کلیش توی شکل 1 هست و توی این مطلب یکم بیشتر توضیحات دادم درموردش.
شکل 1
شکل 1
  • مثلا یه آماره‌ای که خیلی مرسومه میانگین نمونه‌ایه که فرمولش تو شکل 2 هست.
شکل 2
شکل 2
  • توجه کنین که خیلی از (یا شاید حتی همه) چیزایی که تو یادگیری ماشین برای ما در مورد داده ها مهمه مثل توزیع تولید داده و پارامترهای مربوط بهش و خطای تست در واقع تابعی از داده‌ها و درنتیجه آماره ای از داده‌ها هستند.
  • اینجا فراوانگرا ها (! همون فریکوئنتیست ها) دیدشون اینجوریه که: مقدار واقعی پارامتر θ ثابت و مشخصه اما مجهوله و θ_hat تابعی از داده‌هاست. چون نمونه‌ای که گرفتیم رندومه، هر تابعی از جمله θ_hat هم روی اون رندومه و در نتیجه θ_hat هم یه متغیر رندومه و یه بایاس و واریانسی داره.
  • همین مفهوم تخمین نقطه‌ای رو می‌تونیم تو فضای تابعی هم تعمیمش بدیم. به این صورت که f_hat تخمینی از تابع f ئه و یه تخمین نقطه ای تو فضای توابعه.
  • بایاس و واریانس برای یه آماره هر دو منبعی از خطا و تفاوت با مقدار واقعی هستند، واریانس که میانگین فاصله‌ی مقدار تخمینی از مقدار واقعی رو نشون می‌ده و بایاس هم توی شکل 3 مشخصه و تفاوت مقدار واقعی با مقدار مورد انتظارِ مقدار تقریبی رو نشون می‌ده.
شکل 3
شکل 3
  • مثلا اگه توزیع داده ها نرمال باشه، بایاس میانگین نمونه‌ای (که تو شکل 8 تعریف شده) صفره و واریانسش هم تو شکل 4 مشخصه.
شکل 4
شکل 4
  • می‌تونیم با کمک میانگین خطا روی دادگان تست تخمین خوبی روی خطای generalization مدل به صورت کلی بزنیم. یعنی پیش بینی کنیم که خطای روی دادگان تست دیگه چقدره حدودا. باتوجه به نظریه‌ی حد مرکزی (CLT) می‌تونیم بگیم تعداد داده‌های تست اونقدری هست که میانگین خطاشون به سمت توزیع نرمال میل کنه. و در این حالت می‌تونیم از فرمول شکل 4 برای محاسبه‌ی واریانس میانگین خطا استفاده کنیم و در نهایت یه بازه‌ی اطمینان هم برای خطای generalization ارائه بدیم.
شکل 5
شکل 5
  • تو شکل 5 یه بازه‌ی اطمینان 95% درصدی برای خطای generalization آورده شده. یعنی اگه چندین بار از جامعه نمونه بگیریم و دادگان تست درست کنیم و روی هر کدوم این بازه رو محاسبه کنیم، در 95% مواقع، مقدار واقعی خطای generalization توی همین بازه خواهد بود.
  • بعضی مواقع می‌شه از همین بازه‌ی اطمینان برای مقایسه‌ی دو تا الگوریتم یادگیری A و B استفاده کرد. اینجوری که بازه رو برای هر کدوم به دست میاریم و در نهایت اون الگوریتمی که کران بالای بازه‌ی اطمینانش کوچکتر باشه، بهتره!
  • حالا می‌رسیم به trade-off بین بایاس و واریانس. یعنی فکر کنین دو تا الگوریتم A و B داریم. الگوریتم A بایاس بیشتری داره و الگوریتم B واریانس بیشتری. و ما می‌دونیم که هم بایاس و واریانس یه منبعی از خطا هستند، حالا کدوم الگوریتم رو انتخاب کنیم؟
شکل 6
شکل 6


  • اینجاست که خطای مجذور مربعات یا همون MSE به کارمون میاد. همون طور که تو شکل 6 می‌بینید، MSE در واقع یه معیاریه که هم بایاس و هم واریانس رو توی خودش داره. بنابراین می‌تونیم برای مقایسه‌ی الگوریتم‌های A و B از MSE کمک بگیریم. هر چقدر MSE کمتر باشه، بهتره.
شکل 7
شکل 7
  • تو شکل 7 می‌تونید رابطه‌ی بین بایاس و واریانس با ظرفیت مدل رو ببینید. بایاس به طور کلی با افزایش ظرفیت مدل کمتر می‌شه، اما واریانس با افزایش ظرفیت افزایش پیدا می‌کنه و رابطه شون شبیه overfitting و underfitting با ظرفیته.
  • یه آماره‌ی سازگار یا consistent، آماره ‌ایه که هر چقدر روی داده‌های بیشتری گرفته بشه به مقدار واقعی پارامتری که داره تخمین می‌زنه نزدیک تر بشه، یعنی بایاسش به سمت صفر بره.
  • مثلا تو شکل 2 یکی از آماره‌های رایج که در حقیقت میانگین رو تخمین می‌زنه، دیدیم. و در شکل 8 می‌بینیم که این میانگین نمونه‌ای بایاسش صفره پس سازگاره و در کل تخمین‌گر خوبیه، و وقتی میانگین نمونه‌ایِ نمونه‌ی بزرگی رو می‌گیریم، میانگین نمونه‌ای خیلی نزدیک میانگین واقعی جامعه می‌شه.
شکل 8
شکل 8
  • حالا فهمیدیم که باید دنبال تخمین‌گرهای سازگار باشیم، باید از کجا بیاریمشون؟! به طور کلی دوست داریم به روش خاصی داشته باشیم که با کمک اون بتونیم برای پارامترهای هر مدلی که داریم، تخمین‌گر‌های سازگار پیدا کنیم. یکی از رایج‌ترینِ این روش‌ها Maximum Likelihood ئه.
  • فرض می‌کنیم مجموعه‌ی X شامل m تا نمونه‌ی iid (یعنی از هم مستقل اند و توزیع یکسانی دارند) از کل جامعه باشه.
  • و p_data توزیع واقعی تولید داده‌هاست که برای ما مجهوله و ما به دنبال پیدا کردنش هستیم.
  • و p_model خانواده ای از توزیع هاست که هر توزیع با پارامتر θی خودش مشخص می‌شه. مثلا اگر این خانواده به فرم W.T*X باشند، پارامترشون W ئه.
  • و p_hat_data که توزیعیه که در نهایت برای داده‌ها تخمین می‌زنیم.
  • و در نهایت تخمین‌گر سازگار ما از فرمولی که تو شکل 9 می‌بینید به دست میاد. یعنی داره می‌گه θرو انتخاب کن که باعث بشه نمونه‌ی X ما در اون توزیعی که به دست میاد بیشترین احتمال رو داشته باشن.
شکل 9
شکل 9
  • توی فرمول شکل 9 یه ضرب می‌بینید که تو محاسبات (مثل مشتق گرفتن) خیلی سخت میشه کار کردن باهاش. از اون جایی که لگاریتم مقدار argmax رو تغییر نمیده (یعنی اون θای که ماکسیمم می‌کنه این عبارت تغییر نمی‌کنه اما طبیعتا مقدار این عبارت تو ماکسیممش تغییر می‌کنه) یه لگاریتم می‌گیریم از کل فرمول تا ضرب ها تبدیل به جمع بشن و کار باهاشون راحت تر بشه، این فرمول رو می‌تونین تو شکل 10 ببینین.
شکل 10
شکل 10
  • روش Maximum Likelihood با داشتن دو شرط تضمین می‌کنه که θای که به شما برمی‌گردونه سازگاره: 1) توزیع واقعی داده‌ها p_data باید تو خانواده‌ی توزیع p_model باشه. 2) توزیع واقعی داده‌ها دقیقا متناظر یه θ باشه. اگه دو تا θ ی متناظر داشته باشه، روش Maximum Likelihood می‌تونه p_dataی درست رو پیدا کنه اما نمی‌تونه تشخیص بده θی متناظر کدومه.