iAct

Act on Ai

هوش مصنوعی چطور ساخته میشه؟ با هوش مصنوعی یه AI ساختم که شعر حافظ می‌گه


یکی از شماها پرسیده بود: «یه آدم که برنامه‌نویسی بلد نیست، می‌تونه با هوش مصنوعی یه هوش مصنوعی بسازه؟» جوابِ عملیش این مقاله‌ست. با هم از صفر یه مدلِ هوش مصنوعی می‌سازیم که شعر حافظ می‌گه — و توی این مسیر می‌فهمیم هوش مصنوعی واقعاً چطور ساخته می‌شه.

ایده: یه GPT که شعر حافظ می‌گه

اسم مدل رو گذاشتم حافظ‌نویس: یه GPT کوچیک که از صفر روی دیوان حافظ آموزش دیده. این دقیقاً نسخه‌ی فارسیِ ویدیوی معروفِ Andrej Karpathy («Let’s build GPT from scratch») ئه — همون دموی tiny-Shakespeare، ولی این بار به‌جای شکسپیر، روی شعرِ حافظِ شیراز.

هوش مصنوعی واقعاً چطور ساخته می‌شه؟

ساده‌ش کنم. یه مدلِ زبانی این مراحل رو داره:

  1. داده — یه متنِ بزرگ (اینجا: شعرهای حافظ).
  2. توکنایز — متن رو به واحدهای کوچیک می‌شکنیم. ما سطحِ کاراکتری (character-level) رفتیم: هر حرف یه توکنه.
  3. embedding — هر توکن به یه بردارِ عددی تبدیل می‌شه که مدل باهاش کار می‌کنه.
  4. ترنسفورمر — قلبِ مدل؛ با مکانیزمِ attention یاد می‌گیره کدوم حرف‌ها به هم مربوطن.
  5. آموزش — مدل بارها و بارها سعی می‌کنه حرفِ بعدی رو حدس بزنه؛ هر بار خطاش کم‌تر می‌شه.
  6. تولید — حالا که یاد گرفته، یه حرف می‌دیم و خودش حرف‌به‌حرف ادامه می‌ده و شعر می‌سازه.

همین! هوش مصنوعی در عمقِ خودش یه 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 رو یه ستاره بده. 🙌


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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *