Top-k sampling (FA)

From Systems analysis Wiki
Jump to navigation Jump to search

نمونه‌گیری Top-k — روشی تصادفی برای رمزگشایی است که در مدل‌های زبانی خودبازگشتی، از جمله مدل‌های زبانی بزرگ (LLM)، برای تولید متن به کار می‌رود. هدف اصلی این روش محدود کردن انتخاب token بعدی به تعداد ثابتی (k) از محتمل‌ترین کاندیداها است که از تولید کلمات کم‌احتمال و اغلب نامناسب جلوگیری می‌کند. این روش از نخستین بهبودهای نمونه‌گیری تصادفی ساده بود و مدت‌ها به عنوان شیوه‌ای محبوب برای افزایش انسجام متن تولیدشده شناخته می‌شد.

توضیح ساده

نمونه‌گیری Top-k را می‌توان به صورت انتخاب کلمه بعدی نه از همه گزینه‌های ممکن، بلکه فقط از فهرست محدودی از محتمل‌ترین آن‌ها تصور کرد.

برای مثال، مدل جمله «امروز هوا باران شدیدی...» را کامل می‌کند. در واژگان مدل هزاران ادامه وجود دارد: «می‌بارید»، «باد می‌آمد»، «برف می‌بارید»، «رگبار بود» — و دور از ذهن نیست که گزینه‌ای مانند «کوانتومی» یا یک نماد تصادفی هم پیدا شود. بدون هیچ محدودیتی، تولید متن دچار اشکال مختلف افت کیفیت (text degeneration) می‌شود. روش‌های بیشینه‌سازی (greedy decoding، beam search) متن یکنواخت و تکراری تولید می‌کنند، در حالی که نمونه‌گیری خالص بدون پیرایش ممکن است به دلیل انتخاب token‌های کم‌احتمال از «دنباله نامطمئن» توزیع به بی‌ربطی بینجامد. Top-k در درجه اول با مشکل دوم مقابله می‌کند — با حذف دنباله توزیع، خطر ادامه‌های بی‌معنی را کاهش می‌دهد، هرچند به تنهایی تکرارپذیری را برطرف نمی‌سازد. Top-k می‌گوید: «فقط k محتمل‌ترین کلمه را در نظر بگیر، بقیه را فراموش کن، احتمالات را بین همین‌ها دوباره حساب کن و یکی را به صورت تصادفی انتخاب کن».

به زبان ساده:

  • مدل فهرستی از محتمل‌ترین ادامه‌ها تهیه می‌کند؛
  • فقط k گزینه اول را می‌گیرد؛
  • یکی از آن‌ها را به صورت تصادفی انتخاب می‌کند.

هر چه k کمتر باشد، نتیجه محافظه‌کارانه‌تر و قابل پیش‌بینی‌تر است. هر چه k بیشتر باشد، تولید متن آزادانه‌تر و متنوع‌تر خواهد بود.

تشبیه‌ها:

  • منوی رستوران: به جای انتخاب تصادفی از ۵٬۰۰۰ غذا (خطر دریافت چیزی ناخوشایند) یا همیشه انتخاب یک غذای محبوب (کسل‌کننده)، گارسون فقط ۴۰ غذای پیشنهادی را می‌آورد — از میان فهرستی معقول انتخاب کنید. البته گاهی در بخش حذف‌شده منو ممکن بود دقیقاً همان غذای خاصی باشد که دوست می‌داشتید — این بهای پیش‌بینی‌پذیری است.
  • فهرست کوتاه نامزدها: از ۱٬۰۰۰ متقاضی شغلی، ۴۰ رزومه برتر انتخاب می‌شوند و سپس مصاحبه‌ها انجام می‌شود.

مفهوم و ریاضیات

در هر گام تولید متن، یک مدل زبانی استاندارد توزیع احتمال P(x|x1:i1) روی کل واژگان V را خروجی می‌دهد. نمونه‌گیری Top-k این فرآیند را به شکل زیر تغییر می‌دهد:

  • انتخاب کاندیداها: از کل واژگان، زیرمجموعه‌ای V(k) شامل k token با بالاترین احتمال انتخاب می‌شود.
  • پیرایش: به logit‌ها (پیش‌بینی‌های خام مدل پیش از اعمال Softmax) تمام token‌هایی که در V(k) نیستند، مقدار داده می‌شود که پس از نرمال‌سازی احتمال دقیقاً برابر ۰ خواهند داشت.
  • توزیع مجدد (نرمال‌سازی): احتمالات k token باقی‌مانده به گونه‌ای مقیاس‌بندی می‌شوند که مجموع جدیدشان برابر ۱ شود.
  • نمونه‌گیری: token بعدی به صورت تصادفی از این توزیع جدید و پیراسته‌شده انتخاب می‌شود.

