یه تغییر کوچیک توی سوالات، یه عالمه فرق تو جواب‌ها! داستان حساسیت عجیب مدل‌های زبانی بزرگ

Fall Back

بذار همین اول داستان رو براتون آسون تعریف کنم. الان مدل‌های زبانی بزرگ یا همون LLMها – مثلاً ChatGPT و رفقاش – به جایی رسیدن که کلی برامون کد می‌نویسن، حتی کارشون به جایی کشیده که یکی دوتا اشتباه ریز می‌تونه هم امنیت رو به‌خطر بندازه، هم ممکنه کلی خرج رو دستمون بذاره. اما بازم انتظار داریم اشکالات کوچیک مثل اشتباه تایپی رو نادیده بگیرن و به راه خودشون ادامه بدن.

تو یه تحقیق جدید، اومدن دقیقاً همین سوال رو بررسی کردن: فرق بین حساسیت مفید (که باید یه جایی متوجه تغییرات معنی‌دار بشن) و بی‌توجهی خطرناک (که حتی وقتی معنی سوال تغییر می‌کنه چشماشونو می‌بندن) کجاست؟

محققا اومدن ۵۰ تا سوال برنامه‌نویسی از LeetCode (یه سایت معروف برای تمرین برنامه‌نویسی) رو برداشتن و روی سوال‌هاش چندجور تغییر کوچیک (یا به اصطلاح perturbation یعنی بهم‌زدن سوال با کمترین تغییر ممکن) اعمال کردن. این سه مدل تغییر رو داشتن:

۱. کم‌کم کلمات رو حذف کنن تا جایی که فقط ۱۰٪ از سوال باقی بمونه! این‌کار رو بهش progressive underspecification گفتن، یعنی مرحله‌به‌مرحله اطلاعات مسئله رو پایین آوردن.

۲. یه کلمه کلیدی که خیلی اثرگذاره (مثلاً max رو با min عوض کنن) – یعنی جهت کل مسئله رو اینطوری عوض کنن. این کار رو گفتن lexical flip یا برعکس‌کردن لفظی؛ مثلاً تو مسئله به‌جای بیشترین مقدار، دنبال کمترین مقدار باشه.

۳. بعضی اصطلاح‌های رایج رو با معادل‌های خیلی تخصصی و نامانوس عوض کنن. به این میگن jargon inflation؛ یعنی مثلاً به جای ‘عدد’، بنویسن ‘مقدار عدد صحیح’ که یه جورایی سوال رو بیخودی فنی و سخت کنه.

برای امتحان کردن مدل‌ها، اومدن شش تا مدل خیلی قوی رو تست کردن که سه‌تاشون مخصوصاً روی منطق یا reasoning تیون شده بودن (یعنی آموزش دیده بودن بهتر فکر کنن). خروجی‌هایی که مدل‌ها با سوال‌های دستکاری‌شده تولید کردن رو با برنامه اصلی مقایسه کردن تا بفهمن واقعاً مدل حواسش به تغییر بوده یا نه؛ یا فقط داره همون جواب قبلی رو دوباره می‌ده.

حالا بریم سر نتایج جالبش! از بین حدود ۱۱۸۵۳ جواب تولیدشده توسط مدل‌ها، چند تا چیز عجیبی دیده شد:

  • مثلاً وقتی تا ۹۰٪ سوال رو حذف می‌کردن (یعنی تقریباً هیچ اطلاعاتی نمونده)، باز هم مدل‌ها تو ۸۵٪ موارد درست جواب می‌دادن! این نشون میده که بیش‌ازحد robust شدن. یعنی زیادی به مسئله بی‌توجه شدن و حتی با اطلاعات کم، گیر نمی‌افتن.

  • اما وقتی همون lexical flip رو انجام می‌دادن (مثلاً فقط max رو با min عوض می‌کردن که یعنی کل صورت سوال برعکس بشه)، فقط ۵۴٪ مدل‌ها واکنش نشون می‌دادن! یعنی تقریباً نصف جواب‌ها به اشتباهِ معنی مسئله اهمیت نمی‌دادن. جالبتر این‌که اون مدل‌هایی که برای بهتر reasoning یاد گرفته بودن، حتی از مدل‌های پایه حساسیت کمتری داشتن!

  • تو حالت jargon inflation هم یعنی وقتی یه اصطلاح رایج رو با یه اصطلاح تخصصی غیرعادی عوض می‌کردن، مدل‌ها فقط ۵۶٪ متوجه می‌شدن که واقعاً سوال عوض‌شده.

نتیجه کلی؟ مدل‌های زبانی الان فرق بین تغییرات بی‌خطر (مثلاً نویز ساده یا غلط املایی) و تغییرات معنایی (مثلاً عوض شدن معنی سوال) رو درست نمی‌فهمن. بعضی وقتا تغییر مهم رو نادیده می‌گیرن، بعضی وقتا هم اهمیت رو بیخودی بالا می‌برن.

محقق‌ها فهمیدن که اگر تو سوال اِلمان‌های مهم مثل اسم تابع رو پنهون کنی (یعنی function name رو مخفی کنی که برای مدل‌ها مثل نقطه راهنماست)، می‌تونی کاری کنی مدل مجبور باشه دوباره به مسئله فکر کنه.

درآخر، نویسنده‌ها پیشنهاد می‌دن موقع آموزش و ارزیابی مدل‌ها، پروتکل‌هایی رو طراحی کنن که مدل بتونه بین نویز بی‌خطر و تغییر معنی‌دار فرق بذاره؛ یعنی وقتی فقط نویز ساده هست خوب و استوار بمونه، اما وقتی معنی سوال عوض شد سریع یا جواب جدید بده، یا اصلاً بگه که نمی‌تونه جواب بده.

خلاصه داستان اینه که همین تغییر کوچیک توی سوال‌ها ممکنه یه عالمه تاثیر رو جواب‌های مدل‌های زبانی بزرگ بذاره. پس باید حواسمون جمع باشه و مدل‌ها رو طوری تربیت کنیم که فرق تغییرات مهم و بی‌اهمیت رو بفهمن، نه اینکه خیلی بی‌خیال باشن یا برعکس، جوگیر!

منبع: +