Algorithm design & data structure
6.51K subscribers
841 photos
141 videos
174 files
440 links
این کانال برای تمامی علاقه‌مندان به کامپیوتر، مخصوصاً حوزه ساختمان داده‌ها و الگوریتم‌ها، مفید می باشد. آشنایی با ریاضیات مقدماتی، برنامه‌نویسی مقدماتی و پیشرفته و همچنین شی‌گرایی می‌تواند در درک بهتر مفاهیم این درس کمک‌ کند.

👨‍💻Admin👉 @Se_mohamad
Download Telegram
🔍 پدیده‌ای جدید در مدل‌های زبانی بزرگ: انجام چندین کار هم‌زمان با یک فراخوانی! 🔍

مدل‌های زبانی بزرگ (LLMs) هر روز ما را شگفت‌زده‌تر می‌کنند، اما آخرین کشف در مورد توانایی آن‌ها ممکن است حتی از حد انتظارمان فراتر رود! 😯 در مقاله‌ای با عنوان "Everything Everywhere All at Once: LLMs Can In-Context Learn Multiple Tasks in Superposition"، محققان یک قابلیت جدید به نام برهم‌نهی وظایف (Task Superposition) را بررسی کرده‌اند.

🔸 این پدیده به ما نشان می‌دهد که مدل‌های زبانی می‌توانند چندین وظیفه مختلف را به‌طور هم‌زمان و تنها در یک مرحله پردازش کنند. فرض کنید یک مدل نه تنها به سؤالات متنی پاسخ دهد، بلکه هم‌زمان مسئله ریاضی را حل کند و حتی ترجمه‌ای هم ارائه دهد! 😲

🔹 جالب‌تر اینکه هرچه مدل‌ها بزرگ‌تر شوند، می‌توانند وظایف بیشتری را هم‌زمان انجام دهند و نتیجه‌های دقیق‌تری ارائه کنند. این یعنی قدرت پردازشی LLMها به حدی رسیده که می‌توانند بدون نیاز به آموزش جداگانه برای هر وظیفه، چندین وظیفه متفاوت را به طور هم‌زمان انجام دهند. 🌐

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
دوره یادگیری عمیق از دکتر عمادالدین فاطمی‌زاده - دانشگاه صنعتی شریف 👇🏻
1_MLP.zip
1023.6 MB
۱_مباحث پایه و شبکه های تماما متصل MLP

مهمترین و پایه ای ترین قسمت درس اینجاست از بقیه مباحث جدی تر بگیرینش در واقع بقیه مباحث صرفا ایده شبکه های عصبی رو تو جاهای مختلف به کار برده و اصل قضیه همین شبکه های عصبی fully connected (یا multi layer perceptron) هستش
2_CNN.zip
774 MB
۲_شبکه های کانولوشن CNN و کاربردهاشون (پایه بینایی ماشین)
3_RNN.zip
242.1 MB
۳_شبکه های عصبی بازگشتی RNN و به طور خاص LSTM برای تحلیل داده هایی پشت سرهمی و مرتبط به هم مثل داده های متنی
4_AE.zip
350.3 MB
۴_یادگیری بدون نظارت عمیق و شبکه های autoEncoder

حل مسائل بدون نظارت (unsupervised learning) با کمک شبکه های عصبی علی الخصوص شبکه های AutoEncoder
5_GAN.zip
478.8 MB
۵_شبکه های تخاصمی GAN
TA.zip
845.5 MB
ویدیوهای کلاس ta
جلس اول: مروری بر مقدمات پایتون
جلسه دوم و سوم: تنسورفلو ورژن ۱
جلسه چهارم: تنسورفلو ورژن ۲‌ و کراس

البته به نظرم پایتورچ یاد بگیرین و تمرینات رو هم با پایتورچ بزنین
HomeWork.zip
63.7 MB
تمرینات و پروژه درس
پاسخنامه خودم رو برای بعضی از تمرینات و پروژه توی گیتهاب گذاشتم (البته کاملن درست نیستن!)
Exam.zip
2.2 MB
امتحانات میانترم و پاینترم درس به همراه پاسخنامه
DL_HW_Soleymani.zip
4.9 MB
ویدیو ها رو دسته بندی کردم به شکلی که ویدیوهای مربوط به یک مبحث با هم تو یه فایل زیپن پیشنهاد میکنم مبحث به مبحث منطبق ویدیوها رو ببینید و تمرین ازشون حل کنین.

