پشته (Stack) یکی از مهمترین ساختارهای دادهای است که بر اساس اصل LIFO (Last In, First Out) عمل میکند. این به این معنی است که آخرین عنصری که وارد پشته میشود، اولین عنصری است که خارج میشود. پشته به عنوان یک ساختار ساده و در عین حال قدرتمند در بسیاری از الگوریتمها و برنامههای کاربردی استفاده میشود.
ویژگیها و عملکرد پشته:
1. LIFO (آخرین ورودی، اولین خروجی): پشته به این صورت عمل میکند که وقتی عنصری را وارد آن میکنیم (عملیات push)، آن عنصر در بالای پشته قرار میگیرد. زمانی که نیاز به خارج کردن عنصری داریم (عملیات pop)، آخرین عنصری که وارد شده است، خارج میشود.
2. توابع اصلی پشته:
-تابع
-تابع
-تابع
-تابع
-تابع
3. پیادهسازی:
پشته میتواند به صورت آرایه یا لیست پیوندی پیادهسازی شود. در پیادهسازی آرایه، برای عملیات push و pop باید به ابتدای یا انتهای آرایه مراجعه کنیم که بسته به نوع آرایه ممکن است بهینه نباشد. لیستهای پیوندی بهخاطر دینامیک بودن و عدم نیاز به تعریف اندازه اولیه، برای پیادهسازی پشتههای پویا مفیدتر هستند.
4. کاربردها:
- محاسبات ریاضی (Postfix و Prefix): از پشته در ارزیابی عبارات ریاضی استفاده میشود.
- برگرداندن رشتهها: پشتهها برای معکوس کردن رشتهها بسیار مفید هستند. به عنوان مثال، اگر بخواهیم کلمهای را معکوس کنیم، میتوانیم حروف را یکییکی در پشته قرار دهیم و سپس آنها را به ترتیب خارج کنیم.
- کنترل دسترسی به توابع (Recursion): در برنامهنویسی بازگشتی، سیستم پشته برای نگهداری وضعیت فعلی تابع استفاده میشود.
- مدیریت حافظه: در زمان اجرای برنامهها، سیستم عامل برای مدیریت حافظه و ذخیره دادههای موقت از پشتهها استفاده میکند.
مثال از پیادهسازی پشته در پایتون:
در این مثال، ما یک کلاس
پیچیدگی زمانی:
-تابع
-تابع
-تابع
پشتهها یکی از سادهترین و در عین حال پرکاربردترین ساختارهای دادهای هستند که در بسیاری از الگوریتمهای پایه و پیشرفته استفاده میشوند.
#الگوریتم
👨💻 @AlgorithmDesign_DataStructuer
ویژگیها و عملکرد پشته:
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
منتشر شده است. این مقاله به ارائه یک روش بدون نیاز به آموزش برای بهینهسازی مکانیزم کش 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
امروز مفتخریم که مدل پیشرفتهی Gooya v1 را معرفی کنیم، مدلی که در حوزه تشخیص گفتار فارسی (ASR) یک قدم بزرگ به جلو برداشته است. این مدل روی یک مجموعه داده بزرگ ۳۲ گیگابایتی (بیش از ۳۰۰ ساعت داده صوتی فارسی) آموزش داده شده و در صدر لیدربرد Open Persian ASR قرار گرفته است! 🚀
نکته جالب توجه اینجاست که Gooya v1 حتی از مدل Whisper ساختهشده توسط OpenAI نیز پیشی گرفته است و توانسته جایگاه اول را به خود اختصاص دهد.
📌 برای تست این مدل میتوانید به دمو در Huggingface مراجعه کنید:
https://huggingface.co/spaces/navidved/gooya-v1
پ.ن :طبق گفته های خودشون مدل رو به اشتراک نمیزارن.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
huggingface.co
Gooya v1.4 Persian Speech Recognition - a Hugging Face Space by navidved
Discover amazing ML apps made by the community
اگر به موضوعاتی مانند یادگیری ماشین، ترنسفورمرها و مطالعه مقالات علمی علاقهمند هستید، پیشنهاد میکنم حتماً کانال یوتیوب Deep Hosh را دنبال کنید. برای دسترسی به آن، به لینک زیر مراجعه کنید.
http://www.youtube.com/@deephoosh
#هوش_مصنوعی
👨💻 @AlgorithmDesign_DataStructuer
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
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
این مقاله به بررسی نقاط ضعف سیستمهای هوش مصنوعی عصبی (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
سرفصلهای این دوره شامل موارد زیر است:
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
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
Forwarded from Silicon Brain | جامعه هوش مصنوعی
آیا واقعا میشه LLM هارو روی گوشی بالا اورد؟
امیدوارم نگی که من همین الانشم با گوشی از ChatGPT استفاده میکنم که دلم میشکنه 😕
در واقع اینجا منظور ما استفاده از
آیا مدل Llama-7B رو میشه روی گوشی استفاده کرد؟ گوشی های امروزی میانگین 8 گیگ رم (DRAM) دارن، این یعنی یک مدل با 7 میلیارد وزن رو میشه تو 7 گیگ رم ذخیره کرد. الان شاید بگی چقدر عالی 1 گیگ رم هم اضافه داریم 😂
ولی نه از اونجایی سیستم عامل و خیلی از اپلیکیشن های دیگه باید رو رم اجرا بشن پس این چالش انگیزهای هست که مدلهای LLM کوچکتر (پارامترهای کمتر) ساخته بشه و میزان پارامتر ها خیلی کمتر بشه طبق استاندارد ها یک اَپ موبایل نباید بیشتر از 10% DRAM رو اشغال کنه
چند روز پیش تو این پست مدل سبک جدید Llama3.2 رو معرفی کردیم. که با دو وزن 1 و 3 میلیارد پارامتری ارائه شده.
اگه بخواییم مدل Llama3.2 با 1 میلیارد پارامتر رو رو گوشی سرو کنیم منطقی تر هست اما باز 1 میلیارد عدد قابل توجهی هست و برای همین تو این مقاله با عنوان:
لینک مقاله | هاگینگ فیس
اومدن تعداد پارامترها رو کمتر هم کردن و یک مدل اصطلاحا Small Language Model درست کردن که مفهومی به اسم Sub-billion Parameter Language Models داره یعنی این مدل به بزرگی مدلهای LLM بیلیونری مانند Llama و GPT-4 و غیره نیست و 125 و 350 میلیون پارامتر داره
در ادامه باید بدونید از چالش های ساختن یک مدل LLM خیلی سبک وزن، به رم محدود نمیشه و میزان مصرف باتری، سرعت Generate مدل و معماری استفاده در مدل هم تاثیر زیادی دارن که میتونه موضوع تحقیقات شما باشه (به زودی در مورد اینا هم مینویسم)
@silicon_brain | از هوش مصنوعی عقب نمانید
امیدوارم نگی که من همین الانشم با گوشی از 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 | از هوش مصنوعی عقب نمانید
"حملهی یک پیکسل" (One Pixel Attack) به نقطهضعفی در شبکههای عصبی اشاره دارد که با تغییر تنها یک پیکسل در تصویر، مدل دچار اشتباه در تشخیص (misclassification) میشود. برای مثال، یک شبکهی عصبی ممکن است با تغییر کوچک یک پیکسل در تصویر، آن را اشتباه دستهبندی کند، حتی اگر تغییر بسیار جزئی باشد. این مشکل، بهویژه در کاربردهای امنیتی، نگرانیهایی ایجاد میکند. یکی از راهکارها استفاده از روشهای بهینهسازی مانند "تکامل تفاضلی" (Differential Evolution) است که به شبکه کمک میکند تا در برابر این حملات مقاومتر شود. با اضافه کردن یک بردار به ورودی، حساسیت شبکه نسبت به این تغییرات کاهش پیدا میکند و باعث میشود که شبکه در مواجهه با چنین حملاتی پایدارتر عمل کند.
Paper : https://arxiv.org/abs/1710.08864
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
Paper : https://arxiv.org/abs/1710.08864
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
ساختمان داده.PDF
81.8 MB
📘 جزوه دستنویس کامل درس ساختمان داده از استاد راعی دانشگاه صنعتی امیرکبیر
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
🔹 ربات Optimus توسط تسلا طراحی شده تا وظایف تکراری و کارهای فیزیکی یا خطرناک رو بر عهده بگیره. این ربات انساننما از هوش مصنوعی و بینایی کامپیوتر بهره میبره تا محیطش رو شناسایی کنه و به طور مستقل کارها رو انجام بده. Optimus میتونه هم در صنعت و هم در خانه کمکرسان باشه و به آیندهای هوشمندتر نزدیکترمون کنه.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
درک ماتریس سردرگمی به خاطر اهمیتش در ارزیابی مدلهای یادگیری ماشین واقعاً ارزشش رو داره، چون میتونه دید واضحی از عملکرد مدل ارائه بده.
یک بار برای همیشه بیایم قدمبهقدم بررسی کنیم:
1️⃣مثبت واقعی (True Positive - TP): وقتی که مقدار واقعی مثبت هست و مدل هم به درستی اون رو مثبت پیشبینی کرده. این نتیجهای هست که دنبالش هستیم، مثل تشخیص صحیح بیماری در یک مدل پزشکی.
2️⃣مثبت کاذب (False Positive - FP): جایی که مدل اشتباه کرده و یک نتیجه مثبت ارائه داده در حالی که مقدار واقعی منفی بوده. این همون خطای نوع اول (Type I Error) هست. مثل اینکه به فرد سالم بگه که بیمار هست.
3️⃣منفی واقعی (True Negative - TN): این مورد یعنی مقدار واقعی منفی هست و مدل هم به درستی اونو منفی پیشبینی کرده. مثلاً به فرد سالم به درستی بگه که سالمه.
4️⃣منفی کاذب (False Negative - FN): وقتی مدل به اشتباه یک مورد مثبت رو منفی شناسایی کنه. این همون خطای نوع دوم (Type II Error) هست. مثلاً وقتی که به فرد بیمار بگه سالمه.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
یک بار برای همیشه بیایم قدمبهقدم بررسی کنیم:
1️⃣مثبت واقعی (True Positive - TP): وقتی که مقدار واقعی مثبت هست و مدل هم به درستی اون رو مثبت پیشبینی کرده. این نتیجهای هست که دنبالش هستیم، مثل تشخیص صحیح بیماری در یک مدل پزشکی.
2️⃣مثبت کاذب (False Positive - FP): جایی که مدل اشتباه کرده و یک نتیجه مثبت ارائه داده در حالی که مقدار واقعی منفی بوده. این همون خطای نوع اول (Type I Error) هست. مثل اینکه به فرد سالم بگه که بیمار هست.
3️⃣منفی واقعی (True Negative - TN): این مورد یعنی مقدار واقعی منفی هست و مدل هم به درستی اونو منفی پیشبینی کرده. مثلاً به فرد سالم به درستی بگه که سالمه.
4️⃣منفی کاذب (False Negative - FN): وقتی مدل به اشتباه یک مورد مثبت رو منفی شناسایی کنه. این همون خطای نوع دوم (Type II Error) هست. مثلاً وقتی که به فرد بیمار بگه سالمه.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
All Cheay Sheets.pdf
7.5 MB
All Cheat Sheets Machine Learning , Deep Learning , Artificial Intelligence
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
تفکر در مورد حل مسائل به روش بازگشتی نیازمند فهمیدن این است که چگونه میتوان مسئله را به زیرمسائل کوچکتر تقسیم کرد و این روند را تا رسیدن به سادهترین حالت ادامه داد. در اینجا چند مرحله و نکته برای فکر کردن به مسائل بازگشتی آورده شده:
1. تعریف پایه (Base Case):
ابتدا باید بفهمید سادهترین حالتی که برای مسئله وجود دارد چیست. این حالت پایه به بازگشت پایان میدهد. اگر حالت پایه را بهدرستی تعریف نکنید، ممکن است کد شما به بینهایت تکرار برود. مثلاً، برای مسئله فاکتوریل، حالت پایه n = 0 است، زیرا 0! = 1 است و نیازی به محاسبات بیشتر نیست.
2. تقسیم مسئله (Divide the Problem):
به مسئله بهعنوان یک ترکیب از زیرمسائل نگاه کنید. ببینید که آیا میتوانید مسئله بزرگتر را به یک یا چند زیرمسئله کوچکتر تبدیل کنید. به عنوان مثال، در فاکتوریل n! = n - (n-1)! نشان میدهد که فاکتوریل n به فاکتوریل یک عدد کوچکتر، یعنی n-1 ، وابسته است.
3. قانون بازگشتی (Recursive Case):
پس از تعریف پایه، مرحلهی بازگشت را مشخص کنید. این بخش همان قسمتی است که مسئلهی بزرگتر را به یک نسخهی کوچکتر از خودش میشکند و سپس از همان تابع برای حل آن استفاده میکند. هر بار که تابع فراخوانی میشود، یکی از زیرمسائل حل میشود.
4. تصویر ذهنی از پشتهی فراخوانی (Call Stack):
هنگام کار با بازگشت، به یاد داشته باشید که هر بار که یک تابع بازگشتی فراخوانی میشود، وضعیت فعلی تابع در پشته ذخیره میشود و سپس پس از اتمام بازگشتها از پشته خارج میشود. این کمک میکند که وضعیت هر مرحله حفظ شود. بهعنوان مثال، در مسئله هانوی، هر حرکت بین میلهها در پشته ذخیره میشود تا در پایان به راهحل کلی برسیم.
5. حل با مثالهای کوچک:
برای درک بهتر، ابتدا مسئله را با نمونههای کوچک حل کنید. مثلاً در یک تابع بازگشتی فیبوناچی، ابتدا F(2) ، سپس F(3) و به همین ترتیب تا رسیدن به جواب بزرگتر حل کنید تا الگوی حل بازگشتی مشخص شود.
6. قابلیت یادگیری (Memoization) برای بهینهسازی:
گاهی بازگشت به تکرار زیاد منجر میشود، مانند محاسبهی فیبوناچی که نیاز به محاسبه چندباره اعداد دارد. در این موارد میتوانید از تکنیک یادگیری (Memoization) استفاده کنید تا نتایج قبلی را ذخیره کرده و از دوبارهکاری جلوگیری کنید.
7. محدودیتهای بازگشت (Limitations of Recursion):
همیشه توجه داشته باشید که بازگشت در مسائل با عمق زیاد، میتواند منجر به پر شدن پشته شود و خطای Stack Overflow ایجاد کند. بنابراین در مسائل پیچیده باید دقت کنید که آیا بازگشت مناسبترین روش است یا میتوان از تکرار استفاده کرد.
در نهایت، با تمرین و تحلیل بیشتر روی مسائل مختلف، درک بهتری از کاربرد بازگشت پیدا میکنید و میتوانید الگوهای بازگشتی را راحتتر شناسایی کنید.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
1. تعریف پایه (Base Case):
ابتدا باید بفهمید سادهترین حالتی که برای مسئله وجود دارد چیست. این حالت پایه به بازگشت پایان میدهد. اگر حالت پایه را بهدرستی تعریف نکنید، ممکن است کد شما به بینهایت تکرار برود. مثلاً، برای مسئله فاکتوریل، حالت پایه n = 0 است، زیرا 0! = 1 است و نیازی به محاسبات بیشتر نیست.
2. تقسیم مسئله (Divide the Problem):
به مسئله بهعنوان یک ترکیب از زیرمسائل نگاه کنید. ببینید که آیا میتوانید مسئله بزرگتر را به یک یا چند زیرمسئله کوچکتر تبدیل کنید. به عنوان مثال، در فاکتوریل n! = n - (n-1)! نشان میدهد که فاکتوریل n به فاکتوریل یک عدد کوچکتر، یعنی n-1 ، وابسته است.
3. قانون بازگشتی (Recursive Case):
پس از تعریف پایه، مرحلهی بازگشت را مشخص کنید. این بخش همان قسمتی است که مسئلهی بزرگتر را به یک نسخهی کوچکتر از خودش میشکند و سپس از همان تابع برای حل آن استفاده میکند. هر بار که تابع فراخوانی میشود، یکی از زیرمسائل حل میشود.
4. تصویر ذهنی از پشتهی فراخوانی (Call Stack):
هنگام کار با بازگشت، به یاد داشته باشید که هر بار که یک تابع بازگشتی فراخوانی میشود، وضعیت فعلی تابع در پشته ذخیره میشود و سپس پس از اتمام بازگشتها از پشته خارج میشود. این کمک میکند که وضعیت هر مرحله حفظ شود. بهعنوان مثال، در مسئله هانوی، هر حرکت بین میلهها در پشته ذخیره میشود تا در پایان به راهحل کلی برسیم.
5. حل با مثالهای کوچک:
برای درک بهتر، ابتدا مسئله را با نمونههای کوچک حل کنید. مثلاً در یک تابع بازگشتی فیبوناچی، ابتدا F(2) ، سپس F(3) و به همین ترتیب تا رسیدن به جواب بزرگتر حل کنید تا الگوی حل بازگشتی مشخص شود.
6. قابلیت یادگیری (Memoization) برای بهینهسازی:
گاهی بازگشت به تکرار زیاد منجر میشود، مانند محاسبهی فیبوناچی که نیاز به محاسبه چندباره اعداد دارد. در این موارد میتوانید از تکنیک یادگیری (Memoization) استفاده کنید تا نتایج قبلی را ذخیره کرده و از دوبارهکاری جلوگیری کنید.
7. محدودیتهای بازگشت (Limitations of Recursion):
همیشه توجه داشته باشید که بازگشت در مسائل با عمق زیاد، میتواند منجر به پر شدن پشته شود و خطای Stack Overflow ایجاد کند. بنابراین در مسائل پیچیده باید دقت کنید که آیا بازگشت مناسبترین روش است یا میتوان از تکرار استفاده کرد.
در نهایت، با تمرین و تحلیل بیشتر روی مسائل مختلف، درک بهتری از کاربرد بازگشت پیدا میکنید و میتوانید الگوهای بازگشتی را راحتتر شناسایی کنید.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
🌐 شبکههای عصبی گرافی (GNN) 🌐
شبکههای عصبی گرافی یک ابزار قدرتمند برای پردازش دادههای ساختاریافته به شکل گراف هستند و در کاربردهای بسیاری مانند شبکههای اجتماعی، شیمی، و تحلیل رفتار کاربر استفاده میشوند. برای آشنایی بیشتر با مفاهیم و روشهای پیادهسازی GNN و دسترسی به آخرین منابع تحقیقاتی، پیشنهاد میکنم به لینک زیر مراجعه کنید:
https://distill.pub/2021/gnn-intro/
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
شبکههای عصبی گرافی یک ابزار قدرتمند برای پردازش دادههای ساختاریافته به شکل گراف هستند و در کاربردهای بسیاری مانند شبکههای اجتماعی، شیمی، و تحلیل رفتار کاربر استفاده میشوند. برای آشنایی بیشتر با مفاهیم و روشهای پیادهسازی GNN و دسترسی به آخرین منابع تحقیقاتی، پیشنهاد میکنم به لینک زیر مراجعه کنید:
https://distill.pub/2021/gnn-intro/
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
🌟 عنوان مقاله:
"Masked Autoencoders Are Scalable Vision Learners"
🧩 MAE Architecture:
در این معماری، در مرحلهی pre-training، حدود ۷۵٪ از image patches بهطور تصادفی ماسک میشوند و تنها زیرمجموعهای از visible patches به encoder داده میشود. پس از encoding، mask tokens اضافه شده و همراه با encoded patches، به decoder ارسال میشوند تا تصویر اصلی در سطح pixel بازسازی شود. پس از اتمام pre-training، decoder کنار گذاشته میشود و encoder برای انجام recognition tasks بر روی تصاویر کامل استفاده میشود.
Paper:https://arxiv.org/abs/2111.06377
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
"Masked Autoencoders Are Scalable Vision Learners"
🧩 MAE Architecture:
در این معماری، در مرحلهی pre-training، حدود ۷۵٪ از image patches بهطور تصادفی ماسک میشوند و تنها زیرمجموعهای از visible patches به encoder داده میشود. پس از encoding، mask tokens اضافه شده و همراه با encoded patches، به decoder ارسال میشوند تا تصویر اصلی در سطح pixel بازسازی شود. پس از اتمام pre-training، decoder کنار گذاشته میشود و encoder برای انجام recognition tasks بر روی تصاویر کامل استفاده میشود.
Paper:https://arxiv.org/abs/2111.06377
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
Signals and Systems.rar
76 MB
🔹 سیگنال و سیستم یکی از دروس بنیادی در رشتههای برق و کامپیوتره که مفاهیمش توی بسیاری از حوزهها کاربرد داره. برای مثال، ایدهی کانولوشن در شبکههای عصبی کانولوشنی (CNN) که بهصورت گسترده در پردازش تصویر استفاده میشه، از همین درس سرچشمه گرفته. بنابراین، یادگیری دقیق این درس میتونه پایه خوبی برای درک عمیقتر مباحث پیچیدهتر باشه.
جزوه: دکتر ثریا رستگار
دانشگاه ایلام 📘💡
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
جزوه: دکتر ثریا رستگار
دانشگاه ایلام 📘💡
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
🔹 اخیراً الگوریتمی برای تشخیص ارقام دستنویس از صفر و تنها با استفاده از Numpy پیادهسازی شده، بدون اینکه از کتابخانههای پیشرفتهای مثل TensorFlow یا PyTorch کمک گرفته بشه. این پروژه تجربهای عملی و عمیق در اصول یادگیری عمیق بود و به درک بهتر مفاهیمی همچون شبکههای عصبی، پسانتشار خطا و نزول گرادیان دستهای کمک کرد.
🔹 یکی از ویژگیهای جالب این پیادهسازی، ساختار شیءگرا آن است تا نمونههای مختلف با تعداد نورونهای متفاوت ساخته بشه و نتایج را با هم مقایسه کنیم. برای آموزش مدل از دیتاست معروف MNIST استفاده شده که شامل ۶۰,۰۰۰ تصویر آموزشی و ۱۰,۰۰۰ تصویر تست است.
این پروژه به من یادآوری می کند که یادگیری اصولی و پیادهسازی دستی الگوریتمها میتواند پایهای محکم برای درک عمیقتر مفاهیم هوش مصنوعی فراهم کند. 👨💻
link GitHub: https://github.com/filipecostaribeiro/HandwrittenDigitClassifier
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
🔹 یکی از ویژگیهای جالب این پیادهسازی، ساختار شیءگرا آن است تا نمونههای مختلف با تعداد نورونهای متفاوت ساخته بشه و نتایج را با هم مقایسه کنیم. برای آموزش مدل از دیتاست معروف MNIST استفاده شده که شامل ۶۰,۰۰۰ تصویر آموزشی و ۱۰,۰۰۰ تصویر تست است.
این پروژه به من یادآوری می کند که یادگیری اصولی و پیادهسازی دستی الگوریتمها میتواند پایهای محکم برای درک عمیقتر مفاهیم هوش مصنوعی فراهم کند. 👨💻
link GitHub: https://github.com/filipecostaribeiro/HandwrittenDigitClassifier
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer