یادگیری بی نظارت (Unsupervised learning) یا یادگیری نظارت نشده چیست – قسمت سوم دوره یادگیری ماشین دانشگاه استنفورد

یادگیری بی نظارت (Unsupervised learning) یا یادگیری نظارت نشده چیست – قسمت سوم دوره یادگیری ماشین دانشگاه استنفورد

در این جلسه از آموزش یادگیری ماشین دانشگاه استنفورد از اندور ان جی (Andrew NG) در مورد یادگیری بی نظارت (Unsupervised learning) صحبت خواهیم کرد. اصطلاح دیگری که برای این شاخه از علم یادگیری ماشین استفاده می‌شود یادگیری نظارت نشده است.

تفاوت بین داده‌ها در یادگیری بی نظارت و با نظارت

در جلسه گذشته از دوره یادگیری ماشین دانشگاه استنفورد در مورد یادگیری با نظارت صحبت کردیم. اجازه دهید مثال‌ جلسه گذشته را دوره کنیم. در آن مثال دیدیم که برخی داده‌ها به صورت دسته‌ بندی شده به ما داده می‌شوند. حتماً به یاد دارید که تشخیص سرطانی بودن یا سرطانی نبودن بیماران بر اساس سن و اندازه تومور آن‌ها یکی از انواع داده‌هایی بود که در بحث یادگیری ماشین با نظارت داشتیم.

داده‌هایی در مورد تومور بیماران

برخی از داده‌ها در “یادگیری ماشین با نظارت” به صورت دسته بندی شده هستند.

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

داده‌های بدون دسته بندی و برچسب و پاسخ صحیح در یادگیری ماشین بدون نظارت

داده‌های یادگیری ماشین بدون نظارت که فاقد پاسخ صحیح مشخص یا دسته بندی هستند.

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

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

داده‌هایی که با یادگیری ماشین بی نظارت خوشه بندی شده‌اند. 

یک بررسی عمیق تر در تفاوت الگوریتم یادگیری بی نظارت و با نظارت

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

یادگیری نظارت نشده بر چند نوع است؟

در کل می‌توان یادگیری نظارت نشده را بر دو نوع اصلی دانست. این دو نوع عبارتند از:

  • خوشه بندی Clustering
  • غیر خوشه بندی Non-Clustering

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

اگر متوجه این تفاوت‌ها نشدید اصلاً نگران نباشید. در ادامه به طور دقیق مثال‌هایی را از روش‌های خوشه بندی و غیر خوشه بندی در الگوریتم یادگیری نظارت نشده بیان می‌کنیم.

مثال‌هایی از کاربرد الگوریتم یادگیری بی نظارت : خوشه بندی Clustering

در این بخش می‌خواهم چند مثال و کاربرد مختلف از الگوریتم یادگیری ماشین بدون نظارت را باهم بررسی کنیم. این مثال‌ها عبارتند از:
  • بخش خبری گوگل
  • کشف داده‌های ژنومی
  • کاربرد در مراکز داده‌ای
  • شبکه‌های اجتماعی
  • تحلیل داده‌های مشتریان یک کسب و کار بزرگ
  • نجوم

کاربرد یادگیری نظارت نشده در بخش خبری گوگل

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

بخش خبری گوگل که اخبار را با الگوریتم یادگیری بدون نظارت خوشه بندی می‌کند

خبرهای بخش خبری گوگل که با الگوریتم یادگیری نظارت نشده خوشه بندی شده اند. 

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

حتما بخوانید:  یادگیری با نظارت (Supervised learning) یا یادگیری نظارت شده چیست - قسمت دوم دوره یادگیری ماشین دانشگاه استنفورد

یادگیری نظارت نشده و داده‌های ژنومی

استفاده در کشف داده‌های ژنومی انسان‌ها یکی دیگر از کاربرد‌های فوق‌العاده مفید الگوریتم‌های یادگیری بدون نظارت است. تصویر زیر نمونه‌ای از داده‌های میکروآرایه برای دی ان ای (Micro Array DNA) را می‌بینید. هدف این است که افراد را در گروه‌های مختلفی خوشه بندی کرده و اندازه‌گیری کنیم که چه مقدار از یک ژن خاص دارند.

خوشه بندی داده‌های ژنومی انسان‌ها با الگوریتم های یادگیری ماشین

خوشه‌بندی داده‌های ژنومی افراد بوسیله الگوریتم یادگیری نظارت نشده

رنگ‌بندی‌های مختلف نشان‌دهنده این هستند که هر فرد چه مقدار از یک ژن رو داره یا اصلاً نداره. کاری که در اینجا الگوریتم خوشه بندی انجام می‌دهد این است که افراد را در دسته‌بندی‌ها یا گونه‌های مختلفی قرار می‌دهد.

چیزی که می‌توان مشخصاً نتیجه گرفت این است که این یک الگوریتم یادگیری نظارت نشده است. چرا؟ چون از قبل به الگوریتم نمی‌گوییم که این افراد از نوع ۱، این مجموعه از نوع ۲، این مجموعه از نوع ۳ و … هستند. چیزی که در عوض می‌گوییم این است که اینجا دسته‌ای از داده قرار دارد. نمی‌دانیم چه چیزی داخل این داده‌ها قرار دارد. نمی‌دانیم از چه نوعی هستند. حتی اطلاعی از گونه‌های مختلف افراد نداریم.

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

سازماندهی خوشه‌های رایانه

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

شبکه‌های اجتماعی و یادگیری بی نظارت

تا به حال به حجم عظیم داده‌ای که در یک شبکه‌ٔ اجتماعی وجود دارد دقت کرده‌اید؟ اینستاگرام یا فیسبوک را در نظر بگیرید:

  • هر کدام از این‌ها چه تعداد کاربر دارند؟
  • هر کدام چه سلایقی دارند؟
  • چه تعداد صفحه را دنبال می‌کنند؟
  • دسته‌بندی موضوعی این صفحات چیست؟
  • با چند نفر از دوستانشان در ارتباط هستند؟
  • چه مدت زمانی از روز را به بررسی این شبکه‌ها اختصاص می‌دهند؟
  • هرچند وقت یکبار محتوایی را منتشر می‌کنند؟

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

یادگیری نظارت نشده و بخش‌بندی بازار

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

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

کاربرد در تجزیه و تحلیل داده‌های نجومی

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

یک مثال عملی از یادگیری ماشین نظارت نشده : غیر خوشه بندی Non-Clustering

میخوام در این بخش در مورد مسئله مهمونی شلوغ صحبت کنیم. حتماً تا به حال در یک مهمانی که شلوغ بوده و افراد مختلف همزمان باهم در حال صبحت بوده‌اند حضور داشته‌اید. فضایی پر از آدم که دورتادور نشسته‌اند و در حال صحبت هستند. در چنین حالتی تشخیص صحبت‌های کسی که روبه‌روی شما نشسته و با شما در حال صحبت است کمی سخت به نظر می‌رسد.

حتما بخوانید:  یادگیری ماشین چیست - قسمت اول از دوره یادگیری ماشین دانشگاه استفورد

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

مسئله مهمانی شلوغ

دو فرد در دو نقطه اتاق با فاصله از هم به دو زبان مختلف از یک تا ده شمارش می‌کنند.

شاید صدای فرد اول در در میکروفون اول کمی بلندتر از صدای او در میکروفون دوم باشد. به همین ترتیب برای شخص دوم. در ادامه صدای ضبط شده واقعی دو فرد مختلف را داریم که توسط یک محقق ضبط شده است. بیایید صدای میکروفون اول را باهم بشنویم. در این میکروفون صدای کسی که به انگلیسی اعداد را می‌شمرد واضح‌تر شنیده می‌شود:

و حال صدای میکروفون دوم را باهم گوش می‌کنیم. در این میکروفون نیز صدای کسی که به غیر از زبان انگلیسی اعداد را می‌شمرد واضح‌تر شنیده می‌شود:

محققی که روی این پروژه کار می‌کرده است، این دو صدا را به الگوریتم یادگیری نظارت نشده داده است. او الگوریتمی که طراحی کرده را الگوریتم مهمونی مختلط یا Cocktail party‌ نام گذاشته. او به الگوریتم گفته است که در این داده‌ها ساختاری را پیدا کند.

کاری که الگوریتم انجام می‌دهد این است که به هر دو صدا گوش می‌دهد. الگوریتم می‌گوید این دو صدا شبیه دو صدای ضبط شده است که به یکدیگر اضافه یا با هم جمع شده‌اند. در نهایت کاری که الگوریتم انجام می‌دهد این است که صدای این دو منبع را از یکدیگر جدا کند. بیایید باهم به اولین خروجی گوش کنیم:

دیدید که صدای کسی به انگلیسی اعداد را می‌شمرد به وضوح شنیده می‌شود. این هم خروجی دوم:

یک مثال دیگر با شرایط مشابه

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

این هم از صدای میکروفون دوم که در اون صدای رادیو بلندتر شنیده می‌شود:

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

شاید کیفیت صدا خیلی عالی نبود اما نکته اینجاست که در هر صورت صدای شمارنده به وضوح شنیده می‌شود. خروجی دوم رو باهم گوش کنیم که صدای شمارنده کامل از آن حذف شده است:

چطور یک برنامه برای یادگیری بدون نظارت بنویسیم؟

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

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

[W,s,v] = svd( (repmat( sum(x.*x,1) , size(x,1) ,1) .*x) *x’);

پیداست که اگر شما محیط برنامه‌نویسی درستی را انتخاب کنید بسیاری از الگوریتم‌های پیچیده به برنامه‌های کوچکی تبدیل می‌شوند.

از چه محیطی برای برنامه‌نویسی یادگیری ماشین استفاده کنیم؟

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

حتما بخوانید:  یادگیری با نظارت (Supervised learning) یا یادگیری نظارت شده چیست - قسمت دوم دوره یادگیری ماشین دانشگاه استنفورد

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

نمونه کدی که در خط‌های بالاتر دیدید مربوط به اکتاو بود که از تابعی به نام SVD : singular value decomposition یا تجزیه مقدار منفرد استفاده می‌کرد. حتماً‌ متوجه هستید که این تابع فقط در محیط اکتاو یا متلب کاربرد دارد. اگر بخواهید مشابه این تابع را در محیط برنامه‌نویسی دیگر مانند سی پلاس پلاس یا جاوا انجام دهید خط‌های بسیار زیادی را باید بنویسید.

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

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

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

یک تمرین برای تسلط بر یادگیری ماشین نظارت نشده

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

بررسی پاسخ تمرین یادگیری ماشین بی نظارت

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

فیلم جلسه سوم از دوره یادگیری ماشین دانشگاه استنفورد: یادگیری بی نظارت

جمع‌بندی این جلسه و موضوع جلسه آینده

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

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

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

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

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