حلقهی ساختن متن
جواب کوتاه
مدل زبانی کل جواب رو یهجا نمیسازه. یه حلقهی چهارقدمی داره: اول برای تکهی بعد احتمال میده، بعد یه تکه انتخاب میکنه، بعد اون رو ته متن میچسبونه، و بعد دوباره از اول، این بار با متن بلندتر. این حلقه اونقدر تکرار میشه تا یا مدل خودش نشونهی پایان بسازه، یا به سقف طول برسه، یا یه عبارت توقف از پیش گفتهشده بیاد.
حلقه
مدل زبانی کل جواب رو یهجا نمینویسه. یه تکه مینویسه، بعد یه تکهی دیگه، بعد یه تکهی دیگه. درست مثل یه حلقه که هی تکرار میشه.
توی درس مسیر داخل مدل دیدیم مدل آخر کار، برای تکهی بعدی یه فهرست احتمال میده. ولی این فقط یه تکهست. برای ساختن یه جواب کامل، این چهار قدم پشت هم تکرار میشن:
یک، حدس: مدل به کل متن تا اینجا نگاه میکنه و برای هر تکهی واژهنامه یه احتمال میده. دو، انتخاب: یکی از تکهها برداشته میشه. سه، اضافه: اون تکه ته متن چسبونده میشه. چهار، دوباره: حالا متن یه تکه بلندتره، و کل کار از قدم یک تکرار میشه.
مدل کوچیک ما
برای اینکه حلقه رو واقعا ببینیم، یه مدل خیلی کوچیک ساختیم. ۱۲ تا جملهی ساده نوشتیم، مثل «صبح چای میخورم» و «قهوه خیلی تلخه»، و برای هر کلمه شمردیم بعدش چه کلمههایی اومده:
مثلا «صبح» توی ۱۲ جمله چهار بار اومده: دو بار بعدش «چای» بوده، یه بار «قهوه» و یه بار «نون». پس مدل ما بعد از «صبح» میگه: چای ۵۰ درصد، قهوه ۲۵ درصد، نون ۲۵ درصد. یه کلمهی ویژهی «شروع» هم اول هر جمله گذاشتیم و یه «پایان» آخرش، تا مدل بدونه جملهها معمولا با چی شروع و کجا تموم میشن.
این مدل خیلی سادهتر از یه مدل زبانی واقعیه. فقط کلمهی قبلی رو میبینه، در حالی که مدل واقعی کل متن قبلی رو میبینه. ولی حلقهاش دقیقا همونه.
چند جور انتخاب
قدم دوم حلقه، یعنی انتخاب یه تکه از بین احتمالها، خودش چند روش داره. هر کدوم یه درس جدا داره، ولی بیاید یهجا ببینیمشون.
سادهترینش اینه که همیشه محتملترین رو برداری؛ ولی متن تکراری و بیروح میشه. یه روش دیگه جستجوی پرتو (Beam Search) هست، که چند ادامه رو همزمان جلو میبره و آخر بهترین جمله رو انتخاب میکنه؛ بیشتر برای ترجمه. روش رایج چتباتها قرعهکشیه: از بین تکهها، به نسبت احتمالشون قرعه میکشن. با دما جسارت این قرعه تنظیم میشه، و با top-k و top-p قرعه فقط بین چند تای اول کشیده میشه تا تکههای خیلی بعید شانس نداشته باشن.
یه جمله، دور به دور
حالا بیاید حلقه رو روی همین مدل اجرا کنیم و دور به دور ببینیم:
دور اول: هنوز هیچی ننوشتیم، فقط «شروع» هست. مدل میگه «صبح» با ۳۳ درصد از همه محتملتره. «صبح» انتخاب میشه و میره ته متن.
دور دوم: آخرین کلمه «صبح»ـه. مدل میگه «چای» ۵۰ درصد. «چای» انتخاب میشه. حالا متن شده «صبح چای».
دور سوم: بعد از «چای»، «میخورم» و «با» هر دو ۳۳ درصدن. این بار «میخورم» انتخاب شد. متن: «صبح چای میخورم».
دور چهارم: بعد از «میخورم»، توی هر ۱۲ جمله فقط «پایان» اومده. پس مدل با ۱۰۰ درصد میگه «پایان». حلقه میایسته و جواب ما میشه «صبح چای میخورم».
یه مدل زبانی واقعی هم دقیقا همین کار رو میکنه، فقط بهجای چهار دور، برای یه جواب بلند شاید صدها یا هزارها دور، و توی هر دور بهجای یه کلمه، یه توکن.
کی تموم میشه
حلقه باید یه جایی بایسته، وگرنه تا ابد ادامه پیدا میکنه. سه تا دلیل برای ایستادن هست:
نشونهی پایان: مدل خودش تکهی ویژهی «پایان» رو انتخاب میکنه، مثل دور چهارم ما. این یعنی مدل حس کرده جوابش کامل شده. درس واژهنامهی مدل دربارهی این نشونههای ویژه بیشتر میگه.
سقف طول: برنامهای که از مدل استفاده میکنه، از قبل میگه «بیشتر از این تعداد تکه ننویس». اگه جواب به اون سقف برسه، وسط کار قطع میشه. برای همین گاهی یه جواب وسط جمله تموم میشه.
عبارت توقف: برنامه میتونه چند تا عبارت هم از قبل بده و بگه «هر وقت این رو نوشتی، بایست». مستندات Claude هر سه تای اینها رو جدا نام میبره، تا برنامه بدونه جواب چرا تموم شده.
هر بار یه جمله
توی قدم انتخاب، یه راه اینه که همیشه محتملترین رو برداریم. یه راه دیگه اینه که قرعه بکشیم: هر تکه به اندازهی احتمالش شانس داشته باشه. ما مدل کوچیکمون رو هشت بار با قرعه اجرا کردیم:
هر بار یه جملهی دیگه درومد. جالبتر اینکه دو تاش، «قهوه خیلی خیلی خیلی تلخه» و «هوا خیلی داغه»، اصلا توی ۱۲ جملهی ما نبودن. مدل تیکههای جملههای مختلف رو به هم وصل کرده و یه جملهی تازه ساخته. یه مدل زبانی واقعی هم همینطوری جملههایی میسازه که هیچوقت عینا ندیده.
ولی «هوا خیلی داغه» رو ببینید: توی جملههای ما هوا «سرده» بود. مدل فقط کلمهی قبلی رو دیده و بعد از «خیلی»، «داغه» رو برداشته. یعنی جملهی تازه همیشه درست نیست.
یه پژوهش ۲۰۱۹ نشون داد فقط با عوض کردن همین روش انتخاب، بی هیچ تغییری توی خود مدل، کیفیت متن خیلی فرق میکنه؛ و اینکه همیشه محتملترین رو برداریم، متن خشک و عجیب تکراری میده. درسهای بعدی همین روشها رو یکییکی باز میکنن: انتخاب محتملترین، دما و top-k و top-p.
چرا کمکم میاد
حتما دیدید جواب چتباتها یهجا ظاهر نمیشه؛ کلمهبهکلمه روی صفحه میاد، انگار یکی داره تایپ میکنه. حالا دلیلش رو میدونید.
چون هر دور حلقه فقط یه تکه میسازه، برنامه لازم نیست صبر کنه تا کل جواب تموم بشه. هر تکه رو همون لحظه که ساخته شد، میتونه بفرسته روی صفحهی شما. مستندات Claude این رو «فرستادن تکهتکه» میگه. اینطوری شما زودتر شروع به خوندن میکنید، حتی اگه کل جواب چند ثانیه طول بکشه.
سریعتر کردن حلقه
هر دور حلقه یه بار کل مدل رو حساب میکنه، و برای جوابهای بلند این یعنی صدها دور. یه ترفند زیرکانه این رو سریعتر میکنه.
یه پژوهش ۲۰۲۲ اسمش رو گذاشت رمزگشایی حدسی (Speculative Decoding). یه مدل کوچیک و سریع، چند تکهی بعدی رو پیشنهاد میده. بعد مدل بزرگ، همهی این پیشنهادها رو یهجا، توی یه دور، میسنجه؛ اونهایی که خودش هم انتخاب میکرد قبول میشن، و از اولین جایی که فرق داره، تکهی خودش رو میذاره. چون سنجیدن چند تکه با هم تقریبا به اندازهی ساختن یه تکه طول میکشه، چند تکه با یه دور مدل بزرگ ساخته میشه. اون پژوهش گفت خروجی دقیقا همون خروجی مدل بزرگه، ولی ۲ تا ۳ برابر سریعتر، بی اینکه مدل رو دوباره آموزش بدن.
حصار دور انتخاب
گاهی میخوایم مدل فقط چیزهای مشخصی بنویسه؛ مثلا جوابش فقط یکی از سه کلمه باشه، یا یه قالب دادهی درست.
برای این، توی قدم دوم حلقه یه حصار میذارن: پیش از انتخاب، تکههایی که با قالب جور نیستن کنار گذاشته میشن و احتمال بقیه دوباره تقسیم میشه. توی مثال ساختگی، اگه فقط «سوال، گلایه، تشکر» مجاز باشه، «سلام» و «این» حذف میشن و «گلایه» از ۴۰ درصد به ۵۷ درصد میرسه. به این کار رمزگشایی محدودشده (Constrained Decoding) میگن؛ درس خروجی ساختاریافته دقیق بازش کرده.
چند نکته
- یه تکه در هر دور. جواب بلند یعنی دورهای زیاد.
- هر دور، کل متن دوباره دیده میشه. سوال شما و هر چی تا اینجا نوشته شده.
- جواب نصفه یعنی سقف طول. میشه ازش خواست ادامه بده.
- قرعه یعنی هر بار یه جواب. یه سوال، چند جواب متفاوت.
- جملهی تازه همیشه درست نیست. مدل تیکهها رو به هم وصل میکنه، نه حقیقت رو.
درس بعد سادهترین روش انتخاب رو امتحان میکنه، و میبینه چرا مدل ما با اون گیر میافته توی «خیلی خیلی خیلی…»: انتخاب محتملترین.
جمعبندی. آنچه از این درس با خودتان میبرید.
- حدس، انتخاب، اضافه، دوباره.
- هر دور فقط یه تکه ساخته میشه.
- پایان: نشونهی پایان، سقف طول، یا عبارت توقف.
- انتخاب با قرعه، یعنی هر بار یه جمله.
- برای همین جواب کمکم روی صفحه میاد.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.