در درس دوم از آموزش رایگان یادگیری ماشین با پایتون می خواهیم به طور مفصل تر در مورد یادگیری ماشین و نحوه عملکرد الگوریتم های آن صحبت کنیم.
یادگیری ماشین چیست؟
یادگیری ماشین یکی از زیرشاخههای هوش مصنوعی است که با توسعه الگوریتمها از طریق یادگیری از الگوهای پنهان موجود در مجموعهدادهها، از آن برای پیشبینی نتایج در دادههای جدید با ساختار مشابه بدون نیاز به برنامهنویسی صریح برای هر کار استفاده میکند.
یادگیری ماشین سنتی، دادهها را با ابزارهای آماری ترکیب میکند تا خروجیای را پیشبینی کند که بتوان از آن به منظور استخراج دانشهای قابل عمل استفاده کرد.
یادگیری ماشین (ML) در انواع مختلفی از کاربردها مورد استفاده قرار میگیرد، از تشخیص تصاویر و گفتار تا پردازش زبان طبیعی، سیستمهای توصیه، تشخیص تقلب، بهینهسازی پرتفو، وظایف خودکار و بسیاری دیگر.
همچنین مدلهای یادگیری ماشین در وسایل نقلیه خودران و پهپادها مورد استفاده قرار میگیرند و رباتها را هوشمندتر می کنند و همچنین رباتها را قادر می کنند تا با محیط های متغیر خود را تطبیق دهند.
یکی از وظایف رایج یادگیری ماشین، ارائه پیشنهادات به کاربران است. سیستمهای توصیهگر، یکی از کاربردهای شایع یادگیری ماشین هستند و از دادههای تاریخی برای ارائه پیشنهادهای شخصیسازی شده به کاربران استفاده میکنند.
به عنوان مثال، در مورد Netflix، این سیستم از ترکیب فیلترینگ همکاری و فیلترینگ مبتنی بر محتوا برای پیشنهاد فیلمها و برنامههای تلویزیونی به کاربران بر اساس تاریخچه تماشا، امتیازات و عوامل دیگر مانند ترجیحات ژانری استفاده میکند.
یادگیری تقویتی نوع دیگری از یادگیری ماشین است که میتواند برای بهبود سیستمهای مبتنی بر توصیه استفاده شود. در یادگیری تقویتی، یک عامل بر اساس بازخوردی که از محیط خود دریافت میکند، تصمیمگیری را یاد میگیرد و این بازخورد میتواند برای بهبود پیشنهادهای ارائه شده به کاربران مورد استفاده قرار گیرد.
به عنوان مثال، سیستم میتواند ردیابی کند که چقدر کاربر یک فیلم پیشنهادی را تماشا میکند و از این بازخورد برای تنظیم پیشنهادهای آینده استفاده کند.
پیشنهادات شخصیسازی بر اساس یادگیری ماشین، در بسیاری از صنایع از جمله تجارت الکترونیک، رسانههای اجتماعی و تبلیغات آنلاین به شدت مورد توجه قرار گرفتهاند که به علت توانایی آنها در ارائه تجربه کاربری بهتر و افزایش ارتباط کاربران با پلتفرم یا خدمات میباشد.
انقلاب در اینجا با این ایده آغاز میشود که یک ماشین میتواند از داده (به عبارت دیگر، یک نمونه) به تنهایی بیاموزد و نتایج دقیقی تولید کند. یادگیری ماشین به طور نزدیکی با داده کاوی و علم داده مرتبط است. ماشین ورودیهای داده را دریافت کرده و از الگوریتمها برای ارائه پاسخهای مطلوب استفاده میکند.
یادگیری ماشین به زبان ساده
یادگیری ماشین زیرشاخهای از هوش مصنوعی است که بهطور کلی به عنوان توانایی ماشین برای تقلید از رفتار هوشمند انسان تعریف میشود.
حالا پس از اینکه فهمیدیم یادگیری ماشین چیست می خواهیم ببینیم تفاوت آن با برنامه نویسی سنتی و همچنین با هوش مصنوعی چیست؟
تفاوت میان یادگیری ماشین و برنامه نویسی سنتی و هوش مصنوعی
ما قبلا در مقاله تفاوت هوش مصنوعی و یادگیری ماشین، به صورت کامل تفاوت های آنها را با هم بررسی کردیم. در اینجا هم می خواهیم علاوه بر اشاره به تفاوت های ماشین لرنینگ با هوش مصنوعی، آن را با برنامه نویسی سنتی نیز مقایسه کنیم.
هوش مصنوعی | برنامه نویسی سنتی | یادگیری ماشین |
هوش مصنوعی شامل تواناسازی ماشین تا حدی است که بتواند وظایفی را انجام دهد که معمولاً نیاز به هوش انسانی دارند. | در برنامهنویسی سنتی، کد مبتنی بر قوانین توسط توسعهدهندگان بر اساس بیانیههای مسئله نوشته میشود. | یادگیری ماشین زیرمجموعهای از هوش مصنوعی است که بر روی یادگیری از دادهها تمرکز دارد تا الگوریتمی توسعه دهد که برای پیشبینی استفاده شود. |
هوش مصنوعی میتواند شامل روشهای مختلفی باشد، از جمله یادگیری ماشین و یادگیری عمیق، و همچنین برنامهنویسی سنتی مبتنی بر قوانین. | برنامهنویسی سنتی به طور معمول مبتنی بر قوانین و قاعدهمند است. ویژگیهای خودآموزی مانند یادگیری ماشین و هوش مصنوعی ندارد. | یادگیری ماشین از رویکرد مبتنی بر داده استفاده میکند، معمولا بر اساس دادههای تاریخی آموزش دیده شده و سپس برای پیشبینی در دادههای جدید استفاده میشود. |
گاهی اوقات هوش مصنوعی از ترکیب داده و قوانین از پیشتعریف شده استفاده میکند که به او امکان حل وظایف پیچیده با دقت خوبی که به نظر ممکن نمیآید را میدهد. | برنامهنویسی سنتی به طور کامل به هوش توسعهدهندگان وابسته است، بنابراین دارای قابلیت محدودی است. | یادگیری ماشین میتواند الگوها و تفسیرهایی را در مجموعهدادههای بزرگ را پیدا کند که یافتن آنها برای انسانها ممکن است سخت باشد. |
هوش مصنوعی یک زمینه گسترده است که شامل بسیاری از کاربردهای مختلف مانند پردازش زبان طبیعی، بینایی ماشین و رباتیک میشود. | برنامهنویسی سنتی به طور معمول برای ساخت برنامهها و سیستمهای نرمافزاری با قابلیتهای خاص استفاده میشود. | یادگیری ماشین زیرمجموعهای از هوش مصنوعی است و در حال حاضر در وظایف مبتنی بر هوش مصنوعی مانند پاسخگویی به سوالات چتبات، خودروهای خودران و غیره استفاده میشود. |
الگوریتم های یادگیری ماشین چطور کار می کنند؟
یادگیری ماشین به صورت زیر عمل میکند:
✅ مسیر رو به جلو (Forward Pass)
در این گام، الگوریتم یادگیری ماشین دادههای ورودی را دریافت کرده و سعی می کند با کشف ارتباط میان آنها خروجی مطلوب، که مبتنی بر درک این ارتباط هست، را تولید کند. این گام بسته به نوع الگوریتم مدل، پیشبینیها را محاسبه میکند.
✅ تابع خطا (Loss Function)
تابع خطا، که همچنین به عنوان تابع هزینه شناخته میشود، برای ارزیابی دقت پیشبینیهای انجام شده توسط مدل استفاده میشود. این تابع میزان تفاوت بین خروجی پیشبینی شده توسط مدل و خروجی واقعی را محاسبه کرده و این تفاوت به عنوان خطا یا اشتباه شناخته میشود. هدف مدل این است که با تنظیم پارامترهای داخلی خود، خطا یا تابع خطا را به حداقل برساند.
✅ فرآیند بهینهسازی مدل
فرآیند بهینهسازی مدل، فرآیند تکراری تنظیم پارامترهای داخلی مدل به منظور کاهش خطا یا تابع خطا است. این کار با استفاده از یک الگوریتم بهینهسازی مانند کاهش گرادیان انجام میشود. الگوریتم بهینهسازی گرادیان تابع خطا را نسبت به پارامترهای مدل محاسبه کرده و از این اطلاعات برای تنظیم پارامترها به منظور کاهش خطا استفاده میکند. الگوریتم، این فرآیند را تا زمانی که خطا به سطحی قابل قبول کاهش یابد، تکرار میکند.
پس از آموزش و بهینهسازی مدل بر روی دادههای آموزش، میتوان از مدل برای پیشبینی بر روی دادههای جدید استفاده کرد. دقت پیشبینیهای مدل با استفاده از معیارهای مختلف مانند دقت، دقت دستهبندی، بازخوانی و F1 Score (یک معیار مناسب برای ارزیابی دقت یک آزمایش) ارزیابی میشود.
چرخه حیات یادگیری ماشین
خب تا اینجا گفتیم که یادگیری ماشین چیست و الگوریتم های آن چطور کار می کنند، حال می خواهیم چرخه حیات یک پروژه یادگیری ماشین را بررسی کنیم و ببینیم که شامل چه مراحلی است؟ به 9 مرحله زیر دقت کنید:
1- بررسی مسئله
مرحله اول، مطالعه مسئله است. در این مرحله، ما باید مسئله تجاری را درک کرده و اهداف مدل را تعریف کنیم.
2- جمعآوری داده
وقتی مسئله به خوبی تعریف شده است، میتوانیم دادههای مرتبط مورد نیاز برای مدل را جمعآوری کنیم. دادهها ممکن است از منابع مختلفی مانند پایگاههای داده، رابطهای برنامهنویسی (API) یا استخراج از وب (web scraping) به دست آید.
3- آمادهسازی داده
وقتی دادههای مرتبط با مسئله جمعآوری شدهاند، منطقی است که دادهها را به درستی بررسی کرده و به فرمت مورد نیاز تبدیل کنیم تا مدل بتواند الگوهای پنهان را پیدا کند. این کار ممکن است شامل مراحل زیر باشد:
- پاکسازی داده
- تبدیل داده
- تحلیل داده توضیحی و مهندسی ویژگی
- تقسیم مجموعه داده برای آموزش و آزمون.
4- انتخاب مدل
مرحله بعد انتخاب الگوریتم یادگیری ماشین مناسب برای مسئله ماست. این مرحله نیازمند دانش در مورد نقاط قوت و ضعف الگوریتمهای مختلف است. گاهی اوقات از چند مدل استفاده میشود و نتایج آنها مقایسه شده و بهترین مدل بر اساس نیازهای ما انتخاب میشود.
5- ساخت و آموزش مدل
پس از انتخاب الگوریتم، باید مدل را بسازیم.
- در مورد یادگیری ماشینی سنتی، ساخت مدل به راحتی انجام میشود و تنها چند مورد از تنظیم پارامترها مورد نیاز است.
- در مورد یادگیری عمیق، باید معماری لایهای مدل را به همراه اندازه ورودی و خروجی، تعداد نودها در هر لایه، تابع هزینه، بهینهساز کاهش گرادیان و غیره را تعریف کنیم.
- سپس مدل با استفاده از مجموعه داده پیشپردازش شده آموزش میبیند.
6- ارزیابی مدل
پس از آموزش مدل، میتوان آن را بر روی مجموعه داده آزمون ارزیابی کرد تا دقت و عملکرد آن با استفاده از تکنیکهای مختلفی مانند گزارش دستهبندی، F1 score، دقت، بازخوانی، منحنی ROC، خطای میانگین مربعات و خطای مطلق و غیره تعیین شود.
7- تنظیم مدل
بر اساس نتایج ارزیابی، ممکن است نیاز باشد مدل را تنظیم یا بهینهسازی کرد تا عملکرد آن بهبود یابد. این کار شامل تنظیم پارامترهای مدل میشود.
8- پیادهسازی
پس از آموزش و تنظیم مدل، میتوان آن را در محیط تولیدی پیادهسازی کرد تا بتواند دادههای جدید را پیشبینی کند. این مرحله نیازمند ادغام مدل در یک سیستم نرمافزاری موجود یا ایجاد یک سیستم جدید برای مدل است.
9- نظارت و نگهداری
در نهایت، نظارت بر عملکرد مدل در محیط تولیدی و انجام وظایف نگهداری ضروری است که شامل نظارت برای تغییرات داده، دوبارهآموزی مدل تا حد نیاز و بهروزرسانی مدل با توجه به دادههای جدید میشود.