بررسی هوش مصنوعی‌ها تو فهم واقعی کدها: داستان بنچمارک CoRe!

Fall Back

رفقا تا حالا براتون پیش اومده که یه مدل هوش مصنوعی مثل ChatGPT یا Copilot رو بیارین پای کدنویسی و ببینین پرفکت جواب میدن؟ یا حتی خودشون کد دیباگ کنن یا باگ پیدا کنن؟ خیلی عجیب و غریب به نظر میاد، ‌ولی واقعاً دارن تو دنیای مهندسی نرم‌افزار غوغا می‌کنن! ولی یه نکته ظریف این وسط هست که اکثر آدم‌ها و حتی خیلی از تست‌هایی که برای این مدل‌ها می‌سازن بهش دقت نمی‌کنن.

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

اینجاست که پروژه CoRe وارد می‌شه! این پروژه اومده یه سری تست (بنچمارک) خیلی توپ و دقیق ساخته که دقیقاً عمق فهم و استدلال مدل‌ها روی کد رو بسنجن—not فقط نتیجه‌ی آخر رو. اسم کاملش هم اینه: CoRe – تست و ارزیابی هوش مصنوعی‌های زبانی بزرگ روی کارهای تحلیل ایستا. تحلیل ایستا هم یعنی بررسی کد بدون اجرا کردنش—فقط با خوندن کد و دنبال‌کردن منطقش سعی می‌کنی درباره‌ش نتیجه‌گیری کنی.

توی CoRe چه خبره؟

ماجرا اینه که توی این بنچمارک ۱۲،۵۵۳ تا نمونه سوال و تست درست کردن (یعنی کلی سناریوی واقعی و انسانی-بررسی‌شده!) که روی سه تا زبان واقعاً محبوب دنیا کار می‌کنن: C/C++، جاوا و پایتون. این تست‌ها فقط دنبال این نیستن که ببینن خروجی مدل چیه، بلکه مثلاً موارد زیر رو بررسی می‌کنن:

– وابستگی داده‌ها (Data Dependency) — یعنی اینکه یه قطعه کد به داده‌های قبلی خودش وابسته‌ست یا نه.
– وابستگی کنترل (Control Dependency) — یعنی مسیر اجرای برنامه تحت تاثیر کد کجاست و چطور جریان کنترل حرکت می‌کنه.
– جریان اطلاعات (Information Flow) — اینکه داده‌های مختلف چجوری از یه جای برنامه به جای دیگه منتقل می‌شن.

اینا همه مفاهیمی هستن که اگه بخوای واقعاً بتونی با کدها سر و کله بزنی، باید بفهمی‌شون. چون برنامه واقعی پر از شرط و حلقه و وابستگیه، نه فقط چند تا سطر ساده.

برای اینکه تست‌ها واقعاً چالش‌برانگیز باشن و فقط حفظیات معمول و کپی-پیست نباشه، تو CoRe از یه روش خاص به اسم “semantics-aware diverse sampling” استفاده شده. این یعنی چی؟ یعنی موقع انتخاب مثال‌ها کلی دقت شده که از لحاظ ساختاری و عمق وابستگی حسابی متنوع و پرچالش باشن، نه فقط یه عالمه مثال تکراری و ساده.

چه خبره وقتی مدل‌ها رو گذاشتن پای این تست‌ها؟

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

یه نکته جذاب دیگه توی مقاله اینه که اومدن تحلیل کیفی (Qualitative Analysis یعنی بررسی کیفیتی و عمیق‌تر، نه فقط عدد و رقم) کردن تا بفهمن مدل کجاها بیشترین چالش رو داره. مثلاً فهمیدن مدل‌ها توی ساختارهای پیچیده کنترلی حسابی جا می‌زنن و بهتره شرکت‌ها و محقق‌ها برای ارتقای مهارت استدلال مدل‌ها، بیشتر روی این بخش‌ها تمرکز کنن.

در کل، اگه بخوام جمع‌بندی کنم: تیم CoRe یه جعبه‌ابزار حرفه‌ای و انسانی ساخته که واقعاً نشون می‌ده LLMها تا کجا تو فهم عمیق کد راه دارن و هنوزم تو تشخیص منطق و معنی داخلی برنامه‌ها ضعف دارن. بنظرم هرکی علاقه به آینده هوش مصنوعی تو برنامه‌نویسی داره، باید حتماً به CoRe یه سر بزنه و مفاهیمش رو بخونه.

پس دفعه بعدی که یه مدل خودش رو کدنویس معرفی کرد، یادت باشه فقط به خروجی نگاه نکنی—ببین واقعاً ذهن منطقی پشتش هست یا فقط زرنگ‌بازیه!
منبع: +