الگوریتم های یادگیری ماشین
یادگیری ماشین، یکی از مهمترین بخشهای هوش مصنوعی است. برای هوشمند بودن، یک سیستم که در محیطی با شرایط متغیر قرار دارد، باید توانایی آموختن داشته باشد. در چنین حالتی طراحان نیازی به پیش بینی حالات ممکن نخواهند داشت.
هوش انسانی قدرت درک و ایجاد ارتباط میان موضوعها و مقایسه آنها را دارد. انسان همواره قانونهای جدیدی را میسازد و یا قوانین قبلی را در موارد جدید بکار میگیرد. توانایی انسان در ایجاد مفهومهای گوناگون در دنیای پیرامون خود، از ویژگیهای دیگر اوست.
هوش مصنوعی در پی ساخت دستگاههایی است که بتوانند استدلال، رفتار، مقایسه، درک و مفهوم آفرینی را از خود بروز دهند. هوش مصنوعی به تعدادی میدانهای فرعی تقسیمشده است و سعی دارد تا سیستمها و روشهایی را ایجاد کند که بهطور تقلیدی مانند هوش و منطق تصمیمگیرندگان عمل نماید.
هدف یادگیری ماشین این است که کامپیوتر بتواند بهتدریج و با افزایش دادهها کارایی بهتری در انجام وظیفهی موردنظر پیدا کند.
گسترهی این وظیفه میتواند از تشخیص خودکار چهره با دیدن چند نمونه از چهرهی موردنظر تا فراگیری شیوهی گام برداری روباتهای دوپا با دریافت سیگنال پاداش و تنبیه باشد. طیف پژوهشهایی که در یادگیری ماشینی میشود گسترده است.
در سوی نظری آن پژوهشگران بر آناند که روشهای یادگیری تازهای به وجود بیاورند و امکانپذیری و کیفیت یادگیری را برای روشهایشان مطالعه کنند و در سوی دیگر عدهای از پژوهشگران سعی میکنند روشهای یادگیری ماشینی را بر مسائل تازهای اعمال کنند. البته این طیف گسسته نیست و پژوهشهای انجامشده دارای مؤلفههایی از هر دو رویکرد هستند.
طبقه بندی الگوریتمهای یادگیری ماشین
سه نوع اصلی الگوریتمهای یادگیری ماشین از قرار زیرند:
-
یادگیری نظارتشده (Supervised Learning)
در این نوع از الگوریتمها که بار اصلی یادگیری ماشین را بر دوش میکشند، با دو نوع از متغیرها سروکار داریم. نوع اول که متغیرهای مستقل نامیده میشوند، یک یا چند متغیر هستند که قرار است بر اساس مقادیر آنها، یک متغیر دیگر را پیشبینی کنیم.
مثلاً سن مشتری و تحصیلات و میزان درآمد و وضعیت تاهل برای پیشبینی خرید یک کالا توسط یک مشتری، متغیرهای مستقل هستند. نوع دوم هم متغیرهای وابسته یا هدف یا خروجی هستند و قرار است مقادیر آنها را به کمک این الگوریتمها پیشبینی کنیم.
برای این منظور باید تابعی ایجاد کنیم که ورودیها (متغیرهای مستقل) را گرفته و خروجی موردنظر (متغیر وابسته یا هدف) را تولید کند. فرآیند یافتن این تابع که در حقیقت کشف رابطهای بین متغیرهای مستقل و متغیرهای وابسته است را فرآیند آموزش می گوئیم که روی دادههای موجود (دادههایی که هم متغیرهای مستقل و هم متغیرهای وابسته آنها معلوم هستند مثلاً خریدهای گذشته مشتریان یک فروشگاه) اعمال میشود و تا رسیدن بهدقت لازم ادامه مییابد.
نمونههایی از این الگوریتمها عبارتاند از رگرسیون، درختهای تصمیم، جنگلهای تصادفی، K نزدیکترین همسایه و رگرسیون لجستیک.
-
یادگیری بدون ناظر (unsupervised learning)
در این نوع از الگوریتمها، متغیر هدف نداریم و خروجی الگوریتم، نامشخص است. بهترین مثالی که برای این نوع از الگوریتمها میتوان زد، گروهبندی خودکار (خوشهبندی) یک جمعیت است مثلاً با داشتن اطلاعات شخصی و خریدهای مشتریان، بهصورت خودکار آنها را به گروههای همسان و همارز تقسیم کنیم. الگوریتم Apriori و K-Means از این دسته هستند.
-
یادگیری تقویت شونده (Reinforcement Learning)
نوع سوم از الگوریتمها که شاید بتوان آنها را در زمره الگوریتمهای بدون ناظر هم دستهبندی کرد، دستهای هستند که از آنها بانام یادگیری تقویت شونده یاد میشود. در این نوع از الگوریتمها، یک ماشین، برای گرفتن یک تصمیم خاص، آموزش داده میشود و ماشین بر اساس موقعیت فعلی (مجموعه متغیرهای موجود) و اکشنهای مجاز (مثلاً حرکت به جلو، حرکتبهعقب و …)، یک تصمیم را میگیرد که در دفعات اول، این تصمیم میتواند کاملاً تصادفی باشد و به ازای هر اکشن یا رفتاری که بروز میدهد.
سیستم یک فیدبک یا بازخورد یا امتیاز به او میدهد و از روی این فیدبک، ماشین متوجه میشود که تصمیم درست را اتخاذ کرده است یا نه که در دفعات بعد در آن موقعیت، همان اکشن را تکرار کند یا اکشن و رفتار دیگری را امتحان کند.
با توجه به وابسته بودن حالت و رفتار فعلی به حالات و رفتارهای قبلی، فرآیند تصمیمگیری مارکوف، یکی از مثالهای این گروه از الگوریتمها میتواند باشد. الگوریتمهای شبکههای عصبی هم میتوانند این دسته بهحساب آیند. منظور از کلمه تقویت شونده در نامگذاری این الگوریتمها هم اشاره به مرحله فیدبک و بازخورد است که باعث تقویت و بهبود عملکرد برنامه و الگوریتم میشود.
بطور کلی الگوریتم های یادگیری طبق شکل زیر می توانند طبقه بندی شوند: