TECH STASH – Telegram
TECH STASH
212 subscribers
115 photos
5 videos
15 files
254 links
اینجا هر چی رو که یاد میگیرم، به اشتراک میزارم...
هوش مصنوعی، لینوکس، اوپن سورس، برنامه نویسی و...

Admin: @D3F4U1T_ARS
Download Telegram
جدا از اون. یه وبسایت داریم به اسم devdocs که داکیومنت های محبوب رو داخل خودش نگه میداره.
و قابلیت استفاده آفلاین رو بهتون میده. که تو تنظیماتش باید فعال کنید.

ایرادش اینه که کامل نیست.
تو مورد من torchvision رو نداشت و فقط torch رو داشت.

https://devdocs.io/

#Offline_Ecosystem
🦄1
یکی از روش‌های بدست آوردن نتایج خیلی خوب تو یادگیری عمیق استفاده از Transfer Learning یا انتقال یادگیری هست.

به شدت چنین موضوعی تو هوش مصنوعی مهم و رایج هست و حتی برای ساخت مدل های به شدت بزرگ برای استفاده های تجاری معمولاً pre-training یا پیش آموزش انجام میدن و از روش transfer learning میان و fine-tuning انجام میدن برای استفاده های اصلی.

تو این روش اول باید یک مدلی رو انتخاب کنیم که به مسئله ما میخوره و از قبل train شده و وزن هاش موجود ان.

باید تو یه domain باشن. مثلاً ما مدل classification (طبقه بندی) رو نمیایم روی object detection (شناسایی شی) که مسئله اصلی ماست استفاده کنیم.

دیتا ستش مهم هست ولی حتی اگر ارتباط خیلی کمی هم داشته باشه باز قابل استفادست. مهم مدله که به مسئله ما بخوره.

وقتی که مدل خوبی پیدا کردیم. وزن هاشو لود میکنیم روی مدل.

فاز اول feature extraction هست که ما تغییراتی روی مدل میدیم که خروجی مورد انتظار رو به ما بده. و اون بخش‌هایی که تغییر دادیم رو train میکنیم و بقیه رو freeze میکنیم.

فاز دوم fine-tuning هست که تو این فاز ما قسمت قسمت لایه ها رو unfreeze میکنیم و train انجام میدیم.
حالا از کجا باید مدل گیر بیاریم؟

وبسایت های مختلفی است. تو مثال من که PyTorch کار میکنم تو هر domain library اش یه بخش به اسم models داره.

torchvision.models
torchtext.models
torchaudio.models

همینطور huggingface هم کلی model و dataset داره:

HuggingFace Models
HuggingFace Datasets

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

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

paperswithcode
برای اطلاعات بیشتر راجب transfer learning از جمله feature extraction و fine-tuning میتونید به ریفرنس های زیر برید

PyTorch:
Feature Extraction

Tensorflow:
Feature Extraction
Fine-tuning
👍2
سلام دوستان.

از اونجایی که خیلیاتون جدید هستید و تازه اومدید گفتم که یک سری course ها و آموزش‌های ویدیویی خوبی در مورد Machine Learning و Deep Learning بزارم که شما هم ازش استفاده کنید.

کتاب دیجیتالش رو هم گذاشتم که ببینید چه مباحثی رو کاور میشه و آیا چیزی که میخواید رو داره یا نه.


🔗 Complete A.I. Machine Learning and Data Science: Zero to Mastery

این یه بوت کمپ کلی هست که مباحث Data Science, Machine Learning و همینطور مقداری Deep Learning رو کاور میکنه.

یه برشی هم به Data Engineering میزنه ولی در حد تعریف و ابزاراش تا بدونید.

کتابخونه های پایه Machine Learning مثل numpy, pandas, matplotlib و scikit-learn رو کاور میکنه.
کتابخونه Deep Learning اش Tensorflow هست.

اگر دنبال شبکه های عصبی و Deep Learning هستید این آموزش خوبه چون بیس دنیای Machine Learning هست و اجباریه ولی بعد از این باید روی دوره های Tensorflow و PyTorch تمرکز کنید.

📕 کتاب دیجیتال


