سعی کردم هرچیزی که از جلسات دوره فهمیدم رو به صورت جزوه در بیارم و در این پلتفورم با بقیه به اشتراک بذارم. کل جلسات دوره 23 تاست که سعی میکنم هفتهای دو جلسه رو منتشر کنم. تا جایی که تونستم سعی کردم خوب و کامل بنویسم، اما اگر جایی ایرادی داشت، حتما تو کامنتها بهم بگید تا درستش کنم.
مباحث ریاضی و آماری این جلسه یکمی زیاده و اگه فکر کردین که خیلی خوب متوجه مطالب نشدید ایرادی نداره، مفاهیمش رو هم بتونید درک کنید، خیلی عالیه.
تخمین و آمار
این بحث یکمی پیشنیازه و مباحث ریاضیات و تئوری توش بیشتره ولی در بعضی مباحث ماشین لرنینگ در مباحث جلوتر لازم میشه که باید راجع بهش بدونیم.
دو دیدگاه مختلف رو بررسی خواهیم کرد. (گریزی هم به دیدگاه سوم خواهیم زد که در این جلسه آورده نشده است، در جزوه جلسه بعدی موجود خواهد بود.)
فرض کنید برای مثال زیر در دادههای مثبت و دادههای منفی یک توزیع خاصی برای هر کدام داریم. حال چون این توزیعها مشخصه هر داده جدیدی رو که در نظر بگیریم میتونیم بفهمیم چقدر به دسته مثبت متعلقه و چقدر به دسته منفی. (اگر حجم نمونه دادههای مثبت و منفی باهم تقریبا برابر باشه میتونیم از روی اینکه چقدر یه نقطه به این دو دسته نزدیکه در بیاریم که اون داده متعلق به کدوم دستهس)
پس تخمین رو نیاز داریم تا پارامترهای یک توزیع رو تخمین بزنیم.
حالا برای اینکه این توزیع رو در بیاریم دو تا دیدگاه مختلف وجود داره.
فرض کنید تو مثال بالا یه توزیع گاوسی دو بعدی داریم که یکی از نمونههای دسته مثبت و یکی از نمونههای دسته منفی میگذره.
حالا دنبال چی هستیم؟ اصلا منظور از تخمین چیه؟ با استفاده از سمپلهای مثبت و منفی دنبال چی هستیم؟
میخواهیم پارامترهای اون توزیع گاوسی رو تخمین بزنیم.
برای این کار فرض میکنیم دستهای نداریم و یه سری نمونه داریم که با یه سری ویژگی مشخص میشن. میخوایم اینهارو بعنوان نمونه که از یه توزیع در اومدن بیرون در نظر بگیریم و پارامترهای اون توزیع رو پیدا کنیم. (به کمک نمونهها میخوایم پارامترهای توزیع رو پیدا کنیم)
در ادامه یه مثال ببینیم و روی اون بحث میکنیم.
تعداد Nتا داده داریم و میخوایم پارامترهای توزیع مورد نظر رو روش پیدا کنیم.
بعنوان یه مثال فرض کنید فضای ویژگیمون یک بعدیه و 10 تا سمپل داریم، هر دایره نشون دهنده یک سمپله. میخوایم یه گاوسی ازشون رد کنیم. واریانس گاوسیهارو هم فیکس در نظر گرفتیم و فقط یه پارامتر u داریم که میخوایم اونو به کمک نمونه هامون تخمین بزنیم.
با این مثال میخوایم بفهمیم likelihood دقیقا چیه و ماکس کردنش یعنی چی اصلا؟
مثلا میایم سه تا گاوسی مختلف میگذرونیم از نمونههامون.
کدوم یکی از این گاوسیها بهتره؟ تهش باید یکیش انتخاب بشه. با چه معیاری بهترین گاوسی رو انتخاب کنیم اصلا؟ گاوسی انتخابشده چه پارامترهایی باید داشته باشه؟
سه تا گاوسی رو جدا جدا رسم میکنیم. میخوایم مقدار توزیع رو تو این ده تا نقطه حساب کنیم تک به تک (احتمالهارو حساب کنیم در هر نقطه، بعد در هم ضرب کنیم) تا تهش ببینیم کدوم توزیع مقدار ضرب احتمالها توش از همهش بیشتره تا اون گاوسی رو انتخاب کنیم.
الان تو عکس زیر، دوتای اول تقریبا ضرب احتمالها توش مقدارش زیاده ولی مورد سوم مقدارش خیلی کم میشه.
حالا میخوایم همین چیزی که بالا گفتیم (محاسبه مقدار توزیع در هر نقطه و ضربشون در هم) رو در قالب یه فرمول در بیاریم و با عنوان maximum likelihood ارائه کنیم.
تو دیدگاه ML میایم یه تابع تعریف میکنیم که دنبال بیشینه کردن مقدار اون تابع هستیم. D همون مجموعه سمپلهامون هست که نمونههارو نشون میده. اگه مقدار پارامترمون تتا باشه، میخوایم ببینیم احتمال این مجموعه سمپل چقدره.
یعنی چی این حرف؟
وقتی تتا رو فیکس میکنیم یعنی گاوسی رو فیکس کردیم (مثلا اگه تتا نشون دهنده میانگین باشه فیکسش کردیم و حالا میخوایم ببینیم احتمال joint نمونهها رو اون توزیع چقدر میشه)
این تابع رو که تو شکل بالا اومده باز کنیم میشه این:
منظور از تتا اینجا همون میانگین توزیعمونه. چرا میانگین؟ چون بالاتر تو صورت مسئله گفتیم فرض کردیم واریانس رو یه مقدار ثابت در نظر گرفتیم و صرفا دنبال u هستیم.
این فرمولی که بالا نوشتیم منظورش اینکه یه توزیع ثابتی داریم که با پارامترهای تتا مشخص میشه. حالا بیایم مقدار p هر نمونه رو حساب کنیم و در هم ضرب کنیم (منظورمون از p اینکه اون نقاط روی توزیع چه مقداری خواهند داشت)
پس معنی likelihood اینکه بیایم p هر سمپل رو در هم ضرب کنیم.
حالا ما چی میخوایم؟ میخوایم مقدار ضرب pها ماکس بشه و هر توزیعی که این اتفاق براش بیفته همون توزیعی هست که دنبالش هستیم.
حالا دنبال بیشینه این تابع likelihood هستیم یعنی اون تتا بیشینه بشه. (یعنی مقداری از تتا رو پیدا کنیم که باعث بشه ضرب اون p نمونهها بیشترین بشه)
شکل زیر که داره تخمین maximum likelihood رو نشون میده، میگه دنبال مقداری از آرگومان تتا هستیم که اون رو ماکس میکنه.
حالا تو این مثال، اون گاوسی قرمز رنگ، داره این مقدار رو برای ما بیشینه میکنه.
حالا اگه به جای این گاوسی قرمز رنگ، گاوسی سبز رنگ رو انتخاب میکردیم، مقادیرش کمتر میشد. (عکس زیر تو اسلایدها اشتباه شده همون گاوسی سبز رنگ باید میبوده)
و اگه گاوسی آبی رنگ رو انتخاب میکردیم، مقدارش خیلی کمتر میشد.
توزیعهایی که باهاشون سر و کار داریم نمایی هستن، به جای خودشون با لگاریتمشون کار میکنیم.این یه موضوع جا افتاده تو مسائل بهینهسازیه. نقاط اکسترمم تو تابع نمایی و لگاریتمی مثل هم دیگهس تو عکس پایین هم مشخصه. (چون این نقاط بهم نمیخوره بخاطر همین از لگاریتم استفاده میکنیم.)
از قبل هم میدونیم که طبق قوانین لگاریتم داریم:
Log(A*B*C) = LogA + logB + logC
پس حالا وقتی لگاریتم میگیریم اون ضرب تبدیل میشه به جمع لگاریتمها.
حالا برای حل مسئله باید از likelihood گرادیان بگیریم و اون رو برابر 0 بذاریم تا بتونیم مقادیر مورد نظرمون رو پیدا کنیم.
برای متغیرهای تصادفیای هست که دو تا مقدار میتونن بگیرن (مقادیر 0 و 1 مثلا) و پارامتر این توزیع احتمال 1 شدن اون متغیر تصادفی رو داره نشون میده.
متغیر تصادفی رو با X نشون دادیم.
چون جمع دو احتمال قراره بشه 1 برای همین اینجوری در نظر گرفتیم. مثل شیر یا خط اومدن یه سکه میتونید در نظر بگیرید. (مثلا احتمال شیر اومدن 0.4 بشه منطقا احتمال خط اومدن 0.6 میشه)
میتونیم نحوه نوشتن رو تغییر بدیم.
حالا اگر Nتا سمپل از این توزیع داشته باشیم میخوایم پارامتر تتا رو براش تخمین بزنیم.
تابع likelihood رو که بنویسیم اینجوری میشه:
از N تا سپمل m تاش رو تعداد نمونههایی در نظر گرفتیم که مقدارشون 1 شده.
حالا تو مرحله بعدی باید لگاریتمشو حساب کنیم. بعد مشتق بگیریم نسبت به تتا و مساوی با 0 قرار بدیم. عکس زیر همه مراحل رو یه جا آورده.
برای اینکه درک بهتری از این فرمولهای بالا داشته باشیم فرض کنید برای دو تا سمپل فرمولهارو بنویسیم. (بالانویس X مشخص کننده اینه که کدوم سمپله)
طبق قوانین لگاریتم از قبل هم میدونیم رابطه زیر برقراره (منظور از ^ توانه):
Log(A^2) = 2LogA
حالا اگه به جای دو تا سمپل N تا سمپل باشه میشه دقیقا همون فرمول یکی مونده به آخر که بالا تو تصویر اسلاید اومده.
نتیجه این شد که اومد گفت تعداد دفعاتی که حاصل 1 شده رو تقسیم بر کل دفعات میکنم که خب بدیهی هم هست. (بدون likelihood هم خودمون همین کار رو میکردیم قطعا)
برای دادههای کم تخمینی که به دست میاد ممکنه غلط باشه و خیلی فیت میشه رو دادهها و مشکل overfitting داره (کلیتش اینکه باعث میشه رو نمونههایی که از قبل داریم نتیجهای که میگیریم خوب باشه ولی رو نمونههایی که جدید میان نتیجهش خیلی خوب نمیشه)
مثلا 3 بار سکه میاندازیم و هر سه بار شیر میاد. نتیجه این تابع براش میشه که هرچقدر هم سکه رو در آینده پرتاب کنیم قطعا شیر میاد که خب درست نیست و غلطه.
اینجوره که متغیر تصادفیمون میتونه k تا مقدار بگیره. مثل انداختن تاس فرض کنید که 6 تا وجه داره و اومدن هر وجه با بقیه وجهها احتمالش یکسانه.
میایم متغیر تصادفی رو بردار در نظر میگیریم که k تا بعد داره و به شیوه one-hot نمایش میدیم. شیوه one-hot اینطوره که مثلا فرض کنید یه تاس داریم که 6 تا وجه داره (یعنی بردارش 6 تا ستون داره) هر وقت میندازیمش تو هر دفعه فقط یه وجهش میاد، پس اون وجهی که اومده رو مقدار 1 براش در نظر میگیریم و بقیه وجه هارو مقدار 0.
یه بردار تتا هم داریم که مقدار تتای i نشون دهنده اینکه احتمال i مین بعد X برابر با 1 بشه. مثلا تو انداختن تاس اگه تتای 2 مقدارش 1 بشه یعنی اینکه دومین وجه تاس اومده.
حالا توزیع رو بنویسیم:
همیشه از بین توانها فقط یکیشون 1 میشه و بقیه 0 میشن که باعث میشه تتای مربوط به توان 1 فقط باقی بمونه.
نکتهای که وجود داره اینکه جمع همهی تتاها باید برابر با 1 بشه. تو مثال قبلی (برنولی) هم همچین چیزی رو داشتیم. منتها چون اومده بودیم تعداد دفعاتی که یک شده رو تقسیم کرده بودیم به تعداد دفعات کل آزمایش، باعث میشد جوابمون بین 0 تا 1 باشه همیشه.
جمع احتمال اومدن وجه اول تا ششم تاس باید برابر با 1 بشه.
حالا برای حل مسئله تابع likelihood رو نوشتیم و حالا میخوایم حداکثرش کنیم.
فرقش با مثال قبلی اینکه روی تتاها شرط داریم، تو مثال قبلی نداشتیم. چون شرط داریم بهش میگن بهینهسازی محدودیتدار که برای حلشون باید از ضریب لاگرانژ استفاده کنیم. در جلسات آینده جزییاتشو میبینیم حالا. تابع اصلی رو که ازش لگاریتم گرفتیم بعلاوه ضریب لاگرانژ ضرب در شرطی که داریم (همون جمع تتاها برابر 1 بشه) میکنیم.
جوابی که به دست اومده میگه که اگه میخوای احتمال k امین وجه تاس رو حساب کنی ببین چند بار از بین همه آزمایشها k امین وجه اومده.
تا الان دو تا مثالی که از توزیعها دیدیم به صورت گسسته بوده، اولیش توزیع روی متغیر تصادفی باینری (0 و1) بود، دومیش توزیع روی متغیر تصادفی با k تا مقدار بود. حالا بریم سراغ یه توزیع پیوسته.
این فرمول توزیع گاوسیه:
فرض میکنیم سیگما رو ثابت در نظر گرفتیم و فقط دنبال u هستیم.
حالا اگه اینو رو همه نمونهها جمع کنیم بعد نسبت به u مشتق بگیریم، uای که به دست میاد همون جواب مسئله maximum likelihood است.
حالا u چیو نشون میده؟ میگه میانگین سمپلهارو حساب کن و همون رو بعنوان پارامتر میانگین توزیع گاوسی در نظر بگیر.
اگه سیگمارو هم ثابت نگیریم و همینارو براش حساب کنیم (انگار دوتایی سیگما و میو در نظر بگیریم) بعد نسبت به سیگما مشتق بگیریم و برابر 0 قرار بدیم سیگما هم میشه واریانس نمونهها.
تا اینجا maximum likelihood رو بررسی کردیم و سه تا مثال مختلف ازش دیدیم.
حالا میریم سراغ MAP که بتونیم مشکل ML رو تا حدی توش حل کنیم.
توی likelihood این جوری بود که اسم احتمال مجموعه داده به شیوه زیر مشخص میشد (فقط یه اسم داشت و بهش میگفتیم likelihood)
حالا توی map دو مدل احتمال با دو اسم مختلف داریم:
تو likelihood دنبال پیدا کردن تتا بودیم به نحوی که p(D|theta) رو حداکثر کنه
تو map دنبال تتایی میگردیم که احتمال دادهها بعد دیدن پارامترهارو حداکثر کنه
فرمول پایینی رو باز میکنیم:
حالا برای بهینهسازی و حداکثر کردن از اونجایی که تو مخرج تتایی نداریم و ارتباطی باهاش نداره پس فقط کافیه که صورت کسر رو حداکثر کنیم.
حالا برای یه مثال فرض کنید قبل اینکه دادههارو ببینیم، با یه اطمینانی میدونیم که میانگین گاوسی تقریبا کجا میفته (یه دانش اولیه داریم در مورد پارامترهای اون توزیع). حالا باید همین اعتقادی که داریم رو با یه توزیع همین اول کار مدل کنیم و بعد تو مرحله بعدی اون توزیع رو میذاریم کنار نمونههامون، بعد نتیجهگیری میکنیم که پارامترای توزیع چی باشه.
الان تو شکل بالا یه p(u) داریم که قبل دیدن دادهها حسابش کردیم. (در واقع همون (theta)p بوده چون میخواستیم پارامتر u رو تخمین بزنیم دیگه با (u)p نشونش دادیم). بعد دیدن دادهها هم اومدیم ML تشکیل دادیم از روشون. حالا میخوایم u رو جوری پیدا کنیم که ضرب دو تا توزیع حداکثر بشه.
یعنی p(theta) * likelihood حداکثر بشه. (تتا رو اینجا همون u در نظر گرفتیم)
حالا اول کاری میانگین و واریانسی که در نظر گرفتیم برای اون توزیع قبل دیدن دادهها رو با اندیس 0 نشون میدیم.
حالا میایم حاصل ضرب توزیع گاوسی رو در likelihood در نظر میگیریم:
حالا بریم حالتهای حدی رو بررسی کنیم:
اگه تعداد سمپلها به سمت بینهایت بره، جوابی که به دست میاریم همون جواب likelihood میشه. یعنی جمع نمونهها تقسیم بر تعدادش.
حالا اگه مقدار سیگما 0 به توان دو از سیگما به توان 2 خیلی بزرگتر بشه به این معنیه که اون چیزی که اول حساب کردیم خیلی بهش مطمئن نبودیم. اون گاوسیای اولیه که حساب کردیم خیلی باز و مسطح میشه. و انگار به نقطه خاصی اهمیت خاصی نمیدیم نسبت به بقیه نقاط. پس بازم جوابی که به دست میاریم همون جواب likelihood میشه. یعنی جمع نمونهها تقسیم بر تعدادش.
حالا اگه این حالتهای حدی رو نداشته باشیم میو 0 هم در کنار دادهها برای تخمین میو بهمون کمک میکنه. (تو صورت کسر مشخصه)
برای درک بهتر دو تا نمودار زیر رو بررسی کنیم:
تو شکل چپ سیگما 0 به توان 2 (واریانس) خیلی عدشش بزرگ بوده که فلت شده. (یکی از همون حالتهای حدی رخ داده) ولی شکل راست حالتیه که میو 0 هم داره به تخمین بهمون کمک میکنه.
به صورت کلی جوابی که برای مپ پیدا میشه بین میانگین ml و map هست.
حالا شکل زیر رو در نظر بگیرید:
تو شکل بالا وقتی N=0 است هیچ نمونهای نداریم (فقط (theta)p رو داریم). وقتی N=1 شده یه نمونه اضافه شده. با اضافه شدن نمونهها توزیعمون همونجوری گاوسی مونده (ضرب دو تا گاوسی جوابش یه گاوسیه که فقط پارامتراش عوض میشه)
الان این شکل داره چیو نشون میده به صورت کلی؟
داره میگه اون نمودار سیاه حالت اولیهایه که من در نظر گرفتم و هنوز هیچ نمونهای رو ندیدم، هر دفعه که یکی از نمونهها میاد من میام با توجه به اون نمونه فرض اولیهم رو تغییر میدم و در نهایت بعد دیدن 10 تا نمونه که تو مثالمون همه دادهمون بود، میفهمم که نمودار نهاییم میشه همین قرمزه و با اطمینان هم اینو دارم میگم چون واریانس گاوسی قرمز خیلی کمتره نسبت به بقیه حالتها.
برای اینکه تحلیل برامون راحتتر باشه جنس prior رو جوری در نظر بگیریم که وقتی در likelihood ضرب شد حاصل همون جنس بمونه (جنس posterior و prior یکی باشه فقط پارامتراش تغییر کنه)
فرض کنیم توزیع بتا رو بعنوان prior در نظر گرفتیم برای توزیع برنولی. حالا چرا توزیع بتا برای توزیع برنولی conjugate prior هست؟ قبل جواب به این سوال، تعریف توزیع بتا رو تو شکل زیر ببینیم:
حالا بریم سراغ جواب دادن به سوال بالا. میخواهیم مقدار (theta | D)p رو محاسبه کنیم که طبق مراحل زیر محاسبه میشود.
حاصلضرب دو جمله قرمز و سبز به شرح زیر محاسبه میشود:
خب چه نتیجهای میگیریم؟
توزیع بتا رو بعنوان prior در نظر گرفته بودیم برای توزیع برنولی. حالا بعد از اینکه prior رو در likelihood ضرب کردیم مقدار posterior به دست آمده هم از جنس توزیع بتا که همان prior در نظر گرفته بودیم شد منتها با پارامترهای متفاوت.
حالا این ویژگی چرا برامون جالبه؟
به این دلیل که تو دیدگاه مپ یا دیدگاه Bayesian به صورت کلی، دنبال این هستیم که اول یه prior داشته باشیم بعد تک به تک که نمونههارو وارد میکنیم جنس توزیع همون بمونه ولی پارامترهاش عوض بشن و در نهایت ببینیم که توزیع به ازای نمونهها کجا میره.
مقادیر مختلف به آلفا 0 و آلفا 1 بدیم ببینیم توزیع چه رفتاری نشون میده.
تا به اینجا با دیدگاه مپ فقط گاوسی را حل کردهایم. حالا قصد داریم توزیع برنولی رو با map حل کنیم.
روش حل:
از طرفی مُد توزیع بتا به صورت زیر محاسبه میشه:
حالا به جای آلفا 0 و آلفا 1 مقادیر آلفا 0 پریم و آلفا 1 پریم رو قرار میدیم تا تتای map رو به دست بیاریم.
برای اینکه بهتر جا بیفته بریم یه مثال ببینیم.
فرض کنید یه سکه رو سه بار میندازیم و رو میاد. با ML اگه حسابش کنیم جواب میشه 1 ولی اگه با MAP حساب کنیم جواب میشه 0.8. حالا چجوری حساب کردیم؟
اومدیم اول روی پارامتر توزیع برنولی یه prior گذاشتیم و گفتیم که اول کاری معتقدیم که سکه نااریبه. شکل زیر هم داره همینو میگه.
از اون طرف چون هر سه بار سکه رو اومده و مقدار ایکس 1 شده پس طبق توزیع برنولی که به صورت زیر تعریفش میکردیم:
الان مقدار زیر همون تتا میشه:
p(x|theta) = theta
حالا نمودار theta برحسب p رو رسم کردیم:
حالا اگه نمودار آبی رنگ رو به توان 3 برسونیم و در نمودار قرمزی که بالا به دست اومد ضرب کنیم نمودار زیر به دست میاد:
تتایی که برای این نمودار جدید به دست میاد دیگه مقدارش مثل likelihood یک نیست. میشه همون 0.8. یعنی برخلاف ML نیومد بگه چون 3 بار سکه انداختم و هر سه بار رو اومده بقیه موارد هم همشون رو میان. گفت با احتمال 0.8 رو میاد.
دیدگاه MAP سعی میکنه بر خلاف دیدگاه ML جلوی overfitting رو بگیره. حالا چجوری؟
مثال سکه رو در نظر بگیرید. از نظر شهودی دیدگاه MAP انگار میاد خودش یه سری سمپل میسازه به ازای رو اومدن سکه و یه سری سمپل میسازه به ازای پشت اومدن سکه و این سمپلهایی که خودش ساخته رو قاطی نمونههای اصلی میکنه که جلوی اورفیتینگ رو بتونه بگیره.
حالا این سمپلها چجوری لحاظ میشن؟
در مورد مثال سکه طبق ML داشتیم:
theta = m / N
ولی طبق MAP چیزی که به دست اومد اینجوری شد (منظور از a همون آلفاست):
theta = (a1 + m - 1) / (a1 + m - 1 + a0 + N - m - 1)
همونطور که واضحه به غیر از m تا نمونه مثبت (تو مثال سکه همون تعدا دفعات رو اومدن)، 1 - a1 نمونه هم برای رو اومدن خودش بهش تزریق کرده.
حالا مخرج رو هم بیایم سادهتر کنیم:
a1 + m - 1 + a0 + N - m - 1 = a1 - 1 + N + a0 - 1
این یعنی اینکه به N تا نمونه که همه سمپلهامون بود، خودش اومد یه سری نمونه رو به ازای رو اومدن سکه (1 - a1) و یه سری نمونه رو به ازای پشت اومدن سکه (1 - a0) تزریق کرد.
این دیدگاه و مسائل مربوط به آن به صورت کامل در این جلسه ارائه نشدند و بخشی از آن به جلسه بعدی موکول شد. جزوه آن به صورت یکجا با مطالب جلسه بعدی ارائه خواهد شد.
به صورت کلی با دو دیدگاه مختلف برای تخمین آشنا شدیم و تعدادی از توزیعهای مختلف رو در قالب مثال برای این روشهای تخمین دیدیم.
اگر جایی ایراد یا مشکلی بود، حتما بهم بگید تا تصحیحش کنم.