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