پرونده یادگیری ماشین برای نوجوانان، قسمت اول


یادگیری انسان

تا حالا به این فکر کردی که من و تو که الان به‌راحتی اشیاء مختلف رو از هم تشخیص می‌دیم، چطور این توانایی رو به‌دست آوردیم؟ آیا از همون کودکی، می‌دونستیم که این، تصویر گربه‌ست و تصویر سگ نیست؟ چی شد که این رو فهمیدیم؟

تصویر ۱
تصویر ۱

طبیعتاً ما در زمان کودکی، هیچ اطلاعاتی درباره اشیاء مختلفی که باهاشون روبه‌رو می‌شدیم نداشتیم. اما سوال اساسی اینه که طی چه فرایندی بود که بالاخره فهمیدیم تصویر بالا، تصویر یک گربه است؟

به‌نظر می‌آد که انسان برای یادگیری از تکرار استفاده می‌کنه؛ به این معنی که بارها و بارها گربه می‌بینه و بهش گفته می‌شه که این، یک گربه‌ست. این اتفاق برای تمام اشیاء و پدیده‌هایی که باهاش روبه‌رو می‌شه می‌افته. در عمل، انسان با تعداد زیادی «ورودی» مواجه می‌شه که هرکدوم از این‌ها یک «نام» دارن و با دیدن تعداد خیلی زیادی از این «ورودی»ها، اون‌ها رو یاد می‌گیره و می‌تونه از هم تشخیصشون بده.

تصویر ۲
تصویر ۲

مثلاً، بعد از دیدن تعداد زیادی گربه و سگ مختلف، انگار چیزی توی ذهنش شکل می‌گیره که باعث می‌شه بتونه هر گربه و سگ دیگری رو هم که می‌بینه، از هم تشخیص بده. به‌طوری که اگر ازش بپرسیم، تصاویر زیر چی هستن، بتونه به درستی بگه که تصویر راست، گربه و تصویر چپ، سگه.

تصویر ۳
تصویر ۳

حالا کمی جلوتر بیایم. از کجا می‌تونیم بفهمیم که چیزی رو درست یاد گرفتیم یا نه؟

شاید برای این‌‌که این مسئله رو بهتر متوجه بشیم، بد نباشه اتفاقی که توی مدرسه می‌افته رو با یک مثال خیلی ساده با هم مرور کنیم:

فرض کنید که قراره شیوه‌‌ی حل‌کردن معادله‌ی دو مجهولی رو یاد بگیریم. اول از همه، معلم به ما یاد می‌ده که چطور باید این کار رو انجام بدیم. برامون چند تا مثال می‌زنه و از طریق اون‌ها توضیح می‌ده که نحوه‌ی حل معادله‌ی دو مجهولی به چه صورته. بعد نوبت به آزمون تمرینی می‌رسه. این کار برای چیه؟ برای اینه که یک بار سعی کنیم بدون معلم، خودمون چندتا مثال حل کنیم و ببینیم که چقدر تونستیم روش حل معادله‌ی دو مجهولی رو یاد بگیریم. طبیعیه که بعد از آزمون تمرینی، معلم جواب رو به ما توضیح می‌ده، اشتباهاتمون رو متوجه می‌شیم و سعی می‌کنیم که برای آزمون تمرینی بعدی، اون اشتباهات رو تکرار نکنیم.

اما در نهایت، یادگیری ما چطور سنجیده می‌شه؟ سنجش یادگیری نهایی، از طریق آزمون اتفاق می‌افته.

به‌نظرت اگر سوالات آزمون رو از قبل دیده باشیم، نتیجه‌ی آزمون می‌تونه به‌درستی نشون بده که ما چقدر خوب یاد گرفتیم؟ چرا؟

تصویر ۴
تصویر ۴

احتمالاً جوابت به سوال بالا، «نه» بود؛ چون اگر سوالات آزمون رو از قبل دیده باشیم، احتمال خیلی زیادی وجود داره که جواب اون‌ها رو صرفاً «حفظ» کرده باشیم نه این که یاد گرفته باشیم. در واقع هدف ما از یادگیری، اینه که بتونیم هرجور معادله‌ی دو مجهولی که جلومون می‌ذارن رو حل کنیم؛ فارغ از این‌که قبلا معادله‌ای دقیقاً با اون ضرایب حل کردیم یا نه. تفاوت یادگیری با حفظ‌کردن، اینجاست که برامون روشن می‌شه.

از انسان تا کامپیوتر

حتماً این روزها دقت کردی که کامپیوترها چه نقش گسترده‌ای رو توی زندگی‌مون ایفا می‌کنن و چقدر کارهای جالب و مفیدی رو می‌تونیم باهاشون انجام بدیم. کامپیوترها اصلاً موجودات باهوشی نیستن. شاید خودت هم قبلاً سعی کرده باشی که «برنامه نویسی» انجام بدی. در این صورت می‌دونی که برای این‌که کامپیوتر هر کاری رو انجام بده، باید به‌طور دقیق و مرحله‌به‌مرحله براش توضیح بدیم که چطور اون کار رو انجام بده. اما نه! این روزها کامپیوترها می‌تونن کارهایی رو انجام بدن که از توانایی‌ انسان‌ها فراتره. پس چطور تونستن از ما، که خودمون بهشون گفتیم چه مراحلی رو طی کنن، بهتر عمل کن؟