#هوش_مصنوعی
👨‍💻 @AlgorithmDesign_DataStructuer
پشته (Stack) یکی از مهم‌ترین ساختارهای داده‌ای است که بر اساس اصل LIFO (Last In, First Out) عمل می‌کند. این به این معنی است که آخرین عنصری که وارد پشته می‌شود، اولین عنصری است که خارج می‌شود. پشته به عنوان یک ساختار ساده و در عین حال قدرتمند در بسیاری از الگوریتم‌ها و برنامه‌های کاربردی استفاده می‌شود.

ویژگی‌ها و عملکرد پشته:
1. LIFO (آخرین ورودی، اولین خروجی): پشته به این صورت عمل می‌کند که وقتی عنصری را وارد آن می‌کنیم (عملیات push)، آن عنصر در بالای پشته قرار می‌گیرد. زمانی که نیاز به خارج کردن عنصری داریم (عملیات pop)، آخرین عنصری که وارد شده است، خارج می‌شود.

2. توابع اصلی پشته:
-تابع push(item): این تابع یک عنصر جدید را به بالای پشته اضافه می‌کند.
-تابع pop(): این تابع آخرین عنصر اضافه‌شده به پشته را حذف و بازمی‌گرداند.
-تابع peek(): این تابع مقدار بالاترین عنصر موجود در پشته را بدون حذف آن بازمی‌گرداند.
-تابع isEmpty(): این تابع بررسی می‌کند که آیا پشته خالی است یا خیر.
-تابع size(): این تابع اندازه پشته (تعداد عناصر موجود) را بازمی‌گرداند.

3. پیاده‌سازی:
پشته می‌تواند به صورت آرایه یا لیست پیوندی پیاده‌سازی شود. در پیاده‌سازی آرایه، برای عملیات push و pop باید به ابتدای یا انتهای آرایه مراجعه کنیم که بسته به نوع آرایه ممکن است بهینه نباشد. لیست‌های پیوندی به‌خاطر دینامیک بودن و عدم نیاز به تعریف اندازه اولیه، برای پیاده‌سازی پشته‌های پویا مفیدتر هستند.

4. کاربردها:
- محاسبات ریاضی (Postfix و Prefix): از پشته در ارزیابی عبارات ریاضی استفاده می‌شود.
- برگرداندن رشته‌ها: پشته‌ها برای معکوس کردن رشته‌ها بسیار مفید هستند. به عنوان مثال، اگر بخواهیم کلمه‌ای را معکوس کنیم، می‌توانیم حروف را یکی‌یکی در پشته قرار دهیم و سپس آنها را به ترتیب خارج کنیم.
- کنترل دسترسی به توابع (Recursion): در برنامه‌نویسی بازگشتی، سیستم پشته برای نگه‌داری وضعیت فعلی تابع استفاده می‌شود.
- مدیریت حافظه: در زمان اجرای برنامه‌ها، سیستم عامل برای مدیریت حافظه و ذخیره داده‌های موقت از پشته‌ها استفاده می‌کند.

مثال از پیاده‌سازی پشته در پایتون:
class Stack:
def __init__(self):
self.items = []

def isEmpty(self):
return self.items == []

def push(self, item):
self.items.append(item)

def pop(self):
if not self.isEmpty():
return self.items.pop()
else:
return None

def peek(self):
if not self.isEmpty():
return self.items[-1]
else:
return None

def size(self):
return len(self.items)

# استفاده از پشته
stack = Stack()
stack.push(5)
stack.push(10)
print(stack.pop()) # خروجی: 10
print(stack.peek()) # خروجی: 5


در این مثال، ما یک کلاس Stack ایجاد کرده‌ایم که با استفاده از لیستی از عناصر پشته پشتیبانی می‌کند و توابع اصلی مثل push، pop و peek را پیاده‌سازی می‌کند.

