یادگیری و یادگیری ماشین

یادگیری ماشین به معنای یادگیری ماشین از روی داده­ ها است.یادگیری چه چیزی؟..این که ماشین چه چیزی را از داده­ ها می ­آموزد تنها به دسته بندی ماشین­های دارای قدرت یادگیری کمک می­کند. من در این بخش نمی­ خواهم درباره­ ی این موضوع صحبت کنم. در این جا تنها و تنها می خواهم کمی درباره­ ی مفهوم یادگیری بحث کنم.یادگیری در ماشین و یادگیری در انسان دو مقوله ­ی بسیار شبیه به هم هستند. این شباهت اتفاقی نیست. دلیل این شباهت آن است که کسانی که مفاهیم یادگیری ماشین را پایه گذاری کرده­ اند خود انسان بوده ­اند و همواره نیم ­نگاهی به آن چه در درون انسان می­ گذرد داشته­ اند البته بعضی به صورت خودآگاه و بعضی به صورت ناخودآگاه. بنا براین، ما در این بخش، انسان و نیز ماشین یادگیرنده را عامل یادگیرنده (learning agent) می ­نامیم.یادگیری، کلیت­ بخشی و خودمختارییادگیری (learning) و کلیت ­بخشی (generalization) دو مفهوم کاملا به هم نزدیک و تقریبا دو نام متفاوت برای یک چیز اند. در گام اول وقتی عامل یادگیرنده با انبوهی از داده­ ها مواجه می­شود ابتدا به دنبال داده ­های مفید برای یادگیری می­گردد. مثلا انسان همواره با انبوهی از داده ­های ورودی از طریق حواس پنج گانه درگیر است. حتی ذخیره­ ی­ این داده ها برای رایانه ­های بسیار بزرگ غیر ممکن است. بنا براین مغز انسان در میان این انبوه داده ­ها همواره به دنبال داده ­های مفید است. مفید برای چه؟ مفید برای هدف یا اهدافی که در آن لحظه برای رسیدن به آن در تلاش است. البته این فرآیند بسیار پیچیده و مهم، هنوز به طور قابل قبولی در ماشین ­ها پیاده سازی نشده و طراح ماشین قبل از به کار گیری ماشین ساعت ها بر روی انتخاب و پالایش داده ­ها فکر و برنامه ­ریزی می ­کند. هرچند با معرفی مکانیزم توجه (attention) ،گام هایی بسیار کوچک در این راه برداشته شده است.پس از این که عامل یادگیرنده داده­ های خود را دریافت کرد درگام دوم سعی می­ کند آن را درون خود بازنمایی (represent) کند. در این جا هم از دست ماشین کار زیادی بر نمی­ آید و باز این طراح ماشین است که شیوه­ ی بازنمایی داده­ ها را مشخص می­کند. مثلا طراح ماشین ممکن است برای بازنمایی کلمات یک متن یکی از دو روش زیر را انتخاب کند:استخراج لیست کلمات منحصر به فرد درون متن و انتساب اعداد منحصر به فرد به آن ها و تبدیل متن به رشته ای از اعداداستخراج لیست کلمات منحصر به فرد درون متن و انتساب اعداد منحصر به فرد به آن ها و تبدیل متن به بردار وان هات (one-hot vector)یک نمونه بردار One hotماشین های یادگیرنده در گام سوم خودنمایی بیشتری دارند. یک ماشین یادگیرنده پس از آن که داده ­ها را دریافت و در درون خود بازنمایی کرد به دنبال کشف قواعد کلی از روی داده­ ها است. طیف وسیع الگوریتم­های یادگیری ماشین عمدتا در این گام قرار می­گیرند.در همین جا می توان یک تعریف ساده از یادگیری عمیق ارائه کرد. یادگیری عمیق یعنی توانایی بیشتر در کلیت بخشی و کشف قواعد کلی ­تر یا به عبارتی کشف قاعده­ ی قاعده ­ها. یک عامل یادگیرنده می­تواند به قواعدی که از داده ­ها و رابطه ­ی بین آن ها کشف کرده­ است مجددا فکر کند و قواعد سطح بالاتری استقرا کند. جالب است که ما در زندگی روزمره به افرادی که قواعد کلی­ تری از علوم را می­دانند یا به عبارتی اشراف بیشتری بر علوم دارند صفت دارای بینش عمیق را نسبت می­دهیم. در مقابل یادگیری عمیق ، یادگیری سطحی (shallow) قرار دارد. تصور کنید دانشجویی را که درس معادلات دیفرانسیل را با به هم پیوستن مشتی خرده تئوری می ­آموزد که تنها برای حل سؤالات امتحانی مفید است و دانشجویی که تمام اثبات ها و چرایی های روش های حل در معادلات دیفرانسیل را میداند. قطعا دومی بینش عمیق­ تری نسبت به موضوع دارد. پس جا دارد که ما یادگیری بهتر را یادگیری عمیق ­تر بنامیم ؛ یادگیری ­ای که حاصل آن عبارات جهان شمول تر و اتکاپذیر­تر است و باعث می­ شود که عامل یادگیرنده خود را بهتر با محیط جدید سازگار (adopt) کند. این سازگاری ناشی از آن است که عامل نیازی به یک جدول به شکل اگر-آن­گاه برای اعمال خود ندارد و می­تواند عمل (action) درست را بر اساس قواعد کلی که آموخته استتنتاج کند. به عبارت دیگر عمق زیاد دانش عامل یادگیرنده باعث می­شود که طراح عامل در مورد ناشناخته­ بودن فضای جدید و ادراکات جدید نگرانی­ کم تری داشته باشد. یعنی طراح عامل نیاز کم­تری به کسب اطلاعات از محیط به کارگیری عامل خواهد داشت. تصور کنید که دو ماشین یادگیرنده با انبوهی از عملیات جمع و ضرب بین اعداد متفاوت مواجه هستند. ماشین اول تنها آن­ها را حفظ می­کند. اما ماشین دوم میتواند روابط بین آن ها را کشف کند. طبیعی است طراح ماشین اول همواره نگران است که در محیط عمل، ورودی محاسباتی جدید و قبلا دیده نشده به ماشین داده نشود. اما طراح ماشین دوم از این بابت خیالش راحت تر است.Overfit & Underfitعامل یادگیرنده اگر بتواند فرآیند کلیت بخشی را بر اساس داده های ورودی به خوبی انجام دهد آن گاه یک عامل مفید و قابل استفاده است. اما سوال این جا است که چه روشی برای فهم این موضوع وجود دارد؟ چگونه می توان اطمینان پیدا کرد که عامل یادگیرنده کار خود را به خوبی انجام داده است؟ برای این کار کافی است بخشی از داده ها را از عامل مخفی نگه داریم اگر عامل بتواند حتی بر روی داده های دیده نشده (unseen) هم به طرز مطلوبی عمل کند نشان می دهد که عامل، مفید و قابل استفاده است. اما اگر عامل بر روی داده های دیده شده به خوبی عمل کند و روی داده های دیده نشده بد عمل کند نشان از این دارد که عامل نتوانسته قواعد کلی را از روی داده های دیده شده استنتاج کند و احتمالا داده ها و یا حداکثر قوانین خیلی سطحی را را تنها در درون خود ذخیره کرده است.چنین رویدادی اصطلاحا overfit نامگذاری میشود.اما یک حالت بد تر نیز وجود دارد و آن حالتی است که ماشین حتی بر روی داده های دیده شده هم به خوبی عمل نمی کند. این رخداد عمدتا به دلیل کم بودن حجم داده ی دیده شده یا به دلیل ضعف ماشین روی می دهد.در ادبیات متداول یادگیری ماشین داده ی دیده شده را داده ی آموزش (train) و داده ی دیده نشده را داده ی آزمون (test) مینامند.پس...به طور کلی هر چه ساختار عامل یادگیرنده مستقل از محیط به کارگیری آن باشد یعنی طراح عامل، به اطلاعات کم تری از محیط به کارگیری عامل احتیاج داشته باشد آن عامل خودمختاری (autonomy) بیشتری دارد. خود مختاری نقش اساسی در هوشمندی یک عامل را دارد. در این جا شما را به توجه بین مفهوم خودکار بودن و خودمختار بودن جلب می­کنم. در این جامشاهده می­ شود که دستگاه­های خودکار که در ادبیات فارسی روزمره به اشتباه هوشمند نامیده می­شوند اصلا هوشمند نیستند. یا به عبارت محترمانه ­تر از حداقل هوشمندی برخورداراند. از این دیدگاه "کارت هوشمند سوخت" یک نام گذاری نادرست است.