نذار مدل حرف بزنه، فقط جوابش رو بخون
خلاصهٔ کاملتر
نویسنده (جیمز) تو این پست تعریف میکنه که تو کارش لازم داره سؤالای ساختاری زیادی از متن بپرسه؛ نه «موضوع این متن چیه» که امبدینگها خوب جوابش رو میدن، بلکه چیزایی مثل «آیا خود گوینده داره با مشکل دستوپنجه نرم میکنه یا داره از یکی دیگه حرف میزنه؟» یا «این جمله طعنهست؟». امبدینگها به این جور تفاوتا تقریباً کورن. راهحل معمول، فرستادن متن به یه مدل بزرگ بهعنوان داور (LLM judge) ـه که کنده، گرونه و عددِ اطمینانی که میده هم معنای آماری درستی نداره.
نکتهی اصلی اینه که وقتی مدل یه پرامپت با این شکل رو میخونه، قبل از اینکه حتی یه کلمه تولید کنه تصمیمش رو گرفته. مقایسهی بین معیار و محتوا همون تو forward pass انجام شده و نتیجه به شکل هندسه تو residual stream نشسته. تولید متن فقط ترجمهی همون تصمیمِ ازقبلگرفتهشده به کلماته:
<content_to_be_judged>
I used to hate this product, but honestly now I love it.
</content_to_be_judged>
<judgment_criteria>
The writer currently likes the product.
</judgment_criteria>
Criteria met?
پس ایده اینه که نذاری مدل حرف بزنه: حالت پنهان همون توکن آخر رو، تو یه لایهی میونی که معنا غنیتره (حدوداً ۷۰٪ ارتفاع لایههای مدل)، برمیداری و یه شبکهی عصبی کوچیک (MLP) یا حتی یه probe خطی ساده روش آموزش میدی که یه عدد بیرون بده. نویسنده میگه هیچکدوم از اجزاش تازه نیست؛ probe خطی و logit lens قدیمین. چیزی که یهکم نوئه، استفاده ازش بهعنوان یه طبقهبند zero-shot عمومیه که معیارش رو موقع اجرا به انگلیسی مینویسی.
دستورالعملش اینه: یه مدل باز کوچیک بردار (خودشون از Granite 4.0 micro آیبیام استفاده میکنن)، یه قالب پرامپت ثابت که به یه توکن نشانه مثل Assessment: ختم بشه، چند هزار نمونهی (معیار، محتوا، برچسب) که با یه مدل قوی ساخته شده و معیارهاش متنوعه بساز، همه رو از مدل رد کن و حالت پنهان توکن نشانه رو جمع کن و MLP رو فیت کن، آخرش هم خروجی رو با isotonic regression کالیبره کن تا ۰.۷ واقعاً یعنی هفتاد درصد. چون معیارها موقع آموزش عوض میشن، اون سَر یاد میگیره مفهومِ «آیا محتوا معیار رو برآورده میکنه» رو بخونه، نه یه معیار خاص رو.
قشنگترین بخش از نظر نویسنده، LoRA اختیاریه. اون رو برای طبقهبندی آموزش نمیدی، برای نوشتن آموزش میدی: برای هر نمونه، یه مدل قوی برچسب رو میگیره و یه حکم یکجملهای مینویسه که چرا اون برچسب درسته، و LoRA با لاس سادهی توکن بعدی یاد میگیره همون متن رو از روی پرامپت بسازه. ولی موقع اجرا اصلاً چیزی تولید نمیشه؛ کار اون متن فقط اینه که هندسه رو سرِ توکن نشانه مرتبتر کنه تا تصمیم برای MLP خواناتر باشه. به قول خودش یاد مدل میدی جواب رو بگه تا قبل از حرف زدن متبلور بشه، بعد دیگه نمیذاری حرف بزنه.
نویسنده یه ترفند KV caching هم میگه: اگه بخوای یه محتوا رو مقابل بیستتا معیار امتیاز بدی، محتوا رو یهبار prefill کن، KV رو کش کن و هر معیار رو بهعنوان یه ادامهی کوتاه روی کش اجرا کن. ولی تذکر میده که اینجا محتوا قبل از دیدن هر معیاری انکد میشه؛ رو متنای ساده تفاوتی نداره، ولی رو متنای پیچیدهتر که معیار و محتوا باید تو هر لایه با هم تعامل کنن، کش دقیقاً همون رو از بین میبره (همون trade-off کلاسیک cross-encoder در برابر late-interaction). نویسنده میگه این روش الان موتورِ ابزاری به اسم Predicate تو پشتهی ایمنیِ NOPE ـه و کل ساختش یه بعدازظهر کار لولهکشیه.
نکات کلیدی:
- جواب «آیا این متن این شرط رو داره» اغلب قبل از تولید توکن، تو حالت پنهان مدل حاضره؛ کافیه بخونیش به جای اینکه ازش بخوای تولیدش کنه.
- حالت پنهان آخرین توکن (تو یه لایهی میونی) به یه MLP کوچیک میره و با isotonic regression کالیبره میشه تا احتمال واقعی بده.
- چون معیارها موقع آموزش متنوعن، یه مدل ثابت میتونه هر طبقهبندیای رو که به انگلیسی بنویسی انجام بده، بدون آموزش مجدد برای هر معیار.
- LoRA اختیاری رو برای نوشتنِ حکم آموزش میدن، نه طبقهبندی؛ نقشش فقط مرتبکردن هندسهی توکن نشانهست.
- جوابِ چنددهمیلیثانیهای با هزینهای حدود یه طبقهبند امبدینگ، بهجای کندی و هزینهی یه LLM judge.




