数据集创建介绍——如何创建优秀数据集?
制作数据集是一项复杂的任务。无论您是希望模型掌握某种编程语言,还是希望模型能够求解二次方程式,都可能在过去尝试过制作数据集,但由于没有优秀数据集而面临挑战。制作优秀数据集非常重要,事实上,我认为在构建大型语言模型(LLM)时,它比其他任何事情都重要。那么,如何高效地制作一个真正能让模型变得更好的优秀数据集呢?本文将深入探讨一个优秀数据集的一些重要方面。
请注意,以下内容均为假设。如果您希望获得关于数据集制作方法、流行方法/技术、如何使数据集符合这些方面或如何进行微调的博客文章,请告诉我。
质量
数据集的质量无疑是数据集中最重要的方面之一,如果不是最重要的。没有质量方面,数据集就会是低质量的。如果一个数据集质量低下,那么基于它进行微调的模型将不会产生比数据集质量更好的输出(因此,正如您/数据科学家们可能会说的,“垃圾进=垃圾出”)。然而,质量到底意味着什么,又是什么决定了数据集的质量是否足够高呢?
多样性
多样性是数据集中与质量最相关的方面之一。您需要一个多样化的数据集,这样当用户向模型提问时,模型才能真正知道答案。这是因为用户会提出各种各样的问题,即使是像编码这样不那么多样的主题。在编码中,可能涉及很多多样性,例如编程语言、库以及编码中的子主题(例如,构建数学库或交互式GUI)。因此,您需要尽可能多地将它们包含在数据集中。
教育价值
数据集的教育价值也非常重要。它关系到数据对大型语言模型学习的有效性和有用性。一个模型已经可以解决的非常简单的数学方程的求解过程,用处不大。数据集中只包含普通代码而没有注释的一行数据,对大型语言模型学习来说用处也不大。然而,复杂数学方程的求解过程或丰富注释的代码则很有用。这是因为模型将真正从数据中“学习”,而不仅仅是知道它。这可以提高模型将连接到其他代码/场景的概率。数据应该通过提供有用和相关的信息来有效提高模型的性能,而不是仅仅给模型提供任何文本。
细节性
数据集中每个数据点都应尽可能详细。这样,模型有很高的概率能够学习并掌握它,并将其与类似提示建立联系。例如,“要解决 4 + 3 * 5,我们可以将 3 乘以 5(根据运算顺序),这将得到……”比仅仅“4 + 3 * 5 = 19”详细得多。这可能还会教会模型 3 * 5 的答案。此外,它还会增加用户参与度,因为许多用户希望/需要/喜欢详细的答案。
正确性
这可能是数据集中与质量相关的最重要方面。您希望数据是正确的,如果数据不正确,模型将产生不正确的答案。如前所述,这说明了“垃圾进=垃圾出”的概念。如果数据集包含不正确的信息,模型将产生相同的不正确输出。我认为这是目前大多数优秀数据集的目标,即正确性。这可能是大多数人在考虑数据集质量时的想法,所以我认为这里不需要再多解释了。
审查制度
这可能不如其他方面重要,但如果您的数据集受到审查,您可能需要考虑取消审查或避免故意审查数据集。这是因为审查可能会使大型语言模型错误地将允许的问题识别为被审查的问题,从而即使问题完全正常,它也可能拒绝回答。您不希望大型语言模型拒绝回答完全正常的问题,因为这会降低模型针对这些问题的回答质量。此外,这也会增加用户参与度,因为有些人可能会将大型语言模型用于您未曾预料到的目的。
数量
数量是除了质量之外的一个重要方面。从我们目前谈论的质量来看,一个数据集如果只有1k行,即使质量再高,也不会有太大作用。一个拥有所有这些优点,但有50k行的数据集会好得多。请注意,并非越大越好,因为您希望避免过拟合,因为数据集是高质量的。我敢说您至少需要10k行,以便模型能够充分学习以在特定主题上变得更好。但是,我不会超过100k行,因为这可能非常困难,并且可能会使大型语言模型过拟合。此外,请确保模型在拥有合理数量的同时也拥有良好的质量,如果两者都无法做到,请尝试在两者之间取得平衡。
结语
是的,这些就是构成优秀数据集的要素。我们谈论了质量,特别是多样性、教育价值、细节性、正确性和审查制度。此外,我们还简要讨论了数量。这两者对于数据集创建都非常重要,我建议您在制作数据集时尽可能遵循它们。再次强调,如果您想看到我的更多博客,请告诉我。您不相信这些难以遵循的“规则”能让大型语言模型变得更好吗?想想看,Alpaca 与当前的大型语言模型相比有多糟糕就知道了。最后,希望您能从这篇博客中有所收获!