بدین ترتیب، Top-k یک آستانه سخت بر اساس تعداد کاندیداها معرفی می‌کند: کلماتی که رتبه احتمالیشان پایین‌تر از k است هرگز انتخاب نمی‌شوند.

تأثیر پارامتر k

  • k کوچک (مثلاً k=5 تا 10): تولید را محافظه‌کارانه‌تر و قابل پیش‌بینی‌تر می‌کند. مدل فقط از مجموعه بسیار محدودی از محتمل‌ترین کلمات انتخاب می‌کند. این انسجام را افزایش می‌دهد، اما ممکن است به متن تکراری و یکنواخت منجر شود.
  • k بزرگ (مثلاً k=50 تا 100): تنوع و خلاقیت متن را افزایش می‌دهد، زیرا گزینه‌های بیشتری وارد نمونه‌گیری می‌شوند. با این حال، خطر گنجاندن token‌های کم‌ربط یا نامناسب را هم بالا می‌برد.
  • حالت‌های مرزی:
    • k=1: معادل greedy decoding است. مدل همیشه محتمل‌ترین token را انتخاب می‌کند.
    • k = اندازه واژگان: معادل نمونه‌گیری استاندارد از توزیع کامل، بدون پیرایش.

اهمیت تاریخی

نمونه‌گیری Top-k به عنوان یک روش رمزگشایی یکی از نخستین کاربردهای موفق در مقاله Angela Fan و همکارانش (2018) با عنوان «Hierarchical Neural Story Generation» بود، که در آن نویسندگان از top-k random sampling (با k=10) در سیستم تولید داستان سلسله‌مراتبی استفاده کردند و نشان دادند که این استراتژی به طور قابل توجهی مؤثرتر از beam search و نمونه‌گیری تصادفی کامل است که خطر وارد کردن کلمات کم‌احتمال را دارد.

اما مقاله کلیدی که مشکل افت کیفیت متن را به صورت سیستماتیک تحلیل کرد و نشان داد روش‌های truncation از جمله top-k کیفیت تولید را به طور قابل ملاحظه‌ای بهبود می‌بخشند، مقاله Holtzman و همکاران (2019) با عنوان «The Curious Case of Neural Text Degeneration» بود. در عین حال، نویسندگان top-p (nucleus sampling) را به عنوان جایگزینی تطبیقی‌تر برای top-k پیشنهاد دادند و بر اساس معیار HUSE خود نشان دادند که nucleus sampling در میان استراتژی‌های مقایسه‌شده نتایج بهتری به دست می‌دهد.

برای مثال، در نسخه‌های اولیه و توصیه‌های GPT-2 مقدار `top_k=40` به طور گسترده استفاده می‌شد (در کد OpenAI به عنوان «generally a good value» ذکر شده است) که به تولید متون طولانی و منسجم کمک می‌کرد.

مقایسه با سایر روش‌های رمزگشایی

Top-k در برابر Top-p

Top-k تا حد زیادی تکمیل شده و در برخی وظایف با روش پیشرفته‌تر نمونه‌گیری Top-p (nucleus) جایگزین شده است.

  • بزرگ‌ترین ضعف Top-k — ناسازگاری آن است. مقدار ثابت k شکل توزیع احتمال را در نظر نمی‌گیرد:
    • وقتی توزیع تیز است (مدل به چند token مطمئن است)، Top-k ممکن است مصنوعاً دامنه نمونه‌گیری را گسترش دهد و کاندیداهای کم‌احتمال را هم وارد کند.
    • وقتی توزیع تخت است (مدل مطمئن نیست و token‌های زیادی احتمال مشابهی دارند)، Top-k ممکن است بسیاری از گزینه‌های مناسب را زودهنگام حذف کند.
    • علاوه بر این، Top-k «دنباله» توزیع را به صورت سخت پیراش می‌کند (tail truncation)، به همین دلیل token‌های متناسب با بافت اما نادر ممکن است از دست بروند — این روش خلاقیت بالقوه را فدای انسجام می‌کند.
  • Top-p، برعکس، به صورت پویا اندازه نمونه را تنظیم می‌کند و token‌ها را بر اساس احتمال تجمعی انتخاب می‌نماید. این آن را انعطاف‌پذیرتر و قابل اطمینان‌تر می‌کند.
  • در عمل، هر دو روش اغلب به صورت ترکیبی به عنوان فیلترهای متوالی به کار می‌روند: یکی تعداد کاندیداها را به صورت خشن محدود می‌کند، دیگری دامنه نمونه‌گیری را بر اساس اطمینان مدل به صورت پویا کاهش می‌دهد. ترتیب دقیق اعمال آن‌ها به پیاده‌سازی framework خاص بستگی دارد.