🔗 PyTorch for Deep Learning Bootcamp (2024): Zero to Mastery

بوت کمپ PyTorch که خودم دارم آموزشش رو دنبال میکنم (تقریباً ¾ امش رو تموم کردم).

وارد یادگیری عمیق (مخصوصاً بخش vision اش) میشه.

سه تا بخش مختص به PyTorch داره که تو دوره Tensorflow اش نیست. اولیش بخش Paper Replication اش هست که با Transformer ها آشنا میشید و Vision Transformer رو مستقیم از مقاله تحقیقاتی تا کدش پیاده میکنید.

تو بخش Experiment Tracking با مفهوم آزمایش و مقایسه بین مدل ها آشنا میشید.

و بخش آخرش هم Model Deployment هست که استقرار مدل و مفاهیم MLOps رو تا حدی یاد میگیرید.

📕 کتاب دیجیتال


🔗 TensorFlow for Deep Learning Bootcamp (2024): Zero to Mastery

بوت کمپ Tensorflow که با مباحث PyTorch مقداری همپوشانی داره ولی تفاوتش با PyTorch اینه وارد NLP و Time Series هم میشه و بخش transfer learning اش fine-tuning هم اضافی داره.

(لزوماً دوره بهتر از PyTorch نیست، همین مباحث رو هم میتونید راحت تو اینترنت پیدا کنید و متوجه بشید، اگر خودم واردش شدم ریسورس هام رو همینجا میزارم)

📕 کتاب دیجیتال


🔴 نکته مهم: چیزی که از آدم های پر تجربه شنیدم اینه. قاعدتا هیچ دوره ای از شما مهندس هوش مصنوعی نمیسازه.

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

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

پس بعد از یکی دو تا course کامل وقتتون رو روی course های بیشتر تلف نکنید.

دست به کد بشید. پروژه بزنید.

با دیتا ست، الگوریتم ها (و تو یادگیری عمیق، لایه های مختلف) کار کنید.

و از پشت پرده الگوریتم ها (و لایه ها) هم غفلت نکنید.

کنجکاو باشید، آزمایش کنید و لذت ببرید.

⚡️@tech_stash ⚡️
👍2🔥2
درس تلخ: چرا روش های کلی با محاسبات بیشتر بهتر عمل میکنند.

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

مثال خیلی سادش تو شطرنج بود. اولین مدل هوش مصنوعی شطرنج که Kasparov رو در سال ۱۹۹۷ شکست داد از جستجوی عمیق بود... این روش از سخت افزار و نرم افزار های خاصی استفاده میکرد و محاسبات به شدت سنگینی داشت.

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

یک مثال دیگش در بازی Go. بیست سال بعد از شطرنج. کلی تحقیقات انجام شد که دانش انسان راجب بازی Go رو درون سیستم به کار ببرن یا از ویژگی های خود بازی استفاده کنن. اما وقتی از جستجو وسیع استفاده شد تمام نتایج تحقیقات این آدما رو به باد داد.

البته که اهمیت یادگیری (مثل یادگیری ماشین و عمیق) اون موقع تو سال ۱۹۹۷ مطرح نبود ولی جلوتر که اومدیم دیدیم که یادگیری هم جزو راهکار هایی برای حل کلی مسئله ها مطرح شد.

از طرفی هم نگاه کنیم یادگیری مثل جستجو میمونه، چون از مقدار زیادی پردازش استفاده میکنه.

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

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

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

این درس خیلی مهمی هست. چون بار ها و بار ها تکرار شده و همچنان محقق ها چنین درسی رو به خاطر نسپردن.

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

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

باید دنبال راه و روش هایی باشیم که این پیچیدگی ها رو خود کامپیوتر پیدا کنه و درکشون کنه.

مدل هایی که بتونن خوب تقریب بزنن و خوب حدس بزنن و خودشون با روش های ما پیدا کنن، نه ما دانشمون رو بهشون انتقال بدیم (همونطور که گفتیم غیر ممکنه).

درسی که ما میتونیم به عنوان مهندس های یادگیری عمیق بگیریم:

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

ریفرنس
👍2👏1👌1
CNN Explainer

یکی از بهترین سایت ها واسه یادگیری و درک بهتر شبکه های عصبی CNN.

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

راستی میتونید یه تصویر هم آپلود کنید و مدل رو زنده تست کنید.
👍2
Transformer

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

اما این ریسورس ها درکش رو برای من ساده تر کرد.

The Illustrated Transformer - Jay Alammar
Transformer Explainer

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

Attention Is All You Need
1👍1
در ضمن. میدونستید که Transformer فقط برای text نیست؟

Vision Transformer
داخل این معماری ما با استفاده از یک لایه CNN تصویر رو به تکه های متعددی تبدیل میکنیم و Flatten میکنیم تا تبدیل به یه Sequence برای پاس دادن به Transformer بشه.

یکی از استفاده های باحالی از Transformer ها بود خارج از LLM.
و اتفاقا خودم دارم پیادش میکنم طبق این ریسورس.

معماری State of The Art هست و هر روز دارن راهی پیدا میکنن که بهترش کنن..

مقاله تحقیقاتی که این روش رو معرفی کرد:
An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

Vision Transformer Explained - Papers With Code
👍1
بلاگ پستی که خیلی باهاش حال کردم.
مسیر یادگیری Machine Learning و Deep Learning اش رو برای همه ما به اشتراک گذاشته و منابع و ریفرنس های خیلی خوبی رو معرفی کرده که از کیفیت بالایی برخوردارن.

اگر دنبال منابع خوب و با کیفیت هستید حتما به این سری بزنید.

https://www.mrdbourke.com/ml-resources/
👍45
همینطور اینجا هم کلی منابع خوبی میشه پیدا کرد.

نکته: این پست رو Daniel Bourke زمانی ساخت که میخواست کامل از صفر شروع کنه و بدون دانشگاه Machine Learning و Deep Learning رو یاد بگیره نوشته.

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

https://www.mrdbourke.com/aimastersdegree/
👍1
چالش برنامه نویسی Advent of Code از ۱ دسامبر شروع میشه.

یکی از چالش های خیلی معروف سالیانه هست که از سال ۲۰۱۵ شروع شده و برنامه نویسای زیادی توش شرکت میکنن.

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

من خودم شرکت نکرده بودم و نمیدونم چطوری هست ولی قراره امسال شرکت کنم.
(چیز خیلی جدی نیست، فقط برای تفریح و تمرینه)

https://adventofcode.com/
👍1
روند های مختلف Loss curve و معنیشون.

تو اولی ما underfitting داریم. یعنی مدل ما الگو ها رو درست یاد نگرفته.

تو دومی overfitting داریم. یعنی مدل ما الگو ها رو حفظ کرده و سر همین تو train data خیلی خوب عمل میکنه.

سومی روند درست و معمولی هست.
تو حالت عادی باید train یکم بهتر از test عمل کنه.
اگر test بهتر از train عمل میکنه یعنی به اندازه کافی نگذاشتید train بشه.

تو اینجا لینک یکسری اطلاعات بیشتر راجب Loss curve ها هست.

تو پست بعدی راجب راه هایی برای فیکس کردن Overfitting صحبت میکنم.
راه های درست کردن Overfitting:

1. دیتای بیشتری جمع کنیم
2. بهبود داده
3. استفاده از انتقال یادگیری
4. مدل رو ساده تر کنیم
5. استفاده از learning rate decay
6. توقف زودهنگام
TECH STASH
راه های درست کردن Overfitting: 1. دیتای بیشتری جمع کنیم 2. بهبود داده 3. استفاده از انتقال یادگیری 4. مدل رو ساده تر کنیم 5. استفاده از learning rate decay 6. توقف زودهنگام
توضیحات هر کدوم از این روش ها:

1. دیتای بیشتری جمع کنیم: وقتی به اندازه کافی دیتا نداشته باشیم مدل نمیتونه الگویی از این دیتا ها استخراج کنه تا بتونه باهاش test data رو درست حدس بزنه.

