سلام.
شاید در مورد راه های ورود به هوش مصنوعی و اینکه چطوری شروع کنیم، زیاد شنیده باشید و مطالب و نقشه های راه زیادی دیده باشید. از لایوهای اینستاگرامی تا مطالب متشر شده در سایت هایی مثل ویرگول. منم زیاد دیدم و چنتایی رو هم نگاه کردم. اینطور که متوجه شدم مطالبی که به اشتراک گذاشته شدن یا خیلی کامل نیستن و یا یه جورایی تبلیغاتی بودن که بیاید موسسه ما یاد بگیرید. به همین علت، خواستم تا به عنوان کسی که تغییر رشته داده و برای دکترا داره هوش مصنوعی میخونه، تجربیاتم رو به اشتراک بزارم و یک راهنمای تقریبا جامع برای ورود به حوزه هوش مصنوعی بنویسم که جنبه تبلیغاتی هم نداشته باشه. من تو این پست قصد ندارم که هوش مصنوعی یاد بدم، بلکه میخوام منابعی رو معرفی کنم که با استفاده از اونا یاد بگیرید. سه تا نکته رو همین اول کار بگم:
فهرست مطالب
هدفم از نوشتن این بخش اینه که کمی منو بشناسید که ببینید اصلا صلاحیت نوشتن این موضوع رو دارم یا نه. اگر دوست ندارید با من آشنا بشید برید بخش دوم :)
من اسمم آرشه. لیسانس و فوق رو الکترونیک خوندم و بعد از آشنایی با حوزه باحال هوش مصنوعی دیگه از برق و الکترونیک خوشم نمیومد و میخواستم یا تو این زمینه کار کنم و یا دکترا رو علوم کامپیوتر (گرایش هوش مصنوعی) بخونم، که خب دومیش شد و من از دانشگاه گنت (یا با تلفظ هلندی خنت) در کشور بلژیک پذیرش گرفتم. اگر خواستید در مورد اخذ پذیرش دکترا در اروپا بیشتر بدونید میتونید پست اخذ پذیرش دکترا در اروپا - سیر تا پیاز که قبلا نوشتم رو مطالعه کنید.
من بعد از ارشدم یه زمان خیلی خوبی پیدا کردم که بشینم مطالعه کنم و منابع زیادی رو در مورد هوش مصنوعی بخونم که قراره فقط خوباشو اینجا معرفی کنم، که شما عزیزان وقتتون رو سر منابع الکی هدر ندید. من هوش مصنوعی رو کاملا به صورت خودخوان خوندم و حتی یک کلاس هم نرفتم. چه دانشگاه و چه آموزشگاه. منابعی که اینجا معرفی میکنم، نتیجه داشتن و برای اولین بار نیست که میخوام پیشنهادشون بدم. دو سه نفر از دوستان من از این منابع استفاده کردن و خب راضی بودن. نمیگم که اینا بهترینن ولی خب جواب دادن.
این از من ...
قبل از اینکه بخواید اصلا وارد هوش مصنوعی بشید، باید یه سری چیزا رو بدونید: برنامه نویسی، ریاضیات و زبان.
زبان رو که اول پست گفتم و تاکید کردم، اما اینجا میخوام از یه نظر دیگه ای بهش نگاه کنم. فرض کنیم که یکی بدون هیچ دانشی از زبان انگلیسی (و یا دانش ناکافی) تونست به هر طریقی هوش مصنوعی رو یاد بگیره و وارد بشه. قاعدتا این شخص که نمیخواد مبتدی بمونه و درجا بزنه، بلکه میخواد بیاد بالا و برسه به لبه علم. اون وقت دیگه باید مقاله های روز دنیا و کتاب های زبان اصلی رو بخونه. اینجاس که زبان خودشو نشون میده.
از نظر من، در مراحل پیشرفته (تحقیقاتی یا مثلا PhD)، برنامه نویسی تنها 10 درصد از هوش مصنوعی رو تشکیل میده و 90 درصد بقیش ریاضیاته (از نظر زمانی که باید بگذارید تا متوجه یک الگوریتم بشید). برای شروع، ریاضیات ماتریس، مشتق و آمار که در دبیرستان خوندید کفایت میکنه. فقط برای شروع. کمکم، نیاز به ریاضی رو خودتون حس میکنید و بعضی وقتا مباحث مخنلفشو سرچ میکنید تا یاد بگیرید. ولی اگر آمار و جبر خطی دبیرستان یادتون رفته، یک منبع بهتون معرفی میکنم که براتون مرور بشه. البته منبعی که معرفی میکنم یه ذره بیشتر از دبیرستان میگه. ولی همش به درد میخوره.
این پلی لیست یوتیوب برای مرور ریاضیات اولیه خیلی خوبه. توسط یکی از اساتید برجسته دانشگاه Tubingen آلمان تدریس شده. کلا کانال خوبی هم هست بعدا اگر خواستید بهش سر بزنید و چیزایی که ابتدایی نیستن رو یاد بگیرید.
Tubingen Machine Learning - Mathematics for Machine Learning
و در نهایت برنامه نویسی. با اینکه گفتم فقط ده درصد ولی این ده درصد خیلی مهمه. شما هر چقدرم در ریاضیات خفن باشید ولی در نهایت باید اون الگوریتم رو پیادهسازی کنید. پیادهسازی هم چیزی نیست جز برنامه نویسی. زبان برنامه نویسی اصلی برای هوش مصنوعی و یادگیری ماشین، پایتون و در محیط Jupyter هست (منظورم از محیط همون IDE هست). اگر بلدید که خوش به حالتون و اگر بلد نیستید این منبع خوبیه (گرچه پایتون منبع خوب کم نداره. تقریبا همشون خوبن) از Jose Portilla:
Udemy – 2021 Complete Python Bootcamp From Zero to Hero in Python
اگر خواستید از این منبع استفاده کنید، تا آخر Python Genrators بخونید. بقیش دیگه به درد نمیخوره.
یه سوالی که دیدم بعضیا میپرسن اینه که چرا پایتون؟ مثلا من که جاوا بلدم نمیشه؟ نشد که نداریم ولی کار سخت میشه. یکی از اساتید فک کنم دانشگاه های آمریکا میگفت هوش مصنوعی و یادگیری ماشین به اندازه کافی پیچیده هست دیگه با برنامه نویسی سخت ترش نکنید. پایتون آسون ترین زبان برنامه نویسیه. علاوه بر این منابع در پایتون زیاد و اکثر کتابخانه ها برای استفاده در پایتون پیادهسازی شدند. علاوه بر این، در برنامه نویسی هوش مصنوعی وقتی کد رو اجرا میکنید دلتون میخواد که نتیجه رو همون موقع ببینید و در صورت نارضایتی کد رو تغییر بدید. خیلی interactive طور. زبون هایی که اول باید کامپایل کنید و بعد اجرا، یه جورایی user friendly نیستن از این لحاظ.
اینم از پیش نیاز ها ...
حوزه هوش مصنوعی و یادگیری ماشین خیلی بزرگه و کاربرد های زیادی داره. از پردازش تصویر و پردازش متن گرفته تا بیولوژی و Bioinformatics. قرار هم نیست که شما در همه این زمینه ها کار کنید، و هر کدوم هم یه سری الگوریتم ها و روش های تخصصی خودش رو داره. ولی تو هر کدوم از این زمینه ها که بخواید کار کنید، باید یه سری چیزا رو بدونید و بین همه زمینه ها مشترکه. اونم چیزی نیست جز یادگیری ماشین کلاسیک (Classical Machine Learning) و یادگیری عمیق (Deep Learning). این اصطلاح یادگیری ماشین کلاسیک رو من از خودم در آوردم. اسم خاصی ندارن و در واقع روش های یادگیری ماشین عمومی هستند که از شبکه های عصبی استفاده نمیکنن.
بریم سراغ منابع یادگیری ماشین کلاسیک. برای این موضوع 4 تا منبع معرفی میکنم. دو تاشون ریاضیات یادگیری ماشین هستن و دوتای دیگه کدنویسی.
این منبع اصلی و معروف ماشین لرنینگ هست که توسط Andrew Ng تدریس شده. برنامه نویسی نداره و فقط ریاضیات قضیه رو خیلی ساده توضیح میده. گرچه خیلی هم وارد جزئیاتش نمیشه. به صورت ساده.
2. Udemy - Machine Learning A-Z™: Hands-on Python & R in Data Science
3. Udemy - Python for Data Science and Machine Learning Bootcamp
هر دو این آموزش برنامه نویسی هستند و خیلی ریز هم در مورد تئوری الگوریتم صحبت میکنند. اولی توسط SuperDataScience Team و دومی توسط Jose Portilla. من از برنامه نویسی اولی اصلا خوشم نمیاد و اصلا خوب نمیگه ولی توضیحاتش برای اینکه هر الگوریتم چجوری کار میکنه خیلی قشنگه و بدون اینکه وارد ریاضیات بشه، به صورت سطح بالا توضیح میده که هر الگوریتم چجوری کار میکنه. کدنویسی در دومی خیلی قشنگ توضیح داده شده. علاوه بر این در پایتون یک سری کتابخونه ریاضیات مانند numpy و pandas وجود داره که اولی هیچ توضیحی دربارشون نمیده ولی دومی کاور میکنه. بدیش اینه که Jose توضیحاتش به درد خودش میخوره. در واقع این دوتا یه جورایی مکمل همن. توضیحات اولی و کد دومی. حالا خودتون میبینید متوجه میشید.
4. Tubingen Machine Learning - Statistical Machine Learning
این آموزش که باز هم توسط دانشگاه Tubingen آلمان تهیه شده و در یوتیوب موجوده خیلی فوق العادست. اصلا برنامه نویسی نداره ولی وارد ریاضیاتش میشه به صورت کامل، و ته هر الگوریتم رو از نظر ریاضی درمیاره.
اگر وقت دارید که هر چهارتا رو ببینید (ترتیبی که من دیدم 2 3 1 4 بود) ولی اگر وقت ندارید فقط 3 و 4 (ولی وقت داشته باشید، باید وقت بذارید که جا بیفته براتون. عجله کار شیطونه).
بریم سراغ یادگیری عمیق. برای یادگیری عمیق هم پنج منبع معرفی میکنم.
این آموزش توسط SuperDataScience Team تهیه شده. تشکیل شده از برنامه نویسی و توضیح سطح بالا. برنامه نویسیشو نگاه کردید بد نیست ولی من آموزش برنامه نویسی رو جلوتر بهتون منابعش رو معرفی میکنم. توضیحات سطح بالاش ولی خیلی خوبه برای کسی که هیچی نمیدونه و میخواد شروع کنه. تشکیل شده از 6 فصل. فقط فصل 1 2 3 و 6 رو بخونید. یعنی SOM و Boltzmann machine رو با خیال راحت skip کنید.
2. Coursera - Deep Learning Specialization
تئوری و ریاضیات یادگیری عمیق توسط Andrew Ng در این آموزش توضیح داده شده. برنامه نویسی نداره.
خب بریم سراغ برنامه نویسی در یادگیری عمیق. برنامه نویسی این حوزه با دو تا کتابخونه اصلی انجام میشه. یکی TensorFlow و یکی هم PyTorch. اولی برای گوگل هست و دومی برای فیسبوک. هر کدوم هم خوبیای خودشونو دارن. پیشنهادم ولی اینه از TensorFlow شروع کنید.
3. Coursera - TensorFlow 2 for Deep Learning Specialization
این Specialization که توسط دانشگاه Imperial College لندن تهیه شده، 3 تا کورس داره. شما فقط دوتای اولشو احتیاج دارید. پیش فرض رو بر این میذاره که تئوری رو بلدید و فقط برنامه نویسی یاد میده. دوباره میگم سراغ سومیش نرید. سومیش تئوریش خیلی پیشرفتس و ریاضیات سنگینی داره و اصلا برای مبتدیان نیست. میخونید، هیچی نمیفهمید، ناامید میشید. بعدا که خفن شدید برگردید بهش اگر دلتون خواست. همین یدونه منبع برای تنسورفلو کفایت میکنه. بریم سراغ منابع پای تورچ:
5. Manning - Deep Learning with PyTorch
برای پای تورچ من منبع ویدئویی خوبی پیدا نکردم و در نتیجه دو تا کتاب معرفی میکنم. جفتشون خوبن. دومی رو خود دولوپرهای پای تورچ نوشتن ولی من ترجیحم اولیه.
قاعدتا این مقاله باید اینجا تموم میشد، ولی خب من گفتم یه ذره اضافش کنم بد نیست. اینا فقط یه ذره پیشرفته تره و شاید اصلا نفهمید من چی میگم. اگر نفهمیدید که اینا چین، میتونید دیگه ادامشو نخونید (مثلا بعدا برگردید). همونطور که قبلا گفتم هوش مصنوعی کاربردهای مختلفی داره و در واقع شاخه شاخه میشه. چنتا از کاربرداش ایناس:
خب من همه اینا رو کار نکردم و نمیتونم برای همش منبع معرفی کنم. پردازش تصویر تا حدودی تو همین آموزشایی دادم به صورت ابتدایی پوشش داده میشه ولی برای مباحث پیشرفتش مثل segmentation و detection به صورت تخصصی وارد این موضوع بشید. من فقط برای مورد 5 و 6 منبع معرفی میکنم. برای پیدا کردن منبع برای موارد دیگه میتونید برید بخش بعدی.
برای یادگیری شبکه های مولد مثل Generative Adversarial Networks و یا Variational Auto Encoder میتونید از این دو تا منبع استفاده کنید. البته VAE ریاضیاتش یه ذره سنگینه و به خاطر همین فقط یکی از این منابع، به صورت ساده یک فصلش رو به این مبحث اختصاص داده. ولی GAN مبحث باحالیه و میتونید از این دو تا منبع استفاده کنید برای هم تئوری و هم کدنویسی. جفتشون کتابن.
البته کورسرا هم یه آموزش برای GAN داره ولی من ندیدمش تا حالا. و حالا منابع یادگیری تقویتی:
این آموزش که توسط SuperDataScience Team تهیه شده مثل همیشه کدنویسیش به درد نمیخوره (و همچنین قدیمی هم شده) ولی توضیحات فوق العاده ای داره.
2. Coursera – Reinforcement Learning Specialization
این کورس توسط دانشگاه آلبرتا تهیه شده. نمیگم بده و نمیگم خوبه. مدرساش مثل ربات میان وای میسن یه چیزی توضیح میدن (قشنگ معلومه تا حالا جلو دوربین نبودن). برنامه نویسی نداره و فقط تئوریه. دیدنش خالی از لطف نیست.
3. Manning - Deep Reinforcement Learning in Action
این کتاب از نظر من باید منبع اصلیتون باشه برای یادگیری. توضیح و کدنویسی عالیییی. البته اگر توضیحات منبع اول رو دیده باشید فهمش براتون راحت تره.
من چنتا منبع معرفی کردم براتون که اگر اول راه هستید، بتونید نقطه شروع رو پیدا کنید. اگر وارد مراحل بالاتر شدید (مثلا میخواید برید در زمینه پردازش متن کار کنید و یا اینکه از منابعی که من معرفی کردم خوشتون نیومد، یک سری راه وجود داره که خودتون منبع پیدا کنید. اینارم اینجا توضیح میدم که کامل همه چیو گفته باشم:
نکته: هیچ وقت سراغ ویدئوهای آموزشی و کتاب های Packt نرید. همشون مزخرفن.
نکته: در پست راهکار های دانلود رایگان از وبسایت های آموزشی خارجی نحوه دانلود کتاب و کورس های Udemy رو توضیح دادم. کورسرا هم که خودش مجانیه اصلا. نیازی به تورنت و این حرفا نداره.
رسیدیم به پایان مقاله. امیدوارم که تونسته باشم کمی بهتون در مورد منابع آموزشی هوش مصنوعی برای مبتدیان کمک کرده باشم. در صورتی که نظری، تجربه ای و یا سوالی دارید تو کامنت ها مطرحش کنید. اگر هم چیز اشتباهی دید، ممنون میشم بهم گوشزد کنید که درستش کنم.