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

👨‍💻Admin👉 @Se_mohamad
Download Telegram
@AlgorithmDesign_DataStructuer.pdf
225.2 KB
📘 نمونه سوال درس ساختمان داده همراه با 📝 پاسخ

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
📉 در این نمودار عملکرد loss، هدف ما کاهش loss به حداقل نیز می باشد، که با استفاده از نزول گرادیانی قابل دستیابی است. ما محاسبه می‌کنیم که هر تغییر در وزن چگونه عملکرد هزینه را تغییر می‌دهد، و از مشتقات جزئی برای به‌روزرسانی وزن‌ها در جهت کاهش عملکرد هزینه استفاده می‌کنیم تا به شیب منفی که به سمت حداقل نیز می‌رود، برسیم.

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

🔄 برای به روزرسانی وزن‌ها و loss، از Backpropagation استفاده می‌شود، که بر اساس قاعده زنجیره‌ای حساب است. این روش برای محاسبه شیب عملکرد هزینه نسبت به وزن‌ها در شبکه مورد استفاده قرار می‌گیرد، سپس این شیب در الگوریتم نزول گرادیانی برای به روزرسانی وزن‌ها و بهبود عملکرد شبکه به کار می‌رود.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👌6👍1
This media is not supported in your browser
VIEW IN TELEGRAM
ساختار شبکه‌های عصبی مصنوعی

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

لایه نهایی، لایه خروجی نام دارد. این نورون‌ها سیگنالی را صادر می‌کنند که مربوط به حل مشکل موجود است (مثل شناسایی یک تصویر، انتخاب حرکت بعدی در یک بازی شطرنج و غیره).

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

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

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍2👌1
Merge Sort :

برای مشاهده نحوه عملکرد Merge Sort از منظری متفاوت، به تصویر بالا نگاه کنید. همانطور که می بینید، آرایه به قطعات کوچکتر و کوچکتر تقسیم می شود تا زمانی که دوباره با هم ادغام شوند. و همانطور که ادغام اتفاق می افتد، مقادیر هر زیر آرایه با هم مقایسه می شوند تا کمترین مقدار اول باشد.

#الگوریتم

📣👨‍💻 @AlgorithmDesign_DataStructuer
🔥6👍1
This media is not supported in your browser
VIEW IN TELEGRAM
انتشار رو به جلو (Forward propagation) :
همانطور که از نام پیداست، داده های ورودی در جهت جلو از طریق شبکه تغذیه می شوند. هر لایه پنهان داده‌های ورودی را می‌پذیرد، آن‌ها را طبق تابع فعال‌سازی پردازش می‌کند و به لایه‌ی متوالی ارسال می‌کند.

چرا شبکه Feed-forward network؟
به منظور تولید مقداری خروجی، داده های ورودی باید فقط در جهت رو به جلو بروند. داده ها در طول تولید خروجی نباید در جهت معکوس جریان داشته باشند در غیر این صورت یک چرخه تشکیل می دهند و خروجی هرگز تولید نمی شود. چنین پیکربندی های شبکه ای به عنوان شبکه فید فوروارد شناخته می شوند. شبکه Feed-forward network به انتشار رو به جلو کمک می کند.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5
چرا از توابع فعال سازی(Activation Functions) در شبکه های عصبی استفاده کنیم🤔؟

1️⃣غیر خطی بودن(Non-linearity): داده‌های دنیای واقعی اغلب شامل روابط پیچیده‌ای هستند که توسط یک مدل خطی قابل دریافت نیستند. توابع فعال‌سازی شبکه را قادر می‌سازد تا با اضافه کردن غیرخطی بودن، این الگوهای پیچیده را ثبت کند.

2️⃣مرزهای تصمیم(Decision Boundaries): مدل های خطی فقط می توانند داده ها را با یک خط (یا ابر صفحه در ابعاد بالاتر) جدا کنند. توابع فعال سازی به شبکه اجازه می دهد تا مرزهای تصمیم گیری پیچیده تری ایجاد کند.

3️⃣استفاده از عمق(Depth Utilization): با توابع فعال‌سازی، هر لایه می‌تواند داده‌ها را به شیوه‌ای غیر خطی تبدیل کند و به شبکه‌های عمیق‌تر اجازه می‌دهد تا توابع پیچیده‌تری را نشان دهند.

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

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

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍4
@AlgorithmDesign_DataStructuer (2).pdf
552 KB
اگر می‌خواهید وارد دنیای هوش مصنوعی شوید و هیچ اطلاعی از شبکه‌های عصبی ندارید، پیشنهاد می‌کنم حتماً این جزوه را مطالعه کنید. این جزوه می‌تواند به شما در درک بهتر شبکه‌های عصبی کمک زیادی کند. 🤖📘

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👌5
@AlgorithmDesign_DataStructuer .pdf
24.5 MB
📚📘 معرفی کتاب: درک الگوریتم‌ها 📘📚

