تبلیغات
تبلیغات

یادگیری ماشین چیست؟! (Machine Learning)

یادگیری ماشین چیست؟! (Machine learning)


تعریف کلی
یادگیری ماشین (Machine Learning)، شاخه‌ای از هوش مصنوعی‌ای است و این توانایی را به کامپیوترها می‌دهد تا بدون داشتن برنامه‌نویسی صریح، بتوانند چیزی را یاد بگیرند! و در واقع یادگیری ماشین، قابلیتی برای برنامه‌های کامپیوتری می‌باشد تا به واسطه‌ی آن، داده‌هارا آنالیز کرده و سپس اطلاعات را از آن بیرون بکشند و از این اطلاعات چیزهایی را یاد بگیرند. بنابراین، اساسا، پیاده‌سازی یادگیری ماشین، به معنای ایجاد الگوریتم‌هایی است که بتوانند داده‌ها را پیش‌بینی یا بهتر بگوییم تحلیل کنند.

و در واقع، یادگیری ماشین بسیار شبیه به چگونگی یادگیری انسان‌ها است.

ویکی پدیا، یادگیری ماشین را چنین تعریف می‌کند:

به عنوان یکی از شاخه‌های وسیع و پرکاربرد هوش مصنوعی، یادگیری ماشین (Machine learning) به تنظیم و اکتشاف شیوه‌ها و الگوریتم‌هایی می‌پردازد که بر اساس آن‌ها رایانه‌ها و سامانه‌ها توانایی تعلٌم و یادگیری پیدا می‌کنند.

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

درک یادگیری ماشین با مثال

احتمالا توضیح ویکی‌پدیا کمی سخت به‌نظر می‌رسد! اجازه دهید ساده‌تر توضیح دهیم. زمانی که شما در گوگل جستجو و سپس برروی نتایج کلیک می‌کنید، گوگل کلیک‌های شما را مشاهده کرده و براساس آنها، در رتبه‌بندی سایت تاثیر اعمال می‌کند. یا زمانی که ایمیلی را به‌عنوان هرزنامه (اسپم) علامت می‌زنید، سیستم آن ایمیل را در کنار سایر ایمیل‌هایی که به‌عنوان هرزنامه علامت زده‌اید در نظر گرفته و با استخراح الگویی از آنها، در زمان‌های آینده تشخیص می‌دهد که یک ایمیل هرزنامه است یا خیر!

بیایید یک مثال بهتری بزنیم. گوشی شما از اثر انگشت (یا تصویر چهره در وبکم) برای باز کردن قفل استفاده می‌کند. شما برای تنظیم اثر انگشت، ابتدا چند اسکن  از انگشت مبارکتان را به سیستم اعلام می‌کنید. سیستم این اسکن‌ها را نگهداری کرده و در زمان‌های بعدی که اقدام به باز کردن قفل می‌کنید، اثر انگشتتان را با آنها مقایسه و در صورت تطابق داشتن، قفل را باز می‌کند. انجام این کار توسط برنامه‌نویسی صریح غیر ممکن است و سیستم صددرصد نیاز به داده دارد. البته برخی موارد نیز با برنامه‌نویسی صریح ممکن هستند؛ مثلا اینکه سیستم تشخیص دهد در یک عکس گربه وجود دارد یا خیر! بدین صورت که بیایم و به‌صورت صریح برنامه‌نویسی کنیم و بگوییم گربه چگونه در یک عکس ترسیم می‌شود! برنامه‌نویسی این الگوریتم بسیار بسیار بسیار پیچیده خواهد بود؛ به‌طوری که می‌توان گفت غیرممکن است. بنابراین با اعلام کردن چندین تصویر از گربه که از زوایای مختلفی گرفته شده، می‌توان به سیستم یاد داد که گربه چیست! در واقع در این هنگام، سیسم توسط الگوریتم‌هایی، الگوهایی را در این تصاویر بدست آورده و از آنها برای شناسایی گربه در تصاویر دیگر استفاده می‌کند. دقیقا همانند یک بچه‌ای که یک چیز جدید دیده و مدام می‌پرسد که این چیه، اون چیه؟! 😀

مثال‌های دیگر زیادی نیز وجود دارند:

  • توصیه‌های فروشگاه‌های اینترنتی برای خرید محصولات به مشتری‌ها از طریق آنالیز محصولاتی که از آن‌ها بازدید می‌کنید.
  • برخی از بازی‌های کامپیوتری مثل Sims
  • و …

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

انواع مختلف یادگیری ماشین

الگوریتم‌های یادگیری ماشین را می‌توان به سه دسته‌ی گسترده تقسیم کرد:

  1. یادگیری تحت نظارت (Supervised learning)
  2. یادگیری بی نظارت (Unsupervised learning)
  3. یادگیری تقویتی (Reinforcement learning)

یادگیری تحت نظارت

کامپیوتر، با نمونه‌های ورودی و خروجی مورد نظر خود ارائه می‌شود و به آن گفته می‌شود که داده‌های ورودی، نماینگر چه چیزی هستند. و هدف، یادگیری یک قائده‌ی کلی (عمومی) است؛ که ورودی‌ها را به خروجی بدهد. برای مثال، فیلترهای اسپم ایمیل! در واقع در این نوع یادگیری، ماشین نمی‌تواند از مرز خود خارج شده و تنها موارد تعریف شده‌ای را یاد گرفته و خروجی را نیز در یک قالب مشخصی ارائه می‌دهد.

اما به نقل از ویکی‌پدیا:

یادگیری تحت نظارت، یک روش عمومی در یادگیری ماشین است که در آن به یک سیستم، مجموعه‌ای از جفت‌های ورودی – خروجی ارائه شده و سیستم تلاش می‌کند تا تابعی از ورودی به خروجی را فرا گیرد. یادگیری تحت نظارت، نیازمند تعدادی داده ورودی به منظور آموزش سیستم است.

کامپیوتر در اینگونه یادگیری، می‌داند که ورودی چه‌چیزی است. همانند بچه‌ای که به او سگ و گربه و … را نشان داده و اسم هرکدام را نیز به او می‌گوییم. این اسم، همان برچسب یا Label آن داده است.

یادگیری بی نظارت (نظارت نشده)

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

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

یادگیری نظارت نشده، همچون گوش دادن به یک فایل صوتی به زبانی است که نمی‌دانید! نه دیکشنری در اختیار دارید و نه حتی یک ناظر (معلم) که به شما بگوید در آن فایل صوتی چه حرف‌هایی گفته می شود! اگر تنها به یکی از فایل‌های صوتی ضبط شده به آن زبان گوش دهید، چیز زیادی دستگیرتان نمی‌شود؛ اما چنانچه صدها ساعت پای آنها بنشینید، مغزتان شروع به ایجاد نوعی الگو در مورد آن زبان می‌کند. و از این زمان به بعد، شروع به تشخیص الگوها می‌کنید و به تدریج در حین گوش دادن به آن پادکست‌ها، انتظار شنیدن اصوات خاصی را خواهید داشت. زمانی که یک دیکشنری در اختیارتان قرار داده شود، یا اینکه از راهنمایی‌های یک مربی بهره‌مند شوید، آنگاه با سرعت بیشتری شروع به یادگیری آن زبان خواهید کرد.

اما به نقل از ویکی‌پدیا:

اگر یادگیری بر روی داده‌های بدون برچسب و برای یافتن الگوهای پنهان در این داده‌ها انجام شود، یادگیری، بدون نظارت خواهد بود. از انواع یادگیری بدون نظارت، می‌توان به الگوریتم‌های خوشه‌بندی (Clustering)، تخصیص پنهان دیریکله (LDA) و جاسازی لغات (Word Embedding) اشاره کرد.

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

یادگیری تقویتی و تصمیم‌گیری

یک برنامه‌ی کامپیوتری، با یک محیط پویا (Dynamic) تعامل می‌کند؛ که در آن باید یک هدف خاصی را انجام دهد (مانند رانندگی یک وسیله‌ی نقلیه یا بازی در برابر یک حریف)! و ماشین در این نوع یادگیری، خودش را تقویت خواهد کرد تا بعدها نتایج بهتری بگیرد.

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

به نقل از ویکی‌پدیا:

یادگیری تقویتی یکی از گرایش‌های یادگیری ماشینی است که از روانشناسی رفتارگرایی الهام می‌گیرد. این روش، بر رفتارهایی تمرکز دارد که ماشین باید برای بیشینه کردن پاداشش انجام دهد.

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

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

کانال تلگرام فول کده
تبلیغات

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

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک‌گذاری اطلاعات در هر زمینه‌ای
برنامه‌نویس فول استک

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده بدون دیدگاه