چطور برنامه‌نویسی پایتون را برای کاربرد در یادگیری عمیق یا ماشینی یاد بگیرم؟

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

پیشنهاد میکنید برای یادگیری برنامه نویسی پایتون از کدوم کورسها استفاده کنم؟ اینم بگم من تجربه ی هیچ گونه برنامه نویسی ندارم و تازه‌کار هستم. میخواستم این دو کورس رو ببینید کدومش خوبه من شروع کنم یاد بگیرم. یا اینکه اگر آموزش ویدئویی دیگه ای به صورت انگلیسی میشناسید که برنامه‌نویسی پایتون رو از مبتدی تا پیشرفته اموزش بده ممنون میشم معرفی کنید.

  1. دوره ی تخصصی کورسرا: پایتون برای همه، از مبتدی تا پیشرفته
  1. دوره ی دیگه از کورسرا، یادگیری برنامه‌نویسی، مقدماتی:
  1. یادگیری برنامه‌نویسی، پیشرفته:

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

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

for (i, i<10 , i++)

مثلا این کد در زبان سی پلاس هستش. میدونم چطوری تعریف میشه اما میخوام پروژه ی یا مثال واقعی رو استارت بزنم دقیقا نمیدونم چطوری باید از این ها استفاده کنم؟

اگر ممکنه یه سایتی را معرفی کنید درکنار اینکه برنامه نویسی پایتون رو به خوبی یاد میگیرم، تمریناتی یا پروژه هایی رو به صورت گام به گام انجام بدم؛ مثلا در گیت هاب یا … . بتونم جزو روزمه ی کاری ام بشه چون رزومه ی کاری متاسفانه اصلا ندارم.

3 پسندیده

من پایتون بلد نیستم و نیمتونم منبعی برای یادگیری پایتون معرفی کنم، ولی با توجه به توصیفی که کردید، فکر میکنم یاد گرفتن زبان پایتون (منظورم syntax هست) به تنهایی کمک نمیکنه، و چیزی که نیازه تمرین حل مسئله و تفکر الگوریتمی هست.

پیشنهاد میکنم همون کورس‌هایی که از کورسرا پیدا کردین رو پیش ببرین و در کنارش بعضی تمرین‌ها و کورس‌ها رو هم برای یادگیری تفکر الگوریتمی پیاده کنین:

  • سایت زیر پر از نمونه تمرین‌‌هایی هست که برای مسابقات مختلف برنامه‌نویسی به افراد ارائه میشه و با حل کردنشون میشه حل مسئله و تفکر الگوریتمی رو به یه مهارت تبدیل کرد: https://uva.onlinejudge.org/index.php

  • بعضی کورس‌ها در کورسرا برای یادگیری تفکر الگوریتمی در دسترس هست:

  • کتاب‌هایی هم در زمینه یادگیری تفکر الگوریتمی و پایتون موجود هست:
1 پسندیده

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

اینجا میتونی یه کتاب مجانی برای پایتون یادگرفتن پیدا کنی

(think python by Allen Downey )
https://greenteapress.com/wp/think-python

اگه برنامه نویسی بلد باشی، برای یاد گرفتن دستورات پایه ش یه سرچ ساده هم بزنی خودت از هر کورسی سریع تر میتونی پیش بری

این یه سایته که یادگیری عمیق درس میده با مثال شناسایی اعداد (digit recognition) از دست نوشته

http://neuralnetworksanddeeplearning.com

این هم ریپازیتوری گیت هاب همین تمرین (شناسایی اعداد از دست نوشته) که داده آزمایشی و داده تمرینی هم داره و اتفاقن با پایتون هم نوشته شده

شاید نگاه کردن بهش بد نباشه، من فقط اجراش کردم اما هیچی از یادگیری عمیق نمیدونم

1 پسندیده

