让ChatGPT给出答案之前多想想步骤,就能提高准确率。
那么能不能省去提示词,直接把这种能力内化在大模型里呢?
CMU与谷歌团队的新研究,在训练大模型时加入暂停token来实现这一点。
实验中,8项评测成绩提升,其中SQuAD的EM得分提高18%,CommonSenseQA提高8%,GSM8k中的推理任务也提高1%。
研究者Jack Hack表示,自己不久前就提出类似假设,很高兴看到它被验证。
英伟达工程师Aaron Erickson表示,是不是和人类说话时加入“嗯嗯啊啊”是一个道理?
预训练微调都加入暂停token
整个研究基于一个简单的想法:
在输入序列后面追加一系列(暂停token),从而延迟模型输出下一个token。
这可以给模型额外的计算时间来处理更复杂的输入。
作者不仅在下游任务微调时引入,还在预训练时就随机在序列中插入,让模型在两阶段都学习如何利用这种计算延迟。
预训练阶段,在语料库中随机插入一定比例的暂停token到输入序列,进行标准的自回归预训练。但计算损失时会跳过暂停token的预测。
下游任务微调时,输入中也追加一定数量的暂停 token,然后对目标序列进行自回归预测,同时微调模型参数。
推理阶段也追加相同数量的暂停token,但忽略模型输出直到最后一个暂停token,然后开始提取答案。
实验使用了标准的Transformer纯Decoder模型,分为130M参数和1B参数两个版本。
其中暂停token只增加了1024个参数,也就是它本身的embedding大小。
在9个不同任务上的实验表明,仅在微调阶段引入暂停token的效果并不明显,有些任务不会提升。
但如果在预训练和finetune阶段都使用暂停token,大多数任务上都获得显著提升。
论文还探究了暂停token的数量、位置等关键超参数。发现对于不同的模型通常存在一个最优的数量。
最后作者也提出,这项工作也有不少局限性。
- 由于暂停token增加了模型计算量,与其他方法对比是否公平还有待讨论
- 新方法需要重新预训练,在实际应用还有一定困难
- 对具体工作机制还缺乏深入理解
- 推理时如果暂停token数量为0,模型表现仍然不佳
搜索引擎You.com的CEO表示,接下来是不是应该把所有提高人类认知表现的技巧都对大模型试一试?
现在已经有了“一步一步地想”和“深呼吸”。
也许下一个爆款论文就是教大模型带着问题睡一觉或者更离谱的健康饮食、注意锻炼。
论文地址:https://arxiv.org/abs/2310.02226