یکی از شماها پرسیده بود: «یه آدم که برنامهنویسی بلد نیست، میتونه با هوش مصنوعی یه هوش مصنوعی بسازه؟» جوابِ عملیش این مقالهست. با هم از صفر یه مدلِ هوش مصنوعی میسازیم که شعر حافظ میگه — و توی این مسیر میفهمیم هوش مصنوعی واقعاً چطور ساخته میشه.
ایده: یه GPT که شعر حافظ میگه
اسم مدل رو گذاشتم حافظنویس: یه GPT کوچیک که از صفر روی دیوان حافظ آموزش دیده. این دقیقاً نسخهی فارسیِ ویدیوی معروفِ Andrej Karpathy («Let’s build GPT from scratch») ئه — همون دموی tiny-Shakespeare، ولی این بار بهجای شکسپیر، روی شعرِ حافظِ شیراز.
هوش مصنوعی واقعاً چطور ساخته میشه؟
سادهش کنم. یه مدلِ زبانی این مراحل رو داره:
- داده — یه متنِ بزرگ (اینجا: شعرهای حافظ).
- توکنایز — متن رو به واحدهای کوچیک میشکنیم. ما سطحِ کاراکتری (character-level) رفتیم: هر حرف یه توکنه.
- embedding — هر توکن به یه بردارِ عددی تبدیل میشه که مدل باهاش کار میکنه.
- ترنسفورمر — قلبِ مدل؛ با مکانیزمِ attention یاد میگیره کدوم حرفها به هم مربوطن.
- آموزش — مدل بارها و بارها سعی میکنه حرفِ بعدی رو حدس بزنه؛ هر بار خطاش کمتر میشه.
- تولید — حالا که یاد گرفته، یه حرف میدیم و خودش حرفبهحرف ادامه میده و شعر میسازه.
همین! هوش مصنوعی در عمقِ خودش یه auto-completeِ خیلی پیشرفتهست که یاد گرفته بعد از یه متن، چی محتملتره بیاد.
داده: دیوان حافظ
داده از روی PDFِ دیوان حافظ استخراج و تمیز شد:
- نرمالسازیِ Unicode NFKC (تا هر حرف یک کدپوینت باشه، نه چند شکلِ مختلف)
- حذفِ کاراکترهای کنترلیِ راستبهچپ و zero-width
- یکدستکردنِ حروف فارسی (
ي→ی،ك→ک) - حذفِ شمارهی صفحه و اطلاعاتِ ناشر
نتیجه: یه دایرهواژهی تمیزِ ۴۴ کاراکتری (فاصله، ارقام، و ۳۳ حرفِ فارسی) روی نزدیکِ ۴۹۵ غزل و حدودِ ۲۷۵هزار کاراکتر.
مدل: یه ترنسفورمرِ کوچیک
یه ترنسفورمرِ decoder-only، طبقِ معماریِ معروفِ Attention Is All You Need:
- embeddingِ توکن + موقعیت
- ۶ بلاکِ ترنسفورمر (هر کدوم: multi-head self-attention + feed-forward)
- residual، LayerNorm و dropout
- حدودِ ۱۰.۸ میلیون پارامتر (
n_embd=384،n_head=6،n_layer=6،block_size=256)
با python3 gpt.py آموزش میبینه و یه فایلِ hafez_model.pt ذخیره میشه؛ بعد با python3 sample.py در یکثانیه شعر تولید میکنه.
نتیجهی صادقانه
با ۲۷۵هزار کاراکتر و یه مدلِ ۱۰.۸ میلیونی، شبکه فرمِ شعر رو یاد میگیره — ساختارِ غزل، کلماتِ واقعیِ فارسی، وزن و ریتم — ولی نه لزوماً معنیِ منسجم رو، دقیقاً مثلِ دموی tiny-Shakespeare. این یه پروژهی یادگیریه، نه یه شاعر! چون داده نسبت به مدل کمه، یهکم overfit میکنه؛ اهرمها برای تجربه: دادهی بیشتر، ابعادِ کوچیکتر، dropoutِ بیشتر.
چرا فهمیدنِ این انقدر مهمه؟
وقتی یه بار خودت ببینی مدل از صفر چطور ساخته و آموزش داده میشه، خیلی چیزها برات جا میافته: context window چیه، چرا هوش مصنوعی شبیهِ auto-complete رفتار میکنه، و کلِ بحثِ prompt/context engineering چرا اینجوریه. دیگه لازم نیست قانونها رو حفظ کنی — درکشون میکنی. این برای هر کاری که توی هوش مصنوعی بخوای بکنی، طلاست.
و مهمتر: لازم نیست یه برنامهنویسِ حرفهای باشی. با کمکِ خودِ هوش مصنوعی، میتونی همین مسیر رو قدمبهقدم بری — مفاهیم رو باید بفهمی، ولی لازم نیست همهی فرمولها و کدها رو از بر باشی.
خودت امتحانش کن
- 🔗 کدِ پروژه (حافظنویس): https://github.com/eiliyaabedini/hafeznevis
- 📄 راهنمای تعاملیِ «ساخت GPT از صفر»: https://eiliyaabedini.github.io/hafeznevis/
- ▶️ ویدیوی Andrej Karpathy: https://www.youtube.com/watch?v=kCc8FmEb1nY
- ⚙️ nanoGPT (Karpathy): https://github.com/karpathy/nanoGPT
اگه تا حالا فکر میکردی ساختِ هوش مصنوعی یه جعبهی سیاهِ دستنیافتنیه، این پروژه نشون میده اونقدرها هم دور نیست. ویدیوی کاملش رو از پایین ببین و اگه دوست داشتی، حتماً repo رو یه ستاره بده. 🙌


دیدگاهتان را بنویسید