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

Admin: @D3F4U1T_ARS
Download Telegram
Deep_learning_Ian_Goodfellow,_Yoshua_Bengio,_Aaron_Courville_Adaptive.pdf
18.5 MB
کتاب یادگیری عمیق
نویسندگان: Ian Goodfellow, Yoshua Benigo و Aaron Courville

اگر Ian Goodfellow رو بشناسید میدونید که ایشون مخترع GAN یا Generative Adverserial Network هست. نوعی از شبکه های عصبی که امروزه ما به عنوان Generative AI میشناسیم.

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

Generative Adversarial Networks (GANs) Playlist
2👍1
دو تا از تجربیات بنده تو کار با GAN رو تو این پست براتون بیان میکنم:

1. مدل های ساده و اولیه شما رو ناامید میکنن.
نه به خاطر این که مدل شما مشکل داره.
به دلیل اینکه پروسه یادگیری پایدار نیست.
ما وقتی که میخوایم یادگیری تو GAN انجام بدیم.
سعی داریم که توزیع احتمالاتی Generator رو منطبق کنیم با توزیع احتمالاتی داده واقعیمون.
و چند روش داریم برای اینکه loss function امون رو بسازیم.


1. Kullback-Leibler (KL) divergence
2. Jensen-Shannon (JS) divergence
3. Wasserstein Distance

تو مدل های کلاسیک قبل از WGAN میان و از JS divergence استفاده میکنن به عنوان loss function.
مشکل اینجاست که JS divergence مشکل گرادیان داره که باعث ناپایداری در پروسه یادگیری میشه.
و به mode collapse منتهی میشه. یعنی Generator امون یه خروجی رو به ازای هر نمونه noise میده در حالی که باید خروجی های متنوعی بده.
دو تا مقاله خوب راجب این موضوع هستن که خواستم بزارم:
1. WHAT IS MODE COLLAPSE IN GANS?
2. GAN Mode Collapse Explanation
و اینجاست که میبینید که اینقدر پروسه یادگیریمون به hyperparameter ها حساس ان.
تو paper های قبل از WGAN که مبینید hyperparameter های خاصی ارائه شده و وقتی تغییر میدید میبینید که نتیجه نمیگیرید.
که به همین دلیل هست.

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

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

و بعدش میرسیم به WGAN-GP که از مکانیزم دیگه برای قید Lipschitz استفاده میکنه با تنبیه کردن norm گرادیان critic (همون Discriminator) بر اساس ورودی.

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

2. خیلی پروسه training loop فرق میکنه.

وقتی وارد GAN شدم تازه فهمیدم که چقدر میتونه پروسه یادگیری متفاوت باشه.
و حتی loss function های شخصی سازی شده ای داریم. مثل WGAN-GP که با فرمول های خاصی پنالتی اضافه میکنن.
یا کلی paper های دیگه که شبکه های عصبی میسازن که به با استفاده از classifier های از قبل آموزش داده شده Generator رو تنبیه کنن تا یکسری ویژگی ها رو یاد نگیره.

خلاصه خیلی دنیای یادگیری عمیق بزرگه و هنوز خیلی خیلی خیلی چیزا واسه یاد گرفتن دارم.
1
1701.07875v3.pdf
8.4 MB
این paper اصلی Wasserstein GAN هست
👍1
1704.00028v3.pdf
5.9 MB
این هم paper اصلی WGAN-GP هست
1
کانتنت های این چنل یوتیوب خیلی مفید بودن.
و ویدیو آموزش GAN هم از ایشون بود.

ازش نهایت استفاده رو ببرید.

Aladdin Persson - YouTube
👍1
اگر دنبال این هستید که ریاضیاتتون رو برای فهم تئوری Machine Learning و Deep Learning قوی کنید. یه منبع خیلی خوبی که میتونید باهاش شروع کنید khan academy هست.

چیزایی که باید روشون تمرکز کنید. این سه تا هست:
Precalculus / Calculus
Linear Algebra
Statistics and Probability

لینک سایتش اینه:
https://www.khanacademy.org/
2
این وبسایت محتوا های خوبی راجب سریع‌تر کردن کد پایتون میزاره.
آموزش‌های async, multi-threading و multi-processing اش خیلی خوبه.

https://superfastpython.com/
یه ریفرنس خوب دیگه برای Deep Learning هست که گفتم به اشتراک بزارم.
همراه با کد و کاربردی هست و تو دانشگاه مطرح جهان تدریس میشه.

Dive into Deep Learning
Forwarded from Sudoer (Morteza Bashsiz)
🔥1
Transposed Convolution

یا کانولوشن های معکوس تو DCGAN ها و هر GAN که از Convolution استفاده میکنه رایج هست.

در واقع برعکس Convolution هست.
تو Convolution تصویر اصلی کوچک و به فرم یا نماینده فشرده ای تبدیل شده و ويژگی های دیتاست رو یاد گرفته میشه.

تو Transposed Convolution یه نویز یا عدد رندوم رو با استفاده از ويژگی هایی که یاد گرفته شده به یک تصویر تبدیل میکنن.

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

Understand Transposed Convolutions

ولی خب کوتاه بخوام بگم.
عملیات Convolution به صورت ضرب ماتریس در میاد و به همین دلیل سریع انجام میشه.
و با transpose کردن (تغییر دادن طول و عرض) همون عملیات رو برعکس انجام میشه داد.

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

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

مقاله بعدی که میفرستم راجب انواع Convolution ها صحبت میکنه.

An Introduction to different Types of Convolutions in Deep Learning

این مخزن هم یکسری انیمیشن هایی راجب Convolution و مثال های مختلف میده.

https://github.com/vdumoulin/conv_arithmetic

نمیدونم چرا archive شده ولی داکیومنت PyTorch اینجا رو ریفرنس کرده بود.
تو پست های پایین هم یکسری GIF هایی همراه با پارامتر ها از عملیات Convolution رو براتون میفرستم.
This media is not supported in your browser
VIEW IN TELEGRAM
2D Convolution

Input: Down
Output: Up

kernel size: 3x3
dilation: 1
stride: 1
padding: 1
This media is not supported in your browser
VIEW IN TELEGRAM
2D dilated convolution

Input: Down
Output: Up

kernel size: 3
dilation: 2
stride: 1
padding: 0
This media is not supported in your browser
VIEW IN TELEGRAM
2D Transposed convolution

Input: Up
Output: Down


kernel size: 3
dilation: 1
stride: 2
padding: 0
انگار که GIF روی telegram-web و telegram-desktop اوکیه ولی روی Telegram X به صورت فایل نمایش میداد.

خلاصه GIF های بالا رو به فرمت ویدیویی با ffmpeg انکود کردم و اوکی شد.
Python Concurrency with asyncio

سرفصل هاشو چک کردم و میتونم بگم کتاب خیلی خوبی برای asyncio هست (جدا از خود داکیومنت پایتون که دیگه معلومه و همتون میدونید).
🔥1
Build a Large Language Model (From Scratch)

از نویسنده و محقق معروف Sebastian Raschka.
این کتاب راجب صفر تا صد LLM ها صحبت میکنه. من نخوندمش ولی رفتم و سر فصل هاشو بررسی کردم و منبع کاملی هست برای این موضوع. از Trasnformer ها شروع میکنه و تا ساخت مدل GPT و train کردنش و بهینه سازی هاش و کلی چیزایه دیگه.

قطعا مرجع مهمی برای LLM ها.
👍1