2. بهبود داده: با کمی دستکاری میتونیم یادگیری دیتا ها رو متنوع تر کنیم و مدل رو مجبور کنیم تا الگو های قابل تعمیم تری یاد بگیره.
اطلاعات بیشتر راجب augment کردن دیتا تو خود داکیومنت torchvision هست.

3. استفاده از انتقال یادگیری: روش مورد علاقه خودم که قبل تر راجبش توضیح دادم. از یک مدل با وزن های آماده استفاده میکنیم و تغییراتی روی لایه های پایانی میدیم تا بتونیم برای مثال خودمون استفاده کنیم (یا حتی fine tuning انجام میدیم اگر دیتا بیشتری داشته باشیم).

4. مدل رو ساده تر کنیم: مدل بیش از حد اندازه پیچیده ممکنه الگو های قابل تعمیم روی test data یاد نگیره و در عوضش train data رو حفظ کنه. سر همین مدل رو میتونید ساده کنید تا مجبور بشه که الگو های قابل تعمیم یاد بگیره.

5. استفاده از learning rate decay: استفاده از ضریب یادگیری (learning rate) ثابت کارو وقتی که به نقطه همگرایی نزدیک میشیم سخت میکنه. مثل سکه ای که پشت مبل افتاده. وقتی نزدیک تر میشی باید گام کمتری برداری. کاهش ضریب یادگیری هم همینکارو میکنه.
تو داکیومنت PyTorch بهش میگن Learning rate scheduling که اطلاعات بیشتر در این باره اینجا هست.

6. توقف زودهنگام: وقتی یه مدل رو زیاد train کنیم به جایی میرسیم که overfitting رخ بده. پس باید به موقع توقف کنیم و بیشتر از این train نکنیم. وقتی که شروع کرد به overfit کردن میریم و وزن های قبلی ایده آلی که برای مثال تو 10 epoch قبل بود رو انتخاب و ذخیره کنید.
این منبع خوبی برای بحث early stopping هست.
👍1
تکنیک های دیگه هم برای بهبود training وجود داره:

1. Learning rate warmup
2. Weight decay
3. Gradient clipping

اما از اونجایی که وارد نشدم فعلا توضیحی راجبشون ندادم.
وقتی که یاد گرفتم و ازشون استفاده کردم حتما راجبشون مینویسم.
👍1
راه‌های حل مشکل Underfitting:

1. اضافه کردن لایه‌های بیشتر یا افزایش پارامتر های هر لایه
2. دستکاری learning rate (پایین آوردن)
3. استفاده از انتقال یادگیری
4. بیشتر train کردن
5. کاهش regularization
👍1
TECH STASH
راه‌های حل مشکل Underfitting: 1. اضافه کردن لایه‌های بیشتر یا افزایش پارامتر های هر لایه 2. دستکاری learning rate (پایین آوردن) 3. استفاده از انتقال یادگیری 4. بیشتر train کردن 5. کاهش regularization
توضیحات هر کدوم از این روش ها:

1. شاید مدلتون به دلیل کمبود پارامتر توانایی یادگیری الگو ها رو نداره. معمولاً وقتی که این اتفاق میفته باید تعداد لایه ها و پارامتر ها رو افزایش بدید. ولی خب حواستون باشه که زیادی هم افزایش ندید که به overfitting بخورید.

2. ضریب یادگیری بیش از حد بالا میتونه به دلیل تغییرات زیاد موجب عدم یادگیری مدل بشه. انگار مدل داره پرش های بزرگی انجام میده و به همگرایی نمیرسه. سر همین استفاده از learning rate معقول توصیه میشه.

3. انتقال یادگیری سر همین روش مورد علاقم هست. چون هم برای overfitting کاربرد داره و هم underfitting. یک تیر تو دو نشان.

4. بعضی وقتا باید صبر کرد و بیشتر train کرد. مخصوصاً اگر روندی که مدل داره میره این موضوع رو نشون میده (test loss کمتر از train loss).

5. وقتی از regularization بیش از حد استفاده میکنیم (سعی میکنیم که مدل الگو هایی رو یاد بگیره که قابل بسط روی test set باشه) ممکنه به underfitting بخوریم.
👍1