این نوشته، بخشی از مجموعه مقالات «یادگیری ماشین» است که به زبان ساده، برای مدیران، اهالی کسبوکار و مارکتینگ، مدیر محصولها و توسعهدهندهها نوشته شده است. اینجا را کلیک کنید تا به فهرست کلی مقالات بروید.
در نوشتههای قبلی با چند مثال شرح دادم که مدل یادگیری ماشین، در واقع یک تابع ریاضی است. مثلا در مسئله پیشبینی تعداد فروش بستنی، تابعی را پیدا کردیم که از میان نقاط دادههای آموزشی عبور کند. در واقع میخواستیم فروش بستنی (متغیر وابسته) را براساس دمای هوا (متغیر مستقل) پیشبینی کنیم:

در مثالی دیگر، دنبال پیدا کردن تابعی بودیم که با گرفتن دو ویژگی (ساعتهای مطالعه و استراحت دانشجویان)، مشخص کند یک دانشجو در امتحان قبول میشود یا نه. اینجا هم تابع مورد نظر ما، یک خط بود؛ خطی که صفحه را به دو بخش تقسیم میکرد.

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

محور عمودی، سطح آب رودخانه را نشان میدهد (متغیر وابسته). دو محور دیگر شماره روز (d) و میزان بارش (r) را (به میلیمتر مربع) نمایندگی میکنند (متغیرهای مستقل). در این نمودار، برای هر فصل سال، از یک رنگ متمایز استفاده کردهام.
برخلاف دو مثال اول، واضح است که یک تابع خطی نمیتواند بر نقاط بالا منطبق شود. بنابراین باید از یک تابع غیرخطی استفاده کنیم؛ مثلا چیزی شبیه به این تابع:
f(d,r) = w0 + w1d + w2r + w3d2 + w4r2 + w5(d×r)
این تابع ممکن است پیچیده به نظر برسد. اما موضوع بسیار ساده است! در تابع بالا، d یعنی تعداد روز و r یعنی میزان بارندگی. w0 تا w5 شبیه به چند جای خالی هستند؛ جاهایی که خود مدل در فرایند آموزش، باید آنها را با اعداد ثابت پر کند. اگر این مقادیر را داشته باشیم، میتوانیم این تابع را ترسیم کنیم. در این صورت، چیزی شبیه به این صفحه بنفشرنگ به دست میآید:

اما چطور w0 تا w5 (=معادله صفحه بنفشرنگ) را به دست بیاوریم؟ پاسخ کوتاه و دمدستیاش این است: باید به سراغ چاقوی سوئیسی یادگیری ماشین برویم. در اینجا وارد جزئیات این موضوع نمیشوم؛ چرا که رسالت این نوشته، ارائه توضیحی کلی از نحوه کارکرد یادگیری ماشین است.
این مثال نشان میدهد که توابع غیرخطی چطور در حل مسائل پیچیدهتر به ما کمک میکنند. با وجود این انعطافپذیری، حتی توابع غیرخطی هم برای حل مسائل پیچیدهٔ دنیای واقعی کافی نیستند. ما دوست داریم ماشینها بتوانند تفاوت لاکپشت و گورخر را در تصاویر تشخیص دهند. یا مثلا توقع داریم بتوانند پیچیدگیهای زبان انسانی را یاد بگیرند.
خیلی خوب میشد اگر من تابعی داشتم که مثلا یک کلمه را میگرفت و براساس آن، کلمه بعدی را تولید میکرد. اما چطور این تابع را بسازم؟ اصلا چنین چیزی امکان پذیر هست؟ وقتی به پیچیدگی مسائل دنیای واقعی فکر میکنیم، حتی درست نمیدانیم از کجا باید شروع کنیم.
شاید باید از خودمان بپرسیم: آیا میشود برای تعریف توابع هم از خود «ماشین» کمک بگیریم؟ در مثال پیشبینی سطح آب رودخانه، ما در ابتدای کار به ماشین، یک سرمشق دادیم. فرض کردیم که تابع موردنظر ما از چنین مدلی تبعیت میکند:
f(d,r) = w0 + w1d + w2r + w3d2 + w4r2 + w5(d×r)
بعد گفتیم که ماشین باید در فرایند آموزش، مقادیر w0 تا w5 را تخمین بزند. این سرمشق اولیه، شبیه به ریلگذاری برای قطار است. بعد از ریلگذاری، هر چقدر هم که قطار خوب براند، فقط میتواند در مسیر ریلگذاری شده حرکت کند.
به زبان دیگر، ما در اینجا داریم محدودیتهای ذهنمان را به شکل ریل، در مسیر حرکت یادگیری ماشین قرار میدهیم. برای مهار کردن پیچیدگی مسائل دنیای واقعی، ماشین نیاز دارد بدون محدودیتهای ذهن ما، در فضای بزرگ دادههای آموزشی بتازد و الگوها را پیدا کند. چنین چیزی زمانی امکانپذیر است که ما به جای گرفتن ماهی (ریلگذاری از طریق قالببندی تابع)، به ماشین ماهیگیری یاد بدهیم؛ یعنی کاری کنیم که ماشین خودش توابع موردنیازش را تخمین بزند.
بیایید با یک مثال ساده شروع کنیم. فرض کنید که میخواهیم به تعریف تابعی برسیم که بر نمودار زیر منطبق باشد:

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

در قدم بعدی تلاش میکرد تابع خطی را تبدیل به یک منحنی کند:

و در قدم بعدی، منحنی را به تابع هدف نزدیکتر میکرد:

و بعد تلاش میکرد انحنای تابع هدف را با دقت بیشتری تقلید کند:

و بالاخره به جایی میرسید که رمز و راز تابع هدف را به طور تقریبی کشف کند:

شاید عجیب به نظر برسد، ولی نزدیک به ۷ دهه است که بشر به نسخه اولیهای از این الگوریتم رسیده است. در طی این سالها، این الگوریتم پیشرفتهای زیادی کرده و امروز، ماشین را قادر ساخته تا به زبان آدمیزاد، با انسان تعامل داشته باشد.
بنابراین تکلیف نوشته بعدی روشن شد! ما برای حل مسائل پیچیدهتر، دنبال الگوریتمی هستیم که بدون گرفتن سرمشق، الگوهای مخفی در دادهها را پیدا کند.
آنچه خواندید، بخشی از سلسله مطالبی درباره یادگیری ماشین است. این نوشتهها مخصوص مدیران و افراد غیرفنی است که میخواهند، بدون ورود به جزئیات، از هوش مصنوعی و یادگیری ماشین سر در بیاورند.
میتوانید به نوشته قبلی برگردید و درباره «یادگیری بدون نظارت» بخوانید. در نوشتهٔ بعدی، درباره الگوریتمی صحبت خواهیم کرد که میتواند توابع را تخمین بزند.
نوشتههای روزانه من را درباره محصول، فناوری و کسبوکار در تلگرام دنبال کنید!

دیدگاهتان را بنویسید