منابعی که من استفاده کردم و قدم هایی که برداشتم تا یک توسعه دهنده ی یادگیری عمیق بشم و یک شغل پیدا کنم بدون هیچ پیشینه ی ریاضی
در این نوشته، قرار هست که من به شما منابعی که استفاده کردم و قدم هایی که در طول سفرم به دنیای هوش مصنوعی برداشتم معرفی کنم. چیزهایی که به من کمک کرد که به عنوان یک توسعه دهنده هوش مصنوعی و یادگیری ماشین مشغول به کار بشم، در چند رقابت دیتاساینس برنده بشم و چند مقاله در حوزه هوش مصنوعی و پزشکی بنویسم.
از اونجایی که این نوشته طولانی تر از اونی شد که فکرش رو میکردم، من این راهنما رو در سه بخش متوالی منتشر خواهم کرد : کتاب ها، دوره ها و بقیه ی منابع و مهارت ها.
این پست اولین قسمت هست : کتاب هایی که در طول مسیر خوندم.
این یک شمای کلی از مراحلی هست که من طی کردم تا وارد دنیای هوش مصنوعی بشم. قطعا نیازی نیست که شما دقیقا همین مراحل رو طی کنید ولی من این رو آوردم تا شما یک ذهنیت کلی از نحوه ی شروع سفر من داشته باشید!
1. یادگیری زبان برنامه نویسی پایتون ? ( مهم نیست که از چه دوره یا کتابی استفاده میکنید، فقط یکی رو بردار که باهاش راحتی و شروع کن)
2. کتاب Python for data analysis ⬅ به من کمک کرد که استفاده از numpy و pandas رو یاد بگیرم
3. دوره Deep Learning Specialisation در Coursera
4. کتاب Deep Learning with Python (من از نسخه اول استفاده کردم، در حال حاضر نسخه دوم در دسترس هست)
5. استفاده از سایت Kaggle و پروژه های شخصی ⬅ من مدل های خیلی خیلی زیادی رو آموزش دادم تا یاد گرفتم که داده رو چطوری پردازش و آماده کنم و عملکرد مدل رو چطوری بهبود بدم
6. دوره های FastAI به همراه کتاب
7. عاشق PyTorch شدن و خوندن دو کتاب درباره اون : Deep Learning with PyTorch و PyTorch Computer Vision Cookbook
8. یادگرفتن درباره مدل های یادگیری ماشین کلاسیک، مصورسازی داده ها و آنالیز داده ها به صورت عمومی با کتاب Hands on Machine Learning with Scikit-Learn and Tensorflow 2nd edition
9. منابع دیگه ای که در ادامه معرفی میشه
چارت بالا یک شمای کلی درباره سختی و اهمیت و تاثیر هر کدوم از کتاب هایی که در طوی این دو سال خوندم به شما میده. من تک تک این کتاب ها رو در همین نوشته به شما معرفی میکنم و درباره مزایا و معایب و پیشنیازهای هر کدوم هم صحبت میکنم.
من نسخه اول این کتاب رو بعد از گذروندن دوره Deep Learning Specializationدر Coursera خوندم و این یک منبع کامل و عالی برای به دست آوردن تجربه عملی بیشتر و آماده شدن برای پروژه های شخصی بود. نکات ریزی وجود داره که در این دوره به خوبی بهشون پرداخته نشده بود مثل لود کردن و پیش پردازش صحیح داده ها، ساخت داده های مناسب و ساخت پایپ لاین آموزش مدل که در این کتاب توجه ویژه ای بهشون شده بود.
علاوه بر پایتون، شما به یک پیشینه پایه ریاضی هم نیاز داری تا به طور کامل کتاب رو بفهمی.
در این کتاب، شما یاد میگیرید که یادگیری عمیق به طور عمومی چطور عمل میکنه و در طول فصل های این کتاب پروژه های عملی زیادی رو انجام خواهید داد. همچنین شما در این کتاب بهترین روش های کد زدن، آموزش و ارزشیابی مدل های یادگیری عمیق رو با استفاده از آخرین و به روز ترین مدل های یادگیری عمیق یاد خواهید گرفت.
این کتاب توسط François Chollet، خالق Keras و پژوهشگر برتر نوشته است. اون در این کتاب به شما درک عمیقی میده از این که یادگیری ماشین و یادگیری عمیق چطور کار میکنه و اینکه شما چطور میتونید به طور صحیح مدلتون رو ارزشیابی کنید.
در زمان نوشتن این مقاله، من نسخه دوم این کتاب رو مطالعه میکنم که به تازگی منتشر شده و فوق العاده است.
این کتاب واقعا یک منبع عالی و ارزشمند هست! من هنوز که هنوزه از کیفیت بالای این کتاب و اینکه تونسته مفاهیم پیچیده ی یادگیری ماشین و یادگیری عمیق رو به جدی ساده توضیح بده که همه بفهمن شوکه ام.
این کتاب مفاهیم خیلی زیادی در حوزه های دیتاساینس، یادگیری ماشین و یادگیری عمیق پوشش داده. اگر بخوام چند مورد از چیزهایی که از این یاد گرفتم رو نام ببرم، من این موارد رو لیست میکنم :
1. روش های یادگیری ماشین کلاسیک ( قبل از به وجود اومدن یادگیری عمیق )، مخصوصا برای داده های جدولی
2. روش های یادگیری غیرنظارتی ( مناسب برای مواردی که شما در داده ها به دنبال الگو هستید ولی داده های شما برچسب ندارند )
3. پیش پردازش و آماده کردن داده ها
4. پیشنیاز های ریاضی برای روش ها و مدل های یادگیری ماشین و یادگیری عمیق
5. مصورسازی داده ها
همون طور که قبل تر هم گفتم، این کتاب چیزی بیشتر از فقط یادگیری عمیق هست و برخلاف بیشتر منابع دیگه که فقط رو پردازش عکس و متن تمرکز کردن، شما این رو یاد میگیرید که چطور هر نوع داده ای رو پردازش کنید و مدل هایی رو با اون داده ها آموزش بدید.
راستش، من از یه سری از بخش های مربوط به فریمورک های تنسورفلو و کراس گذشتم چون من طرفدار فریمورک پایتورچ بودم (هنوز هستم! (مترجم : من طرفدار تنسوررفلو ام :D)) و نیازی نداشتم که فریمورک دیگه ای یاد بگیرم. این رو گفتم که بگم که مشکلی نداره اگه تک تک صفحه های یک کتاب رو به طور عمیق نخونی و اون قسمت هارو فقط سطحی بخونی یا کلا رد بشی، حتی تو کتابی به این خوبی. اگرچه، من هنوز فصل های تئوری این کتاب رو مطالعه میکنم و اون ها عالی اند.
این کتاب یک منبع عالی برای یادگیری پانداس و نامپای هست، دو کتابخانه ای که تقریبا شما در همه ی پروژه ها استفاده خواهید کرد اگر سفرتون به دنیای یادگیری ماشین و یادگیری عمیق رو شروع کنید. من این کتاب رو قبل از شروع دوره ی Deep Learning Specialization خوندم و این به من خیلی کمک کرد چون در اون کورس از نامپای خیلی استفاده میشه.
حس میکنم نیازه این نکته رو گوشزد کنم که نامپای یک کتابخانه عظیم شامل قابلیت های خیلی زیادی هست و شما نیازی ندارید که تک تک اون قابلیت هایی که در این کتاب اومده رو حفظ کنید! همین که شما به فهم کلی از این که به صورت عمومی این کتابخانه چطور کار میکنه، اینکه چه کارهای میتونه یا نممیتونه بکنه برسید و اینکه کجا میتونید هر متود رو پیدا کنید و درباره اش بخونید کافیه. بعد، شما میتونید هر وقت که نیاز داشتید به این کتاب برگردید. پس از این کتاب مثل یک دیکشنری استفاده کنید ( هر وقت که به یک قسمت خاص از اون نیاز داشتید برگردید و از اون همون قمست خاص استفاده کنید – تلاش نکنید که همه اون رو به خاطر بسپارید!) .
یک چیز دیگه هست که انتظار دارم شما در این کتاب به خوبی یاد بگیرید : HOW TO INDEX ARRAYS! ( ترجمه اش سخته معادل فارسی دقیق نداریم ) در یادگیری ماشین و یادگیری عمیق عملی کار با آرایه های N بعدی یا تنسورها خیلی رایجه و این حیاتیه که شما بتونیدبه راحتی اون هارو ایندکس ( تقریبا برابر با شماره گذاری ) کنید تا بتونید اون داده ای که میخواید رو جدا کنید یا بعضی تابع های ریاضی رو روی اون ها اعمال کنید ( برای مثال softmax یا last dimension )
این کتاب واقعا یه منبع مناسب برای کسانی هست که میخوان فقط یک کتاب بخونن و اون کتاب خیلی چیزها رو پوشش داده باشه ( مثل کتاب Hands on Machine Learning with Scikit-Learn and Tensorflow که قبل تر توضیح داده شد ! )
این کتاب جوری نوشته شده که به سادگی قابل فهم باشه و مفاهیم یادگیری ماشین و یادگیری عمیق رو برای همه، حتی افراد بدون پیشینه ی ریاضی قابل فهم کرده. برخلاف کتاب قبلی که معرفی شد، این کتاب از فریمورک پایتورچ برای بحث یادگیری عمیق استفاده میکنه ( که فریمورک موردعلاقه منه )، پس شما میتونید یادگیری این فریمورک رو با این کتاب شروع کنید و هیچ مشکلی نداشته باشید. این کتاب همچنین از فست ای آی ( FastAI) که یک فریمورک سطح بالاتر هست که کار با پایتورچ رو راحت تر میکنه استفاده میکنه.
من این کتاب رو بعد از گذروندن خیلی از دوره های FastAI با تدریس Jeremy Howard خوندم و با این فریمورک جدید از قبل آشنا بودم. ( دوره ها در قسمت بعدی این مقاله که مخصوص دور ه ها هست معرفی خواهند شد )
در این کتاب، شما خیلی از مدل های مدرن یادگیری عمیق که در خیلی از مسئله ها به نتایجی در بالاترین سطح جهانی رسیده اند رو پیاده سازی و آزمایش خواهید کرد. مسائلی از قبیل بینایی کامپیوتر تا پردازش زبان طبیعی و حتی داده های جدولی. فصل مدل های RNN واقعا یک فصل عالی برای کسانی هست که مثل من این مدل ها براشون ترسناک بوده و هست، این کتاب یکبار برای همیشه ایده و مفهوم پشت این مدل ها رو به خوبی توضیح داد به طوریکه الان به راحتی از این مدل ها با استفاده از چند خط کد استفاده میکنم.
بهترین چیز درباره این کتاب این هست که به شما کمک میکنه سخت ترین و پیچیده ترین مدل ها و مفاهیم یادگیری عمیق رو با چند خط کد پیاده سازی کنید! وقتی شما چیزی رو اینطوری پیاده سازی میکنید، این برای همیشه خاطرتون باقی میمونه!
پیشنیازی که برای شروع این کتاب نیاز دارید فقط اینه که بتونید برنامه نویسی پایتون کنید و در حد دبیرستان ریاضی بلد باشید!
برخلاف کتاب هایی که تا الان معرفی کردم، این کتاب خیلی شناخته شده و معروف نیست اگرچه که یکی از موثرترین کتاب ها در یادگیری من هست و خوندنش واقعا لذت بخشه.
یکی از باحال ترین غیر منتظره ترین نکات درباره اش اینه که در مقایسه با بقیه کتاب ها، بیشتر تمرین های عملیش از دیتاست های پزشکی استفاده میکنه که اون ها نزدیک به سناریوهای دنیای واقعی هستند.
همونطور که از اسمش معلوم هست، این کتاب درباره ی برنامه های بینایی کامپیوتر در یادگیری عمیق با استفاده از فریمورک پایتورچ هستش. پس برخلاف کتاب های قبلی، این یک کتاب عمومی درباره همه ی حوزه های یادگیری عمیق نیست. ولی با این کتاب شما در حوزه ی بینایی کامپیوتر خیلی عمیق تر میشی که این چیزی بود که من موقع شروع این کتاب نیاز داشتم.
اگر شما تازه کار با پایتورچ رو شروع کرده باشی، تمپلت های کدنویسی این کتاب خیلی به کمکت خواهند اومد. هنوز که هنوزه، من از خیلی از کدهای این کتاب برای آموزش و ارزیابی مدل هام استفاده میکنم!
برای شروع این کتاب، شما نیاز داری که از قبل درک خوبی از یادگیری عمیق و نحوه کار با عکس ها داشته باشی چون کتاب با این پیش فرض نوشته شده و البته که شما نیاز به پایتون هم داری!
از اینجا به بعد، توضیحات من خلاصه تر میشن
نوشته شده توسط خالق پایتورچ، قطعا این کتاب یکی از بهترین منابع یادگیری این فریمورک هست. گرچه که در زمان انتشار این کتاب من به اندازه کافی در پایتورچ خوب بودم و خیلی از بخش های اون رو یه مرور سطحی کردم و خیلی عمیق نشدم در اون.
این کتاب یکی از بهترین کتاب هاییست که یه درک شهودی خیره کننده از مفاهیم نسبتا پیچیده ی یادگیری عمیق به فرد میده، که این درک کدها و ایده ی اصلی پشتشون رو برای فرد آسون میکنه.
یکی از معایب این کتاب اینه که پروژه های اصلی این کتاب از یک دیتاست بزرگ ( حدود 60 گیگابایت ) استفاده میکنه که برای کار کردن با اون نیاز به یک GPU مدرن و قوی هست که شاید کسی که تازه شروع کرده به این جور سخت افزاری دسترسی نداشته باشه.
کار کردن با دیتاستی به این اندازه این رو سخت میکنه که بخوای باروش آزمون و خطا چیزی یاد بگیری ( روش یادگیری مورد علاقه من! ) و این دلیلی بود که من این کتاب رو تموم نکردم!
من یه طرفدار پروپاقرص GAN ها هستم و اون ها همیشه من رو چه با مباحث تئوری و چه با روش یادگیری شون و چه زمانی که در نهایت شروع به کار میکنند و شروع به تولید چیزهای جذاب میکنند من رو شگفت زده میکنند. توضیح GAN ها ربطی به این مقاله نداره ولی برای کسانیکه به GAN ها علاقه دارند یا نیاز به استفاده از اون ها در شغل یا پروژه هاشون دارند، من این کتاب رو شدیدا پیشنهاد میکنم. اگر شما از فریمورک های تنسورفلو/کراس استفاده میکنید، کتاب دیگه ای وجود داره به اسم " Generative Deep Learning: Teaching Machines to Paint, Write, Compose, and Play" که این هم همچنین یه منبع خوب برای GAN ها و نحوه به کارگیری اون هاست.
من زمانی این کتاب رو شروع کردم که به اندازه کافی در یادگیری عمیق خوب بودم و میخواستم که در دنیای یادگیری ماشین به کشف چیزهای بیشتر بپردازم. با توجه به اینکه من در حوزه یادگیری تقویتی کاملا تازه کار بودم، این کتاب به خوبی تونست ایده و مفهوم اصلی یادگیری تقویتی و نحوه آموزش مدل ها و عامل هارو توضیح بده. در این کتاب همچنین موارد پیشرفته درباره روش های جدید بود که این شگفت انگیز بود. با کمک این کتاب و یه تعداد پست در بلاگ های مختلف، من تونستم برنامه ای رو بنویسم که یه عامل یادگیری تقویتی بتونه Pong ( یه بازی آتاری ) با استفاده از پردازش ردیف پیکسل ها بازی کنه و همیشه برنده بشه!
این یه کتاب یادگیری عمیق نیست! تمرکز این کتاب روی استفاده عملی از هر روش یادگیری آماری موجود که میتونه به ما الگوهای موجود و یا اطلاعات بیشتری بده هست. این کتاب درباره ی علم داده به صورت عمومی هست.
یه نکته ی باحال درباره ی این کتاب این هست که همه ی کد ها به هر دو زبان Python و R نوشته شده و شما میتونی سینتکس و پیچیدگی این دو زبان رو بررسی کنی.
اگه میخوای درباره مدل های یادگیری ماشین کلاسیک و علم داده بیشتر یاد بگیری این کتاب خوبی هست.
به کتاب واقعا جالب و کاربردی در لیست! من این کتاب رو دقیقا قبل از شروع به کار خوندم که میشه حدود هشت ماه قبل و الان تقریبا همه اش رو به خوبی به یاد دارم که این به دلیل مثال های گیرا از دنیای واقعی هست. این کتاب شما رو درگیر چالش ها و گرفتن تصمیم هایی میکنه که شما در زمان توسعه و به کارگیری برنامه های بر پایه ی یادگیری ماشین با اون ها روبرو خواهید شد.
این کتاب به توسعه دهنده ها کمک میکنه که فقط به کدهای خودشون نگاه نکنند و یکم بیشتر درباره ی چیزی که واقعا مشتری میخواد و اینکه مدل ها چطور قراره در دنیای واقعی و دنیای بی رحم بیزینس به پول سازی برسند فکر کنند!
این یکی از مفیدترین کتاب هایی بود که من در این دوسال خوندم و تاثیراتش رو هرروز در کارم میبینم.
بیاین یکم فضا رو عوض کنیم و وارد دنیای یادگیری پایتون بشیم!
کتابی مختصر ولی قطعا مفید. قبل از شروع کتاب نیاز دارید که با پایتون آشنا باشید. تو این کتاب خیلی زیاد کد های عالی وجود داره که زندگی شما به عنوان یک توسعه دهنده پایتون آسون تر و کدهای شما رو زیباتر میکنه. در این کتاب شما با قدرت واقعی پایتون و این موضوع که میتونید با چند خط کد عملکرد زیادی داشته باشید آشنا خواهید شد.
من این کتاب رو بعد از اینکه تقریبا با پایتون راحت بودم شروع کردم. در این کتاب در همه ی سطوح از پایه تا پیشرفته نکاتی وجود داره و معتقدم که رنج گسترده ای از مردم میتونن از اون استفاده کنند.
در نهایت، زمانش رسید که کتابی رو معرفی کنم که شامل هر دو حیطه ی موردعلاقه ی من هست : یادگیری ماشین و پزشکی! زمانی که من شروع به خوندن این کتاب کردم، فکر کردم که از نظر بحث های یادگیری ماشین خیلی کتاب پیشرفته ای نباشه ولی اشتباه میکردم. در این کتاب خیلی ایده های تکنیکی و موضوعات جدید بود که بلد نبودم!
این کتاب میتونه دید خوبی از استفاده های عملی یادگیری عمیق در دنیای پزشکی و اینکه ما در دنیای واقعی در چه مرحله ای هستیم به شما بده. قطعا من علاقه مندان به هر دو حیطه یعنی پزشکی و یادگیری ماشین رو تشویق به مطالعه این کتاب میکنم.
این یه کتاب شناخته شده درباره ی تئوری و ریاضیات یادگیری عمیق هست که توسط یه پژوهشگر بزرگ نوشته شده ( خالق مدل های GAN ). من این کتاب رو حدود یک سال پیش با یه گروه مطالعه که تشکیل دهنده و میزبانش خودم بودم خوندم. تو این گروه مطالعاتی واقعا آدم های خوبی رو دیدم و یه تجربه ی عالی بود.
شما باید این رو بدونید که این کتاب خیلی ریاضیات زیادی داره و اگه شما مثل من پیشینه ریاضی قوی ندارید شاید به طور کامل متوجهش نشید ( این رو میتونم بگم که در بهترین حالت من فقط سی درصد اون رو متوجه شدم! ). ولی باز هم شما رو تشویق میکنم که اون رو بخونید چون به شما دید ریاضی خوبی میده که چرا یادگیری عمیق کار میکنه و شما موقع آموزش و ارزیابی مدل هاتون باید به چه چیزهایی بیشتر اهمیت بدید. همچنین این به شما کمک میکنه آسون تر مقالات این حیطه رو مطالعه کنید چون شما عادت به دیدن و فهمیدن نمادها و معادلات ریاضی میکنید!
فهمیدن مفهوم اصلی احتمالات یه توانایی بنیادی هست که هر کسی که تصمیم داره وارد دنیای یادگیری ماشین بشه و در اون موفق بشه بهش نیاز داره. بعد از تحقیق فراوان درباره منبع مناسب یادگیری احتمالات، من این کتاب رو انتخاب کردم ( در کنار یه دوره که در قسمت بعد معرفی میشه ) و این قطعا یه منبع عالی برای آشنایی به مفاهیم پایه ی احتمالات هست. این کتاب به همراه کتاب deep learning textbookکه قبل تر معرفی شد خیلی در فهم معادلات و تئوری های ریاضی یادگیری ماشین و یادگیری عمیق کمک کرد.
پایان بخش اول
پ.ن : این نوشته ترجمه شده ی این مقاله هست که توسط دوست خوبم معین شریعت نیا نوشته شده، قسمت های بعدی هم توسط افراد دیگه ای ترجمه میشن که لینک های اون ها و لینک اصل مقالات رو براتون این زیر میزارم :
Twitter: @ALIREZARE010
LinkedIn: https://www.linkedin.com/in/alireza-zare-/
Email: 3alirezare3@gmail.com
GitHub: https://github.com/3ALIREZARE3
Twitter: @MoeinShariatnia
LinkedIn: https://www.linkedin.com/in/moein-shariatnia/
Email: moein.shariatnia@gmail.com