پرش به محتوای اصلی
پرش به محتوای مقاله

۸۰ خط کد پایتون؛ مرز میان حفظ کردن و فهمیدن در شبکه‌های عصبی

·۱۶ مهر ۱۴۰۵۴ دقیقه مطالعه
شبکه عصبی ساده ساخته‌شده در اکسل، بازسازی‌شده در ۸۰ خط پایتون خالص
شبکه عصبی ساده ساخته‌شده در اکسل، بازسازی‌شده در ۸۰ خط پایتون خالص
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

بازسازی یک شبکه عصبی اکسل در ۸۰ خط پایتون خالص برای نمایش عریانِ تفاوت میان حفظ کردن (Memorization) و استدلال (Reasoning) در مقیاس مینیمال.

تصور کنید تمام پیچیدگی‌های یک مدل هوش مصنوعی را در ۸۰ خط کد ساده ببینید؛ جایی که هیچ جعبه‌سیاهی وجود ندارد و هر عدد دقیقاً مشخص است که به کجا می‌رود. این تجربه به ما می‌گوید که آنچه ما «روانی» یا «سلیس بودن» در پاسخ‌های AI می‌بینیم، اغلب توهمی است که از حفظ کردن داده‌ها حاصل شده است. این ادعای مرکزی پروژه‌ای است که در ۸ اکتبر ۲۰۲۶ توسط یک عامل (Agent) هوش مصنوعی به نام Max در وب‌سایت dev.to منتشر شد. او با حذف تمام انتزاع‌های مدرن، نشان می‌دهد که یک ماشین در واقعیت چگونه یاد می‌گیرد؛ آن هم با استفاده از یک شبکه پیش‌خور مینیمال که تنها در ۸۰ خط پایتون خالص نوشته شده است.

بسیاری از برنامه‌نویسان با شبکه‌های عصبی از طریق چارچوب‌های غول‌پیکری مثل PyTorch یا TensorFlow آشنا می‌شوند. اما این پروژه با یک صفحه گسترده (Spreadsheet) شروع شد؛ یک چیدمان سلول-به-سلول که در آن هیچ‌چیز پنهان نیست. این رویکرد به عنوان یادآوری عمل می‌کند که در هسته خود، این مدل‌ها صرفاً ردیف‌هایی از اعداد هستند. همان‌طور که در تحلیل‌های قبلی ما درباره‌ی شفافیت مدل‌های بازمتن اشاره کردیم، بازگشت به مفاهیم پایه تنها راه درک تفاوت میان «محاسبه» و «تفکر» است. برای درک عمیق‌تر این فرآیند، می‌توان به بررسی این موضوع پرداخت که شبکه‌های عصبی چگونه داده‌های خام را به پیش‌بینی‌های نهایی تبدیل می‌کنند.

ریشه و فلسفه ایده

این پروژه از یک گردش‌کار در KNIME الهام گرفته شده بود که در آن یک CSV Reader به یک یادگیرنده «RProp MLP Learner» متصل شده بود. این یک شبکه پیش‌خور بسیار کوچک بود که حجم آن تنها ۵۲ کیلوبایت می‌شد و هدفش نمایش مکانیسم‌های خام یادگیری بود. فلسفه راهنمای این پروژه بسیار ساده بود: «اول اعداد، بعد کلمات».

Max این مفهوم را در قالب اسکریپتی به نام gehirn_mini.py بازسازی کرد. پیاده‌سازی این کد عمداً ابتدایی است تا خوانایی کامل تضمین شود. این اسکریپت از هیچ کتابخانه NumPy، هیچ دانلود خارجی و هیچ شتاب‌دهنده GPU استفاده نمی‌کند و صرفاً بر کتابخانه‌های استاندارد math و random پایتون متکی است.

مشخصات فنی

طبق مستندات فنی این پروژه، جزئیات معماری و تنظیمات شبکه به شرح زیر است:

  • معماری: یک شبکه پیش‌خور (Feedforward) با ساختار ۲۲ $\rightarrow$ ۱۶ $\rightarrow$ ۲۲ (ورودی $\rightarrow$ پنهان $\rightarrow$ خروجی).
  • الگوریتم آموزش: پس‌انتشار مقاوم (Resilient Backpropagation یا RProp) که وزن‌ها را بر اساس علامت گرادیان به‌روز می‌کند، نه بر اساس مقدار یا اندازه آن.
  • مجموعه داده: یک پیکره (Corpus) بسیار کوچک شامل ۶ جمله که در مجموع دارای ۲۲ واژه منحصربه‌فرد و ۴۱ جفت کلمه-به-کلمه است.
  • حجم آموزش: ۳,۰۰۰ Epoch برای رسیدن به وضعیت همگرایی.
  • ابرپارامترها: در الگوریتم RProp، مقدار nup برابر ۱.۲ و ndown برابر ۰.۵ تنظیم شده است، در حالی که حداکثر گام روی ۵.۰ و حداقل گام روی 1e-6 قرار دارد.
  • مکانیسم‌ها: شبکه از تابع math.tanh برای لایه پنهان و یک نرمال‌سازی شبیه به سافت‌مکس (Softmax) برای محاسبه احتمالات خروجی استفاده می‌کند.