در واقع گاهی اوقات ما حتی به‌درستی نمی‌دونیم که اون کار رو باید چطور انجام بدیم، چه برسه به این‌که بخوایم روش کار رو به کامپیوتر بگیم.

این‌جا بود که ایده‌ی جدیدی برای استفاده از کامپیوترها در اجرای چنین کارهایی مطرح شد. ایده بسیار ساده‌ست. در واقع به‌نوعی از یادگیری طبیعی انسان الهام گرفته شده. ایده اینه که به‌جای این‌که مراحل کار رو قدم‌به‌قدم به کامپیوتر توضیح بدیم، تعداد خیلی زیادی از نمونه‌های انجام اون کار به کامپیوتر نشون بدیم. با گفتن یه مثال، این قضیه روشن‌تر می‌شه.

فرض کنین قراره به کسی یاد بدیم که چطور به توپ ضربه بزنه. برای این کار، دو راه داریم:

۱- تمام مراحل رو قدم‌به‌قدم براش توضیح بدیم، بهش بگیم که چطور پاش رو از روی زمین جدا کنه، چطور به سمت عقب ببره، پاش رو در چه زاویه‌ای قرار بده و با چه نیرویی به توپ ضربه بزنه.

۲- چندین‌بار به توپ ضربه بزنیم و اجازه بدیم که همه‌ی این مثال‌های ما رو از ضربه‌زدن ببینه. بعد ازش بخوایم که خودش به توپ ضربه بزنه و بعد ایرادش رو برطرف کنی.

راه اول، همون روش معمول و همیشگی گذشته بود. از راه دوم هم در دنیای کامپیوتر به «یادگیری ماشین» یاد می‌شه که همون ایده‌ایه که باعث می‌شه کامپیوتر بتونه کارهایی رو حتی بهتر از انسان انجام بده.

در «یادگیری ماشین» ما تعداد زیادی نمونه رو از کاری که می‌خوایم برامون انجام بشه، به کامپیوتر می‌دیم. مثلاً فرض کنین ما از کامپیوتر می‌خوایم وقتی یک تصویر رو بهش می‌دیم، تشخیص بده که سگه یا گربه. پس نمونه‌های ما، عکس‌های خیلی زیاد از گربه‌ها و سگ‌های مختلف، کوچک و بزرگ، رنگارنگ و متنوع هستن. علاوه بر این، کامپیوتر باید بدونه که هرکدوم، تصاویر چه چیزهایی هستن؛ سگ یا گربه. پس به‌ازای هر عکس، یک کلمه هم به کامپیوتر داده می‌شه. درست مثل تصویر ۲.

روش یادگیری کامپیوتر به این صورته که هربار یکی از این تصاویر رو بهش ورودی می‌دیم و کامپیوتر نام اون رو حدس می‌زنه و بعد بهش می‌گیم که درست حدس زده یا نه. طبیعیه که در دفعات اول، حدس‌های تصادفی می‌زنه که ممکنه اشتباه باشن. ولی وقتی ما «نام» درست اون تصویر رو بهش می‌گیم، کم‌کم حدس‌های بهتری می‌زنه و به‌تدریج، انگار روش تشخیص سگ و گربه رو یاد می‌گیره. در واقع کامپیوتر تلاش می‌کنه تا خطای خودش رو کم بکنه و این مسئله باعث می‌شه که بتونه یاد بگیره. حالا اگر به کامپیوتر، تصویر سگ یا گربه‌ای رو بدیم که تا به حال ندیده، اگر خوب یاد گرفته باشه، می‌تونه اون رو به درستی تشخیص بده. هرچه نمونه‌های اولیه‌ای که به کامپیوتر داده بودیم -تا بر اساس اون یادگیری رو انجام بده- ‌بیشتر باشن، طبیعتاً بهتر یاد می‌گیره. نکته‌ی جالب اینه که ما روش تشخیص مرحله‌به‌مرحله‌ی سگ و گربه رو به کامپیوتر نگفتیم. این خودش هست که داره بر مبنای حدس‌هایی که می‌زنه و بر اساس جواب ما که بهش می‌گیم درست حدس زده یا نه، کم‌کم یاد می‌گیره که به یک سری چیزها در تصویر توجه کنه و بر اساس اون، تشخیص بده که تصویر ورودی سگه یا گربه.

تا این‌جا کمی با مفاهیم کلی آشنا شدیم. واقعیت اینه که اکثر روش‌های یادگیری ماشین، از ریاضیات پیچیده‌‌ای استفاده می‌کنن. اما در ادامه‌ی این ماجرا، می‌خوایم سعی کنیم که دو نمونه از روش‌هایی که ملموس‌ترن رو با هم بررسی کنیم.

این پرونده به همراهی دوست عزیزم مهتاب بیگوردی نوشته شده. حتما قسمت بعدی‌ رو هم دنبال کنید!