پیچیدگی زمانی:
-تابع push: در حالتی که پشته به صورت لیست آرایه‌ای پیاده‌سازی شود، این عمل دارای پیچیدگی زمانی O(1) است.
-تابع pop: عمل حذف نیز مانند اضافه کردن، دارای پیچیدگی O(1) است.
-تابع peek: این عمل نیز زمان ثابت O(1) دارد.

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

#الگوریتم
👨‍💻 @AlgorithmDesign_DataStructuer
مقاله جدیدی با عنوانBuzz: KV Caching algorithm with beehive-structured sparse cache to prioritize important tokens for Efficient LLM Inference
منتشر شده است. این مقاله به ارائه یک روش بدون نیاز به آموزش برای بهینه‌سازی مکانیزم کش KV در مدل‌های ترنسفورمر می‌پردازد. BUZZ با استفاده از یک کش پراکنده ساختارمند، از پنجره لغزان برای به‌روز نگه‌داشتن اطلاعات استفاده می‌کند و توکن‌های قدیمی را در بخش‌های مختلف سازماندهی می‌کند تا توکن‌های مهم‌تر اولویت داده شوند.

مزایای BUZZ:
- کاهش قابل‌توجه استفاده از حافظه (2.5 برابر) در استنتاج LLM‌ها در حالی که دقت بالای 99٪ در خلاصه‌سازی متن‌های طولانی را حفظ می‌کند.
- بهبود 7.69 درصدی در پرسش و پاسخ چندسندی تحت محدودیت حافظه نسبت به روش‌های پیشرفته.
- پیچیدگی زمانی O(n) به لطف مکانیسم جستجوی محلی و بهینه‌سازی با log n.

این مقاله برای علاقه‌مندان به بهینه‌سازی حافظه و استنتاج سریع در مدل‌های زبانی بزرگ مفید خواهد بود.

Paper : https://arxiv.org/abs/2410.23079

#هوش_مصنوعی
👨‍💻 @AlgorithmDesign_DataStructuer
🎉 معرفی مدل Gooya v1 – دقیق‌ترین مدل تشخیص گفتار فارسی! 🎉

امروز مفتخریم که مدل پیشرفته‌ی Gooya v1 را معرفی کنیم، مدلی که در حوزه تشخیص گفتار فارسی (ASR) یک قدم بزرگ به جلو برداشته است. این مدل روی یک مجموعه داده بزرگ ۳۲ گیگابایتی (بیش از ۳۰۰ ساعت داده صوتی فارسی) آموزش داده شده و در صدر لیدربرد Open Persian ASR قرار گرفته است! 🚀

نکته جالب توجه اینجاست که Gooya v1 حتی از مدل Whisper ساخته‌شده توسط OpenAI نیز پیشی گرفته است و توانسته جایگاه اول را به خود اختصاص دهد.

📌 برای تست این مدل می‌توانید به دمو در Huggingface مراجعه کنید:
https://huggingface.co/spaces/navidved/gooya-v1

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

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
اگر به موضوعاتی مانند یادگیری ماشین، ترنسفورمرها و مطالعه مقالات علمی علاقه‌مند هستید، پیشنهاد می‌کنم حتماً کانال یوتیوب Deep Hosh را دنبال کنید. برای دسترسی به آن، به لینک زیر مراجعه کنید.

http://www.youtube.com/@deephoosh

#هوش_مصنوعی
👨‍💻 @AlgorithmDesign_DataStructuer
برای شروع مسیر در هوش مصنوعی، یک نقشه راه گام به گام ضروریه که مبانی پایه، ابزارها، و پیاده‌سازی عملی رو پوشش بده. در ادامه یه نقشه راه جامع رو باهات به اشتراک می‌ذارم که می‌تونی با توجه به نیازت اون رو شخصی‌سازی کنی:

1. 📚یادگیری مبانی ریاضیاتی

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

2. 💻 زبان‌های برنامه‌نویسی
- پایتون: محبوب‌ترین زبان برای هوش مصنوعی. کتابخانه‌های مهم:
-کتابخانه NumPy: برای کار با آرایه‌ها.
-کتابخانه Pandas: برای تحلیل داده‌ها.
-کتابخانه Matplotlib و Seaborn: برای مصورسازی داده‌ها.

