This media is not supported in your browser
VIEW IN TELEGRAM
نسخه اولیه چت بات پشتیبانی
به زودی در قالب یک پروژه جنگو به صورت اوپن سورس، منتشر خواهد شد.
روی ویدئو زوم کنید، مک خیلی دردسر داره برای ضبط. 🥱
به زودی در قالب یک پروژه جنگو به صورت اوپن سورس، منتشر خواهد شد.
روی ویدئو زوم کنید، مک خیلی دردسر داره برای ضبط. 🥱
2❤1
چت بات هوشمند با استفاده از fasttext embedding منتشر شد
برای بک اند از جنگو استفاده شده و کاربر میتونه سوالات مد نظرش رو اونجا تعریف کنه و مدل سوالی که کاربر میپرسه رو با سوالاتی که وارد کردید تطبیق میده و هر کدوم شبیه تر بود، جواب رو به کاربر نشون میده.
ضمناً چون مدل local هست، هزینهای هم نداره.
https://github.com/ITheEqualizer/Chatbot
برای بک اند از جنگو استفاده شده و کاربر میتونه سوالات مد نظرش رو اونجا تعریف کنه و مدل سوالی که کاربر میپرسه رو با سوالاتی که وارد کردید تطبیق میده و هر کدوم شبیه تر بود، جواب رو به کاربر نشون میده.
ضمناً چون مدل local هست، هزینهای هم نداره.
https://github.com/ITheEqualizer/Chatbot
GitHub
GitHub - ITheEqualizer/Chatbot: A lightweight and flexible Question & Answer chatbot built with Django and powered by FastText…
A lightweight and flexible Question & Answer chatbot built with Django and powered by FastText embeddings. - ITheEqualizer/Chatbot
5❤1
PyKadeh
چت بات هوشمند با استفاده از fasttext embedding منتشر شد برای بک اند از جنگو استفاده شده و کاربر میتونه سوالات مد نظرش رو اونجا تعریف کنه و مدل سوالی که کاربر میپرسه رو با سوالاتی که وارد کردید تطبیق میده و هر کدوم شبیه تر بود، جواب رو به کاربر نشون میده.…
نسخه فارسی هم طی امروز یا فردا منتشر میشه، چون زبان فارسی یکم ریزه کاری بیشتری داره و مدل پردازشش هم حجیم تره.
❤1
چت بات بروزرسانی و زبان فارسی اضافه شد
همچنین توضیحات فارسی کامل به ریپو اضافه شد.
برای پیش پردازش از hazm استفاده شده و همچنین نرمالایز بسیار کاملی انجام میشه، مثلاً سلااااااااااام تبدیل به سلام میشه و بعد از اون توسط hazm پردازش میشه.
https://github.com/ITheEqualizer/Chatbot
همچنین توضیحات فارسی کامل به ریپو اضافه شد.
برای پیش پردازش از hazm استفاده شده و همچنین نرمالایز بسیار کاملی انجام میشه، مثلاً سلااااااااااام تبدیل به سلام میشه و بعد از اون توسط hazm پردازش میشه.
https://github.com/ITheEqualizer/Chatbot
GitHub
GitHub - ITheEqualizer/Chatbot: A lightweight and flexible Question & Answer chatbot built with Django and powered by FastText…
A lightweight and flexible Question & Answer chatbot built with Django and powered by FastText embeddings. - ITheEqualizer/Chatbot
7❤3
هوش مصنوعی، در سادهترین تعریف، ترکیبی از علم داده، ریاضیات، و علوم کامپیوتر است که هدف آن ساخت سیستمهایی است که بتوانند درک، استدلال، و تصمیمگیری خودکار انجام دهند.
اما در لایههای عمیقتر، هوش مصنوعی دیگر فقط “برنامهنویسی ماشینی” نیست؛ بلکه شامل مدلهایی است که از دادهها میآموزند و خود را با شرایط جدید تطبیق میدهند — همان چیزی که به آن یادگیری ماشین (Machine Learning) گفته میشود.
یادگیری ماشین: مغز متفکر هوش مصنوعی
در یادگیری ماشین، به جای اینکه به کامپیوتر بگوییم “چطور کاری را انجام دهد”، فقط به آن “داده” و “نتیجه” را نشان میدهیم تا خودش الگوها را پیدا کند.
سه رویکرد اصلی در یادگیری ماشین وجود دارد:
یادگیری نظارتشده (Supervised Learning):
مدل با دادههای برچسبدار آموزش میبیند. مثال: تشخیص ایمیل اسپم یا غیر اسپم.
یادگیری بدون نظارت (Unsupervised Learning):
مدل سعی میکند ساختار پنهان دادهها را کشف کند. مثال: خوشهبندی مشتریان بر اساس رفتار خرید.
یادگیری تقویتی (Reinforcement Learning):
سیستم از طریق آزمون و خطا و دریافت پاداش یا جریمه، راهحل بهینه را یاد میگیرد. مثال: رباتی که یاد میگیرد در محیطی ناشناخته حرکت کند.
یادگیری عمیق (Deep Learning): الهام از مغز انسان
یادگیری عمیق یکی از شاخههای پیشرفتهتر یادگیری ماشین است که از شبکههای عصبی مصنوعی (Neural Networks) استفاده میکند.
این شبکهها از لایههای متعدد تشکیل شدهاند و میتوانند الگوهای پیچیدهای را در دادهها تشخیص دهند.
مدلهای بزرگ زبانی (مثل ChatGPT) یا سیستمهای بینایی ماشین (مثل تشخیص چهره) بر پایهی همین معماریها ساخته شدهاند.
مدلهای زبانی و انقلاب در پردازش متن
در چند سال اخیر، مدلهای زبانی بزرگ (Large Language Models) مانند GPT و BERT، مفهوم «درک زبان طبیعی» را دگرگون کردهاند.
این مدلها با میلیاردها پارامتر آموزش میبینند و قادرند متن تولید کنند، سوال پاسخ دهند، کد بنویسند و حتی منطق زبانی را تقلید کنند.
قدرت این مدلها از پیشپردازش عظیم دادههای متنی و معماری ترنسفورمر (Transformer) ناشی میشود که ساختار جمله را در سطح معنا و بافت تحلیل میکند.
چالشها و دغدغههای اخلاقی
در کنار پیشرفتها، چالشهای مهمی هم وجود دارد:
سوگیری الگوریتمی: مدلها از دادههای انسانی میآموزند، پس ممکن است همان خطاها و پیشداوریها را بازتولید کنند.
حریم خصوصی: جمعآوری دادههای بزرگ، خطر نشت یا سوءاستفاده از اطلاعات را افزایش میدهد.
وابستگی بیش از حد: استفادهی بیرویه از هوش مصنوعی میتواند منجر به کاهش مهارتهای انسانی در تحلیل و خلاقیت شود.
آیندهی هوش مصنوعی: همزیستی انسان و ماشین
در آینده، تمرکز اصلی از “خودکارسازی کامل” به سمت “همافزایی انسان و ماشین” پیش میرود.
مدلهای هوش مصنوعی قرار نیست جایگزین انسان شوند، بلکه قرار است ابزارهایی برای تقویت توان ذهنی، خلاقیت و تصمیمگیری انسان باشند.
در واقع، متخصصان آینده کسانی خواهند بود که میدانند چطور با هوش مصنوعی همکاری کنند، نه صرفاً از آن استفاده.
اما در لایههای عمیقتر، هوش مصنوعی دیگر فقط “برنامهنویسی ماشینی” نیست؛ بلکه شامل مدلهایی است که از دادهها میآموزند و خود را با شرایط جدید تطبیق میدهند — همان چیزی که به آن یادگیری ماشین (Machine Learning) گفته میشود.
یادگیری ماشین: مغز متفکر هوش مصنوعی
در یادگیری ماشین، به جای اینکه به کامپیوتر بگوییم “چطور کاری را انجام دهد”، فقط به آن “داده” و “نتیجه” را نشان میدهیم تا خودش الگوها را پیدا کند.
سه رویکرد اصلی در یادگیری ماشین وجود دارد:
یادگیری نظارتشده (Supervised Learning):
مدل با دادههای برچسبدار آموزش میبیند. مثال: تشخیص ایمیل اسپم یا غیر اسپم.
یادگیری بدون نظارت (Unsupervised Learning):
مدل سعی میکند ساختار پنهان دادهها را کشف کند. مثال: خوشهبندی مشتریان بر اساس رفتار خرید.
یادگیری تقویتی (Reinforcement Learning):
سیستم از طریق آزمون و خطا و دریافت پاداش یا جریمه، راهحل بهینه را یاد میگیرد. مثال: رباتی که یاد میگیرد در محیطی ناشناخته حرکت کند.
یادگیری عمیق (Deep Learning): الهام از مغز انسان
یادگیری عمیق یکی از شاخههای پیشرفتهتر یادگیری ماشین است که از شبکههای عصبی مصنوعی (Neural Networks) استفاده میکند.
این شبکهها از لایههای متعدد تشکیل شدهاند و میتوانند الگوهای پیچیدهای را در دادهها تشخیص دهند.
مدلهای بزرگ زبانی (مثل ChatGPT) یا سیستمهای بینایی ماشین (مثل تشخیص چهره) بر پایهی همین معماریها ساخته شدهاند.
مدلهای زبانی و انقلاب در پردازش متن
در چند سال اخیر، مدلهای زبانی بزرگ (Large Language Models) مانند GPT و BERT، مفهوم «درک زبان طبیعی» را دگرگون کردهاند.
این مدلها با میلیاردها پارامتر آموزش میبینند و قادرند متن تولید کنند، سوال پاسخ دهند، کد بنویسند و حتی منطق زبانی را تقلید کنند.
قدرت این مدلها از پیشپردازش عظیم دادههای متنی و معماری ترنسفورمر (Transformer) ناشی میشود که ساختار جمله را در سطح معنا و بافت تحلیل میکند.
چالشها و دغدغههای اخلاقی
در کنار پیشرفتها، چالشهای مهمی هم وجود دارد:
سوگیری الگوریتمی: مدلها از دادههای انسانی میآموزند، پس ممکن است همان خطاها و پیشداوریها را بازتولید کنند.
حریم خصوصی: جمعآوری دادههای بزرگ، خطر نشت یا سوءاستفاده از اطلاعات را افزایش میدهد.
وابستگی بیش از حد: استفادهی بیرویه از هوش مصنوعی میتواند منجر به کاهش مهارتهای انسانی در تحلیل و خلاقیت شود.
آیندهی هوش مصنوعی: همزیستی انسان و ماشین
در آینده، تمرکز اصلی از “خودکارسازی کامل” به سمت “همافزایی انسان و ماشین” پیش میرود.
مدلهای هوش مصنوعی قرار نیست جایگزین انسان شوند، بلکه قرار است ابزارهایی برای تقویت توان ذهنی، خلاقیت و تصمیمگیری انسان باشند.
در واقع، متخصصان آینده کسانی خواهند بود که میدانند چطور با هوش مصنوعی همکاری کنند، نه صرفاً از آن استفاده.
🎯 پروژه جدید من: بینایی ماشین با یادگیری عمیق (Computer Vision)
توی این پروژه با استفاده از شبکه عصبی کانولوشنی (CNN)، مدلی ساختم که میتونه اشیاء رو از روی تصاویر تشخیص بده 📸🧠
چند تا نکته دربارهٔ پروژه:
- از TensorFlow و Keras استفاده کردم
- مدل آموزشدیده ذخیره میشه و قابل استفاده مجدد هست
- روی دیتاست CIFAR-10 تست شده
- دقت مدل بالای ۸۵٪ به دست اومده 💪
📎 سورس کامل پروژه روی گیتهاب:
🔗 github.com/ITheEqualizer/Computer-Vision
توی این پروژه با استفاده از شبکه عصبی کانولوشنی (CNN)، مدلی ساختم که میتونه اشیاء رو از روی تصاویر تشخیص بده 📸🧠
چند تا نکته دربارهٔ پروژه:
- از TensorFlow و Keras استفاده کردم
- مدل آموزشدیده ذخیره میشه و قابل استفاده مجدد هست
- روی دیتاست CIFAR-10 تست شده
- دقت مدل بالای ۸۵٪ به دست اومده 💪
📎 سورس کامل پروژه روی گیتهاب:
🔗 github.com/ITheEqualizer/Computer-Vision
GitHub
GitHub - ITheEqualizer/Computer-Vision: A deep learning project which can identify the item of the given picture.
A deep learning project which can identify the item of the given picture. - ITheEqualizer/Computer-Vision
2
زمان جنگ جهانی دوم، گروهی از پژوهشگران مأمور شدند تا راهی برای افزایش دوام هواپیماهای جنگی پیدا کنند.
آنها هواپیماهایی را بررسی کردند که از جنگ برگشته بودند. بیشتر گلولهها روی بالها و دم هواپیما دیده میشد.
پیشنهاد اولیه این بود که همین بخشها باید تقویت شوند.
اما یک ریاضیدان به نام آبراهام والد نکته مهمی را گوشزد کرد:
این هواپیماها با وجود تمام آن گلولهها، توانستهاند برگردند.
بخشهایی که تیر نخوردهاند، همان نقاط حساسی هستند که اگر آسیب ببینند، هواپیما هرگز برنمیگردد.
پس باید همان قسمتها تقویت شوند.
این داستان یک نمونه کلاسیک از «بایاس بقا»ست.
ما اغلب فقط بازماندهها را میبینیم و فراموش میکنیم آنهایی که شکست خوردهاند، دیگر پیش چشم ما نیستند.
چه در دادهها و چه در زندگی، مراقب باشیم فقط به دیدهها تکیه نکنیم.
بعضی وقتها آنچه دیده نمیشود، از آنچه میبینیم مهمتر است.
آنها هواپیماهایی را بررسی کردند که از جنگ برگشته بودند. بیشتر گلولهها روی بالها و دم هواپیما دیده میشد.
پیشنهاد اولیه این بود که همین بخشها باید تقویت شوند.
اما یک ریاضیدان به نام آبراهام والد نکته مهمی را گوشزد کرد:
این هواپیماها با وجود تمام آن گلولهها، توانستهاند برگردند.
بخشهایی که تیر نخوردهاند، همان نقاط حساسی هستند که اگر آسیب ببینند، هواپیما هرگز برنمیگردد.
پس باید همان قسمتها تقویت شوند.
این داستان یک نمونه کلاسیک از «بایاس بقا»ست.
ما اغلب فقط بازماندهها را میبینیم و فراموش میکنیم آنهایی که شکست خوردهاند، دیگر پیش چشم ما نیستند.
چه در دادهها و چه در زندگی، مراقب باشیم فقط به دیدهها تکیه نکنیم.
بعضی وقتها آنچه دیده نمیشود، از آنچه میبینیم مهمتر است.
❤1
یه نوجوان 18 ساله اومده یه اپلیکیشن ساخته که کالری موجود تو غذایی که به صورت عکس بهش ارسال شده رو نشون میده!
نکته جالب اینه که این ایده 30 میلیون دلار فاند گرفته!
حالا پشت زمینه این ایده چیه؟ یه پرامپت با یه عکس بفرست برای ChatGPT و خروجی بگیر! یعنی کل کاری که کرده اینه که پرامپت مناسب این کار رو پیدا کرده و تو اپلیکیشنش استفاده کرده!
نکته جالب اینه که این ایده 30 میلیون دلار فاند گرفته!
حالا پشت زمینه این ایده چیه؟ یه پرامپت با یه عکس بفرست برای ChatGPT و خروجی بگیر! یعنی کل کاری که کرده اینه که پرامپت مناسب این کار رو پیدا کرده و تو اپلیکیشنش استفاده کرده!
📚 آشنایی با کتابخانهی datetime در پایتون ⏰
اگر با زمان و تاریخ سروکار داری (مثل ثبت لاگها، زمانبندی کارها یا ساخت تایمرها)، کتابخانهی قدرتمند و داخلی datetime یکی از دوستداشتنیترین ابزارهای پایتونه!
بیاید چند تا مثال ساده ولی مفید ببینیم 👇
🕒 بهدست آوردن زمان و تاریخ فعلی:
📆 فقط تاریخ یا فقط ساعت:
⏳ ساخت زمان دلخواه:
🧮 محاسبه فاصله بین دو تاریخ:
🧠 نکته کاربردی:
برای تبدیل زمان به فرمت دلخواه از متد
✨ خلاصه:
کتابخانهی datetime بهصورت پیشفرض در پایتون نصب شده و برای هر نوع کار با زمان، تاریخ و فاصله بین آنها فوقالعاده کاربردی است.a
#پایتون #آموزش_پایتون #datetime #ترفند_کدنویسی
اگر با زمان و تاریخ سروکار داری (مثل ثبت لاگها، زمانبندی کارها یا ساخت تایمرها)، کتابخانهی قدرتمند و داخلی datetime یکی از دوستداشتنیترین ابزارهای پایتونه!
بیاید چند تا مثال ساده ولی مفید ببینیم 👇
🕒 بهدست آوردن زمان و تاریخ فعلی:
from datetime import datetime
now = datetime.now()
print(now)
# خروجی مثل: 2025-11-11 14:35:22.456789
📆 فقط تاریخ یا فقط ساعت:
print(now.date()) # خروجی: 2025-11-11
print(now.time()) # خروجی: 14:35:22.456789
⏳ ساخت زمان دلخواه:
birthday = datetime(1998, 7, 21, 9, 30)
print(birthday)
# 1998-07-21 09:30:00
🧮 محاسبه فاصله بین دو تاریخ:
from datetime import date
start = date(2025, 1, 1)
end = date(2025, 11, 11)
delta = end - start
print(delta.days) # خروجی: 314
🧠 نکته کاربردی:
برای تبدیل زمان به فرمت دلخواه از متد
strftime() استفاده کن:print(now.strftime("%d/%m/%Y %H:%M"))
# خروجی: 11/11/2025 14:35✨ خلاصه:
کتابخانهی datetime بهصورت پیشفرض در پایتون نصب شده و برای هر نوع کار با زمان، تاریخ و فاصله بین آنها فوقالعاده کاربردی است.a
#پایتون #آموزش_پایتون #datetime #ترفند_کدنویسی
9❤1
خیلی جالبه که به محض اینکه API سایتم رو راه اندازی کردم، چند دقیقه بعد سرویس CloudFlare از دسترس خارج شد.
شرمنده ام کلودفلر جان...
شرمنده ام کلودفلر جان...
16❤3
🔴 قطعی تاریخی کلودفلر – ۱۸ نوامبر ۲۰۲۵ (۲۷ آبان ۱۴۰۴)
یکی از بزرگترین قطعیهای تاریخ اینترنت
رخ داد!
از حدود ۱۴:۵۰ به وقت ایران، میلیونها سایت و سرویس معروف (از جمله X، ChatGPT، Discord، Spotify، Grindr و …) همزمان داون شدند.
مدت قطعی اصلی: بیش از ۳ ساعت
بدترین قطعی کلودفلر از سال ۲۰۱۹ تا حالا
علت واقعی (طبق گزارش رسمی کلودفلر): یک تغییر ساده در مجوزهای دسترسی دیتابیس ClickHouse → کوئری هر ۵ دقیقه یکبار شروع به تولید ردیفهای تکراری کرد → فایل پیکربندی Bot Management از ۶۰ فیچر به بیش از ۵۰۰ فیچر باد کرد → فایل غولآسا به تمام سرورهای جهانی پخش شد → نرمافزار اصلی (نوشتهشده با Rust) پنیک کرد و خطای ۵xx داد.
جالبه که اول فکر کردن حمله DDoS عظیمه، چون مشکل متناوب بود!
سرویسهای آسیبدیده:
بخش CDN و امنیت اصلی
بخش های Turnstile، Workers KV
داشبورد و لاگین کاربران
همچنین Cloudflare Access و WARP
حتی صفحه وضعیت خودشون هم داون شد!
راهحل: برگرداندن نسخه قدیمی فایل + پچ فوری کد
کلودفلر قول داده:
اعتبارسنجی سختگیرانهتر فایلهای پیکربندی
محدودیت سخت روی اندازه فایلها
تستهای بهتر قبل از rollout
این قطعی نشون داد چقدر اینترنت امروز به چند شرکت معدود وابستهست؛ یک باگ ساده داخلی میتونه نصف دنیا رو فلج کنه!
پستمورتِم رسمی:
https://blog.cloudflare.com/18-november-2025-outage/
#کلودفلر #قطعی_اینترنت #CloudflareOutage
یکی از بزرگترین قطعیهای تاریخ اینترنت
رخ داد!
از حدود ۱۴:۵۰ به وقت ایران، میلیونها سایت و سرویس معروف (از جمله X، ChatGPT، Discord، Spotify، Grindr و …) همزمان داون شدند.
مدت قطعی اصلی: بیش از ۳ ساعت
بدترین قطعی کلودفلر از سال ۲۰۱۹ تا حالا
علت واقعی (طبق گزارش رسمی کلودفلر): یک تغییر ساده در مجوزهای دسترسی دیتابیس ClickHouse → کوئری هر ۵ دقیقه یکبار شروع به تولید ردیفهای تکراری کرد → فایل پیکربندی Bot Management از ۶۰ فیچر به بیش از ۵۰۰ فیچر باد کرد → فایل غولآسا به تمام سرورهای جهانی پخش شد → نرمافزار اصلی (نوشتهشده با Rust) پنیک کرد و خطای ۵xx داد.
جالبه که اول فکر کردن حمله DDoS عظیمه، چون مشکل متناوب بود!
سرویسهای آسیبدیده:
بخش CDN و امنیت اصلی
بخش های Turnstile، Workers KV
داشبورد و لاگین کاربران
همچنین Cloudflare Access و WARP
حتی صفحه وضعیت خودشون هم داون شد!
راهحل: برگرداندن نسخه قدیمی فایل + پچ فوری کد
کلودفلر قول داده:
اعتبارسنجی سختگیرانهتر فایلهای پیکربندی
محدودیت سخت روی اندازه فایلها
تستهای بهتر قبل از rollout
این قطعی نشون داد چقدر اینترنت امروز به چند شرکت معدود وابستهست؛ یک باگ ساده داخلی میتونه نصف دنیا رو فلج کنه!
پستمورتِم رسمی:
https://blog.cloudflare.com/18-november-2025-outage/
#کلودفلر #قطعی_اینترنت #CloudflareOutage
The Cloudflare Blog
Cloudflare outage on November 18, 2025
Cloudflare suffered a service outage on November 18, 2025. The outage was triggered by a bug in generation logic for a Bot Management feature file causing many Cloudflare services to be affected.
7
🚀 راهاندازی API وبسایت AliZakaee.ir
بالاخره API رسمی وبسایتم رو راهاندازی کردم!
از این به بعد میتونید بهصورت مستقیم و از طریق درخواستهای JSON به محتوای بلاگ دسترسی داشته باشید.
🔗 آدرس اصلی API:
https://alizakaee.ir/api/
📌 لیست پستها:
https://alizakaee.ir/api/posts/
این API با Django REST Framework ساخته شده و فعلاً به صورت عمومی و Read-Only در دسترسه.
هدفم اینه که توسعهدهندهها و کسایی که میخوان دادههای بلاگ رو توی اپلیکیشنها یا سرویسهای خودشون استفاده کنن، بتونن خیلی راحت بهش متصل بشن.
در پست جدید بلاگم، کامل توضیح دادم که API چطور کار میکنه، چه فیلدهایی برمیگردونه، و چطور میشه ازش استفاده کرد.
👇 میتونید از لینک زیر مطالعه کنید:
🌐 لینک پست بلاگ:
https://alizakaee.ir/blog/%D8%B1%D8%A7%D9%87%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-api-%D9%88%D8%A8%D8%B3%D8%A7%DB%8C%D8%AA-alizakaeeir/
بالاخره API رسمی وبسایتم رو راهاندازی کردم!
از این به بعد میتونید بهصورت مستقیم و از طریق درخواستهای JSON به محتوای بلاگ دسترسی داشته باشید.
🔗 آدرس اصلی API:
https://alizakaee.ir/api/
📌 لیست پستها:
https://alizakaee.ir/api/posts/
این API با Django REST Framework ساخته شده و فعلاً به صورت عمومی و Read-Only در دسترسه.
هدفم اینه که توسعهدهندهها و کسایی که میخوان دادههای بلاگ رو توی اپلیکیشنها یا سرویسهای خودشون استفاده کنن، بتونن خیلی راحت بهش متصل بشن.
در پست جدید بلاگم، کامل توضیح دادم که API چطور کار میکنه، چه فیلدهایی برمیگردونه، و چطور میشه ازش استفاده کرد.
👇 میتونید از لینک زیر مطالعه کنید:
🌐 لینک پست بلاگ:
https://alizakaee.ir/blog/%D8%B1%D8%A7%D9%87%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-api-%D9%88%D8%A8%D8%B3%D8%A7%DB%8C%D8%AA-alizakaeeir/
alizakaee.ir
راهاندازی API وبسایت AliZakaee.ir
7
از شدت خستگی و بی حوصلگی برای تست نوشتن و همینطور برای بررسی کردن اینکه کیفیت تست نویسی Claude Sonnet 4.5 چطور هستش، ازش خواستم برام تست بنویسه با توجه به کدبیسم.
اول اینکه ٢۵٠٠ خط تست نوشت، ٢۵٠٠!
دوم اینکه به edge case هایی فکر کرد که عملاً من نمیدونستم حتی میتونه مشکل ایجاد کنه، خط به خط کد رو خوندم و میتونم بگم فوقالعاده هست!
یک موردی هم که خیلی شنیدم که میگن A.I. فقط تستی مینویسه که پس بشه، اصلاً اینطور نبود و اتفاقاً داخل ران اول، ٩تا تست فیل شد که منتهی شد به رفع مشکل کد توسط من.
خلاصه اینکه مواردی که خلاقیت دو چندان نمیخواد مثل تست نویسی رو بدین به A.I. چون اون هم میتونه خلاقیت بیشتری داشته باشه و با توجه به دایره اطلاعاتش کیس های بیشتری رو لحاظ کنه و هم اینکه در زمان شما صرفهجویی کنه و شما روی فیچرهای اصلی کار کنید.
و اینکه داخل پرامپتتون حتماً بیان کنید که ملاکتون صرفاً پس شدن تست ها نیست و میخواین جامع و کامل باشن و ازش بخواین کامل هم کامنت گذاری کنه.
اول اینکه ٢۵٠٠ خط تست نوشت، ٢۵٠٠!
دوم اینکه به edge case هایی فکر کرد که عملاً من نمیدونستم حتی میتونه مشکل ایجاد کنه، خط به خط کد رو خوندم و میتونم بگم فوقالعاده هست!
یک موردی هم که خیلی شنیدم که میگن A.I. فقط تستی مینویسه که پس بشه، اصلاً اینطور نبود و اتفاقاً داخل ران اول، ٩تا تست فیل شد که منتهی شد به رفع مشکل کد توسط من.
خلاصه اینکه مواردی که خلاقیت دو چندان نمیخواد مثل تست نویسی رو بدین به A.I. چون اون هم میتونه خلاقیت بیشتری داشته باشه و با توجه به دایره اطلاعاتش کیس های بیشتری رو لحاظ کنه و هم اینکه در زمان شما صرفهجویی کنه و شما روی فیچرهای اصلی کار کنید.
و اینکه داخل پرامپتتون حتماً بیان کنید که ملاکتون صرفاً پس شدن تست ها نیست و میخواین جامع و کامل باشن و ازش بخواین کامل هم کامنت گذاری کنه.
10
در زمینه دیتای مورد نیاز برای آموزش شما همیشه دو دسته دیتا دارید، آموزش و تست
اما آیا این تقسیم بندی درسته؟
در مورد دیتای آموزش بحثی نیست و شما ازش برای آموزش مدل استفاده میکنید.
اما در مورد دیتای تست، این یک اشتباه رایج و خیلی بزرگه چون شما برای آموزش یک مدل نیاز به دیتای آموزش دارید و دیتا توسعه!
برای مثال اگر قرار باشه تشخیص ناهنجاری رو پیادهسازی کنید، چندین مدل مختلف با توجه به سناریو قابل استفاده هستش و شما عملاً باید بهترین مدل رو انتخاب کنید و این مورد توسط دیتای توسعه (dev) انجام میشه و با توجه به امتیاز و دقت کسب شده در این مرحله شما بهترین مدل رو انتخاب میکنید.
در واقع دیتای توسعه همون دیتاییه که شما ازش برای انتخاب مدل، تنظیم ابرپارامترها (hyperparameters)، جلوگیری از overfitting و تنظیم معماری استفاده میکنید. این دقیقاً چیزی هست که در ادبیات علمی به validation set شناخته میشه.
پس دیتای تست چی شد؟
تست عملاً اختیاری هستش و ضروری نیست و بررسی مدل بر حسب دیتای تست صرفاً برای این هست که شما بتونید بدون bias به عملکرد اون مدل پی ببرید اما زمانی که مدل شما انتخاب شده باشه با توجه به دیتای dev، شما الزاماً نیازی به دیتای تست ندارید.
به صورت علمی، دیتای تست فقط یکبار و در پایان فرآیند آموزش استفاده میشه تا عملکرد نهایی مدل بدون هیچگونه bias ناشی از مشاهده قبلی دیتا اندازهگیری بشه
دلیل علمی این موضوع اینه که هرچقدر روی dev تست کنید و روی dev بهبود بدید، dev برای شما اطلاعات لیک میکنه (information leakage) و به مرور باعث overfitting نسبت به dev میشه. تست از این جهت ضروری نیست که روی روند آموزش نقشی نداره و فقط یک معیار نهایی برای گزارش عملکرده.
پس به صورت کلی، تقسیم بندی دیتا به دو دسته آموزش و تست یک اشتباه رایجه و درست این قضیه یا دیتای آموزش و توسعه هست یا آموزش و توسعه و تست.
اما آیا این تقسیم بندی درسته؟
در مورد دیتای آموزش بحثی نیست و شما ازش برای آموزش مدل استفاده میکنید.
اما در مورد دیتای تست، این یک اشتباه رایج و خیلی بزرگه چون شما برای آموزش یک مدل نیاز به دیتای آموزش دارید و دیتا توسعه!
برای مثال اگر قرار باشه تشخیص ناهنجاری رو پیادهسازی کنید، چندین مدل مختلف با توجه به سناریو قابل استفاده هستش و شما عملاً باید بهترین مدل رو انتخاب کنید و این مورد توسط دیتای توسعه (dev) انجام میشه و با توجه به امتیاز و دقت کسب شده در این مرحله شما بهترین مدل رو انتخاب میکنید.
در واقع دیتای توسعه همون دیتاییه که شما ازش برای انتخاب مدل، تنظیم ابرپارامترها (hyperparameters)، جلوگیری از overfitting و تنظیم معماری استفاده میکنید. این دقیقاً چیزی هست که در ادبیات علمی به validation set شناخته میشه.
پس دیتای تست چی شد؟
تست عملاً اختیاری هستش و ضروری نیست و بررسی مدل بر حسب دیتای تست صرفاً برای این هست که شما بتونید بدون bias به عملکرد اون مدل پی ببرید اما زمانی که مدل شما انتخاب شده باشه با توجه به دیتای dev، شما الزاماً نیازی به دیتای تست ندارید.
به صورت علمی، دیتای تست فقط یکبار و در پایان فرآیند آموزش استفاده میشه تا عملکرد نهایی مدل بدون هیچگونه bias ناشی از مشاهده قبلی دیتا اندازهگیری بشه
دلیل علمی این موضوع اینه که هرچقدر روی dev تست کنید و روی dev بهبود بدید، dev برای شما اطلاعات لیک میکنه (information leakage) و به مرور باعث overfitting نسبت به dev میشه. تست از این جهت ضروری نیست که روی روند آموزش نقشی نداره و فقط یک معیار نهایی برای گزارش عملکرده.
پس به صورت کلی، تقسیم بندی دیتا به دو دسته آموزش و تست یک اشتباه رایجه و درست این قضیه یا دیتای آموزش و توسعه هست یا آموزش و توسعه و تست.
❤3
در صورتی که بخواین بررسی کنید مدل آموزش دیده توسط شما، دچار underfitting یا overfitting شده یا نه باید واریانس و bias (که ما اینجا از جهت گیری استفاده میکنیم برای بیانش) رو بررسی کنید.
در بررسی داده های ما که به دو دسته آموزش و توسعه تقسیم شدند ممکنه چند حالت پیش بیاد:
١. جهت گیری بالا و واریانس کم
در این حالت مدل شما دچار underfitting شده و مثل دانش آموزی هست که خوب درس نخونده و سوالات رو نمیتونه جواب بده.
در این حالت برای حل این مشکل، باید اندازه شبکه عصبی، چه از لحاظ تعداد لایه و چه نورون افزایش پیدا کنه و این مورد تقریباً همیشه باعث کاهش جهت گیری میشه و کار دیگه ای که میشه انجام داد اینه که نرخ آموزش (learning rate) رو کاهش داد که باعث میشه سرعت آموزش کاهش پیدا کنه اما مشکل جهت گیری حل بشه.
٢. جهت گیری کم و واریانس بالا:
در این حالت شما دچار overfitting شدید که مثل دانش آموزی هست که عیناً سوالات رو حفظ کرده و اگر سوالات یکم تغییر کنه دیگه نمیتونه جواب بده.
برای رفع این مشکل اول اینکه یاید حجم و تعداد داده ها رو افزایش بدید ث تقریباً این مورد همیشه باعث کاهش واریانس میشه ولی مقدار کمی هم جهت گیری رو افزایش میده و کار دیگه ای هم که میشه کرد این هست که داده ها رو منظم کرد.
—
در هر دو مورد ذکر شده میتونید مدل و معماری های مختلف رو هم تست کنید تا ببینید نتیجه بهتری خواهید داشت یا خیر اما این مورد الزاماً باعث بهبود نمیشه ولی در هر حال جزء مواردی هست که باید بررسی و تست کنید.
—
قبلاً مفهومی وجود داشت به اسم معامله بین جهت و واریانس به نحوی که روش هایی که وجود داشت مثلاً باعث کاهش واریانس و افزایش جهت گیری میشد و بالعکس اما امروزه با پیشرفت سخت افزاری و دیجیتالی شدن زندگی، عملاً هم میشه حجم شبکه عصبی رو افزایش داد و هم حجم داده بیشتری وجود داره که باعث میشه اون معامله دیگه شکل نگیره و ما بتونیم به صورت دقیق روی یکی تمرکز کنیم.
در بررسی داده های ما که به دو دسته آموزش و توسعه تقسیم شدند ممکنه چند حالت پیش بیاد:
١. جهت گیری بالا و واریانس کم
در این حالت مدل شما دچار underfitting شده و مثل دانش آموزی هست که خوب درس نخونده و سوالات رو نمیتونه جواب بده.
در این حالت برای حل این مشکل، باید اندازه شبکه عصبی، چه از لحاظ تعداد لایه و چه نورون افزایش پیدا کنه و این مورد تقریباً همیشه باعث کاهش جهت گیری میشه و کار دیگه ای که میشه انجام داد اینه که نرخ آموزش (learning rate) رو کاهش داد که باعث میشه سرعت آموزش کاهش پیدا کنه اما مشکل جهت گیری حل بشه.
٢. جهت گیری کم و واریانس بالا:
در این حالت شما دچار overfitting شدید که مثل دانش آموزی هست که عیناً سوالات رو حفظ کرده و اگر سوالات یکم تغییر کنه دیگه نمیتونه جواب بده.
برای رفع این مشکل اول اینکه یاید حجم و تعداد داده ها رو افزایش بدید ث تقریباً این مورد همیشه باعث کاهش واریانس میشه ولی مقدار کمی هم جهت گیری رو افزایش میده و کار دیگه ای هم که میشه کرد این هست که داده ها رو منظم کرد.
—
در هر دو مورد ذکر شده میتونید مدل و معماری های مختلف رو هم تست کنید تا ببینید نتیجه بهتری خواهید داشت یا خیر اما این مورد الزاماً باعث بهبود نمیشه ولی در هر حال جزء مواردی هست که باید بررسی و تست کنید.
—
قبلاً مفهومی وجود داشت به اسم معامله بین جهت و واریانس به نحوی که روش هایی که وجود داشت مثلاً باعث کاهش واریانس و افزایش جهت گیری میشد و بالعکس اما امروزه با پیشرفت سخت افزاری و دیجیتالی شدن زندگی، عملاً هم میشه حجم شبکه عصبی رو افزایش داد و هم حجم داده بیشتری وجود داره که باعث میشه اون معامله دیگه شکل نگیره و ما بتونیم به صورت دقیق روی یکی تمرکز کنیم.
7❤2
چرا منظم سازی داده ها باعث کاهش overfitting میشه؟
در صورتی که وزن های شما خیلی بزرگ باشند، این یعنی اینکه به داده های نویز هم خیلی زیاد توجه شد و یک افزایش یا کاهش کوچک در داده های ورودی باعث تغییر فوقالعاده بزرگ میشه.
ما در L1 و L2 دنبال این هستیم که وزن ها رو کوچکتر کنیم و میگیم هرچقدر وزن بیشتر باشه مدل بیشتر جریمه میشه.
تفاوت L1 و L2 در این هست که L1 بعضی از ویژگی ها رو عملاً صفر و حذف میکنه که برای انتخاب ویژگی مناسبه ولی L2 چیزی رو صفر نمیکنه بلکه نزدیک به صفر میکنه و برای زمانی مناسبه که ما چندین ویژگی داریم و نمیخوایم هیچکدوم حذف بشن.
این موارد هم که گفته شد در اصل از طریق وزن ها انجام میشه.
در مورد L2 که پر کاربردتره باید بگم که ما عملاً هر بار میایم و قبل از اعمال گرادیان اصلی، وزن ها رو در یک عدد کوچکتر از یک ضرب میکنیم که این باعث میشه هر دفعه کم بشه و به همین دلیل بهش weight decay هم میگن.
پس به صورت کلی مدل رو مجبور کنیم بیش از حد پیچیده نشه و وزنهای خیلی بزرگ نداشته باشه.
چون وزنهای بزرگ معمولاً نشونهٔ اینه که مدل روی نویز و جزئیات بیربط داده زوم کرده.
در صورتی که وزن های شما خیلی بزرگ باشند، این یعنی اینکه به داده های نویز هم خیلی زیاد توجه شد و یک افزایش یا کاهش کوچک در داده های ورودی باعث تغییر فوقالعاده بزرگ میشه.
ما در L1 و L2 دنبال این هستیم که وزن ها رو کوچکتر کنیم و میگیم هرچقدر وزن بیشتر باشه مدل بیشتر جریمه میشه.
تفاوت L1 و L2 در این هست که L1 بعضی از ویژگی ها رو عملاً صفر و حذف میکنه که برای انتخاب ویژگی مناسبه ولی L2 چیزی رو صفر نمیکنه بلکه نزدیک به صفر میکنه و برای زمانی مناسبه که ما چندین ویژگی داریم و نمیخوایم هیچکدوم حذف بشن.
این موارد هم که گفته شد در اصل از طریق وزن ها انجام میشه.
در مورد L2 که پر کاربردتره باید بگم که ما عملاً هر بار میایم و قبل از اعمال گرادیان اصلی، وزن ها رو در یک عدد کوچکتر از یک ضرب میکنیم که این باعث میشه هر دفعه کم بشه و به همین دلیل بهش weight decay هم میگن.
پس به صورت کلی مدل رو مجبور کنیم بیش از حد پیچیده نشه و وزنهای خیلی بزرگ نداشته باشه.
چون وزنهای بزرگ معمولاً نشونهٔ اینه که مدل روی نویز و جزئیات بیربط داده زوم کرده.
5❤2

