مقدمه‌ای بر یادگیری ماشین برای تازه‌کاران

گردآوری و تالیف : عرفان کاکایی
تاریخ انتشار : 01 اسفند 1397
دسته بندی ها : آموزشی

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

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

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

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

در دهه ۱۹۴۰ بود که اولین سیستم کامپیوتری که به صورت دستی فعالیت می‌کرد، یعنی ENIAC (ایجاد کننده و محاسبه‌گر الکترونیکی عددی) اختراع شد. در آن زمان، کلمه «کامپیوتر» به عنوان نامی برای یک انسان با توانایی‌های محاسباتی عددی بالا استفاده می‌شد؛ پس ENIAC تحت عنوان ماشین محاسبه عددی هم خطاب می‌شد. خب، شاید بگویید که این مسئله هیچ ارتباطی با یادگیری ندارد. اما اشتباه می‌کنید، هدف از ابتدا، ساخت ماشینی بود که بتواند تفکر و یادگیری انسان را شبیه‌سازی کند.

در دهه ۱۹۵۰، ما اولین برنامه بازی کامپیوتر را دیدیم که ادعا می‌کرد می‌تواند قهرمان شطرنج جهان را شکست دهد. این برنامه به بازیکنان شطرنج خیلی در بهبود مهارت‌های خود کمک کرد. در همین حین، Frank Rosenblatt، الگوریتم Perceptron را اختراع کرد که یک طبقه‌بند بسیار بسیار ساده بود، و وقتی در تعداد بالا و در یک شبکه ترکیب می‌شد، تبدیل به یک هیولای قدرتمند می‌شد. خب، این هیولا به زمان مربوط بود و در آن زمان، یک پیشرفت واقعی حساب می‌شد. بعد هم با توجه به سختی در برطرف کردن برخی مشکلات در زمینه شبکه عصبی، چند سال پر از رکود را برای آن دیدیم.

با تشکر از آمار و ارقام، یادگیری ماشین در دهه ۱۹۹۰ بسیار معروف شد. تقاطع علوم کامپیوتر و آمار و ارقام، باعث تولد رویکردهای احتمالی در هوش مصنوعی شد. این مسئله، زمینه مربوطه را به سمت رویکردهای بر پایه داده تغییر جهت داد. دانشمندان با در دسترس داشتن داده‌هایی با مقیاس بالا، شروع به ساخت سیستم‌های هوشمندی کردند که می‌توانستند میزان عظیمی از داده‌ها را تجزیه و تحلیل کرده، و از آن‌ها یاد بگیرند. در نتیجه سیستم Deeb Blue مربوط به IBM، قهرمان شطرنج جهان، یعنی استاد Garry Kasparov را شکست داد. بله، من می‌دانم که Kasparov اتهام تقلب کردن را به IBM زد، اما این مسئله حال بخشی از تاریخ است و Deep Blue در حال استراحت در یک موزه می‌باشد.

یادگیری ماشین چیست؟

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

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

انواع یادگیری ماشین

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

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

۲. یادگیری عدم تحت نظارت

۳. یادگیری تقویتی

بررسی اجمالی الگوریتم یادگیری تحت نظارت

در یادگیری تحت نظارت، یک سیستم هوش مصنوعی داده‌هایی را تحویل می‌گیرد که علامت‌گذاری شده‌اند. این یعنی هر داده عنوان صحیح را بر روی خود دارد.

هدف این است که تابع نقشه‌برداری را تخمین بزنیم، تا وقتی داده‌های ورودی جدیدی (X) را دارید، بتوانید متغیرهای خروجی (Y) را برای آن پیش‌بینی کنید.

همانطور که در مثال بالا نمایش داده شد، ما در ابتدا برخی داده‌ها را گرفته‌ایم و آن‌ها را با عنوان «Spam» یا «Not Spam» علامت‌گذاری کرده‌ایم. این داده‌های علامت‌گذاری شده توسط مدل تحت نظارت در حال تمرین استفاده می‌شوند، تا به آن آموزش دهند.

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

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

  • طبقه‌بندی: یک مشکل طبقه‌بندی، وقتی است که متغیر خروجی یک دسته مانند «red» یا «blue» یا «disease»‌ و «no disease» باشد.
  • پسرفت: یک مشکل پسرفت، وقتی است که متغیر خروجی، یک مقدار واقعی مانند «dollars» یا «weight»‌ باشد.

بررسی اجمالی الگوریتم یادگیری عدم تحت نظارت

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

در مثال بالا، ما برخی کاراکترها را به مدل خود داده‌ایم، که «Ducks»‌ و «Not Ducks» هستند. ما در داده‌های آموزشی خود، هیچ عنوانی را به داده‌های متناظر خود نمی‌دهیم. مدل عدم تحت نظارت، می‌تواند هر دو کاراکتر را با نگاه کردن به نوع داده‌ها از هم جدا کند و ساختار یا توزیع تحتانی داده‌ها را مدل‌سازی کند، تا بیشتر درباره آن‌ها یاد بگیرد.

انواع یادگیری عدم تحت نظارت

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

بررسی اجمالی یادگیری تقویتی

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

در مثال بالا، ما می‌توانیم ببینیم که مامور ما ۲ گزینه دارد؛ برای مثال یک مسیر پر از آب و یک مسیر پر از آتش. یک الگوریتم تقویتی، بر پایه یک سیستم جایزه کار می‌کند؛ مثلا وقتی که مامور از مسیر‌ آتشین استفاده می‌کند، جوایز کاهش می‌یابند و مامور یاد می‌گیرد که باید از مسیرهای آتشین دوری کند. اگر این مامور مسیر آبی یا امن‌ترین مسیر را انتخاب کرده بود، امتیازاتی به جایزه‌اش اضافه می‌شدند و مامور یاد می‌گرفت که کدام مسیر امن است، و کدام مسیر امن نیست.

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

خلاصه

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

منبع

مقالات پیشنهادی

  • 10 نمونه از یادگیری ماشین در جاوااسکریپت

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

    ارسطو عباسی
  • 20 پروژه متن باز پایتون برای یادگیری ماشین

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

    ارسطو عباسی