در این وبلاگ، مطالبی برگزیده از جانب نویسندگان «مجله فرادرس» در زمینههای گوناگون علمی، دانشگاهی و مهندسی منتشر میشود.
چطور یادگیری ماشین یاد بگیریم؟ - راهنمای کاربردی
«هوش مصنوعی» (Artificial Intelligence)، «یادگیری ماشین» (Machine Learning) و «علم داده» (Data Science) از موضوعات داغ این روزها هستند و کمتر کسی پیدا میشود که تاکنون چیزی پیرامون آنها نشنیده باشد. با این وجود، اغلب درک درستی از مفاهیم و چگونگی یادگیری آنها وجود ندارد. یکی از پرسشهای اساسی بسیاری از علاقهمندان به این حوزهها این است که «چطور یادگیری ماشین، یاد بگیریم؟». از همین رو، در این مطلب به مفهوم یادگیری ماشین، کاربردها، چرایی و چگونگی یادگیری آن پرداخته شده است.
یادگیری ماشین چیست؟
یادگیری ماشین (ML)، مطالعه علمی پیرامون الگوریتمها و مدلهای آماری است که کامپیوترها برای انجام کارها به طور موثر و کارا، از آنها استفاده میکنند؛ این الگوریتمها، به ماشین کمک میکنند تا بدون دریافت دستورالعمل صریح و گام به گام و تنها با تکیه بر الگوها و استنباط خود، به فعالیت بپردازد. در واقع، الگوریتمهای یادگیری ماشین بر مبنای مجموعه داده (Data Set) موجود، با بهرهگیری از یک مدل ریاضیاتی به انجام پیشبینی یا تصمیمسازی - بدون آنکه صراحتا برای این کار برنامهریزی شوند - میپردازند. یادگیری ماشین یک زیر مجموعه از هوش مصنوعی محسوب میشود.
یادگیری ماشین چه کاربردهایی دارد؟
یادگیری ماشین کاربردهای متعدد و جالب توجهی دارد و اغراق نیست اگر گفته شود که میتوان از این مبحث علمی در اغلب زمینهها استفاده کرد. در این بخش، تنها به برخی از کاربردهای متداول و شناخته شده یادگیری ماشین پرداخته خواهد شد. کاربردهای یادگیری ماشین در جهان کنونی بسیار گسترده و بیان کلیه آنها همراه با جزئیات، از حوصله این بحث خارج است.
- دستیار شخصی مجازی: «سیری» (Siri)، «الکسا» (Alexa) و «گوگل نو» (Google Now) از شناخته شدهترین دستیارهای شخصی مجازی هستند که یادگیری ماشین در ساخت آنها نقش مهمی داشته است. زیرا، آنها دادهها را گردآوری، پالایش و پردازش میکنند. دستیارهای شخصی مجازی به صورت یکپارچه در پلتفرمهای متعددی مانند اسپیکرهای هوشمند (آمازون اکو و گوگل هوم)، گوشیهای هوشمند (سامسونگ اس۸) و برنامههای موبایل (گوگل الو) وجود دارند.
- تشخیص کلاهبرداری: یادگیری ماشین کمک میکند تا فضای سایبری به محیطی امنتر مبدل شود. ردیابی کلاهبرداریهای مالی مثال خوبی از نقش یادگیری ماشین در مبارزه با جرایم سایبری است. از سوی دیگر، میتوان از یادگیری ماشین برای تشخیص کلاهبرداریهای مالی و بانکی (مانند پولشویی) و بیمه (کشف ادعاهای دروغین) نیز استفاده کرد.
- سیستمهای توصیهگر: اغلب افراد امروزه از فروشگاههای آنلاین خرید و یا از پلتفرمهای استریم صوتی، تصویری و پایگاهدادههای اطلاعاتی آنلاین مانند IMDB (پایگاهداده اطلاعاتی آنلاین برای فیلمها، برنامههای تلویزیونی، استریمهای اینترنتی و برخی از دیگر موارد) استفاده میکنند. یکی از ویژگیهای جالبی که در اغلب این سایتها وجود دارد، بخش «پیشنهادات» است که به کاربر با توجه به رفتارهای او، محصول، موسیقی، فیلم و یا کتاب خاصی را پیشنهاد میکند. یادگیری ماشین، یک مولفه مهم و اساسی در ساخت «سیستمهای توصیهگر» (Recommender Systems) محسوب میشود.
- موتورهای جستجو: موتورهای جستجو، مانند گوگل، داکداکگو (DuckDuckGo) و بینگ (Bing) از الگوریتمهای یادگیری ماشین برای گردآوری و پالایش دادهها و ارائه نتایج به کاربر استفاده میکنند.
- خدمات شبکههای اجتماعی: نمایش تبلیغات هدفمند و شناسایی کاربران مخرب در شبکههای اجتماعی، تنها دو نمونه از کاربردهای یادگیری ماشین در شبکههای اجتماعی هستند. امروزه، با گسترش استفاده از شبکههای اجتماعی، استفاده از یادگیری ماشین به منظور کار با دادههای این شبکهها و «تحلیل شبکههای اجتماعی» (Social Network Analysis) برای اهداف مختلف امری اجتنابناپذیر شده است.
چرا یادگیری ماشین بیاموزیم؟
پرسشی که برای اغلب افراد پیش از یادگیری یک مبحث جدید (به ویژه مبحثی مانند یادگیری ماشین که فراگیری آن نیاز به زمان و تلاش قابل توجهی دارد) پیش میآید، این است که «چرا ... را بیاموزم؟». در حوزه یادگیری ماشین نیز همینطور است. در پاسخ به پرسش «چرا یادگیری ماشین بیاموزیم؟» میتوان به دلایل زیر اشاره کرد:
- همانطور که در بخش پیشین مشاهده شد، یادگیری ماشین دارای کاربردهای گسترده و قابل توجهی در حوزههای گوناگون است و امروزه در بسیاری در سازمانهای دولتی و خصوصی برای انجام کارهای کوناگون از آن استفاده میشود.
- اخیرا مطلبی پیرامون «فرصتهای شغلی برجسته سال ۲۰۱۹»، توسط «گای برگر» (Guy Berger)، اقتصاددان ارشد لینکدین و با تحلیل دادههای موجود در این شبکه اجتماعی نوشته شده است. در مطلب مذکور، از یادگیری ماشین به عنوان یکی از زمینههایی که نقشهای شغلی آن دارای رشد نمایی بودهاند یاد شده است. در این گزارش آمده است که «مهندس یادگیری ماشین» (ML Engineer) با رشد ۱۲ برابری و «کارشناسی یادگیری ماشین» (ML Expert) با رشد ۶ برابری نسبت به سالهای پیشین، جزو چهار شغل برجسته سال ۲۰۱۸ بودهاند.
- فرصتهای شغلی متعددی برای متخصصان یادگیری ماشین در حوزههای گوناگون وجود دارد و میتوان گفت، احتمالا بشر در آینده نه چندان دور در هر سازمانی شاهد حضور دستکم یک کارشناس یادگیری ماشین خواهد بود. البته در حال حاضر، محل اصلی فعالیت متخصصان این حوزه، سازمانهای دولتی و خصوصی فناوری اطلاعات و ارتباطات است. طبق آمارهای موجود، رشد سال به سال مشاغل مرتبط با یادگیری ماشین بالغ بر ٪۹۶ است. این یعنی، پتانسیل قابل توجهی برای رشد و پیشرفت افراد در این حوزه وجود دارد.
- جایگاه شغلی و درآمد مهندسهای یادگیری ماشین بسیار خوب است. مطابق با دادههای ارائه شده توسط لینکدین، حقوق پایه این افراد چیزی حدود ۱۸۲,۰۰۰ (سالانه) است.
اما در نهایت، مساله مهمی که در کنار همه این موارد باید به آن توجه داشت، علاقهمندی به یک حوزه کاری و جذابیت داشتن آن برای فرد است. خوشبختانه، یادگیری ماشین این فرصت را برای فرد فراهم میکند که هر بار با چالشها و مسائل جدیدی مواجه شود و کارهایی انجام دهد که گاهی جادویی به نظر میرسند.
چطور یادگیری ماشین یاد بگیرم؟
اکنون که مشخص شد یادگیری ماشین چیست، چه کاربردهایی دارد و برخی از دلایل یادگیری آن برشمرده شد، زمان آن رسیده که به پرسش اصلی یعنی «چطور یادگیری ماشین یاد بگیریم؟» پاسخ داده شود. در این مطلب، یک نقشه راه کلی برای فراگیری یادگیری ماشین و منابعی برای آن معرفی میشوند. علاقهمندان برای مطالعه همراه با جزئیات، میتوانند به منابعی که در مطلب معرفی میشوند مراجعه کنند.
موضوعاتی که فرد در مسیر یادگیری ماشین نیاز به آنها نیاز دارد در ادامه بیان شدهاند. توجه داشته باشید که هر چند در یادگیری برخی از این موارد نیاز به رعایت توالی است، ولی در برخی گامها نیز نیاز به حفظ ترتیب نیست و چه بسا، یادگیری آنها به طور موازی با دیگر گامها انجام شود. این نکته را نیز نباید فراموش کرد که فراگیری یادگیری ماشین به دلیل آنکه به نوعی علمی میان رشتهای است، نیاز به یادگیری مباحث متنوعی دارد و همین امر نشان میدهد که برای مبدل شدن به یک مهندس یادگیری ماشین بسیار توانمند، نیاز به صرف زمان و کسب تجربه زیاد در گذر زمان است.
علوم کامپیوتر
برای ساخت ماشینهایی که یاد میگیرند، ابتدا لازم است که این ماشینها را شناخت و با ساز و کار آنها آشنا شد. بنابراین، افرادی که از صفر شروع خواهند کرد و دانش کامپیوتری آنها ضعیف است، ابتدا نیاز به آن دارند که مبانی علوم کامپیوتر را بیاموزند.
قطعا، در گامهای بعدی و هنگامی که فرد به عنوان یک کارشناس یادگیری ماشین دانش خود را توسعه میدهد، نیاز به آگاهی از روشهای مهندس نرم افزار و ساخت سیستم نیز خواهد داشت. اما این موضوع یک پیشنیاز محسوب نمیشود، بلکه دانشی است که در گذر زمان، بر حسب نیاز و بعضا با کسب تجربه به دست خواهد آمد.
پردازش توزیع شده و رایانش ابری نیز از دیگر مباحث فناوری اطلاعات هستندکه مهندس یادگیری ماشین در طول زمان و ضمن کار با «کلانداده» (Big Data) و مسائل نیازمند پردازشهای زیاد، به آنها نیاز پیدا خواهد کرد. برای یادگیری مباحث علوم کامپیوتر، استفاده از آموزشهای ویدئویی «مجموعه آموزشهای علوم و مهندسی کامپیوتر» پیشنهاد میشود.
ریاضیات
«من برای مبدل شدن به یک مهندس یادگیری ماشین نیازی به ریاضیات ندارم» یک باور غلط است که در مسیر فراگیری یادگیری ماشین باید آن را ترک کرد. یک کارشناس یادگیری ماشین، نیاز دارد تا جبر خطی، آمار و احتمال، حسابان و ریاضیات گسسته بداند. منظور این نیست که یک مهندس یادگیری ماشین باید یک آماردان یا یک ریاضیدان زبده باشد (هرچند گفتن این موضوع هم شاید خیلی اشتباه نباشد) اما، مباحث و مفاهیمی در علم ریاضیات وجود دارد که یک مهندس یادگیری ماشین باید به طور کامل بر آنها تسلط داشته باشد.
در ادامه به طور خلاصه به برخی از مهمترین مباحثی که از هر یک از زمینههای گفته شده در یادگیری ماشین مورد نیاز است اشاره میشود؛ برای آگاهی از سرفصلهای دقیق ریاضیاتی که در یادگیری ماشین به آنها نیاز است، مطالعه مطلب «مباحث کاربردی ریاضیات پایه برای علم داده» و «کاربرد جبر خطی در یادگیری عمیق» توصیه میشود. برای علاقمندان به یادگیری این مباحث با استفاده از آموزشیهای ویدئویی نیز، مشاهده «مجموعه آموزشهای آمار و احتمالات» پیشنهاد میشود.
جبر خطی: مفایم تانسورها (شامل ماتریس و بردار) و عملیات روی آنها یکی از مباحث پایهای مورد استفاده در یادگیری ماشین است.
آمار و احتمال: میتوان به جرات گفت که در فرایند یادگیری ماشین، از گردآوری و پیش پردازش دادهها گرفته تا اعمال الگوریتمهای یادگیری ماشین، ارزیابی خروجی، بصریسازی و ارائه خروجیها، نیاز به استفاده از محاسبات آماری است. آمار توصیفی و شاخصهای آماری، تابعهای توزیع احتمال، جامعه، نمونه، فاصله اطمینان، مقدار احتمال، واریانس و انحراف معیار و آزمونهای آماری، تنها برخی از مفاهیم پر کاربرد آمار و احتمال در یادگیری ماشین هستند.
حسابان: مفهوم تابع، انواع توابع، حد و پیوستگی، مشتقپذیری، قضایای مقدار میانگین و میانی، سریها و دنبالهها، اصول حل معادلات دیفرانسیل با مشتقات جزئی (مقدمات) از جمله مباحث حسابان مورد استفاده در یادگیری ماشین محسوب میشوند.
ریاضیات گسسته: از ریاضیات گسسته در قلب سیستمهای محاسباتی استفاده میشود. مفاهیم مجموعهها، توابع شمارشی، ترکیبیات، اصول شمارش، روشهای استنتاج و استنباط منطقی و مبانی ساختمان داده شامل نظریه گراف، جدولهای درهمسازی، پشته، صف و درخت از مباحث ریاضیات گسسته هستند که کاربردهای گستردهای در یادگیری ماشین دارند. از دیگر مباحث ریاضیات گسسته میتوان به رشد توابع و نماد (O(n اشاره کرد که به ویژه در تحلیل الگوریتمها کاربرد زیادی دارد.
ابزارهای کامپیوتری
مهندس یادگیری ماشین برای انجام پیادهسازیهای لازم طی فرایند یادگیری ماشین، نیاز به ابزار دارد. زبانهای برنامهنویسی مانند «زبان برنامهنویسی پایتون» (Python Programming Language) و R ابزارهایی هستند که در این مسیر به کمک مهندس یادگیری ماشین میآیند.
در حال حاضر، با توجه به سادگی فراگیری زبان پایتون، ساختار قدرتمند، جامعه توسعهدهندگان بزرگ و قدرتمند، کتابخانههای متعدد و بینظیر برای یادگیری ماشین و بازار کار گسترده آن، فراگیری این زبان و کتابخانههای مربوط به یادگیری ماشین و علم داده آن به عنوان ابزاری برای مهندس یادگیری ماشین توصیه میشود.
برای آشنایی بیشتر با کتابخانههایی قدرتمندی که پایتون برای یادگیری ماشین در اختیار کاربر قرار میدهد، مطالعه مطالب «۱۰ کتابخانه پایتون علم داده»، «۸ کتابخانه یادگیری ماشین پایتون» و «۱۳ کتابخانه یادگیری عمیق پایتون» توصیه میشود. همچنین، برای آشنایی بیشتر با کاربرد پایتون به عنوان ابزاری جهت پیادهسازی و ارزیابی مدلهای یادگیری ماشین و همچنین، ارائه خروجیهای مناسب، مطالعه مطلب «پیاده سازی الگوریتم های یادگیری ماشین با پایتون و R — به زبان ساده» و مطالب این لینک [+] توصیه میشوند. ویدئوهای مقدماتی، تکمیلی و پروژهمحور «مجموعه آموزشهای برنامهنویسی پایتون» نیز منابعی مناسب و به زبان فارسی برای یادگیری زبان برنامهنویسی پایتون به حساب میآیند.
مفاهیم و الگوریتمهای یادگیری ماشین
شاید تعجب برانگیز باشد که مباحثی که تاکنون برای فراگیری یادگیری ماشین بیان شدهاند، هیچ کدام از زیرشاخههای علم یادگیری ماشین نیستند. اما تسلط به آنها به اندازه تسلط بر مفاهیم و الگوریتمهای یادگیری ماشین الزامی است.
اما در هر حال، یک کارشناس یادگیری ماشین، نیاز به تسلط بر مبانی این حوزه، آشنایی با گامهای فرایند یادگیری ماشین، روشهای پیشپردازش دادهها، الگوریتمها و روشهای مدلسازی، روشهای ارزیابی مدل و ارائه خروجی دارد. برای مطالعه بیشتر در این راستا و آشنایی با پروژههای کاربردی و جهان واقعی یادگیری ماشین، مطالعه مطلب «یادگیری ماشین (Machine Learning) چیست؟ — راهنمای کامل» و «آموزش یادگیری ماشین با مثال های کاربردی» توصیه میشود. برای یادگیری عمیق و به زبان فارسی مفاهیم و الگوریتمهای یادگیری ماشین و همچنین، آگاهی از چگونگی پیادهسازی پروژههای عملی، مشاهده ویدئوهای «مجموعه آموزشهای دادهکاوی و یادگیری ماشین» توصیه میشوند.
جمعبندی
یادگیری ماشین، زیرمجموعهای از هوش مصنوعی است که به چگونگی ساخت ماشینهای یادگیرنده بدون استفاده از برنامهریزی و برنامهنویسی صریح میپردازد که در طول زمان نیز خود را بهبود میبخشند. این مبحث، کاربردهای بسیار متنوعی در زمینههای گوناگون دارد و در حال حاضر یکی از مشاغل دارای رشد قابل توجه و بازار کار خوب است.
در مسیر یادگیری ماشین، نیاز به فراگیری مباحث گوناگون شامل علوم کامپیوتر، ریاضیات، ابزارهای کامپیوتری و مفاهیم و الگوریتمهای یادگیری ماشین است. اگر پس از مطالعه این مطلب و آشنایی با مسیر طویل، پر پیچ و خم، اما لذتبخش، مملو از چالش و پر دستاورد یادگیری ماشین، علاقمند به فراگیری آن هستید، آموزشهای زیر در این راستا به شما پیشنهاد میشوند:
مطلبی دیگر از این انتشارات
نقشه راه یادگیری ماشین لرنینگ
مطلبی دیگر از این انتشارات
الهام الگوریتمیک از طبیعت
مطلبی دیگر از این انتشارات
شروع Machine Learning با استفاده از scikit-learn در IOS