من در مورد یادگیری ماشینی اطلاعات ندارم اما اگر میخواید الگوریتم یاد بگیرید (به صورت کلی، نه برای یادگیری ماشینی) من چند پیشنهاد دارم

اولی این سایته:
http://train.usaco.org/usacogate
این سایت تمرین المپیاد کامپیوتر آمریکاست این جا مساله‌های متعددی هست که در چند سطح طبقه بندی شده شما کد برنامه رو مینویسید (البته پایتون نداره و باید از C یا C++ یا Pascal استفاده کنید) و اون رو آپلود میکنید سرور کد رو با ورودی های مختلف تست میکنه از جمله حالتهای خاص و اگه تمامه مسائل یه سطح رو با موفقیت حل کنید مسائل سطح بعد باز میشه. در این بین یه سری راهنمایی کلی هم هست. سرور کد رو با محدودیت زمانی و حافظه‌ای اجرا میکنه. این محدودیتها تو سطح اول به چشم نمیاد اما در سطحهای بعد به مرور لازمه تا از الگوریتمهای کارآمدتری استفاده کنید.

دومی که رویکرد آکادمیک هست این کتابه
Intoduction to Algorithms
چهار تا نویسنده داره Cormen, Leiserson, Rivest,Stein به خاطر همین به CLRS معروفه. خیلیها ممکنه بگن کتاب سختیه اما این کتاب سخت نیست بلکه دقیق و جامع هست. طبیعی هست که خوندن کتاب کافی نیست و باید در کنارش تمرین کنید.

به مسائل این سایت هم میتونید هم به چشم مسائل ریاضی نگاه کنید هم برنامه نویسی
https://projecteuler.net/

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

در مورد خود زبان:

به نظرم باید C و C++ هم مرور کنید
برای شروع یادگیری پایتون خود tutorial پایتون خیلی خوبه
https://docs.python.org/3/tutorial/index.html
بعد از این برید سراغ دو کتابخونه numpy و scipy چون در تقریبا همه نرم‌افزارهای علمی که با پایتون نوشته شدن حداقل یکی از این دو هست (تجربه شخصی)
بعد باید تمرین کنید

به نظر من انتظار بجایی نیست که تمرینهای شما برای یادگیری تبدیل به رزومه کاری بشه

پروژه‌های جدی‌تر از تمرین روی گیت هاب میتونه رزومه باشه

1 پسندیده

پایتون یه ابزاره. اگه میخواید یادگیری ماشین کار کنید در وهله اول نیازی به زبان برنامه نویسی ندارید و باید الگوریتم های اون رو یاد بگیرید. اول الگوریتم های پایه یادگیری ماشین و بعد یادگیری عمیق(کورس تو این زمینه زیاد هست ولی پیشنهاد من و احتمالا اکثریت کورس های اندرو انجی [Andrew Ng] هست.)
پیاده سازی الگوریتم به ابزار وابسته نیست. پایتون، C یا هرچیزی برای پیاده سازی میتونه استفاده بشه. اما هر الگوریتم و هر کاری زبان برنامه نویسی جداگونه داره! چون وابسته به لایبرری ای هست که میخواید استفاده کنید.
مثلا لایبرری های یادگیری عمیق برای درآوردن فیچر های تصویر با لایبرری های یادگیری عمیق برای درآوردن فیچر های ویدئو فرق داره. و احتمالا زبان متفاوتی مورد استفاده قرار خواهد گرفت بسته به کار.
بنابراین از پایتون هم سینتکس عمومی رو شما باید یاد بگیرید و لازم نیست توش عمیق بشید. هر لایبرری ای هم که برای کارتون استفاده کنید یه هلپ داره که ازش استفاده خواهید کرد.
حرفه ای بودن تو یه زبان برنامه نویسی کار رو تسریع میکنه اما بلد نبودنش مانع شما نخواهد بود. تا گوگل هست شما برنامه نویسی بلد هستید! حتی اگر کار نکرده باشید.

2 پسندیده