Deep Time
3.78K subscribers
101 photos
10 videos
7 files
298 links
Machine Learning 💻 Quantitative Finance💲Time Series 📈 Artificial Intelligence 🤖Data Science 📚 Startup 🚀
Download Telegram
آیا الگوریتم LSTM برای استپ های زمانی مختلف از وزن‌های مختلف استفاده میکند؟
Final Results
32%
خیر تمام استپ‌های زمانی یک وزن دارند
68%
بله هر استپ زمانی وزن‌های مربوط به خودش را یاد میگیرد
👍1
Deep Time
آیا الگوریتم LSTM برای استپ های زمانی مختلف از وزن‌های مختلف استفاده میکند؟
۷۴ درصد اشتباه پاسخ دادن
پس سوال درستی پرسیده شد.
در RNN ها وزن‌هایی که یاد گرفته میشن برای تمام تایم استپ‌ها یکسان هست (خطوط سبز در شکل رو ببینید). چیزی که در هر تایم استپ فرق داره ورودی‌های هر سلوله که یکیش مربوط به همون زمانه x(t) و دیگری hidden state حافظه از سلول قبلی هست یعنی a(t-1)
که اینها پارامترهای مدل برای یادگیری نیستن. ورودی هستن.
در واقع اگر قرار بود این وزن‌ها برای هر تایم استپ متفاوت باشه نیاز به پردازش خیلی بالایی بود خصوصا برای NLP. و اصلا این ایده اساسی حل مسئله بوده که وزن‌ها برای تمام تایم استپ‌ها یکسان باشه. اما آیا برای یک مسئله tabular (با نیاز پردازشی کم) هم لزوما باید وزن‌های یکسان استفاده کنیم؟
شکل‌ها از کورس پنجم Deep Leaning Specialization دکتر Andrew Ng گرفته شده.
👍1
Deep Learning Interviews.pdf
15.1 MB
چاپ دوم از کتاب مصاحبه‌های یادگیری عمیق شامل پاسخ
Deep Learning Interviews: Hundreds of fully solved job interview questions from a wide range of key topics in AI

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

همچنین سایت LeetCode بسیار مناسب هست برای حل سوالات برنامه نویسی و به روز نگه داشتن دانش.
Forwarded from Deep Time
یادگیری و پیشرفت در علوم داده و ماشین لرنینگ

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

مراحل کلی دیتاساینتیست شدن به نظر من:

۱_ یادگیری زبان برنامه نویسی پایتون و الگوریتم های مختلف

یک راه این هست که دوره پایتون از کورسرا بگذرونید مثل این دوره. اما به صورت کلی در این قسمت بهتره اول anaconda رو نصب کنید. آناکوندا برای شما پایتون رو نصب میکنه و در کنارش تعداد زیادی از کتابخونه های مهم پایتون. بعد میتونید Jupyter notebook رو بالا بیارید و با استفاده از این نوتبوک ها پایتون یاد بگیرید. اما مهمه که به این راضی نباشید و الگوریتم ها و مسائل مختلف رو پیاده کنید. مثلا اینجا میتونید از کتاب معروف
Cracking the coding interview
استفاده کنید و کد هاشو بنویسید.

۲_ گذروندن دوره های ماشین لرنینگ و دیپ لرنینگ با پایتون و مطالعه کتاب

شما میتونید بهترین دوره های دنیا رو مجانی بگذرونید از اینجا میتونید نحوه درخواست کمک مالی و رایگان شدن دوره های کورسرا رو بخونید. کافیه بگید ایرانی هستید و مشکلات پرداخت هست و دانشجو هستید و ارزش پول پایینه، کورس برای شما مجانی میشه و میتونید سرتیفیکیت هم بگیرید. تا اینجا پایتون رو کار کردید و ازینجا ماشین لرنینگ شروع میشه. ماشین لرنینگ رو بهتره از دوره ساده IBM کورسرا و بعد این دوره یوتوب شروع کنید.
و بعد وارد دیپ لرنینگ میشیم که حتما دوره های عالی Deep Learning Specialization که شامل ۵ دوره به تدریس Andrew Ng استاد استنفرد هست بگذرونید.
بعد از گذروندن ۲ ۳ دوره اول از این اسپیشیالیزیشن میتونید مراحل ۴ و ۵ رو ادامه بدید و بقیه کورس هارو موازی با مراحل بعد پیش ببرید.

بعد دوره های عالی Jeremy Howard در یوتوب رو دنبال کنید و دوره های سایت زیر مربوط به دانشگاه برکلی استفاده کنید:
Fullstackdeeplearning

چند کتاب زیر هم به عنوان مرجع مطالعه کنید:

1_Deep Learning (Ian Goodfelow, ...)

2_ Dive into Deep Learning (Aston Zhang, ...)

3_ Hands on Machine Learning with Sickit-Learn , Keras and TensorFlow (Aurelien Geron)


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

بجز ژورنال های علمی این سایت ها معمولا خیلی پر استفاده هستن در این حوزه:

Towardsdatascience.com
Medium.com
Machinelearningmastery.com

پیشنهاد میشه افراد و صفحات زیر (خصوصا در توییتر) دنبال کنید تا همیشه در این زمینه به روز باشید. و اینکه مهم نیست که لزوما اون پست هارو کامل متوجه بشید چون بعضا خیلی خاص و عمیق هستن در یک زمینه.
Francois Chollet
Jeremy Howard
Gabriel Peyre
Two Minute Papers
OpenAI
Andrej Karpathy
DeepMind
Andrew Ng
Yann LeCun
Mark Saroufim
Elvis
AK
Sebastian Raschka


۴_ یادگیری ابزار و تخصص های مهم

با این موارد باید به مرور آشنا شد و نیاز نیست صبر کنید تا همه این موارد رو یاد بگیرید و بعد پروژه شروع کنید. اما خوب چیزی مثل git حتما
نیاز هست برای شروع یک کار تیمی که میتونید از اینجا خیلی سریع یاد بگیرید.
Git
Database: SQL and NoSQL
Network
Linux
Regex
APIs
Stats & Probability
MLOps

۵_کار روی پروژه ها

اینجا دو حالت پیش میاد یا شما شروع به کار روی یک پروژه و ساختن میکنید (به صورت تیمی، در یک شرکت یا تنها) یا این مورد رو بعدا انجام میدین که در این صورت برای شروع توصیه میشه حتما در مسابقات ماشین لرنینگ‌ شرکت کنید.
بعضی مسابقات معتبر:
Kaggle.com
Datacrunch.com
Numer.ai

ولی بعد از اون (یا در کنارش)، شروع کار تیمی و ساختن یک محصول جالب رو شروع کنید. اینجا از از مصرف کنندگی صرف علم و ابزار این حوزه آروم آروم تولید کردن و ارزش خلق کردن شروع میشه. برای کار تیمی در این دوره مهم هست که بتونید ریموت کار کردن رو تمرین کنید و مثلا با استفاده از ابزاری مثل live share در vscode بتونید روی یک کد به صورت همزمان و ریموت کار کنید.

نکته آخر اینکه تمام منابع، مقالات و داکیومت های اصلی در این حوزه به زبان انگلیسی هست و بهتره اگر به این مورد عادت ندارید شروع کنید و به مرور این مهارت بدست میاد. دیدن ویدئو ها به زبان انگلیسی، خوندن مقالات و داکیومنت ها یکی از روزمره های این تخصص هست.
@deeptimeai
2
آیا نیاز هست که حتما از حفظ کردن داده‌های آموزشی و overfitting دوری کنیم تا یادگیری واقعی و generalization به وجود بیاد؟

بخش اول

احتمالا یکی از مهم ترین مقالات هوش مصنوعی که اخیرا منتشر شده، مقاله OpenAI در مورد پدیده Grokking باشه.
قابلیت تعمیم یا generalization یکی از مهم ترین مباحث در هوش مصنوعی هست. این مقاله نشون میده generalization بسیار بعد از overfitting اتفاق میفته و اون هم با تعداد پارامتر خیلی زیاد(overparameterization)! چیزی که همیشه دقیقا برعکسش مورد کاربرد بوده یعنی معمولا یادگیری با دیدن اولین نشانه های overfitting متوقف میشه و ادامه پیدا نمیکنه.
یکم تاریخ:
در گذشته هم ریاضیات و آمار بر این تاکید داشتن که شبکه underparametrized (به طور خاص منظور اینکه تعداد پارامتر ها از تعداد داده ها کمتر باشه) میتونه بجای حفظ کردن داده قوانین رو یاد بگیره. و حتی در یادگیری ماشین کلاسیک هم بحث کاهش ابعاد مهم بود. اما یادگیری عمیق اومد و گفت نیازی به کاهش ابعاد و یا کاهش تعداد پارامتر نیست. شبکه رو با پارامتر خیلی زیاد درست میکنیم اما رگولاریزیشن استفاده میکنیم. که خوب به شدت جواب داد.

