یادگیری ماشین چیه؟

این روزا و به خصوص با انتشار chat gpt و اخبار مربوط به مدل جدید open ai به نام gpt 4 خیلی بحث درباره ی هوش مصنوعی زیاد شده، به همین دلیل (و البته اینکه خیلی وقت بود که میخواستم یه وبلاگ درباره ی هوش مصنوعی راه بندازم) تصمیم گرفتم زودتر این کارو انجام بدم و به جای اینکه خودم یه وبلاگ راه بندازم تصمیم گرفتم بیام و تو ویرگول بنویسم. امیدوارم این پست و پست هایی که در آینده درباره ی یادگیری ماشین، یادگیری عمیق و مطالب مربوط به این موضوعات میذارم به دردتون بخوره.مقدمهقبل از اینکه بریم سراغ موضوعات پیچیده و جدید هوش مصنوعی بیاید اول از این شروع کنیم که هوش مصنوعی چیه و اصلا به چه درد میخوره؟یه زمانی دانشمندای ریاضی تصمیم گرفتن، بیان و مدل های محاسباتی ای بسازن که این مدل ها بتونن مسائل رو به طور خودکار حل کنن. اگه قبلا درباره ی محاسبه پذیری و نظریه ی محاسبه شنیده باشید، این بخش از ریاضیات دقیقا مربوط به همین چیزا میشه.در ادامه ی این تحقیقات، یه دانشمند انگلیسی به نام آلن تورینگ (همونی که فیلم the elimination game بخشی از زندگیشو نشون میداد) یه مدل محاسباتی ارائه کرد که به ماشین تورینگ معروفه و تمام کامپیوتر های امروزی در واقع همین ماشن تورینگن. (اینجا منظورم از کامپیوتر یه چیزیه که میتونه برنامه نویسی بشه که برای ما یه کاری رو انجام بده)وقتی کامپیوتر ها پیشرفت کردن و آدما برای اونا برنامه نوشتن، خیلی از کار هایی که برای آدما خسته کننده و سخت بود رو با اون ها انجام میدادن، مثلا برای محاسبات ریاضیاتی، شبیه سازی برای کارای علمی و خیلی چیزای دیگه که قبلا باید با دست انجام میدادن از کامپیوتر ها استفاده کردن. در واقع انجام خیلی از این کارا برای آدما کار سختیه، مثلا اینکه شما بخواید100 تا عددو تو یک ثانیه جمع بزنید تقریبا غیر ممکنه ولی برای کامپیوتر هیچ کاری نداره.در عوض یه سری کارا هست که کامپیوترا نمیتونن انجام بدن و براشون سخته، مثلا اگر بخواید به یه کامپیوتر یاد بدید که با شما سلام احوال پرسی کنه خیلی کار سختیه. (مثلا فرض کنید میخواید برای یه کامپیوتر برنامه بنویسید که از روی عکس یه آدمو بشناسه، حالا اگه اون آدما لباسش عوض شد، ماسک گذاشت، مدلموهاش عوض شد، عینک یا خیلی اتفاقای دیگه بازم کامپیوتر باید اونو بشناسه ولی اگه قبلا برنامه نویسی کرده باشید میدونید که این کار خیلی سخته و عملا میشه گفت ناممکنه)در واقع این جمله مشهوره که کارایی که برای آدم سختن برای کامپوتر راحتن و کارایی که برای کامپیوتر سختن برای آدم راحتن.خب حالا اینا به هوش مصنوعی چه ربطی داره؟ ربطش در اینه که هوش مصنوعی هدفش اینه که بیاد با کامپیوتر ها این کار سختا رو انجام بده (کارایی که برای کامپیوتر سختن ولی برای آدما راحتن).Darthmouthتو سال 1955 کالج dartmouth اومد به مدت 2 ماه رو یه سری موضوعات مرتبط به موضوعاتی مثل چت بات، ماشن خودران و... کار کرد و در نهایت تو گزارشی که توسط آقای John McCarthy و همکاراش منتشر شد اصلاح artificial intelligence یا همون AI برای بار اول مطرح شد.اون موقع ها تلاش میکردن بیان و با روش های کلاسیک و ارائه یه سری الگوریتم هایی که قدم به قدم به کامپیوتر میگفت باید چه کاری رو انجام بده، تلاش کنن اون کار سختا رو انجام بدن. در واقع در اصطلاح تخصصیش میگن تو اون روش ها میومدن و دانش (knowledge) رو برای کامپیوتر میگفتن و اون باید بر اساس اون دانش کاری که ازش میخواستن رو انجام میداد. (این مفاهیم خیلی شبیه روش های FOL هستن که در واقع هم از این روش ها خیلی استفاده میشد)اما مشکل این روش ها این بود که واقعا و در عمل خوب کار نمیکردن یا حداقل اون جوری که انتظار میرفت کار نمیکردن. دانشمندای کامپیوتر اومدن روش هایی که داشتن رو برسی کردن و به نظرشون اومد که مهم ترین اشکال این روش ها اینه که ما داریم به کامپیوتر میگیم که چی کار کنه یا به عبارتی ما داریم دانش رو در اختیار کامپیوتر قرار میدیم. شاید اگر به کامپیوتر اجازه بدیم که خودش بیاد و دانش خودش رو استخراج کنه به نتایج بهتری برسیم.یکی از اتفاق هایی که تو این زمینه خیلی مشهوره برنامه ی آقای Arthur Samuel هست که برای ایشون 30 سال روش کار کردن که بتونه چکرز بازی کنه. داستان از این قراره که این آقا 30 سال وقت گذاشت و برنامه ای که نوشته بود رو با روش های مختلف بهتر کرد و در نهایت برنامه میتونست از خود Arthur Samuel بهتر چکرز بازی کنه. خب حالا این اتفاق چرا مهمه؟ چون منطقا وقتی برنامه از خود برنامه نویس بهتر کار میکنه، یعنی برنامه نویس نمیتونسته قدم به قدم برای برنامه توضیح داده باشه که باید چی کار کنه.تعاریف آکادمیک ماشین لرنینگپس تا اینجا میدونیم که ماشین لرنینگ یه سری روش هوش مصنوعی هستند که به کامپیوتر اجازه میدن خوش دانش خودش رو استخراج کنه و بر اساس اونا کاری که ازش خواسته شده رو انجام بده. حالا وقتشه که بریم سراغ تعاریف آکادمیک ماشین لرنینگ.اولین تریف مال خود Arthur Samuel هست که میگه:"Machine learning is the field of study that gives computers the ability to learn without being explicitly programmed"ترجمش میشه: ماشین لرنینگ مطالعاتیه که به کامپیوتر ها اجازه میده بدون اینکه صراحتا برنامه نویسی بشن، یاد بگیرن. (مثل همون برنامه ای که خودش نوشته بود که بدون اینکه مستقیما به کامیپوتر بگه چه جوری باید برنده بشه، کامیپوتر یادگرفته بود که برنده بشه)یه تعریف مشهور دیگه هم توسط آقای Tom Mitchell ارائه شده که میگه:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.ترجمش این میشه:میگیم یک برنامه ی کامپیوتری برای تسک T از تجربه ی E بر اساس معیار P یاد میگیره؛ اگر بعد از تجربه ی E، بازدهی اون بر اساس معیار P تو تسک T بهتر شده باشه. *_*این تعریف به ظاهر خیلی پیچیدس ولی در واقع خیلی سادس. به زبون ساده داره میگه اگر کامپیوتر بعد از اینکه یه چیزی رو تجربه کرد تو کاری که ازش خواستیم بهتر شده باشه میگیم یاد گرفته. خب این از تعریف ماشین لرنینگ :)تو نوشته های بعدی بیشتر وارد جزئیات میشیم و به مرور الگوریتم های مختلف رو با هم برسی میکنیم.