Top-k در برابر دما

  • دما شکل کل توزیع احتمال را تغییر می‌دهد، اما token‌ها را پیراش نمی‌کند. این پارامتر بر احتمالات نسبی همه کاندیداها تأثیر می‌گذارد.
  • Top-k یک پیرایش سخت معرفی می‌کند و token‌های خارج از فهرست برتر-k را به کلی حذف می‌نماید.

در عمل، Top-k می‌تواند در کنار دما و Top-p استفاده شود. ترتیب دقیق اعمال فیلترها به framework بستگی دارد: برای مثال، در Hugging Face Transformers خط پردازش به صورت دما ← Top-k ← Top-p است، یعنی دما ابتدا logit‌ها (l=l/τ) را مقیاس‌بندی می‌کند، سپس Top-k دنباله بلند token‌های زائد را پیراش می‌کند، و پس از آن Top-p به صورت پویا دامنه نمونه‌گیری را بسته به اطمینان مدل محدود می‌کند. در این میان گام‌های منفرد بسته به تنظیمات ممکن است حذف شوند: اگر top_k=0، گام Top-k اعمال نمی‌شود؛ اگر top_p=1.0، گام Top-p اعمال نمی‌شود.

کاربرد عملی

علی‌رغم اینکه Top-p روشی تطبیقی‌تر است و اغلب به عنوان روش پایه برای تولید متن آزاد استفاده می‌شود، روش رمزگشایی بهتر به صورت کلی وجود ندارد — انتخاب بهینه به وظیفه، مدل و اولویت‌ها (کیفیت، سرعت، پایداری) بستگی دارد. Top-k در همه framework‌های اصلی (Hugging Face Transformers، vLLM و غیره) به صورت گسترده پشتیبانی می‌شود و هم به صورت مستقل و هم در ترکیب با سایر روش‌ها به طور فعال استفاده می‌شود.

  • مقادیر رایج: در عمل مقادیر k در حدود چند ده token (مثلاً ۱۰، ۴۰، ۵۰) اغلب استفاده می‌شوند، اما بهینه بودن آن به مدل و وظیفه بستگی دارد.
  • توصیه‌ها: برای تولید متن آزاد اغلب Top-p ترجیح داده می‌شود. اگر از Top-k استفاده می‌شود، باید آن را با دمای متعادل ترکیب کرد و مقدار k را برای وظیفه خاص به دقت تنظیم نمود. Top-k همچنین به عنوان یک «ایمنی‌بند» اضافی در دمای بالا مفید است.
  • توجه: در framework‌ها، Top-k می‌تواند با Repetition Penalty (جریمه تکرار) و پارامتر no_repeat_ngram_size ترکیب شود تا از اینکه مدل روی همان کلمات فهرست برتر-k گیر کند جلوگیری نماید.

همچنین ببینید

  • مدل‌های زبانی بزرگ

منابع

آثار بنیادین

  • Fan, A. et al. (2018). Hierarchical Neural Story Generation. ACL Anthology. arXiv:1805.04833.
  • Holtzman, A. et al. (2019). The Curious Case of Neural Text Degeneration. arXiv:1904.09751 (ICLR 2020).
  • Finlayson, M. et al. (2024). Closing the Curious Case of Neural Text Degeneration. OpenReview:dONpC9GL1o (ICLR 2024).

مطالعه بیشتر

  • Meister, C. et al. (2022). Locally Typical Sampling. arXiv:2202.00666 (TACL 2023).
  • Su, Y.; Lan, T.; Wang, Y.; Yogatama, D.; Kong, L.; Collier, N. (2022). A Contrastive Framework for Neural Text Generation. arXiv:2202.06417 (NeurIPS 2022).
  • O'Brien, S.; Lewis, M. (2023). Contrastive Decoding Improves Reasoning in Large Language Models. arXiv:2309.09117.
  • Shi, C. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. ACL Anthology. arXiv:2402.06925.
  • Ravfogel, S.; Goldberg, Y.; Goldberger, J. (2023). Conformal Nucleus Sampling. arXiv:2305.02633.
  • Chen, S. J. et al. (2024). Decoding Game: On Minimax Optimality of Heuristic Text Generation Strategies. arXiv:2410.03968 (ICLR 2025).
  • Sen, J. et al. (2025). Advancing Decoding Strategies: Enhancements in Locally Typical Sampling for LLMs. arXiv:2506.05387.