یادگیری ماشین (machine learning)، مطالعهی علمی الگوریتمها و مدلهای آماری مورد استفادهی سیستمهای کامپیوتری است که بجای استفاده از دستورالعملهای واضح از الگوها و استنباط برای انجام وظایف سود میبرند.
به عنوان زیر مجموعهای از هوش مصنوعی، الگوریتمهای یادگیری ماشین یک مدل ریاضی بر اساس دادههای نمونه یا “دادههای آموزش” به منظور پیشبینی یا تصمیمگیری بدون برنامهریزی آشکار، ایجاد میکنند.
شما احتمالاً چندین بار در روز از یادگیری ماشین استفاده میکنید، حتی بدون آنکه بدانید. هر بار که شما یک جستجوی اینترنتی در گوگل یا بینگ انجام میدهید، یادگیری ماشینی انجام میشود چراکه نرمافزار یادگیری ماشینی آنها چگونگی رتبهبندی برای یک صفحه وب را درک کردهاست. هنگامی که فیسبوک یا برنامه عکس اپل دوستان و تصاویر شما را میشناسد، این هم یادگیری ماشین است. هر بار که ایمیل خود را چک میکنید و فیلتر هرزنامه شما را از داشتن مجدد هزاران هرزنامه خلاص میکند نیز به همین دلیل است که رایانهی شما آموختهاست که هرزنامه را از غیرهرزنامه تشخیص دهد. این همان یادگیری ماشین است. این علمی است که باعث میشود رایانهها بدون نیاز به یک برنامه صریح در مورد یک موضوع خاص یاد بگیرند.
یادگیری ماشین روشهای گوناگونی دارد که از آن جمله میتوان به یادگیری نظارت شده، نظارت نشده و یادگیری تقویتی اشاره کرد. الگوریتمهای مورد استفاده در یادگیری ماشین جزو این سه دسته هستند.
هریک از این رویکردها، بسته به این که برنامه قرار است چه دستاوردی داشته باشد، مزایا و معایب خودش را دارد.
یادگیری نظارت شده
مفهوم کلی: الگوریتمهای یادگیری ماشین بر اساس مجموعهدادههایی آموزش میبینند که در آن ها یک ورودی فرضی، براساس یک تابع نگاشت، به یک خروجی مشخص میانجامد.
طرز کار: به گفته جیسون برونلی «هدف، این است که تابع نگاشت را آنقدر خوب تقریب بزنیم که وقتی داده ورودی تازهای دارید (یعنی X) بتوانید متغیرهای خروجی (یعنی Y) برای آن داده را پیشبینی کنید.»
در این مورد، برنامهریز مثل معلمی است که آزمون کوچکی از شاگردانش میگیرد. وی پاسخهای درست را میداند و هر بار که از شاگردانش امتحان میگیرد به آنها نمره میدهد. دانشآموزان آنقدر امتحان میدهند تا همگی، بدون استثنا قبول شوند.
یادگیری تحت نظارت خود به دو دسته تقسیم میشود:
- رگرشن (با تلفظ انگلیسی) یا رگرسیون (با تلفظ فرانسوی) (Regression)
- رده بندی (Classification)
رگرسیون آن دسته از مسائل هستند که خروجی یک عدد پیوسته یا یک سری اعداد پیوسته هستند مانند پیشبینی قیمت خانه بر اساس اطلاعاتی مانند مساحت، تعداد اتاق خوابها، و غیره و دسته طبقهبندی به آن دسته از مسائل گفته میشود که خروجی یک عضو از یک مجموعه باشد مانند پیشبینی اینکه یک ایمیل هرزنامه هست یا خیر یا پیشبینی نوع بیماری یک فرد از میان ۱۰ بیماری. با این حال ردهای از مسائل وجود دارند که خروجی مناسب که یک سیستم یادگیری تحت نظارت نیازمند آن است، برای آنها موجود نیست.
این نوع از مسائل چندان قابل جوابگویی با استفاده از یادگیری تحت نظارت نیستند. یادگیری تقویتی مدلی برای مسائلی از این قبیل فراهم میآورد. در یادگیری تقویتی، سیستم تلاش میکند تا تقابلات خود با یک محیط پویا را از طریق آزمون و خطا بهینه نماید. یادگیری تقویتی مسئلهای است که یک عامل که میبایست رفتار خود را از طریق تعاملات آزمون و خطا با یک محیط پویا فرا گیرد، با آن مواجه است. در یادگیری تقویتی هیچ نوع زوج ورودی- خروجی ارائه نمیشود. به جای آن، پس از اتخاذ یک عمل، حالت بعدی و پاداش بلافصل به عامل ارائه میشود. هدف اولیه برنامهریزی عاملها با استفاده از تنبیه و تشویق است بدون آنکه ذکری از چگونگی انجام وظیفه آنها شود.
یادگیری بدون نظارت
در این حالت ماشین نیازی به راهنما نداشته و به کمک مشاهدات میتواند روابط بین دادهها را کشف کند. در این حالت بعد از اینکه کامپیوتر دادههای مختلف را دریافت کرد میتواند روابط بین آنها را کشف کند. یک مثال در یادگیری بدون نظارت ماشینی است که میتواند به کمک خوشه بندی و بر اساس الگوهایی که درک کرده است، تفاوت بین دو خودرو سمند و دنا را تشخیص دهد. یعنی اگر ۱۰۰ خودرو به ماشین معرفی شود، در یکی از این ۲ دسته قرار خواهد گرفت.
طرز کار: وقتی که یک الگوریتم بدون نظارت، دادهها را تحلیل میکند، اغلب یکی از این دو علت را دارد:
- در یک مسئله دستهبندی، هدف پیدا کردن گروههای خاصی در یک مجموعه داده است. کشف سن و توزیع درآمد مشتریان، نمونهای از مسئله دستهبندی است، چرا که برنامه میتواند به شما نشان دهد کدام گروه سنی و درآمدی رایجتر است.
- مسئله وابستگی بیشتر بر یافتن قواعد یا الگوهایی تمرکز دارد که از یک مجموعه داده محافظت میکنند. وقتی جریان کاربران در وبسایت خود را تحلیل کرده و بررسی کنید که بیشتر به سمت کدام لینکها کشیده میشوند، در واقع از قانون وابستگی استفاده میکنید.
مثالی از یادگیری بینظارت
از یادگیری نظارت نشده در دنیای امروز میتوان مثالهای متعددی زد. یکی از پرکاربردترین آنها پیشنهادهایی است که به کاربران در شبکههای اجتماعی داده میشود. بعنوان مثال در اینستاگرام دادههای فوقالعاده زیادی از هر فرد در مورد علایق، کسانی که دنبال میکند، دنبالکنندگان او و … وجود دارد. اینستاگرام براساس دادههایی که از کاربر بدست میآورد، ویژگیهای او را تعیین کرده و با خوشهبندی میکند. در نهایت با توجه به خوشهای که کاربر درون آن قرار گرفته است، پیشنهادهای متعددی به وی در جهت درگیر کردن بیشتر او با این شبکه اجتماعی میدهد.
یادگیری تقویتی
هدف یادگیری تقویتی بخشی که از یادگیری ماشین است این است که چگونه عاملهای نرم افزاری، باید یک عمل را مناسب محیط انتخاب کنند تا پاداش بهینه بیشینه شود. این رشته به دلیل کلی بودن، در بسیاری از رشته های دیگر از جمله نظریه بازی، تئوری کنترل، تحقیق در عملیات، تئوری اطلاعات، بهینه سازی مبتنی بر شبیه سازی، سیستم های چند عامل، هوشمند جمعی، آمار و الگوریتم های ژنتیکی مورد مطالعه قرار میگیرد. در یادگیری ماشین، محیط به طور معمول به عنوان یک فرآیند تصمیم گیری مارکوف (MDP) معرفی میشود.
بسیاری از الگوریتمهای یادگیری تقویتی از تکنیکهای برنامه نویسی پویا استفاده میکنند. در الگوریتمهای یادگیری تقویتی، فرضیه مبتنی بر دانش یک مدل دقیق ریاضی از MDP نیست، و هنگامی که مدلهای دقیق غیرقابل دسترسی هستند مورد استفاده قرار میگیرد. الگوریتمهای یادگیری تقویتی در وسایل نقلیه خودران یا در یادگیری بازی در برابر حریف انسانی استفاده میشود.
بهترین زبانهای برنامهنویسی برای یادگیری ماشین
امروزه با توجه به گستردگی زبانهای برنامه نویسی، علاقهمندان به این بخش از هوش مصنوعی از زبانهای مختلفی استفاده میکنند. پر استفادهترین این زبانها عبارتند از:
- پایتون
- متلب
- جاوا
- R
- جاوا اسکریپت
- اسکالا
بهترین زبان برنامهنویسی برای یادگیری ماشین کدام است؟
نکتهای که باید در نظر داشت این است که بهترین زبان برنامهنویسی برای هوش مصنوعی و یادگیری ماشین وجود ندارد. چراکه این مسئله کاملاً وابسته به موردی است که برنامهنویس میخواهد برای آن موضوع کدنویسی کند. بعنوان مثال فردی تنها میخواهد مفاهیم اولیه یادگیری ماشین را فراگیرد. برای چنین شخصی استفاده از یک زبان برنامهنویسی با محیط قابل فهم و آسان کفایت میکند.
ممکن است فرد دیگری در فرآیند یادگیری ماشین نیاز به پردازش تصویر داشته باشد. در چنین حالتی زبانهای متلب و پایتون بهترین گزینه هستند. چراکه کتابخانههای قوی برای پردازش تصویر دارند. در حالتی که افراد بخواهند در تئوریهای مربوط به یادگیری ماشین عمیق شده و از روشهای آماری خاص استفاده کنند گزینه مناسب R خواهد بود.