🔍 آیا تا به حال به این فکر کرده‌اید که الگوریتم‌ها چگونه کار می‌کنند و چه نقشی در دنیای ما دارند؟ کتاب "درک الگوریتم‌ها" نوشته آدیتا بهارگاوا، به زبان ساده و همراه با تصاویر جذاب، شما را با دنیای پیچیده و در عین حال شگفت‌انگیز الگوریتم‌ها آشنا می‌کند. 🤓🔍

💡 این کتاب با توضیحات شفاف و مثال‌های کاربردی، به شما کمک می‌کند تا مفاهیم پیچیده الگوریتمی را به راحتی درک کنید. از مبانی پایه‌ای تا مباحث پیشرفته‌تر، همه چیز به زبانی ساده و قابل فهم بیان شده است. 💻📈

🔥 ویژگی‌های برجسته کتاب:

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


🔗 همچنین می‌توانید این پست را با دوستان خود به اشتراک بگذارید تا آن‌ها نیز از این منبع ارزشمند بهره‌مند شوند. 📤👥

#الگوریتم

📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5🙏3🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
پیمایش اول عمق (DFS):

پیمایش اول عمق (Depth-First Search یا DFS) یکی از الگوریتم‌های پیمایش گراف و درخت است. در این روش، ابتدا یک گره را انتخاب کرده و تا زمانی که به گره برگ نرسیده‌ایم، به عمق درخت یا گراف حرکت می‌کنیم. پس از رسیدن به برگ، به گره‌های قبلی بازگشته و همین فرآیند را برای گره‌های دیگر تکرار می‌کنیم.

پیمایش اول سطح (BFS):

پیمایش اول سطح (Breadth-First Search یا BFS) نیز یکی از الگوریتم‌های پیمایش گراف و درخت است. در این روش، ابتدا گره ریشه را بازدید کرده و سپس به ترتیب گره‌های هم‌سطح آن را بازدید می‌کنیم. برای انجام این کار از یک صف (queue) استفاده می‌کنیم.

تفاوت‌های اصلی بین DFS و BFS :

⬅️ساختار داده مورد استفاده: در DFS از پشته (stack) استفاده می‌شود، در حالی که در BFS از صف (queue) استفاده می‌شود.
⬅️مسیر پیمایش: DFS به عمق پیمایش می‌کند و ابتدا به انتهای هر شاخه می‌رود، در حالی که BFS به عرض پیمایش می‌کند و ابتدا همه گره‌های هر سطح را بازدید می‌کند.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
تابع فعال‌سازی Softmax :

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

کاربردها :
1️⃣دسته‌بندی چندکلاسه: تابع Softmax به طور گسترده در مسائل دسته‌بندی چندکلاسه استفاده می‌شود. در این حالت، خروجی شبکه عصبی یک بردار از نمرات (logits) برای هر کلاس است و تابع Softmax این نمرات را به توزیع احتمالات تبدیل می‌کند.
2️⃣مدل‌های یادگیری عمیق: Softmax در لایه خروجی شبکه‌های عصبی به کار می‌رود تا احتمال هر کلاس را پیش‌بینی کند.
3️⃣بازی‌های چند نفره و مدل‌های تصمیم‌گیری: Softmax برای مدل‌سازی توزیع احتمالی تصمیمات و اقدامات استفاده می‌شود.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
🌐 Classification و Localization در یادگیری ماشین و بینایی کامپیوتر 🌐

🔍 Classification (دسته‌بندی):
در دسته‌بندی، هدف شناسایی و طبقه‌بندی کل تصویر به یکی از چند دسته یا کلاس مشخص است. مثلاً اگر یک مدل یادگیری ماشین برای تشخیص اشیاء آموزش داده شده باشد، می‌تواند بگوید که تصویر شامل یک سگ، یک گربه یا یک ماشین است. در این حالت، فقط نوع شیء موجود در تصویر تعیین می‌شود و نه مکان دقیق آن.

🖼 مثال: فرض کنید یک مدل برای تشخیص حیوانات در تصاویر داریم. این مدل پس از دریافت یک تصویر، اعلام می‌کند که این تصویر مربوط به یک "گربه" است.

