آرش حیدری
آرش حیدری
خواندن ۱۲ دقیقه·۳ سال پیش

چگونه به حوزه هوش مصنوعی ورود کنیم؟

سلام.

شاید در مورد راه های ورود به هوش مصنوعی و اینکه چطوری شروع کنیم، زیاد شنیده باشید و مطالب و نقشه های راه زیادی دیده باشید. از لایوهای اینستاگرامی تا مطالب متشر شده در سایت هایی مثل ویرگول. منم زیاد دیدم و چنتایی رو هم نگاه کردم. اینطور که متوجه شدم مطالبی که به اشتراک گذاشته شدن یا خیلی کامل نیستن و یا یه جورایی تبلیغاتی بودن که بیاید موسسه ما یاد بگیرید. به همین علت، خواستم تا به عنوان کسی که تغییر رشته داده و برای دکترا داره هوش مصنوعی میخونه، تجربیاتم رو به اشتراک بزارم و یک راهنمای تقریبا جامع برای ورود به حوزه هوش مصنوعی بنویسم که جنبه تبلیغاتی هم نداشته باشه. من تو این پست قصد ندارم که هوش مصنوعی یاد بدم، بلکه میخوام منابعی رو معرفی کنم که با استفاده از اونا یاد بگیرید. سه تا نکته رو همین اول کار بگم:

  1. ممکنه در این مطلب، اشتباهی از من سر زده باشه. لطفا اگر چیزی دیدید، گوشزد کنید تا درستش کنم.
  2. تمام منابعی که معرفی میکنم برای شروع کار هستند. با خوندن همه این منابع هم شما یک متخصص نخواهید شد، بلکه فقط به این حوزه ورود کردید، اما از اینجا به بعد میتونید خودتون دنبال مباحث پیشرفته‌تر برید و نیازی نیست که یکی بهتون بگه که چی کار کنید و چی بخونید.
  3. اگر زبان انگلیسیتون در حدی نیست که کتاب انگلیسی بخونید و یا فیلم آموزشی ببینید، بهتون پیشنهاد میکنم اول زبانتون رو قوی کنید، بعد برید سراغ هوش مصنوعی، وگرنه وقتتونو دارید تلف میکنید. تمامی منابع معرفی شده توسط من، کتاب های زبان اصلی و ویدئوهای سایت های یوتیوب Youtube، کورسرا Coursera و یودمی Udemy هستند.

فهرست مطالب

  1. کمی با من آشنا بشید.
  2. پیش نیاز هایی که قبل از ورود به این حوزه نیاز دارید
  3. حداقل چیزهایی که باید بدانید
  4. کاربردهای مختلف هوش مصنوعی و تخصصی تر شدن موضوع
  5. خودمون از کجا منبع پیدا کنیم



کمی با من آشنا بشید

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

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

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

این از من ...



پیش نیازهایی که قبل از ورود به این حوزه نیاز دارید

قبل از اینکه بخواید اصلا وارد هوش مصنوعی بشید، باید یه سری چیزا رو بدونید: برنامه نویسی، ریاضیات و زبان.

زبان رو که اول پست گفتم و تاکید کردم، اما اینجا میخوام از یه نظر دیگه ای بهش نگاه کنم. فرض کنیم که یکی بدون هیچ دانشی از زبان انگلیسی (و یا دانش ناکافی) تونست به هر طریقی هوش مصنوعی رو یاد بگیره و وارد بشه. قاعدتا این شخص که نمیخواد مبتدی بمونه و درجا بزنه، بلکه میخواد بیاد بالا و برسه به لبه علم. اون وقت دیگه باید مقاله های روز دنیا و کتاب های زبان اصلی رو بخونه. اینجاس که زبان خودشو نشون میده.

از نظر من، در مراحل پیشرفته (تحقیقاتی یا مثلا 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 تا منبع معرفی میکنم. دو تاشون ریاضیات یادگیری ماشین هستن و دوتای دیگه کدنویسی.

  1. Coursera - Machine Learning

این منبع اصلی و معروف ماشین لرنینگ هست که توسط 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 (ولی وقت داشته باشید، باید وقت بذارید که جا بیفته براتون. عجله کار شیطونه).

بریم سراغ یادگیری عمیق. برای یادگیری عمیق هم پنج منبع معرفی میکنم.

  1. Udemy – Deep Learning A-Z™: Hands-On Artificial Neural Networks

این آموزش توسط 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 تا کورس داره. شما فقط دوتای اولشو احتیاج دارید. پیش فرض رو بر این میذاره که تئوری رو بلدید و فقط برنامه نویسی یاد میده. دوباره میگم سراغ سومیش نرید. سومیش تئوریش خیلی پیشرفتس و ریاضیات سنگینی داره و اصلا برای مبتدیان نیست. میخونید، هیچی نمیفهمید، ناامید میشید. بعدا که خفن شدید برگردید بهش اگر دلتون خواست. همین یدونه منبع برای تنسورفلو کفایت میکنه. بریم سراغ منابع پای تورچ:

4. O'reilly - Programming PyTorch for Deep Learning: Creating and Deploying Deep Learning Applications

5. Manning - Deep Learning with PyTorch

برای پای تورچ من منبع ویدئویی خوبی پیدا نکردم و در نتیجه دو تا کتاب معرفی میکنم. جفتشون خوبن. دومی رو خود دولوپرهای پای تورچ نوشتن ولی من ترجیحم اولیه.



کاربردهای مختلف هوش مصنوعی و تخصصی تر شدن موضوع


قاعدتا این مقاله باید اینجا تموم میشد، ولی خب من گفتم یه ذره اضافش کنم بد نیست. اینا فقط یه ذره پیشرفته تره و شاید اصلا نفهمید من چی میگم. اگر نفهمیدید که اینا چین، میتونید دیگه ادامشو نخونید (مثلا بعدا برگردید). همونطور که قبلا گفتم هوش مصنوعی کاربردهای مختلفی داره و در واقع شاخه شاخه میشه. چنتا از کاربرداش ایناس:

  1. پردازش تصویر (پردازش تصاویر معمولی، تصاویر پزشکی) و ویدئو
  2. پردازش متن (Natural Language Processing)
  3. پردازش سیگنال های زمانی (مثل سیگنال های ECG و EEG)
  4. بیواینفورماتیک (بیولوژی)
  5. شبکه های مولد (مثلا دیدید به یه برنامه عکستونو میدید دختر/پسرتون میکنه، پیرتون میکنه و یا روز رو شب میکنه و از این جور حرفا).
  6. یادگیری تقویتی (Reinforcement Learning)

خب من همه اینا رو کار نکردم و نمیتونم برای همش منبع معرفی کنم. پردازش تصویر تا حدودی تو همین آموزشایی دادم به صورت ابتدایی پوشش داده میشه ولی برای مباحث پیشرفتش مثل segmentation و detection به صورت تخصصی وارد این موضوع بشید. من فقط برای مورد 5 و 6 منبع معرفی میکنم. برای پیدا کردن منبع برای موارد دیگه میتونید برید بخش بعدی.

برای یادگیری شبکه های مولد مثل Generative Adversarial Networks و یا Variational Auto Encoder میتونید از این دو تا منبع استفاده کنید. البته VAE ریاضیاتش یه ذره سنگینه و به خاطر همین فقط یکی از این منابع، به صورت ساده یک فصلش رو به این مبحث اختصاص داده. ولی GAN مبحث باحالیه و میتونید از این دو تا منبع استفاده کنید برای هم تئوری و هم کدنویسی. جفتشون کتابن.

  1. Manning - GANs in Action: Deep learning with Generative Adversarial Networks
  2. Generative Adversarial Networks with Python

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

  1. Udemy – Artificial Intelligence A-Z™: Learn How To Build An AI

این آموزش که توسط SuperDataScience Team تهیه شده مثل همیشه کدنویسیش به درد نمیخوره (و همچنین قدیمی هم شده) ولی توضیحات فوق العاده ای داره.

2. Coursera – Reinforcement Learning Specialization

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

3. Manning - Deep Reinforcement Learning in Action

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



خودمون از کجا منبع پیدا کنیم

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

  1. یوتیوب: علاوه بر هندی های یوتیوب، اکثر دانشگاه ها مثل استنفورد، MIT و هاروارد کانال یوتیوب دارن و آموزش های کلاسیشون رو فیلم میگیرن میذارن اونجا (مثل مکتب خونه ما). رایگان میتونید استفاده کنید. مثلا کانال Tubingen Machine Learning که برای دانشگاه Tubingen هست خیلی خوبه که دو تا از منابعی که معرفی کردم از اونجا بودن. علاوه بر اون اگر در کل مبحثی رو متوجه نشدید تو یوتیوب سرچ کنید. حتما چنتا ویدئو پیدا میکنید که در اون مورد هستش.
  2. سایت Udemy و Coursera: اگر دنبال کورس خاصی هستید، میتونید از این دو تا وبسایت هم استفاده کنید. (مثلا من برای پردازش متن و بیواینفورماتیک کورس های خوبی در Coursera دیدم). و اینکه دنبال کورس تئوری تو Udemy نباشید. Udemy بیشتر برنامه نویسی طوره و به تئوری نمیپردازه.
  3. برای هر چیزی ویدئو پیدا نمیشه، مخصوصا مباحث پیشرفته تر. در این صورت باید برید سراغ کتاب. انتشارات O'Reilly و Manning به نظر من کارشونو خیلی خوب دارن انجام میدن. به سایت اینا سر بزنید. علاوه بر این میتونید تو گوگل هم دنبال کتاب باشید از انتشارات دیگه.

نکته: هیچ وقت سراغ ویدئوهای آموزشی و کتاب های Packt نرید. همشون مزخرفن.

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



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


هوش مصنوعییادگیری ماشینیادگیری عمیقیادگیریپایتون
عاشق هوش مصنوعی و یادگیری ماشین
شاید از این پست‌ها خوشتان بیاید