تو فصل اول در مورد تعاریف کلی یادگیری ماشین و کاربردهاش صحبت کردیم. اگه اون بخش رو نخوندید پیشنهاد می کنم از لینک پایین مطالعش کنید و بعد این بخش رو شروع کنید.
تو این بخش بیشتر در مورد نمادگذاری های ریاضی که تو کتاب استفاده شده صحبت میکنیم. ممکنه بعضی از این مطالب خیلی ابتدایی و ساده باشند ولی مروشون بد نیست. اینجا یه مقدار در مورد جبر خطی و بعدش در باره آمار و احتمال صحبت می کنیم.
یک اسکالر(Scalar) معمولا یه مقدار ثابت رو میگیره. اسکالر ها تو کتاب به صورت ایتالیک و با حروف کوچیک نوشته میشند. مثل x، a
یک بردار (Vector) مجموعه مرتب شده ای از اسکالر هاست.تو کتاب بردار های به صورت حروف کوچیک بلد شده نشون داده میشند. مثل x و w. مشخصه(attribute) هر بردار به صورت ایتالیک نشون داده میشه. مثل x(j) یا w(j). که j نشون دهنده بعد jام بردار است.
یک ماتریس(Matrix) یه آرایه از اعداده که تو ردیف ها و ستون ها چیده شدند مثل ماتریس زیر:
ماتریس با حروف بزرگ بلد نمایش داده میشند مثل W و A.
خوب فکر میکنم یکم ابتدایی و حوصله سر بر داره میشه. از اینجا به بعد سعی می کنم خیلی سریع این مطالبو بگم و توضیحات کمتری بدم. اگه فکر کردید نیاز دارید بیشر بدونید تو خود کتاب که لینکشو تو بخش اول گذاشتم هم میتونید مفصل تر بخونید.
توابع یه ورودی به در یه بازه مشخص به اسم دامنه(domain) میگیره یه خروجی تو یه بازه به اسم برد(codomain) به ما میده. توابع می تونند نقطه بهینه محلی(local optimum) یا نقطه بهینه کلی (global optimum) داشته باشند. مثل شکل زیر:
مکس یه بردار بیشتر مقدار رو تو اون بردار و Arg Max، آرگومان بیشتر مقدار یا در واقع موقعیتی که مقدار بیشینه تو اون بردار قرار داره رو به ما میده.
مشتق یک تابع نشون دهنده نحوه تغییر اون تابع به نسبت متغیری هست که تابع رو نسبت به اون مشتق گرفتیم(چی گفتم؟؟ خودمم نفهمیدم).
گرادیان حالت عمومی مشتق هست که می تونه نسبت به چندین متغیر گرفته شه. گرادیان یک تابع، در واقع یک بردار از مشتقات جزیی است. گرادیان تابع f رو به صورت زیر نمایش نمایش میدن.
یک متغیر تصادفی، متغیری است که مقادیرش نتایج عددی یک پدیده تصادفیه. احتمال رخداد یک نتیجه مشخص x(i) از یک پدیده تصادفی X رو با Pr(X=x(i)) نشون میدند. امید ریاضی این پدیده تصادفی رو با E[X] نمایش میدن و بر اساس فرمول زیر محاسبه میشه.
امیدریاضی در واقع همون چیزی هستش که ما به اسم متوسط یا میانگین یا امید انتظاری میشناسیم. امید ریاضی یکی از مهمترین آماره های مورد استفاده در آمار هست. آماره مهم دیگه انحراف معیار که به صورت زیر حساب میشه.
انحراف معیار نحوه پراندگی داده ها حول امیدریاضی رو نشون میده.
بیشتر اوقات ما شکل تابع احتمال رو نمی دونیم ولی میتونیم مثال های از اون رو داشته باشیم در یادگیری ماشین به این مثال ها نمونه گفته میشه و مجموعه این نمونه هارو به عنوان مجموعه داده ها یا Dataset میشنانسیم.
فرض کنید تابع f شامل یه پارامتر مثل تتا است. اگه ما یه فرمول بر اساس نمونه های گرفته شده S از تابع f داشته باشیم که تتا رو تخمین بزنه به این تخمین زننده نا اریب می گند اگه امید ریاضی تخمین زننده برابر با تتا باشه. مثل فرمول زیر.
مثلا می تونیم نشون بدیم که میانگین نمونه ها یک تخمین زننده نااریب از امیدریاضی تابع است. یا آماره زیر تخمین نا اریبی از انحراف معیار میده.
اگر علاقه داشتید، میتونید اثبات اینکه میانگین و فرمول بالا تخمین زننده نا اریب برای امیدریاضی و انحراف معیار هستند رو اینجا ببیند.
قانون بیز یا قانون احتمال شرطی میگه احتمال وقوع یک پیشامد مثل x در صورتی که بدونیم پیشامدی مثل y اتفاق افتاده چقدره. مثلا احتمالا اینکه امروز بارون بیاد به شرط اینکه بدونیم دیروز هم بارون اومده چقدره. فرمول زیر قانون بیز رو شرح میده.
فرمول بالا رو به این صورت می خونند احتمال X=x به شرط اینکه Y=y.
حالا قانون بیز چه کمکی به ما می کنه. برای تخمین پارامترها. تابع زیر رو که به تابع گوسی معروفه رو در نظر بگیرید.
تابع گوسی ویژگی های یک تابع احتمال رو داره. این تابع دو تا پارامتر برای تخمین داره میو و سیگما که اون رو با بردار تتا از پارامترها به صورت زیر نشون می دیدم.
هدف اینکه بردار تتا را با استفاده از قانون بیز تخمین بزنیم.
که در فرمول بالا:
حالا فرض کنید ما یک مجموعه داده از تابع نمونه گیری کردیم و یک مجموعه محدود از مقادیر ممکن برای بردار تتا رو داریم. هدفمون اینه که بفهمین کدوم بردار بیشترین احتمال رو برای تولید داده های نمونه ما داره. مقدار این احتمال رو میشه از طریق قانون بیز تخمین زد. و به این روش میگن تخمین زننده بیشنیه احتمال پسین یا Maximum A Posteriori Estimator-MAP.
اینجا می تونید با یه مثال فوتبالی بهتر MAP رو بفهمید. حالا مساله اینه که اگه بردار تتا نامحدود باشه چکار باید بکنیم. راه حل اینه که از سمت راست لگاریتم میگیریم تا ضرب ها به جمع تبدیل بشه و از گرادیان دیسنت برای بهینه سازی استفاده می کنیم. درباره گرادیان دیسنت در فصل چهار بیشتر می خونیم.
هایپر پارامتر ها بخشی از خود الگوریتم هستند و معمولا توسط خود الگوریتم یادگرفته نمیشند و مثل انتخاب نوع الگوریتم باید توسط ما به الگوریتم داده بشند. اما پارامترها توسط خود الگوریتم یادگیری تعیین میشه و الگوریتم اونها رو بهینه می کنه. حالا اینکه چطور پارامترها بهینه میشند هم بعدا بیشتر می خونیم. ولی روش کلی به این صورت که ما یه سری توابع تعریف می کنیم که نشون دهنده نحوه عملکرد مدل خروجی عملکرد روی داده های در دسترسه. هدفمون اینه که پارامترهای مدلمون طوری تعیین بشند که این توابع بهینه بشند.
طبقه بندی(Classification) دنبال اختصاص دادن خودکار برچسب به یک نمونه بدون برچسب است. شناسایی اسپم که تو فصل اول صحبتشو کردیم یک نمونه طبقه بندیه.
در یک مسئله طبقه بندی ، یک برچسب عضوی از یک گروه محدود از کلاسها است. اگر اندازه مجموعه کلاس ها دو باشه ("بیمار" / "سالم" ، "اسپم" / "غیر اسپم") ، ما در مورد طبقه بندی باینری صحبت می کنیم. طبقه بندی چند کلاسه یک مساله طبقه بندی با سه کلاس یا بیشتره. مثل پیش بینی نژاد سگ از روی عکسش.
رگرسیون اما پیش بینی مقدار نتیجه حاصله از یک برداری ورودی مشخصه. مثل تخمین قیمت خونه بر اساس پارامترهایی مثل متراژ، محله، تعداد اتاق، طبقه و غیره.
بیشتر یادگیری های با نظارت مبتنی بر مدل هستند. تو این الگوریتم ها داده ها رو به دو بخش تقسیم می کنیم. داده های آموزشی و داده های تست.(مثلا 80 درصد داده های ورودی برای اموزش و 20 درصد هم برای تست) الگوریتم های یادگیری مبتنی بر مدل از داده های آموزشی برای ایجاد مدل استفاده می کنند و پارامترهای مدل هم با استفاده از همین داده های آموزش محاسبه میشه. عملکرد مدل هم بر اساس داده های تست ما تعیین میشه.
الگوریتم های یادگیری مبتنی بر نمونه از کل مجموعه داده به عنوان مدل استفاده می کنند. یک الگوریتم مبتنی بر نمونه که خیلی هم ازش استفاده میشه ، k-Nearest Neighbours (kNN) است. در طبقه بندی ، برای پیش بینی یک برچسب برای یک مثال، الگوریتم kNN، همسایه های نزدیک مثال ورودی رو تو فضای بردارهای ویژگی بررسی می کنه و برچسبی را که بیشتر اوقات در این همسایگی نزدیک دیده میشه رو به مثال ورودی تخصیص میده.
احتمالا ما هممون خیلی با عبارت یادگیری عمیق یا همون Deep Learning برخورد کردیم. ولی شاید چیزی از یادگیری سطحی یا کم عمق نشنیدیم. حالا تفاوت این دوتا چیه. اینطوری بگم که بیشتر الگوریتم های با نظارت یادگیری سطحی هستند. یعنی پارامترهای مدل به صورت مستقیم از داده های ورودی استخراج میشند. در مقابل اینها یادگیری عمیق که برای شبکه عصبی هم مطرح میشه حالتیه که بین ورودی و خروجی چندین لایه پنهان وجود داره و درو واقع پارامترهای مدل بعد از طی چند مرحله محاسبه میشند. در واقع یادگیری عیمق پارامترها مستقیم از ورودی ها محاسبه نمیشند و بلکه از داده های مرتبط با لایه قبلی استخراج میشند.
البته در مورد یادگیری عمیق تو فصل 6 به صورت مفصل صحبت میشه.
خوب فصل اول و دوم یه دستگرمی کوچیک بود. مطالب اصلی از فصل سوم شروع میشه. تو فصل بعدی در مورد چند تا الگوریتم اصلی مثل رگرسیون خطی و لوجستیک، درخت تصمیم گیری و یه روش کلاسترینگ صحبت می کنیم که می تونید از لینک زیر مطالعش کنید.