📍 Localization (محلی‌سازی):
در محلی‌سازی، علاوه بر شناسایی نوع شیء موجود در تصویر، هدف تعیین محل دقیق آن در تصویر نیز می‌باشد. این شامل رسم یک کادر مرزی (Bounding Box) دور شیء مورد نظر است تا محل دقیق آن مشخص شود.

🖼 مثال: در همان مثال قبلی، مدل محلی‌سازی علاوه بر تشخیص "گربه"، یک کادر مرزی دور سگ رسم می‌کند تا محل دقیق آن در تصویر

#هوش_مصنوعی

📣👨‍💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
🔢 فشرده‌سازی داده‌ها با Huffman Coding 🔢

📊فشرده سازی داده ها (Huffman Coding) چیست؟

فشرده سازی داده ها یکی از الگوریتم‌های مشهور فشرده‌سازی داده‌هاست که توسط دیوید هافمن در سال ۱۹۵۲ ابداع شد. این الگوریتم با استفاده از فرکانس وقوع کاراکترها در داده، کدهایی با طول متغیر تولید می‌کند تا داده‌ها را به صورت بهینه فشرده کند.

🔍 چگونه کار می‌کند؟
1. تحلیل فرکانس: ابتدا فرکانس وقوع هر کاراکتر در داده محاسبه می‌شود.
2. ساخت درخت هافمن:
- دو کاراکتری که کمترین فرکانس را دارند انتخاب و با هم ترکیب می‌شوند تا یک گره جدید ایجاد کنند.
- این فرآیند تکرار می‌شود تا زمانی که تنها یک گره باقی بماند که ریشه درخت هافمن است.
3. تخصیص کدها: به هر کاراکتر با پیمایش درخت از ریشه تا برگ‌ها، کدی اختصاص داده می‌شود. مسیر حرکت به سمت چپ معمولاً با 0 و به سمت راست با 1 نشان داده می‌شود.
4. فشرده‌سازی داده‌ها: داده‌ها با جایگزینی هر کاراکتر با کد باینری مربوطه فشرده می‌شوند.


#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍4
🌟 پروژه تشخیص لباس‌های لری، کردی و ترکمن با استفاده از CNN

👗 هدف پروژه:
تشخیص و دسته‌بندی تصاویر لباس‌های محلی از سه قوم لری، کردی و ترکمن با استفاده از CNN.

🧠 تکنولوژی مورد استفاده:
شبکه‌های عصبی پیچشی (Convolutional Neural Networks - CNN) یکی از پیشرفته‌ترین و قدرتمندترین تکنیک‌ها در زمینه پردازش تصویر و بینایی ماشین است. این شبکه‌ها با بهره‌گیری از لایه‌های مختلف می‌توانند ویژگی‌های پیچیده تصاویر را استخراج کرده و به تشخیص دقیق‌تری دست یابند.

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

🔍 مراحل کار:
1. جمع‌آوری داده‌ها: تهیه تصاویر مختلف از لباس‌های محلی هر قوم.
2. پیش‌پردازش داده‌ها: تنظیم و آماده‌سازی تصاویر برای آموزش مدل.
3. آموزش مدل: استفاده از CNN برای یادگیری ویژگی‌های تصاویر و تشخیص لباس‌های هر قوم.
4. ارزیابی و تست: بررسی عملکرد مدل بر روی مجموعه‌ای از تصاویر جدید و ارزیابی دقت آن.


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

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

🌐 لینک گیت‌هاب:
برای مشاهده جزئیات بیشتر و دسترسی به کدهای پروژه، به لینک زیر مراجعه کنید:

📎GitHub


#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5🙏1👨‍💻1
This media is not supported in your browser
VIEW IN TELEGRAM
🌟 شروع یادگیری شبکه‌های عصبی: از قلم و کاغذ تا پیاده‌سازی با Numpy! 🌟

برای شروع یادگیری شبکه‌های عصبی، بهترین راه استفاده از قلم و کاغذ است، نه PyTorch یا TensorFlow.

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

📚 قدم بعدی چیست؟
وقتی اصول عملکرد شبکه‌های عصبی را متوجه شدید، سعی کنید آن‌ها را خودتان با استفاده از Numpy پیاده‌سازی کنید. این کار نه تنها به شما درک بهتری از مفاهیم می‌دهد، بلکه شما را با مهارت‌هایی مجهز می‌کند که بتوانید مدل‌های خودتان را بسازید.

