پوریا اعظمی
پوریا اعظمی
خواندن ۹ دقیقه·۵ ماه پیش

نقشه راه هوش‌مصنوعی



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

پیش نیاز ها

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

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


انتخاب هدف

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

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

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

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

ریاضیات

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

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

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

برای جبرخطی منبعی که خودم ازش استفاده کردم دوره ی پرفسور Gilbert Strang هست که میتونید از این لینک دوره رو ببینید. برای احتمال هم دوره ی Statistics 110: probability دانشگاه Harvard دوره ی خوبیه که میتونید از این لینک دوره رو ببینید.

بعد از این دو تا دوره شما عملا بخش زیادی از ریاضیات هوش مصنوعی رو بلدید و میتونید با خیال راحت شروع به خوندن ماشین‌لرنینگ کنید. اما اگر میخواید باز هم مباحث بیشتری رو بخونید و یا میخواید توی زمین های دیتاساینس فعالیت کنید توصیه میکنم حتما یک مقداری آمار هم بخونید. برای آمار میتونید با دوره ی Data Analysis with R Specialization دانشگاه Duke که از این لینک میتونید بهش دسترسی داشته باشید شروع کنید و در ادامه دوره ی Bayesian Statistics Specialization رو بگذرونید که از این لینک میتونید بهش دسترسی داشته باشید.

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

برای خوندن مباحث ML منابع خیلی زیادی وجود داره، برای شروع دوره ی Machine Learning Specialization سایت Coursera که از این لینک میتونید بهش دسترسی داشته باشید دوره ی خیلی خوبیه و بعد از تموم کردن این دوره اگر بخواید مباحث رو عمیق تر یاد بگیرید دوره ی CS229 دانشگاه استنفورد که از این لینک میتونید بهش دسترسی داشته باشید دوره ی خیلی خوبیه. موضوعی که باید بهش اشاره کنم اینه که این دوره ریاضیات خیلی زیادی داره و حتی برای دانشجو های استفورد هم دوره ی سختی حساب میشه، اگر نمیخواید خیلی درگیر ریاضیات بشید به هیچ وجه سمت این دوره نرید.

به جز دوره هایی که گفتم میتونید از کتاب های ماشین لرنینگ هم کمک بگیرید، سه تا از معروف ترین کتاب های ML اینا هستند:

1- pattern recognition and machine learning از Christopher Bishop

2- Machine Learning: A Probabilistic Perspective از Kevin P. Murphy

3- Machine Learning از Tom Mitchell

اگر حوصله ی کتاب خوندن رو دارید حتما دو تا کتاب اول رو بخونید. (البته در نظر داشته باشید که این کتاب ها هم بیشتر کاربرد آکادمیک داره)


برای تمرین ماشین لرنینگ میتونید توی سایت kaggle دیتاست های مختلف رو دانلود کنید و از روش هایی که یادگرفتید استفاده کنید تا روی اون دیتاست های مدل بسازید. چیزی که تو این مرحله خیلی برای شما دردسر ساز خواهد بود معمولا load کردن داده ها است. چون دیتاست ها عموما نیاز به preprocess و تمیز کردن دارد. برای این کار میتونید هر زمان که نیاز شد سرچ کنید و ابزار مناسب با اون کار رو پیدا کنید (که خودم این روش رو توصیه میکنم) یا میتونید برای Pandas و numpy دوره پیدا کنید و بعد از دیدن اون دوره ها بیاید سراغ کار روی دیتاست ها.

یادگیری عمیق

بعد از اینکه با مفاهیم یادگیری ماشین آشنا شدید میتونید برید سراغ deep learning. گرچه خیلی از الگوریتم هایی که توی ML میخونید ممکنه تو deep براتون کارایی مستقیم نداشته باشه ولی بهتون دید خوبی میده و در عین حال ممکنه خیلی جا ها مسئله ای که باهاش سر و کار دارید با روش های کلاسیک حل بشه و نیاز به deep نداشته باشید اصلا.

برای مقدمات deep میتونید دوره ی Andrew Ng رو ببینید که تو این لینک میتونید بهش دسترسی داشته باشید. بعد از این دوره دوره های Tensorflow میتونه خیلی مفید باشه براتون:

1- DeepLearning.AI TensorFlow Developer Professional Certificate

2- TensorFlow: Advanced Techniques Specialization

3- TensorFlow: Data and Deployment Specialization

بعد از گذروندن این دوره ها شما به نقطه ای رسیدی که میتونید توی یک پروژه deep learning ساده و یا متوسط کد بزنید، میتونید تو این مقطع برای خودتون پروژه تعریف کنید و یک مقدار روی کدنویسی بیشتر وقت بذارید. به طور خاص میتونید از دیتاست های سایت kaggle استفاده کنید.

بعد از اینکه یک مقدار دستتون راه افتاد بهترین کاری که میتونید انجام بدیدی اینه که شروع به یادگیری pytorch کنید و دیگه کلا از pytorch استفاده کنید. برای شروع tensorflow واقعا گزینه ی خوبیه ولی برای ادامه دادن دست و پا گیر میشه خیلی جا ها و واقعا اذیت میکنه.

برای این قسمت اگر اهل کتاب خوندن هستید، کتاب deep learning از Ian Goodfellow کتاب خوبیه.

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

بعد از اینکه ML و DL رو یاد گرفتید و دستتون راه افتاد و تونستید چند تا کد بنویسید وقتشه که برید سراغ یادگیری تقویتی برای RL اول از دوره ی دانشگاه آلبرتا شروع کنید: این لینک. توی این دوره تو مراحل مخالف ارجاعاتی به کتاب Sutton وجود داره که توصیه میکنم هر بخشی رو که میخواد درس بده حتما اون بخش رو توی کتاب مطالعه کنید. (هر کتابی توی این مسیر رو که نخوندید حتما کتاب Sutton رو بخونید).

بعد از تموم شدن این دوره میتوتید دوره ی Deep RL از سایت Udacity رو ببینید که دانش RL شما تکمیل تر بشه.

گراف

گراف واقعا مبحث جذابیه ولی کاربرد های صنعتی اون خیلی کمتر از بقیه ی بخش های هوش مصنوعیه.

برای گراف دوره ی CS224w دانشگاه استنفورد که از این لینک میتونید بهش دسترسی داشته باشید دوره ی خیلی خوبیه و در کنارش میتونید کتاب Barabasi رو هم بخونید.

برای کد نویسی های این بخش از کتابخونه ی Pytorch Geometric میتونید استفاده کنید. برای یادگیریش توی سایتشون چند تا کد هست که خیلی بهتون کمک میکنه ولی قبل از شروع کد نویسی حتما دوره ی CS224w رو ببینید.

مدل های زبانی (LLM)

درسته که این روزا خیلی از اخبار درباره ی LLM هاست ولی واقعیت اینه که خیلی چیزای دیگه ای هم وجود داره که باید یاد بگیرید و در عمل هم خیلی از اون ها کاربرد دارن. برای این بخش میتونید از دوره ی CS224n شروع کنید که تو این لینک قابل دسترسیه و بعد از اون برای هر بخش که نیاز داشتید از سایت deeplearning.ai دوره ی مربوط به اون رو پیدا کنید و ببنیید. چون دوره های این بخش خیلی سریع دارن update میشن و هر روز دوره های جدید و بهتری تولید میشه من اینجا لینک خاصی رو براتون نمیذارم ولی حتما به سایت deeplearning.ai سر بزنید و تو بخش short courses دنبال دوره ی مناسب نیاز خودتون بگردید.

دوره ی NLP از سایت deeplearning.ai (NLP Specialization) هم میتونید ببینید ولی الان دیگه دوره ی قدیمی ای حساب میشه.

مقاله

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

سخن پایانی

در نهایت هم میخوام تاکید کنم که راه یادگیری هوش مصنوعی راه طولانی ای خواهد بود و خیلی مهمه که خسته نشید و به راهتون ادامه بدید.

علاوه بر مهارت هایی که گفتم درباره ی MLOps هم تحقیق کنید و ابزار های مربوط به اون رو یاد بگیرید چون یکی از مهم ترین مهارت هائیه که به اون نیاز خواهید داشت، همین طور به عنوان آدمی که میخواد توی زمینه های کامپیوتری کار کنه حتما git و docker نیازتون میشه پس اون ها رو هم مطالعه کنید.

آخرین مطلب هم اینکه Data Science هم به خیلی از این مهارت ها نیاز داره و شما میتونید بعد از یادگرفتن ML و DL دنبال roadmap های data science هم باشید.

لیست تمام ابزار هایی که به اون ها نیاز دارید اینها هستند:

  • Python
  • Tensorflow
  • Pytroch
  • MLFlow
  • Ray
  • Spark
  • numpy
  • pandas
  • matplotlib
  • seaborn
  • sklearn
  • SQL
  • Docker
  • Git

امیدوارم براتون مفید بوده باشه، اگر نظر یا سوالی دارید خوشحال میشم جواب بدم. اگر سوالی داشتید میتونید تو تلگرام هم از من بپرسید (@pooriaazami) یا بهم ایمیل بدید (pooriaazami@gmail.com).

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