前面对微调(Fine-tuning)的学习中,提到指令微调。当时,不清楚何为指令微调,也一直没来得及仔细学习。
什么是指令微调?LLM经过预训练后,通过指令微调提升模型的指令遵循能力。所谓指令,就是针对具体下游任务,有明确的要求和目的,一般有相应的模板来让指令更加明确。基于指令数据微调语言模型,就是指令微调。
当然,在谷歌的FLAN(https://ar5iv.labs.arxiv.org/html/2109.01652)系列论文中,有一点意外的效果,在针对某些任务进行指令微调后,语言模型在其他未经过微调的任务上的性能也提升了。就是说,人家大模型,是具备举一反三的能力的!
在FLAN系列的论文中,谷歌提出了指令微调的概念,通过自然语言指令描述的任务数据集对预训练后的语言模型进行微调,用于提高语言模型的零样本学习能力。
FLAN(Finetuned Language Net)的论文中展示了指令微调——在通过指令描述的多个数据集上微调语言模型——显著提高了在未见任务上的零样本性能。文章采用了一个137B参数的预训练语言模型,并在超过60个通过自然语言指令模板描述的NLP数据集上进行了指令微调,然后评估在未见任务类型上的性能。FLAN显著提高了其未修改版本的性能,在评估的25个数据集中的20个上超越了零样本175B GPT-3,甚至在ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze上大幅度超越了GPT-3的少量样本性能。
来看一下FLAN这篇文章的几张图,快速理解FLAN模型的潜力和指令微调方法。