👩‍🎓 تجربه‌های واقعی:
بسیاری از دانش‌آموزانی که تاکنون مدلی را از ابتدا بدون استفاده از PyTorch یا TensorFlow کدنویسی نکرده‌اند، اغلب درک کاملی از تمام اجزای شبکه‌های عصبی ندارند.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
@AlgorithmDesign_DataStructuer (2).pdf
16.8 MB
🌟 معرفی کتاب: Mathematics for Machine Learning 🌟

اگر به دنبال منبعی کامل و جامع برای یادگیری ریاضیات مورد نیاز در ماشین لرنینگ هستید، کتاب "Mathematics for Machine Learning" گزینه‌ای عالی است!

📘 درباره کتاب:
این کتاب توسط Marc Peter Deisenroth, A. Aldo Faisal, و Cheng Soon Ong نوشته شده و مفاهیم ریاضی پایه‌ای که برای درک و پیاده‌سازی الگوریتم‌های ماشین لرنینگ لازم است را به زبانی ساده و قابل فهم توضیح می‌دهد.

📚 موضوعات پوشش داده شده:

جبر خطی
حساب دیفرانسیل و انتگرال
احتمالات و آمار
بهینه‌سازی

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍2👏1
This media is not supported in your browser
VIEW IN TELEGRAM
الگوریتم Prim :

الگوریتم Prim یکی از الگوریتم‌های مشهور در نظریه گراف‌ها است که برای پیدا کردن حداقل درخت پوشای یک گراف وزن‌دار و متصل به کار می‌رود. حداقل درخت پوشا (MST) زیرمجموعه‌ای از یال‌های گراف است که تمام راس‌ها را پوشش می‌دهد و مجموع وزن یال‌هایش کمینه است.

📝 مراحل الگوریتم Prim:
🎯 شروع از یک راس دلخواه: ابتدا یک راس دلخواه را به عنوان شروع انتخاب می‌کنیم و آن را به مجموعه MST اضافه می‌کنیم.

🔍 یافتن یال با کمترین وزن: در هر مرحله، یال با کمترین وزن که یکی از راس‌هایش در مجموعه MST و دیگری خارج از آن است را پیدا می‌کنیم.

اضافه کردن راس جدید به MST: راس جدید را به مجموعه MST اضافه می‌کنیم.

🔄 تکرار مراحل: این مراحل را تکرار می‌کنیم تا تمامی راس‌های گراف در مجموعه MST قرار بگیرند.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍1
Attention- Is-All-You- Need.pdf
2.1 MB
📄 معرفی مقاله "Attention Is All You Need"
مقاله "Attention Is All You Need" یکی از مهم‌ترین مقالات در حوزه مدل‌های زبانی بزرگ (LLM) و یادگیری عمیق است که توسط Vaswani و همکاران در سال 2017 منتشر شده است. این مقاله معماری جدیدی به نام ترانسفورمر (Transformer) معرفی می‌کند که به‌طور کامل بر مکانیزم توجه (Attention) تکیه دارد و از شبکه‌های بازگشتی (RNN) یا شبکه‌های کانولوشنی (CNN) استفاده نمی‌کند.

📚 چکیده‌ای از مقاله:
ترانسفورمرها با استفاده از مکانیزم توجه چند-رأس (Multi-head Attention) قادر به مدل‌سازی وابستگی‌های طولانی مدت در داده‌ها هستند. این معماری به صورت موازی‌سازی بهتری نسبت به مدل‌های قبلی امکان‌پذیر می‌سازد و باعث شده تا مدل‌های زبانی بسیار بزرگ‌تری مانند GPT و BERT توسعه یابند.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
الگوریتم Kruskal یکی از الگوریتم‌های مشهور در نظریه گراف‌ها است که برای پیدا کردن حداقل درخت پوشای یک گراف وزن‌دار و متصل به کار می‌رود. حداقل درخت پوشا (MST) زیرمجموعه‌ای از یال‌های گراف است که تمام راس‌ها را پوشش می‌دهد و مجموع وزن یال‌هایش کمینه است.

📝 مراحل الگوریتم Kruskal:

🔍 مرتب‌سازی یال‌ها: تمام یال‌های گراف را بر اساس وزن‌هایشان به صورت صعودی مرتب می‌کنیم.

🌳 شروع با راس‌ها: یک مجموعه از راس‌های گراف به عنوان درخت پوشا (MST) با هیچ یالی شروع می‌کنیم.

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

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

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer