Nucleus sampling
Как это работает на интуитивном уровне? Представьте, что модель после фразы «Сегодня на обед у нас» видит сто возможных продолжений. Каждому слову она присваивает вероятность: «суп» — 0.3, «каша» — 0.2, «кот» — 0.01 и так далее. Программист задаёт порог, например 0.9. Модель сортирует слова от самых вероятных к редким и складывает их шансы: 0.3 + 0.2 + 0.15 + 0.12 + 0.08 + 0.05 = 0.9. Эти шесть слов образуют ядро. Из них модель случайно выбирает одно, но с учётом весов — «суп» выпадет чаще, чем «йогурт». Слова за пределами ядра, вроде «кот», отбрасываются, чтобы текст не сошёл с ума.
Прикладной пример — чат-бот для рекомендации рецептов. С ядровой выборкой он выдаёт разнообразные, но правдоподобные ответы. На вопрос «Что приготовить из картофеля?» модель может предложить «запеканку», «пюре» или «драники», но не «картофельный коктейль». При этом ответы не повторяют один и тот же шаблон, как было бы с самой вероятной фразой.
Главный вывод: nucleus sampling — это гибкий рубильник между креативностью и адекватностью. Меняя порог ядра, можно сделать модель более консервативной или более изобретательной. Именно поэтому этот метод применяют в большинстве современных генеративных систем — от чатов до редакторов текста. Он позволяет машине говорить естественно, не скатываясь ни в шаблонность, ни в абсурд.
Поделиться