تحلیل فرآیند یادگیری

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

بر اساس گزارش dev.to، خروجی مدل فارغ از کلمه شروع، اغلب به یک چرخه ثابت می‌رسد. برای مثال، کلمات شروع مانند «words»، «a» یا «the» همگی در نهایت به یک توالی یکسان ختم می‌شوند: «row of numbers miss thing the net sees a».

در این وضعیت، کلماتی مثل «miss» و «row» به شرط‌بندی‌های تقریباً جهانی برای توکن بعدی تبدیل می‌شوند. دلیل این اتفاق آن است که شبکه به‌جای درک ساختار زبان، جدول جفت-کلمات را حفظ کرده است. در مقیاس ۲۲ کلمه و ۴۱ جفت، مدل بیشتر از آنکه بفهمد، حفظ کرده است.

مرز میان درک و حفظ کردن

این شکست، آموزنده‌ترین بخش آزمایش است. اینجا مرز واقعی و صادقانه میان ماشینی است که یک «جدول جست‌وجو» (Lookup Table) را یاد گرفته و مدلی که دارای درک واقعی است. این مدل نمی‌تواند استدلال کند، ترجمه کند یا هر کلمه‌ای را که هرگز ندیده است پردازش کند. حافظه آن هیچ گستره‌ای فراتر از یک کلمه قبلی ندارد.

روانیِ پاسخ‌ها در گام‌های اول تولید متن، توهمی است که از ماهیت گرامری داده‌های آموزش حاصل شده است. برای ما به عنوان کاربر، این یعنی «جادوی» مدل‌های زبانی بزرگ (LLM) — مثل کتابخانه‌داری که میلیاردها صفحه را خوانده و حالا با همان لحن جواب می‌دهد — اغلب مسئله مقیاس است. وقتی مدل این‌قدر کوچک باشد، شکاف میان حفظ کردن و استدلال کاملاً عریان و قابل مشاهده است؛ در مدل‌های بزرگ، این شکاف صرفاً پشت میلیاردها پارامتر پنهان شده است. این موضوع یادآور شکاف اعتبارسنجی در کدنویسی با AI است که در آن فقدان درک عمیق می‌تواند مالکیت ذهنی برنامه‌نویس را به خطر اندازد.

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

این پروژه نیاز روزافزون به «هوش مصنوعی خوانا» (Legible AI) را در عصر مدل‌های بسته برجسته می‌کند. با حذف وابستگی‌ها، توسعه‌دهنده ابزاری ساخته است که هر جایی — از یک تب مرورگر تا یک CPU قدیمی — بدون نیاز به حساب کاربری یا پرداخت هزینه اشتراک اجرا می‌شود.

اگر تا به حال فکر کرده‌اید چرا پرامپت‌های شما در مدل‌های بزرگ گاهی به حلقه‌های تکراری می‌رسند، این اسکریپت ۸۰ خطی پاسخ را می‌دهد: این روحِ همان جدول جست‌وجوی قدیمی است که در دل ماشین‌های مدرن هنوز حضور دارد.

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

گام بعدی شما

  • منطق RProp و شبکه‌های پیش‌خور را با پیاده‌سازی یک اسکریپت مشابه روی یک متن بسیار کوچک (مثلاً ۱۰ جمله از نوشته‌های خودتان) آزمایش کنید.
  • سعی کنید تعداد لایه‌های پنهان را تغییر دهید و ببینید آیا مدل سریع‌تر به حلقه تکرار می‌رسد یا خیر.
  • تفاوت بین خروجی‌های این مدل و یک مدل استدلالی مدرن را در مواجهه با کلمات خارج از مجموعه داده (Out-of-distribution) بررسی کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این آزمایش با تکیه بر شفافیت کد (Transparency)، اعتبار ادعاهای مربوط به «تفکر ماشین» را به چالش می‌کشد. درک این مرز برای توسعه‌دهندگانی که به دنبال بهینه‌سازی مدل‌های کوچک (SLM) هستند، حیاتی است تا دچار توهمِ توانمندی مدل نشوند.

تأثیر برای ایران

این پروژه برای دانشجویان و برنامه‌نویسان ایرانی که به دلیل محدودیت‌های سخت‌افزاری به GPUهای قدرتمند دسترسی ندارند، یک نقشه راه عالی برای درک مفاهیم پایه AI روی CPUهای معمولی است.

·نگاه ما
تحریریه دات‌هوش

این پروژه ثابت می‌کند که بسیاری از قابلیت‌های ظاهری مدل‌های زبانی، محصول مقیاس (Scaling) هستند نه لزوماً تغییر در ماهیت یادگیری. وقتی مدل به اندازه کافی کوچک شود، استدلال جای خود را به بازیابی ساده (Retrieval) می‌دهد. این یعنی مرز میان «فهمیدن» و «تکرار آماری» بسیار باریک‌تر از آن چیزی است که شرکت‌های AI تبلیغ می‌کنند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.