指令调优与非指令调优大型语言模型的区别

8
什么是指令调优和大型语言模型的正常微调之间的区别?
我所指的指令调优并不是上下文/提示式的那种。
最近关于微调的所有论文似乎都是关于指令调优的。
我看过一些关于微调/指令调优(例如FLAN)的论文,但没有一个真正描述指令调优与其他选择(无论是什么选择)之间的区别。
我理解指令调优是一种使用指令数据集进行微调的形式。但难道不是所有数据集都是指令数据集吗?还有其他种类的数据集吗?

1
如果我的答案解决了你的问题,你可以标记它为解决方案吗?否则,请告诉我还有什么需要补充的地方。 - Bernhard Stadler
1
如果我的回答解决了你的问题,你能标记它为解决方案吗?另外,如果有什么遗漏的地方,你能给予反馈吗? - undefined
2个回答

11
正如你所说,微调和指导微调并不是互斥的,但指导微调是一种(监督式)微调的形式,因此微调没有与指导微调区分开来的特征,只是相反。所以对于你的第一个问题,答案是“不是”(我理解为“每个数据集都是指导数据集吗?”而不是“指导数据集是否存在?”)。
指导微调的特殊之处在于,模型是为了遵循指令的任务而进行微调的,这涉及指示指令接收者执行另一个任务,即你有第二个“层次”的任务(例如“将以下数字拆分为数字”),这些任务仅在指令中定义,而指令是模型输入序列的一部分。
在经典类型的监督式微调中,你没有指令,而是直接微调模型以执行单个下游任务,例如将输入数字拆分为数字,而无需在模型输入中明确告知。 (然而,也有涉及微调和明确指令的混合方法。)
因此,尽管“任务”一词通常用于指代两者,但在概念上区分是至关重要的。
  • 模型进行微调的任务(如果有的话)
  • 最终用户希望模型执行的任务
  • 为这些任务提供输入的方式
  • (以及相应的数据集和统计分布)
总之,可以说在指令跟随中,实际任务是在推理时动态确定的,而在经典的无指令或类似设备的微调方法中,实际任务是在训练时静态确定的。
你的困惑可能与提示有关,提示是另一种广泛使用的适应技术,它可以涉及对任务的抽象描述(例如在零样本提示中),这可以被表述为一条指令。
但是,这并非必需:少样本提示不一定涉及对任务的抽象描述,而提示可能仅包含任务的输入输出示例,以及模型应该预测输出的输入。
回答你的第二个问题:你可以在Hugging Face Hub上找到许多数据集/基准。如果你随机点击其中几个,你会发现在预览中大多数都不包含任何指令。

那么可以说指令数据集包含作为字符串提供的任务,然后是输入吗?这有点像多任务训练数据集吗? - undefined
@information_interchange 这不是完全相同,但是它们是相关的。有可能存在一个指令数据集,其中指令的表述方式不同,但最终用户的任务始终相同,因为解决给定问题的指令可以有很多种方式表述。 - undefined
明白了,这很有道理。所以实际上,这只是一个序列到序列的数据集,其中指令或任务必须从输入或相关任务字符串中获取。 - undefined

4
我认为这篇博客文章中的描述可能会对你有所帮助

指令调整和标准监督微调的主要区别在于模型训练所使用的数据。标准监督微调是通过输入示例和相应的输出来训练模型,而指令调整则是在输入输出示例中增加了指令,使得经过指令调整的模型更容易推广到新任务。

这个说明性的比较也非常有帮助:

enter image description here 来源:Finetuned Language Models are Zero-Shot Learners

普通的微调是上图中的(A)部分,而指令调整是(C)部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接