3. 🤖 مفاهیم پایه در هوش مصنوعی
- یادگیری ماشین (Machine Learning):
- مدل‌های کلاسیک: رگرسیون خطی، لجستیک، SVM، درخت تصمیم‌گیری.
- یادگیری نظارت‌شده و بدون نظارت: کلاسیفیکیشن و خوشه‌بندی.
- یادگیری عمیق (Deep Learning):
- شبکه‌های عصبی مصنوعی (ANN): توابع فعال‌سازی.
- شبکه‌های عصبی کانولوشنی (CNN): برای داده‌های تصویری.
- شبکه‌های عصبی بازگشتی (RNN) و LSTM: برای داده‌های ترتیبی.

4. 📊 مبانی یادگیری ماشین
- مفاهیم کلیدی:
-مفاهیم Overfitting و Underfitting: چگونگی تشخیص و پیشگیری.
-مفهوم Regularization (تنظیم): Ridge و Lasso.
- Validation (اعتبارسنجی): Cross-validation.
- الگوریتم‌ها:
- KNN، SVM، Random Forest، Gradient Boosting.

5. 🛠 کار با ابزارها و کتابخانه‌ها
-کتابخانه Scikit-learn: برای الگوریتم‌های یادگیری ماشین.
-کتابخانه TensorFlow و PyTorch: برای پیاده‌سازی شبکه‌های عصبی.

6. 🏗 یادگیری پروژه‌محور
- پروژه‌های پیشنهادی:
- دسته‌بندی تصاویر: استفاده از CNN.
- پیش‌بینی سری‌های زمانی: داده‌های آب و هوا.
- تشخیص احساسات: برای پردازش متون.
- استفاده از منابع داده مثل Kaggle و UCI.

7. 🚀 مطالعه الگوریتم‌های پیشرفته
- بعد از تسلط بر پایه‌ها:
-الگوریتم Transformer: برای داده‌های ترتیبی.
-الگوریتم GANs: برای تولید داده مصنوعی.
-الگوریتم Reinforcement Learning (یادگیری تقویتی): تصمیم‌گیری‌های پویا.

8. 📝 ساخت پروفایل و رزومه
- پروژه‌ها رو در GitHub به اشتراک بذار.
- پروفایل LinkedIn رو تقویت کن و با متخصصان شبکه‌سازی کن.

9. 🏆 شرکت در مسابقات و چالش‌ها
- در Kaggle و DrivenData شرکت کن تا مهارت‌هات رو در پروژه‌های واقعی محک بزنی.

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

#هوش_مصنوعی
👨‍💻 @AlgorithmDesign_DataStructuer
Formal Explanations for Neuro-Symbolic AI

این مقاله به بررسی نقاط ضعف سیستم‌های هوش مصنوعی عصبی (Neural AI) مانند bias و brittleness پرداخته و راهکاری تحت عنوان Neuro-Symbolic AI ارائه می‌دهد. این رویکرد ترکیبی از neural perception و symbolic reasoning است که می‌تواند این مشکلات را برطرف کند.

همچنین، مقاله به اهمیت Explainable AI (XAI) اشاره می‌کند، که در آن تلاش می‌شود تا رفتار سیستم‌های هوش مصنوعی شفاف و قابل‌فهم شود. در این راستا، مقاله رویکردی به نام formal abductive explanations معرفی می‌کند که توضیحات سیستم‌های نوروسمبولیک را به‌صورت سلسله‌مراتبی ارائه می‌دهد. در این رویکرد ابتدا قسمت سمبولیک سیستم توضیح داده می‌شود و سپس ورودی‌های عصبی مرتبط به‌صورت مستقل بررسی می‌شوند تا توضیحاتی مختصر و کارآمد ارائه شود.

این مقاله برای کسانی که به دنبال مطالعه در زمینه neuro-symbolic AI و explainability هستند، یک منبع بسیار ارزشمند است و به ویژه به افرادی که به کاربرد هوش مصنوعی در complex reasoning tasks علاقه دارند، توصیه می‌شود.