اما حالا پدیده ای که مطرح میشه اینه که اجازه بدیم تعداد اپوک خیلی زیادی بعد از overfitting یادگیری ادامه پیدا کنه اما از چیزی مثل weight decay استفاده کنیم. نکته هم در همین weight decay loss هست. پیشنهاد میکنم حتما ویدئو توضیح مقاله را ببینید که بحث ساده سازی و smoothing هم جالب مطرح میشه.

پ.ن 1: دیتاست آزمایشی بوده و خیلی موارد باید بررسی بشه. این پدیده بسیار جای کار داره.

پ.ن 2: کلا داستان این کشف این بوده که یکی از نویسندگان مقاله یادش رفته آموزش مدل رو متوقف کنه و به تعطیلات میره وقتی برمیگرده: دوووبس GENERALIZATION!

@deeptimeai
1
یکی از موارد خیلی مهم در برنامه‌نویس‌ها (و البته تمامی مشاغل)، بحث فرسودگی شغلی یا Burn Out هست. عموما هم افرادی که تلاشگری زیادی دارند دچار این فرسودگی شغلی میشن. دلیل اساسی اون هم طبق بررسی‌های علمی، سختی کار، سختی محیط کار و ... نیست. بلکه بحث پیچیده تری هست که به حساسیت فردی نسبت به عدالت و قفل شدن ربط پیدا میکنه. راه حل این مسئله هم در کتاب "خرد جامعه ستیزان" مطرح شده! بسیار جالبه حتما ببینید.

در ۲۸ دقیقه آخر این لایو اینستاگرامی، دکتر آذرخش مکری، هیئت علمی روانپزشکی دانشگاه علوم پزشکی در این مورد صحبت میکنن.

ایشون مباحث بسیار جالبی در زمینه علوم شناختی، نوروساینس و ... در کانالشون صحبت میکنن و همیشه با تسلط و دقت بالا به منابع معتبر علمی ارجاع میدن. مطالب بسیار با دقت انتخاب میشن و به نظرم برای هر فردی مفید هستند.
کانال اینستاگرام دکتر مکری: AzarakhshMokri
کانال تلگرام دکتر مکری:
https://xn--r1a.website/DrAzarakhshMokri

@deeptimeai
#بالانس_کار_و_زندگی ۱
👍1
تست علیت گرانگر Granger causality
این آزمون علیت، مفید بودن یک سری زمانی برای پیشبینی سری زمانی دیگر را بررسی می‌کند.
قوانین پایه:
۱_ علت، از نظر زمانی، قبل از معلول واقع شود.
۲_ علت حاوی اطلاعات یکتا درباره آینده معلول باشد.

روش:
ابتدا باید سری‌های زمانی به صورت ایستا (stationary) باشند و اگر نبودند از تغییرات مرتبه اول (یا بالاتر) استفاده می‌شود. هر متغیر lagged (برای دوستانی که آشنا نیستند، مثلا اگر میخواهیم میزان مصرف برق در دقیقه ۱۰ را پیشبینی کنیم به متغیرهای مربوط به دقایق ۹ و ۸ و ... متغیر های lagged گفته می‌شود) ، در صورتی برای رگرسیون حفظ می‌شود که: اولا با توجه به t-test معنی دار باشد و ثانیا تمامی متغیر‌های lagged با توجه به F-test توضیح‌ دهنده باشند.
سپس آزمون فرض صفر (null hypothesis) مربوط به نبود علیت گرانگر رد نمی‌شود اگر و فقط اگر هیچ‌کدام از متغیر‌های lagged مربوط به متغیر توضیح دهنده، در رگرسیون حفظ نشده باشند.

اینجا در کتابخانه statsmodel پایتون پیاده شده. البته (همونطور که اینجا هم بحثی بود) نسخه‌های جدیدی که non linear هستند در عمل قوی تر این روابط را ارزیابی میکنند این نسخه ها در گیتهاب وجود دارند.
@deeptimeai
👍1
مدل TabTransformer که یک پیاده‌سازی ترنسفورمر برای tabular data هست که در keras پیاده سازی شده.
با اختلاف نسبت به شبکه عصبی dense عملکرد بهتری داشته و با مدل‌های ensemble بر مبنای درخت رقابت میکنه.
@deeptimeai
👍2
دنبال کردنِ استاد استنفرد، Andrew Huberman و پادکستش Hubermanlab رو خیلی پیشنهاد میکنم.

همچنین گاها در وبسایتش هم خلاصه‌های مهمی قرار میده.
برای مثال این موارد کمک میکنن بهتر بخوابیم.

#بالانس_کار_و_زندگی ۲
@deeptimeai
👍1
این هفته Abhishek Thakur معروف و Konrad Banachewicz (متخصص سری زمانی)، یکسری آموزش سری زمانی به صورت رایگان و لایو رو یوتوب برگزار میکنن که ذخیره هم میشه. مباحث بالا رو پوشش میدن👆
کانال دیسکورد MLSpace
کانال یوتوب

@deeptimeai
👍1
برای برنامه نویس های همیشه پای سیستم

مسئله اصلی خریدن اون صندلی های گرون قیمت و راحت برای برنامه نویسی نیست! مطالعات نشون میدن ضرر "نشستن" در حین کار خیلی بالاست و باید ترکیبی از "نشستن و ایستادن" باشه: نیم ساعت نشسته و نیم ساعت ایستاده. میزهای sit-stand برای همین طراحی خیلی مورد استقبال هستن و البته میشه صرفا با کتاب و کارتن کارو راه انداخت. کاری که خودم هم پیاده کردم.
موارد دیگه مهمی هم huberman اشاره میکنه. مثل اینکه هر ۴۰ دقیقه ۵ دقیقه به دوردست نگاه کنیم برای جلوگیری از نزدیک بینی. و یا هر روز یکی دو بار در حدود ۳۰ دقیقه در فضای بیرون قدم بزنیم برای تقویت بینایی.
1
Deep Time
CoST: Contrastive Learning of Disentangled Seasonal-Trend Representations for Time Series Forecasting
سری زمانی جدولی اصلا جایی نیست که بتونید از این خاصیت دیپ لرنینگ استفاده کنید که میگه:
"فیچر انجینیرینگ نیاز نیست و یک شبکه عمیق با طراحی مناسب میتونه دیتای خام رو مستقیما بگیره و به پیشبینی وصل کنه"

این خاصیت برای nlp و vision اون هم با دیتاست خیلی بزرگ قابل استفاده هست. نه برای tabular time series
حتما این رشته توییت را درباره Generalization و مفهوم Flat Minima ببینید.
بهینه ساز (optimizer) SGD ذاتا به دنبال flat minima میره و ازین نظر generalization بهتری نسبت به Adam داره. ولی دقیق به flat minima نمیرسه که خوب بهینه ساز هایی مثل SAM و SWA ساخته شدن جدیدا. بهینه ساز SWA خیلی قدرتمند عمل کرده و به صورت رسمی در Pytorch نسخه 1.6 وجود داره.

#generalization
👍1
Forwarded from Golem Course
Stop_Starting_Start_Finishing_Justin.pdf
785.2 KB
کتاب شروع کردن را متوقف کنید، تمام کردن را شروع کنید:
این کتاب توسط خانم ریحانه جعفری ترجمه شده است و ترجمه خوبی هم دارد و برای هر فردی که می‌خواهد کارهای خود را مدیریت کند مناسب است.

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

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

جمع‌بندی
خواندن کتاب نیم ساعت هم وقت نمی‌گیرد اما هم اطلاعات ارزشمندی در اختیارتان قرار می‌دهد و هم نوع نگارش آن جذاب است.
👍1