چطوری قانون‌ها رو توی مدل‌های زبانی بزرگ بچینیم که حواسشون جمع باشه؟! (یه نگاه متفاوت به کار با LLMها)

Fall Back

تا حالا واست پیش اومده با این مدل‌های زبانی بزرگ (Large Language Models یا همون LLMها) سر و کار داشته باشی و بخوای مطمئن شی که دقیقاً طبق یه سری قانون یا دستور کار می‌کنن؟ خب، فقط این نیست که بهشون بگی “لطفاً فلان قانون رو رعایت کن” و بعد دیگه خیالت راحت باشه! موضوع خیلی پیچیده‌تر از این حرفاست و دقیقاً همین پیچیدگی‌هاست که دانشمندای هوش مصنوعی اومدن تو یه مقاله حسابی بررسیش کردن.

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

توی این مقاله، برای اولین بار اومدن از یه دید متفاوت به این موضوع نگاه کردن: یعنی تحلیل اطلاعاتی (Information-Theoretic Analysis). این یعنی با یه عینک تخصصی که چقدر اطلاعات توی سیستم جابجا میشه و چقدر توجه مدل به هر قسمت از قانون جمع میشه، بررسی کردن که چی جواب میده.

کلی چیز باحال فهمیدن:

  • اگر قانون‌هاتو طوری بنویسی که گیج‌کننده نباشه و ساده باشه (یعنی Syntactic Entropy پایین باشه، که یعنی قانون‌ها پیچیدگی زبانی زیادی ندارن)، مدل بهتر حواسش جمع میشه. همین!
  • اگه “anchorها” یا همون بخش‌های مرکزی و مهم قانون (مثلاً اونجایی که اصل ماجرا رو توضیح دادی) رو جمع و جور و پررنگ‌تر بذاری، کار مدل راحت‌تر میشه و اشاره (pointer) به اون قسمت‌ها دقیق‌تر اتفاق میفته.
  • ولی حواست باشه! اگه anchor زیاد بذاری، هرجا یه اشاره‌ای کنی مدل سردرگم میشه و توجهش پخش میشه. یعنی باید بین اینکه قانون رو زیاده‌گویی کنی یا کوتاه و متمرکز بنویسی، یه تعادل پیدا کنی. خلاصه‌ش اینجوریه: یا باید fidelity (یعنی دقت اشاره به قانون) رو بالا ببری یا entropy توجه رو خیلی پخش نکنی وگرنه مدل گیج میشه.

جالب اینه که توی مقاله اومدن انواع مختلف سازوکارهای توجه (Attention Mechanisms) که الان تو LLMها رایجه رو هم بررسی کردن، از causal (یعنی اینکه فقط به عقب نگاه کنه) تا bidirectional (یعنی از دو طرف اطلاعات بگیره)، local sparse (فقط به بخش‌هایی نگاه کنه نه همه جا)، kernelized (یه نوع خاص از طراحی attention)، و حتی cross-attention (که اطلاعات رو از چند تا جا همزمان می‌بینه). برای همشون فرمول دادن که چه طور می‌تونن با این anchor و قانون‌ها بهتر کار کنن.

یه نکته باحال دیگه هم این بود که اگه توی سیستم، سازوکاری بذاری که بشه درجا قانون‌ها رو عوض کرد (که بهش میگن hot reloading یعنی حین کار قانون جدید بذاری)، احتمال اینکه خروجی مدل همیشه با قانون هماهنگ بمونه، بیشتر میشه. اینو با یه اثبات ریاضی هم نشون دادن که مدل واقعاً compliant (یعنی هماهنگ و پیرو قانون) می‌مونه.

کل حرفشون اینه که اگه بخوای مثلاً جلوی prompt injection attack (یعنی حملاتی که با یه prompt جدید مدل رو گول می‌زنن) رو بگیری، باید هم به طراحی anchorها دقت کنی، هم از چند نوع کنترل موازی و دوگانه (dual enforcement mechanisms یعنی دوتا نگهبان همزمان بالا سر مدل) استفاده کنی. اینجوری وقتی قانون‌ها عوض میشن یا حوزه کاری مدل جدید میشه، باز هم می‌تونی به خروجی‌اش اعتماد کنی.

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

منبع: +