https://arxiv.org/abs/2410.14219

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
در این مجموعه ویدیوها، به صورت ساده و کاربردی نحوه استفاده و تنظیم (tuning) مدل‌های LLM با استفاده از زبان برنامه‌نویسی Python آموزش داده شده است. این دوره به شکلی طراحی شده که شما بتوانید به راحتی با ابزارهای مربوطه کار کرده و به طور عملی مهارت‌های لازم را کسب کنید.

سرفصل‌های این دوره شامل موارد زیر است:

11. مقدمه‌ای بر LLMها
2. کار با ابزارهای Transformers برای شروع استفاده از مدل‌های زبانی
3. مهندسی Prompt برای بهبود تعامل با مدل‌ها
4. ساخت خودکار Prompt و بهینه‌سازی آن
5. مبحث In-Context Learning برای یادگیری در بستر ورودی‌ها
6. مبحث Retrieval Augmented Generation (RAG) و کار با vectorDBها
7. مبحث Fine-tuningو تنظیم Alignment
مدل‌ها روی داده‌های جدید
8. بررسی روش‌های ارزیابی کیفیت مدل‌های LLM



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

Link course : https://www.youtube.com/playlist?list=PLHldQ76_k1klWQE7GyGfLH6m4iHOdVogN

Linl code : https://github.com/aix64-main/LLMs

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Graphs In Data Structures | Graph Representation In Data Structure | Data Structures | Simplilearn


#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
آیا واقعا میشه LLM هارو روی گوشی بالا اورد؟

امیدوارم نگی که من همین الانشم با گوشی از ChatGPT استفاده میکنم که دلم میشکنه 😕

در واقع اینجا منظور ما استفاده از
On-Device Use Cases
هست که محاسبات و پردازش داده‌ها به‌صورت مستقیم رو خود دستگاه انجام میشه. و نیازی به استفاده از سرویس ابری نیست.

آیا مدل Llama-7B رو میشه روی گوشی استفاده کرد؟ گوشی های امروزی میانگین 8 گیگ رم (DRAM) دارن، این یعنی یک مدل با 7 میلیارد وزن رو میشه تو 7 گیگ رم ذخیره کرد. الان شاید بگی چقدر عالی 1 گیگ رم هم اضافه داریم 😂

ولی نه از اونجایی سیستم عامل و خیلی از اپلیکیشن های دیگه باید رو رم اجرا بشن پس این چالش انگیزه‌ای هست که مدل‌های LLM کوچکتر (پارامترهای کمتر) ساخته بشه و میزان پارامتر ها خیلی کمتر بشه طبق استاندارد ها یک اَپ موبایل نباید بیشتر از 10% DRAM رو اشغال کنه

چند روز پیش تو این پست مدل سبک جدید Llama3.2 رو معرفی کردیم. که با دو وزن 1 و 3 میلیارد پارامتری ارائه شده.

اگه بخواییم مدل Llama3.2 با 1 میلیارد پارامتر رو رو گوشی سرو کنیم منطقی تر هست اما باز 1 میلیارد عدد قابل توجهی هست و برای همین تو این مقاله با عنوان:

MobileLLM: Optimizing Sub-billion Parameter Language Models for On-Device Use Cases


لینک مقاله | هاگینگ فیس
اومدن تعداد پارامترها رو کمتر هم کردن و یک مدل اصطلاحا Small Language Model درست کردن که مفهومی به اسم Sub-billion Parameter Language Models داره یعنی این مدل به بزرگی مدل‌های LLM بیلیونری مانند Llama و GPT-4 و غیره نیست و 125 و 350 میلیون پارامتر داره

در ادامه باید بدونید از چالش های ساختن یک مدل LLM خیلی سبک وزن، به رم محدود نمیشه و میزان مصرف باتری، سرعت Generate مدل و معماری استفاده در مدل هم تاثیر زیادی دارن که میتونه موضوع تحقیقات شما باشه (به زودی در مورد اینا هم مینویسم)

@silicon_brain | از هوش مصنوعی عقب نمانید