核采样与截断采样,就是给模型每次挑下一个词时,先圈定一个“允许的小范围”,再从中随机抽取。
1. 它到底在说什么
大模型每写出一个词,其实是先给词典里每个候选词算出一个“可能性”,再按可能性抽一个出来。问题是,词典往往有几万词,其中绝大多数可能性极低——真要全按原始可能性抽,抽着抽着就会蹦出和上下文八竿子打不着的词。top-k 和 top-p 干的同一件事,就是在下笔前先把这一大堆“不太可能的词”砍掉,只在剩下的小圈子里抽。
用一个场景就懂了:你进餐厅点菜,纯按整本菜单随机点(对应不截断),经常点到黑暗料理;永远只点销量第一(对应贪心,greedy),又吃来吃去就那一样。top-k 像“只在最受欢迎的 40 道里点”,top-p 像“只在占了总销量九成那批菜里点”。两者都在做同一件事:先圈定一个靠谱的小范围,再随机。
2. 为什么现在这个词很热
截断采样的老大哥是 top-k。它由 Angela Fan、Mike Lewis 与 Yann Dauphin 在 2018 年的论文《Hierarchical Neural Story Generation》(ACL 2018)里提出,本意是故事生成的实用小修。真正让它出圈的是 GPT-2:OpenAI 在公开演示里把 top-k=40 当作默认设置(摘要实验甚至用到更紧的 k=