本文是LLM系列的文章之一,针对《TinyStories: How Small Can Language Models Be and Still Speak Coherent English?》的翻译。
TinyStories:语言模型能有多小,还能说连贯的英语?
摘要
语言模型(LM)是自然语言处理的强大工具,但当它们很小的时候,往往很难产生连贯流畅的文本。具有大约125M个参数的模型,如GPTNeo(小)或GPT-2(小),即使经过广泛的训练,也很少能生成几个单词之外的连贯一致的英语文本。这就提出了一个问题,即产生连贯英语文本的能力的出现是否只发生在更大的规模(具有数亿个或更多的参数)和复杂的架构(具有多个层次的全局关注)上。
在这项工作中,我们介绍了TinyStores,这是一个由GPT-3.5和GPT-4生成的短篇小说合成数据集,只包含典型的3至4岁儿童通常理解的单词。我们证明,TinyStories可以用于训练和评估比最先进的模型小得多的LMs(总参数低于1000万),或者具有更简单的架构(只有一个transformer块),但仍然可以产生流畅一致的故事,其中有几个不同的段落,具有几乎完美的语法,并展示推理能力。
我们还介绍了一种评估语言模型的新范式:我们提出了一个框架,使用GPT-4对这些模型生成的内容进行评分,就好像这些内容是学生写的故事,由(人类)老师评分一样。这种新范式克服了标准基准的缺陷,这些缺陷通常要求模型的输出非常结构化,此外,它为模型提供了多维分数,为语法、创造力和指令遵循等不同能力提供了分数。
我们希望TinyStores能够促进语言文字的开发、分析和研究,特别是对于低资源或专业领域,并揭示语言文字中语言能力的出现。
1 引言
自然语言丰富多样。它不仅是一个规则和符号体系,也是一种传达和解释意义的方式。要理解和产生语言,不仅需要掌握语法的技术规则和词汇知识,还需要有足够的事实信息,并能够在逻辑和上下文中进行推理。因此,能够生成连贯英语文本的自回归语言模型也必须具备一定程度的这些能力。例如,考虑以下不完整的句子:
杰克饿了,所以他去找()
为了以合理的方式填充这句话,语言模型需要知道饥饿是一种激励人们寻求食物的状态,而食物是一类可以满足饥饿的东西。它还需要选择一个符合句子句法和语义约束的单词(例如“小吃”),并且在给定情况和背景知识的情况下是合理的。
举例说明了推理的必要性:
莉莉想养一只猫或一只狗。她妈妈不让她养狗,所以她()
为了填充这句话,语言模型需要调用推理:它需要应用析取消除原则:如果Lily想要猫或狗,而她不能得到狗,那么她必须选择猫。它还需要选择一个词来表达莉莉的意图或行动,与文本的语气和风格相一致。
语言模型已被证明具有一系列涌现能力,如摘要、算术、翻译和常识推理,因为它们在规模上被放大,并在各种大型语料库上进行训练。这些能力表明,语言模型不仅学习语言的表面模式,而且对世界和文本有一定程度的语义和逻辑理解。然而,目前尚不清楚这些能力在多大程度上出现,以及它们如何依赖于模型架构和数据分布。
也许语言模型最基本的能力是生成连贯流畅的英语文本,正如我们上面所讨论的,这不仅需要语法和词汇知识,还需要事实信息和上下文推理。语言模型能在多大程度上生成一致、多样和有意义的文本?为了实现这种能力,对语言模型的最低要求是什么?
到目前为止,有证据表明,生成连贯的文本已经需要相当大的规模:小型语言模型(SLM)的性能和能力非常有限,尤其是在文本生成任务中。例如,具有大约125M个参数的模型,如GPT-Neo(小型)或GPT-2(小型),即使在大型语料库(如Pile、Common Crawl或CC-100)上进行了广泛的训练,也很少能生成超过几个单词的任何一致文本。这些模型通常会产生不连贯、重复或无意义的句子,并且无法在段落之间保持清晰的主题或逻辑结构。这就提出了一个问题,即说连贯英语的能力的出现是否需要大型模型(具有数亿个或更多的参数)和复杂的架构(具有多个层次的全局关注)。
然而,目前尚不清楚SLM无法产生连贯的文本是自然语言内在复杂性的结果,还是用于训练的语料库过于广泛和多样的结果。例如,当我们在维基百科上训练一个模型时,我们不仅要教它如何说英语,还要教它如何编码和检索来自各个领域和学科的大量事实和概念。SLM会不会被他们必须处理和存储的信息的数量和种类所淹没,这阻碍了他们学习语言核心机制和原则的能力?
这就提出了一个问题,即我们是否可以设计一个数据集,保留自然语言的基本元素,如语法、词汇、事实和推理,但在广度和多样性方面要小得多,也要精细得多。这样的数据集将使我们能够分离和检查语言模型的最低要求,以生成连贯流畅的文本,并更准确、公平地评估其性能和能力。此外,这样的数据集将有助于SLM的开发和分析,特别是对于低资源或专业领域,在这些领域,大型和多样化的语料库要么不可用,要么不受欢迎。
在本文中,我们介绍TinyStories,一个由GPT-3.5和GPT-4生成的短篇小说合成数据集,旨在只包含大多数3至4岁儿童通常会理解的单词。TinyStores旨在捕捉自然语言的精髓,同时减少其广度和多样性。每个故事由2-3段组成,遵循简单的情节和一致的主题,而整个数据集旨在跨越3-4岁儿童的词汇和事实知识库。
基于这个数据集,我们的论文做出了几个主要贡献:
- 我们的主要贡献是,我们展示了TinyStories可以用于训练和评估SLMs,这些SLMs比最先进的模型小得多(低于1000万个参数,嵌入维度为256),或者具有更简单的架构(只有一个Transformer块),但仍然产生了一组流畅一致的故事,这些故事与更大、更复杂的模型产生的故事相当或优于这些故事。此外,尽管模型规模很小,但我们仍然观察到推理能力、一般事实知识和遵循某些指令的能力的出现。
- 我们引入了一种使用GPT-4评估语言模型的新范式,它克服了标准基准测试的许多限制。
- 我们表明,尽管TinyStores上生成模型的训练通常可以在不到一天的时间内在单个GPU上完成,但它们仍然表现出许多与LLM中观察到的行为相似的行为,例如缩放定律、宽度和深度之间的权衡等。即使在有限的计算资源下,我们能够进行广泛的实验来研究不同的超参数、架构和训练方法对模型性能和质量的影响。
- 我们发现,经过训练的SLM似乎比较大的SLM更容易解释。当模型具有少量神经元和/或少量层时,我们观察到注意头和MLP神经元都具有有意义的功能:注意力头产生非常清晰的注意模式,局部和语义头之间有明显的分离,MLP神经元通常在句子中具有明显共同作用的标记上激活。我们可视化和分析了模型的注意力和激活图,并展示了它们与生成过程和故事内容的关系。
为了让读者对在TinyStories上训练的模型的能力有第一印象,我们在图1中的样本提示上比较了在TinyStories上训练的28M参数模型与GPT2-XL的填充情况,后者大了两个数量级(1.5B参数)。我们注意到,模型的体系结构和训练方案本质上是相同的。
回到引言开头给出的示例,我们重点介绍图2中的填充部分。这些填充,以及本文中给出的许多其他例子,表明即使是非常小的模型(2.5M)或只有一个Transformer层的模型也能够获得事实知识,而稍大的模型能够表达一定程度的推理。与GPT2-XL的性能比较表明,与在大型语言语料库上训练的模型相比,TinyStores数据集使我们能够在更小的规模上展示这些能力的出现。这方面的更多证据将在论文的其余部分提供。
2 TinyStories数据集的描述
如上所述,TinyStories数据集背后的想法是拥有一个语料库,该语料库结合了自然语言中的所有定性元素,如语法、词汇、事实和推理,但在内容方面也更小、更不多样、更受限制。实现这一点的一个自然方法是利用幼儿在质量上获得上述智力的事实,尽管与成年人相比,幼儿接触语言的次数要少得多。
为此,我们依赖OpenAI的最新文本生成模型(GPT-3.5和GPT-4),这些模型能够根据指令生成大量合成内容。特别是,我们指导模型制作的内容只使用典型的3岁儿童能够理解的词汇。我们将内容限制为英语短篇小说的格式。使用大型语言模型生成训练数据的主要挑战是生成一个足够多样化的数据集:即使生成的温度设置为高值,提示这些模型生成故事仍然会生成一个非常重复的数据集,其多样性与培养一个对语言有着与儿童相当“理解”的语言模型所需的多样性相去甚远。
为了解决创建多样化数据集的问题,我们收集了一个由大约1500个基本单词组成的词汇表,这些单词试图模仿典型的3-4岁儿童的词汇,分为名词、动词和形容词。在每一次生成中,随机选择3个单词(一个动词、一个名词和一个形容词)。该模型被指示生成一个故事,以某种方式将这些随机单词组合到故事中。正如我们下面所说,这大大增加了数据集的多样性,迫使故事跨越孩子熟悉的整个词汇,并包括一套丰富的方法来组合不同的概念。此外,我们构建了一个故事可能具有的特征列表(如对话、情节转折、糟糕的结局或道德价值)。对于每个故事,我们生成了这些特征的随机子集,并提示模型对故事具有这些特征的额外要求。
以下是生成示例,包括GPT-3.5生成的提示和故事。
写一个短篇故事(3-5段),只使用3岁孩子可能理解的非常简单的单词。这个故事应该用动词“装饰”、名词“雷”和形容词“古代”。故事应该有以下特点:故事应该至少包含一个对话,故事有一个糟糕的结局。记住只使用简单的单词!
从前,在一所古老的房子里,住着一个叫莉莉的女孩。她喜欢用漂亮的东西装饰她的房间。一天,她在阁楼上发现了一个大箱子。她打开它,看到许多闪闪发光的装饰品。莉莉很高兴,决定在她的房间里用它们。
当莉莉在装饰她的房间时,外面的天空一片黑暗。一声雷响,莉莉吓了一跳。她跑过去对妈妈说:“妈妈,雷声太大了!”她妈妈抱着她说:“别担心,很快就会过去的。”但是雷声并没有停止。声音越来越大,古老的房子开始摇晃。突然,屋顶倒在漂亮的装饰品上。莉莉很伤心,因为她的房间不再漂亮了。结束。
2.1 TinyStories-Instruct:数据集的指令跟随变体
自然语言生成的另一个挑战是生成连贯、相关且符合给定指示或约束的文本。为了评估生成模型在指令跟随而不仅仅是内容创建方面的能力,我们创建了TinyStories的变体(称为TinyStories instruction),其中每个故事前面都有一组相应的指令。说明书有四种类型:
- 1.要包含在故事中的单词列表。
- 2.应该出现在故事中某个地方的句子。
- 3.特征列表(可能的特征:对话、糟糕的结局、道德价值、情节转折、伏笔、冲突)。
- 4.故事的简短摘要(1-2行)。
这个数据集中的每个条目都有这些指令的随机子集,后面跟着故事本身。这样,给定在该数据集上训练的模型,我们可以编写一个提示来反映任何指令集,并使用该模型生成相应的故事。以下是数据集中的一个示例:
简介:莉莉和蒂米一起建造了一座沙堡,并学会了妥协,但它被一阵风吹倒了。他们在破碎的沙堡中发现了美丽,并与一只蝴蝶快乐地玩耍。
特写:对话,阴影,扭曲句子:有一天,她去公园看到一只美丽的蝴蝶。
文字:不同意,网络,美丽
故事:从前,有一个叫莉莉的小女孩。她喜欢玩她的玩具和她的朋友。一天,她去了公园,看到了一只美丽的蝴蝶。她试图抓住它,但它飞走了。莉莉的朋友蒂米来和她一起玩。他们决定建一座沙堡,但在怎么建的问题上意见相左。莉莉想把它建得高一些,而蒂米想把它造得宽一些。他们争论了一会儿,但最终同意把它做得又高又宽。当他们建造沙堡时,他们注意到一群蚂蚁在一起工作。他们意识到蚂蚁正在建造一个隧道网络。突然,一阵大风刮倒了他们的沙堡。他们很伤心,但后来他们又看到了蝴蝶。它降落在他们沙堡的废墟上,他们意识到即使在破碎的状态下,它仍然很美丽。他们微笑着一起玩得很开心。
TinyStories Instruction是以以下方式创建的:对于原始数据集中的每个故事,我们已经有了一个用于创建它的单词和功能列表。此外,我们使用GPT-3.5创建故事的简短摘要,并从每个故事中提取一个随机句子(可以是故事中除第一个之外的任何句子)。然后,我们随机选择其中的一个子集,并将它们组合成一个指令,然后是故事本身。
3 GPT评估:一个评估在TinyStores上训练的模型的框架
虽然语言模型评估的常见范式通常依赖于任务形式的结构化评估数据集,其中模型的输出必须匹配给定的答案,但我们引入了一种新的范式,可以说在这种情况下更适合。再次,我们利用现有的大型语言模型来评估模型生成的故事。我们为模型提供了一个故事的开头,该开头取自由大约50个提示组成的手动准备的数据集,使用该模型生成一个填充,并将故事的开头和模型的填充一起提供给GPT-4,要求它根据语法、创造力及其与故事开头的一致性对填充作业进行评分。提示通常包含一个需要填充的部分句子,我们试图以一种语法上不重要的方式来填充被缩短的句子。
作为一个例子,我们取了上面例子中出现的故事,并将其剪切在“大声”一词之后。我们使用一个大约有2800万个参数的模型生成了上述故事的填充(生成以黄色突出显示),然后我们提示GPT-4首先提供口头评估,然后对填充情况进行评分。相互作用的转录本如下,GPT-4产生的部分用斜体表示:
为了进行完整的评估,对于评估集中的每个手动构建的提示,我们使用训练后的模型生成10个温度为1的补全。我们对所有填充的GPT-4评估得分取平均值。图3提供了一个例子,说明了随着训练的进行,不同分数的演变,以及几种模型尺寸的训练和评估损失。图4显示了在固定数量的训练步骤后,不同的分数如何随着不同的模型大小和架构而变化。
我们对在TinyStories指令上训练的模型的评估方法也依赖于GPT-4。我们已经实现了相应的评估管道,评估数据集包含50组不同的指令来创建故事(我们验证了这些指令与训练集不相交)。在评分阶段,我们向GPT-4提供指令和生成的故事。我们提示GPT-4根据故事准确反映给定指令的程度来确定一致性分数。此外,我们还添加了一个“情节”类别,以反映情节连贯的程度。图5展示了我们的模型生成故事和GPT-4评估故事的整个流程。分配给不同大小模型的分数显示在图4中表格的右侧两列中。
3.1 从我们的评估方法中得出的第一个见解
我们提出的评估方法提供了一种对模型进行更细粒度评估的方法,因此我们可以得出不同类型的能力对模型大小和架构的依赖性的结论。虽然所有的评估分数都随着评估损失的减少而不断增加,但对结果进行更仔细的审查会发现以下几点:
- 图3表明,与内容一致性相比,较浅的模型在语法方面表现更好,这意味着模型深度对于保持与内容的一致性比生成语法正确的语言更重要(我们在下一节中提供了更多的证据)。
- 在同一张图中,我们观察到语法的分数比其他两个分数在更早的阶段趋于平稳。此外,在表4中,我们还看到,虽然相对较小的模型可以掌握语法,但一致性和创造性只会在较大的规模下出现。
- 表4进一步表明,当模型的隐藏大小从64增加到128时,生成与故事开头一致的填充的能力就会出现。
- 我们还看到,我们在TinyStories上训练的最大模型(大约有80M个参数)在语法和一致性方面几乎达到了完美的分数。然而,它在创造力方面明显低于GPT-4的能力,这表明与语法和一致性相比,随着模型和数据集的大小,创造力继续得到更大的提高。
- 表4的右栏表明,只有1层的模型似乎在很大程度上难以遵循以下指令(这可能严重依赖于全局关注),2层似乎足以满足一定程度的指令遵循。比较“指导”和“绘图”得分,我们还发现,与隐藏维度更重要的绘图连贯性相比,指令的质量在很大程度上取决于层数。
4 在TinyStories上训练的小模型的性能
在本节中,我们给出了一些初步的例子,说明TinyStories如何产生非常小的模型,这些模型可以生成连贯的语言,展示常识知识以及一定程度的推理能力。我们还提供了证据,证明生成的内容确实是多样化的,驳斥了模型只是输出“记忆”的内容的可能性。
在整个章节中,我们使用了几种模型架构,其大小范围在大约1M到35M参数之间,层数范围在1到8层之间。所有模型最多可以在30小时内在单个V100 GPU上进行训练。
4.1 第一个例子
为了一窥在TinyStories上训练的(非常)小的模型的功能,让我们先来看看几个例子。我们从下面的故事开始,这个故事取自训练集。
萨拉和本在雪地里玩。他们用帽子和围巾堆了一个大雪人。他们开心又大笑。
但是一只大狗来了。狗生气了,吠叫起来。他跑向雪人,咬了咬他的帽子。Sara和Ben都吓得哭了。”走开,狗!别管我们的雪人!”萨拉喊道。但是狗不听。他咬了围巾和雪人的鼻子。他摇摇头,让雪人掉了下来。
Sara和【Ben跑到他们家,把门砰地关上。他们很安全,互相拥抱。”妈妈,妈妈,一只大狗打碎了我们的雪人!”本说。妈妈走过来拥抱他们。她很抱歉,吻了他们。”别担心,亲爱的。我们明天可以再堆一个雪人。但现在你需要暖和一下,吃点热巧克力。你又冷又湿。”她把它们带到厨房,给它们做热巧克力。她给他们饼干和棉花糖。她告诉他们要按顺序吃喝。萨拉先喝酒,然后是本。本先吃,然后是萨拉。他们感觉好多了,微笑着。他们感谢妈妈,并告诉她他们爱她。他们逃离了大狗和寒冷。他们快乐而温暖。】
现在,我们大致从中间剪切故事,去掉方括号内的部分,并用几个不同的模型生成另一个结局。
为了设置基线,我们从GPT2-XL生成的填充开始,其大小约为15亿个参数:
现在,让我们提供一个在TinyStories上训练的模型给出的生成,其大小约为250万个参数:
首先,我们注意到,上面的生成与故事的最初结局非常不同,这提供了第一个证据,证明它并没有被简单地记住(我们稍后会更彻底地讨论这一点)。我们还看到,生成的内容在情节、人物和事件方面与开头一致。可以说,尽管模型的尺寸几乎小了1000倍,但这种延续的质量比GPT2-XL提供的更高。
然而,这就提出了一个问题,即小型模型是否有效地记忆了少量模板,并且生成的模板在多样性方面非常有限,这在这一点上是一个值得关注的问题。我们稍后在第4.4节中系统地讨论了这一点。通过测试生成的故事与训练集的重叠,并考虑分布外生成,我们得出的结论是,这些模型确实具有很大的多样性,不依赖于记忆。
接下来,我们考虑由一个模型填充,该模型的大小大约为21M个参数,但只有一个Transformer层(因此只有一个全局关注层):
虽然这一填充远非完美,但(可以说)与开头一致,因为模型成功地捕捉到了情节的基调和主要元素。
我们承认,上面的两个例子并不是模型的最坏情况,但它们也不是极为罕见。这种规模的模型有时会产生不太连贯或不太可信的补全,但它们也往往会达到或超过此处所示的质量。然而,如果我们将参数的数量增加一个数量级,我们可以观察到模型一致地生成相干和相关的连续。为了可复制性,从这一点开始,将在零温度下生成示例,此外,提供模型参数作为补充材料。为了可复制性,下面的例子都是在零温度下生成的,此外,模型参数作为补充材料提供。
为了让读者了解填充质量对模型大小的依赖性,图6、图7和图8分别为不同大小和深度的模型给出的一个提示提供了不同的填充。每个表代表一个不同的提示,我们已经手动编写了这些提示。
我们看到,作为一个规模因素,生成质量明显提高,并且似乎与GPT-4评估给出的等级一致。较小的模型(64_8)几乎无法填充看起来与故事开头连贯的作品,而且经常重复或毫无意义。随着大小的增加,模型变得越来越连贯,语法也变得更好。模型还可以产生更多样、更有创意的结局,并使用更多的细节和情感。
我们还可以注意到,具有少量层的模型很难停留在上下文中,即使它们确实能够产生语法正确的英语。这表明该模型缺乏捕捉长期依赖关系和故事结构的能力。另一方面,具有更多层次的模型可以更好地保持故事的一致性和逻辑性。
一个有趣的观察结果是,在图7中,尽管填充是由不同的模型生成的,但它们以非常相似的方式开始(所有的填充都与一个小女孩走过来和南瓜说话有关)。我们指出,造成这种情况的原因似乎是在温度为0的情况下产生的。粗略地说,这就产生了“最有可能”的填充。为了证明该模型能够为故事生成更多样的结局,我们添加了一个非零温度的填充。然而,当温度升高时,填充质量似乎略有下降。
4.2 知识、推理和上下文跟踪
接下来,我们评估不同模型在三种额外类型的提示上的能力:
- 事实提示,测试模型对常识性事实的了解。
- 推理提示,测试基本推理能力,如因果关系和消除。
- 一致性(上下文跟踪)提示测试模型与给定上下文(如角色的名称和动作、场景和情节)保持一致性和连续性的能力。
我们在三个表中报告了每个模型和提示生成的延续(图9、图10和图11),并根据它们的成功(绿色)、失败(红色)或部分成功(黄色)对它们进行颜色编码。
结果表明,随着嵌入维度和层数的增加,在所有三个类别方面的性能都有所提高。嵌入维数越高、层数越多的模型往往会生成更准确、相关和自然的连续性,而嵌入维数越低、层数越少的模型往往生成更无意义、矛盾或无关的连续性。例如,具有1M个参数和8层的模型无法正确回答任何事实提示,并且经常生成没有意义或不遵循语法的句子。另一方面,具有33M个参数和8层的模型正确地回答了所有三类中的大多数提示。与GPT2-XL(右栏)给出的完成情况相比,我们发现,尽管它的尺寸要大得多,但它在所有三个类别中的性能都比我们的一些模型差。
一个有趣的发现是,事实知识似乎更多地依赖于嵌入维度,而对于上下文跟踪,层数更重要。例如,只有1层的模型没有得到任何一致性提示权,但确实得到了一些事实权,而具有嵌入维度64的模型没有获得任何事实权,但设法多次保持一致性。这表明嵌入维度对于捕捉单词的含义和关系更为关键,而层数对于捕捉生成中的长程依赖关系更为重要。
4.3 指令跟随例子和分布外生成
表12提供了在TinyStories Instruction数据集上训练的不同模型的生成示例,以及GPT-4给出的评估分数。随着模型大小的增加,我们看到它遵循指令和生成连贯图的能力都有所提高。
该数据集还使我们能够测试我们的模型是否具有合理的分布外性能。回想一下,在TinyStories指令的每个条目中,指令都是作为可能类型的指令(要使用的单词、摘要、规定的句子、功能)的(随机)组合创建的。我们创建了TinyStories指令的另一个变体(称为TinyStores指令OOD),其中我们禁止指令类型的一个特定组合:数据集不包含指令组合故事摘要和故事需要使用的单词的任何条目(我们选择这个特定组合是因为从某种意义上说,它是最严格的组合)。然后,我们测试了在这种变体上训练的模型是否能够产生遵循这两种指令组合的故事。图13中提供了一个示例,用于具有33M参数的模型。我们看到,也许有些令人惊讶的是,该模型能够同时遵循这两种类型的指令,即使它从未接受过此类任务的训练。
4.4 模型生成的内容的多样性
文本生成的主要挑战之一是产生多样化和创造性的文本,而不仅仅是现有文本的重复或变体。我们的小模型可以生成连贯流畅的英语文本,但如果它们只是复制或转述数据集的大部分内容,这就不会给人留下深刻印象。因此,在本节中,我们旨在解决这一关切。我们将提供几种方法和指标,表明模型可以生成不同的文本,这些文本与数据集中的任何故事都不相似,并且可以适应不同的指令和上下文。
为了评估模型产生的内容的多样性,我们首先需要定义我们所说的记忆是什么意思,以及我们想要避免或检测什么样的记忆。我们把记忆分为三个层次,如下所示:
- 精确记忆:这是最简单、最明显的记忆形式,模型只需从数据集中复制整个故事或其中的大部分,而不做任何更改。这可以通过检查生成的故事与数据集中的故事的相似性或散列来容易地检测到。
- 简单的模板匹配:这是一种稍微复杂一点的记忆形式,模型从数据集中更改故事中的一些名称或实体,但保持故事的其余部分不变。例如,模型可能会更改角色的名称或故事的位置,但保持情节和事件不变。这可以通过测量生成的故事和数据集中的故事之间的单词和n-gram的重叠来检测和防止。
- 复杂的模板匹配:这是最微妙、最困难的记忆形式,模型遵循数据集中更抽象的模式或结构,保持总体情节,但改变故事的细节和特点。这几乎是不可能量化的,因为这需要对故事的内容和意义以及它们之间的关系进行更深入的理解和分析。
我们声称,我们的模型没有进行精确的记忆或简单的模板匹配,我们用于评估模型生成的内容多样性的方法和指标证明了这一点。我们依赖几种方法:
- 手动检查:我们为一系列人工构建的故事生成填充。我们检查模型生成的故事,并检查它们是否是数据集中故事的副本或紧密修改。
- 填充训练故事:我们从训练集中获取故事,在中间截断它们,并用我们的模型生成替代填充。然后,我们将填充的故事与原始故事进行比较。我们观察到,填充的故事通常与最初的故事非常不同,并经常引入新的角色、事件或转折。如图14所示。
- 指令的多样性:回想一下,在TinyStories指令数据集中,我们以故事中包含的摘要或单词的形式提供了一组指令,然后是故事本身。然后,我们可以更改指令,验证组合是否出现在数据集中,并查看模型如何适应新指令。我们发现,这些模型可以根据指示生成不同的故事,即使它们是新颖的或具有挑战性的,例如要求模型在故事中加入不太可能的单词,或者添加情节转折或糟糕结局等特征。
4.4.1 基于Rouge评分的相似性定量测量
我们使用单词和n-gram重叠来定量测量故事的多样性。我们检查了由模型生成的不同故事之间的单词和n-gram的重叠,并将它们与数据集中的重叠进行了比较。我们发现,模型的代与数据集的重叠度非常低,这表明它们没有重复相同的单词或短语。我们使用标准的Rouge分数,对于源文本T1、T2,分别具有k-gram的 G k ( T 1 ) , G k ( T 2 ) \mathcal{G}_k(T_1),\mathcal{G}_k(T_2) Gk(T1),Gk(T2) ,rougek精度分数定义为:
R k , p ( T 1 , T 2 ) = 1 ∣ G k ( T 1 ) ∣ ∑ t ∈ G k ( T 1 ) 1 t ∈ G k ( T 2 ) . R_{k,p}(T_1,T_2)=\frac{1}{|\mathcal{G}_k(T_1)|}\sum_{t\in\mathcal{G}_k(T_1)}1_{t\in\mathcal{G}_k(T_2)}. Rk,p(T1,T2)=∣Gk(T1)∣1t∈Gk(T1)∑1t∈Gk(T2).
Rougek精度分数测量 T 1 T_1 T1中有多少k-gram被包括在 T 2 T_2 T2的k-gram中。Rougek的最终分数(fmeasure)如下所示:
R k ( T 1 , T 2 ) = 2 R k ( T 1 , T 2 ) × R k ( T 2 , T 1 ) R k ( T 1 , T 2 ) + R k ( T 2 , T 1 ) . R_k(T_1,T_2)=\frac{2R_k(T_1,T_2)\times R_k(T_2,T_1)}{R_k(T_1,T_2)+R_k(T_2,T_1)}. Rk(T1,T2)=Rk(T1,T2)+Rk(T2,T1)2Rk(T1,T2)×Rk(T2,T1).
我们进行了以下实验:我们从训练数据集中随机选取100个故事,在中间剪切每个故事,大致保留前40%,并将其用作提示。我们要求模型根据每个提示生成一个填充。设 T 1 , T 2 , ⋯ , T 100 T_1,T_2,\cdots,T_{100} T1,T2,⋯,T100是生成的填充, T 1 ′ , T 2 ′ , ⋯ , T 100 ′ T_1',T_2',\cdots,T_{100}' T1′,T2′,⋯,T100′是原始填充,我们测量:
-
- 原始故事中包含了多少新的生成(图14),即: s i : = R 2 , p ( T i , T i ′ ) s_i:=R_{2,p}(T_i,T_i') si:=R2,p(Ti,Ti′)
-
- 生成的100个故事之间的相似程度(图15),即: r i : = max j ≠ i R 2 ( T i , T j ) r_i:=\max_{j\ne i}R_2(T_i,T_j) ri:=j=imaxR2(Ti,Tj)
-
- 生成的故事中的k-gram在多大程度上是从训练数据集复制的(图16)。更准确地说,我们将S作为整个训练语料库,对于每个 r ∈ G k ( { T i } i ∈ [ 100 ] ) r\in\mathcal{G}_k(\{T_i\}_{i\in[100]}) r∈Gk({Ti}i∈[100]),我们测量 g r : = ∑ q ∈ G k ( S ) 1 g r = q ∣ ∑ q ∈ G k ( S ) ∣ g_r:=\frac{\sum_{q\in\mathcal{G}_k(S)}1_{g_r=q}}{|\sum_{q\in\mathcal{G}_k(S)}|} gr:=∣∑q∈Gk(S)∣∑q∈Gk(S)1gr=q换句话说,对于模型生成的每个k-gram,我们测量它出现在原始训练数据集中的频率,其中 g r = 0 g_r=0 gr=0意味着k-gram从未出现在训练数据集中。
-
- 就Rouge精度得分而言,在整个数据集中,生成的故事与最近点的相似程度如何。假设 S 1 , S 2 , ⋯ , S m S_1,S_2,\cdots,S_m S1,S2,⋯,Sm是训练数据集中的所有故事,在图17中,我们计算 h i = max j ∈ [ m ] R 2 , p ( T i , S j ) h_i=\max_{j\in[m]}R_{2,p}(T_i,S_j) hi=j∈[m]maxR2,p(Ti,Sj)
为了更具体地了解模型填充与故事的原始结尾以及数据集中其他故事的不同,在图18中,我们提供了原始故事的一个示例,即我们的模型的替代填充及其在训练数据集中的最近点。
以上指出了几个发现:
- 当模型使用一组不同的提示生成故事时,它最终会填充一组不同的输出。
- 当从数据集中填充故事时,填充的故事通常与原始故事非常不同。
- 生成的填充中的典型k-grams很少出现在数据集中,因为k值小到4或5。
- 数据集中距离每个生成的填充最近的点通常仍然很远。
所有这些,再加上在TinyStores指令上训练的模型成功遵循集合指令的能力,我们可以很容易地验证这些指令与数据集脱节(例如,可以检查单词的组合),提供了强有力的证据,证明我们的模型产生了真正新颖多样的故事,而不是现有故事的简单变体。
我们注意到,尽管如此,我们无法完全排除模型进行复杂模板匹配的可能性,因为很难定义和衡量什么构成了小说情节或小说故事。我们承认这是我们评估的一个局限。另一种可能性是,数据集中的故事基本上涵盖了复杂模板匹配(弱)度量中分布的整个支持。
5 解释性
理解深度神经网络的内部工作原理,尤其是语言模型,是这一研究领域的一大挑战。例如,通常很难将特定函数分配给神经网络的给定组件。这可能是因为,与我们基于人类设计程序的直觉相反,网络组件可能没有不同的角色,而是以复杂而混乱的方式进行交互。在本节中,我们提供了一些初步证据,证明在TinyStores上训练较小的模型会带来更高的可解释性,这表明当网络的大小受到限制时,我们可能能够深入了解其内部机制。我们关注模型的两个方面:注意力头部和MLP中的神经元。
由于这不是我们论文的主要重点,本节绝非详尽无遗,需要做更多的工作才能得出更具结论性的结论。相反,我们只提供了一些初步证据,有望激励未来的工作。
注意力头部。在对注意力头的研究中,我们利用了这样一个事实,即我们能够训练一个非常浅的模型(只有一个Transformer块),该模型仍然能够生成有意义的文本。由于模型只有一层,注意力头直接负责生成输出token,因此它们可能比更深层次的模型具有更多可解释的功能。我们使用Voita等人的方法来分析头部的注意力模式,并将其分为不同的类型,如位置、句法或语义。我们还使用Clark等人的方法来可视化头部的注意力图,并在特定的例子中检查他们的行为。
我们的研究结果表明,注意力头表现出多样化和有意义的功能,例如关注前一个单词、句子的主题、句子的结尾或故事的主要主题。我们还观察到,一些注意头专门生成某些类型的单词,如名词、动词或标点符号。这些结果表明,注意力引导者学会执行不同的语言任务,并捕捉故事的不同方面。
MLP中的神经元。我们还提供了一些初步证据,证明在较小的模型中,MLP中的一些神经元具有人类可以解释的作用。我们使用类似于[18]的方法来识别每个神经元的MLP中最具影响力的标记。我们发现,一些神经元在句子中(如主题或动作)或故事中(如主角的介绍)具有特定作用的单词上被激活。这些发现表明,MLP中的神经元学会编码不同的语义和风格信息,并影响生成过程。
5.1 解释不同注意力头的作用
为了理解训练后模型的注意力模式,我们使用了一个隐藏维度为1024的1层模型和在TinyStores上训练的16个注意力头。我们可视化它在处理以下段落时产生的注意力模式(粗体是提示,高亮显示的文本由模型生成):
注意力模式主要基于表征之间的距离的头部和注意力模式对语义依赖性更强的头部之间似乎存在明显的区别。
基于距离的注意力。在16个注意力头中,我们观察到多个基于位置的注意力头,使得每个标记都以规定的相对距离关注标记。不同的头部与不同的距离相关联。
基于语义的注意力。我们还观察到存在(1)。一头认为“the”和“a”都是指“banana”这个词,有趣的是,“the”在“the park”也指“bananer”,但模型仍然设法生成“park”,这是一致的填充。(2) 。另一个注意力头给出了一个模式,其中标记“the”和“a”都关注“park”。(3) 。第三种情况是,大多数单词都与“汤姆”和“露西”的名字有关。
我们注意到,像“the”、“a”、“and”或“or”这样的单词的生成将由基于距离的局部注意头引起,这是有道理的,因为这些是具有语法作用的token,取决于一个句子中的短距离互动。另一方面,故事中的主要实体,如“香蕉”、“公园”、“露西”和“汤姆”,通常不能仅基于相邻的token来预测(作为下一个token),这就是为什么模型需要使用语义注意力头来生成它们的原因。
5.2 解释不同神经元的作用
为了检查神经元是否具有有意义的作用,我们遵循[18],并可视化每个神经元的最重要token。更准确地说,我们从数据集中收集了20个故事(约8000个token)。我们取一个在TinyStores上训练的模型,我们选择一个Transformer层,并从与其相关的MLP中选择其中间层中的一个坐标。我们将这种选择称为神经元。我们用模型处理故事集,以获得它们的内部表示,这为我们提供了token和神经元的每个组合的激活值。然后,对于每个神经元,我们查看整个集合中激活率最高的标token。我们用红色突出显示这些token(并将它们与包含它们的句子一起呈现)。我们对两个模型重复了这一点:一个隐藏维度64和1M参数的小模型,在TinyStores(图21)和GPT2-XL(图22)上训练。
在TinyStories上训练的1M参数模型中,图21首先显示了前一层中前两个神经元的激活token。请注意,由于结构对神经元之间的排列是不变的,取两个第一个神经元与任意选择两个神经元是一样的,关键是这些神经元既不是唯一的,也不是经过精心挑选的。我们看到(图的顶行),这些神经元中的每一个都在具有共同作用的token上被激活(一个在代词上被激活,代词也是句子中的主语,另一个在句子中的动作上被激活)。此外,我们在另一层(第6层)中呈现第一个神经元的激活token,其中该神经元仅在形容词上被激活。最后,我们选择了在token和神经元的所有组合中具有最大激活值的神经元。这个神经元(如右下角所示)似乎起着识别故事主角第一次出现的作用。
为了进行比较,图22显示了GPT-XL(一个更大的神经网络)第12层的前两个神经元的激活token。在这种情况下,这两个神经元似乎都没有明显的作用。
6 用TinyStories探索NLP的结构和超参数
开发大型语言模型(LLM)的主要挑战之一来自于训练中涉及的高计算成本。为LLM找到最佳架构、训练算法和超参数需要大量的资源和实验。因此,拥有一个更小、更简单的数据集将是有用的,它仍然可以捕捉LLM的一些基本功能,并使我们能够研究不同的设计选择如何影响其性能。TinyStories就是这样一个数据集,因为它使我们能够训练和评估比最先进的模型小几个数量级的LM,但仍然具有生成连贯文本的基本能力。
在这项工作中,我们迈出了使用TinyStories作为探索NLP架构和超参数的试验台的第一步。我们表明,我们的小模型在某些方面表现出与LLM中观察到的模式相似的模式。特别是,我们研究了两个问题:如何在固定数量的训练flops的情况下平衡模型大小和学习预算,以及如何在给定的模型宽度和深度下选择注意力头的数量。
模型尺寸与训练FLOPs。对于固定数量的训练flops,模型的大小和训练步骤的数量之间存在权衡(flops的总数是两者的乘积)。先前的工作已经表明,LLM的模型大小和学习预算之间存在多项式比例律,即,给定数量的触发器的最佳模型大小与提升到某个幂 α > 1 \alpha>1 α>1的触发器成比例。然而,这些工作使用了不同范围的模型大小(从几百万到数百亿的参数),并发现了不同的 α \alpha α值(分别约为0.7和0.5)。一个自然的问题是,这种缩放定律是普遍的还是取决于数据集。我们的数据集允许我们进行类似的实验,但使用更小的模型和flops。令人惊讶的是,我们也发现了多项式标度定律的证据,这表明这里可能存在普遍现象。
我们在TinyStories上训练各种尺寸和架构的模型。对于每一个flops数量,我们选择在可能的组合中实现最低验证损失的模型和训练步骤的数量。我们将层数从2、4、8、12改变,将隐藏维度从64、128、256、512、768、1024、2048改变。结果如图23所示。尽管点的数量可能有点少,数据可能非常确凿,但该图指向多项式相关性。
选择头的数量。Transformer的另一个设计选择是每层的注意头的数量。在给定固定的模型宽度和深度的情况下,头的数量如何影响模型的性能并不明显。我们的结果如图24所示,表明在头部数量较少的情况下,增加头部数量可以提高模型在所有指标上的性能。
7 相关工作
生成语言模型在各种自然语言处理任务中取得了令人印象深刻的成果,如文本摘要、对话生成和故事填充。然而,这些模型中的大多数都非常大,具有数亿甚至数十亿个参数,这对训练、推理和部署提出了重大挑战。例如,GPT-3是迄今为止最大的LM之一,它有1750亿个参数,需要数百PB的计算才能进行训练。较小的模型,如具有1.25亿个参数的GPT-2 small,即使在大型语料库上进行了广泛的预训练,也很难生成几个单词之外的连贯一致的句子。
已经提出了几种方法来将大的LMs压缩或提取成更小的LMs,例如知识蒸馏、修剪和量化。然而,这些方法对于为掩蔽语言建模和下游分类任务设计的类似BERT的模型比对于为自回归语言生成设计的类似GPT的模型要有效得多。
生成LMs面临的另一个挑战是对其产出的评估。与类似BERT的模型不同,后者可以在带有标记数据的下游任务中进行微调和评估,类似GPT的模型更难衡量它们“说和理解自然语言”的能力。大多数现有的生成性LM基准,如LAMBADA、CLOZE、TriviaQA和Winograd Schema Challenge,都要求模型生成一个单词或一个短语作为答案,而这并不能捕捉生成自然语言的丰富性和多样性。此外,这些基准往往受到数据集的规模和质量、答案的模糊性和主观性以及缺乏人为评估的限制。更大、更多样化的数据集,如BigBench,对于SLM来说太复杂了。其他一些基准测试,如WikiSQL,具有更结构化的输出格式,这使得它们更容易评估,但也不太能代表自然语言生成。
我们的工作也有利于Transformer模型的理论分析及其学习过程。现有的理论工作大多集中在具有一个Transformer块的模型上,这比具有多个块的模型更容易分析。例如,Voita等人表明,一个Transformer块可以根据自注意层的位置来学习执行不同的语言任务。李等人表明,Transformer块可以对主题模型进行编码。Jelassi等人表明,一个Transformer块可以对补丁关联进行编码。我们的工作提供了经验证据,证明一个Transformer块也可以生成多样化和一致的故事,这表明即使只有少量的参数和层,Transformer架构也具有强大的表达能力。
8 结论
在这项工作中,我们展示了TinyStores,这是一个由GPT-3.5和GPT-4生成的短篇小说合成数据集,只包含典型的3至4岁儿童通常理解的单词。我们已经证明,TinyStories可以用于训练和评估小语言模型(SLM),这些模型比最先进的模型小得多,但仍然能产生流畅一致的故事,其中有几个段落是多样的,语法几乎完美,并展示了推理能力。
虽然在互联网上庞大而多样的语言语料库上训练的大型模型表现出了令人印象深刻的能力,但这些数据集似乎太大了,SLM无法捕捉语言的复杂方面。在这项工作中,我们认为TinyStores使我们能够从模型和数据集的大小来看,在更小的规模上观察和研究LMs中连贯文本的生成、推理和指令跟随等能力的出现。通过在我们的数据集上训练SLM,我们还观察到了许多类似LLM的行为,如缩放定律、宽度和深度之间的权衡等。此外,我们已经表明,训练后的SLM比较大的SLM具有更高的可解释性,我们可以可视化和分析它们的注意力和激活模式,以了解它们是如何生成和理解故事的。
我们提供了证据,证明在TinyStores上训练的模型能够产生真正新的故事,而不仅仅是复制数据集中的大块文本。然而,评估我们的模型的“创造力”的真实程度仍然是一个挑战,模型在多大程度上反映了对它们所产生的故事的某种“理解”(当然是在非常低的水平上),而不仅仅是模板匹配来创建一个合理的延续。我们希望这个数据集可以用于未来的工作,以获得关于语言模型创造性程度的见解。
我们还引入了一种新的语言模型评估范式,它使用GPT-4对这些模型生成的内容进行评分,就好像这些内容是学生写的故事,由(人类)老师评分一样。这种新范式克服了标准基准的缺陷,标准基准通常要求模型的输出非常结构化,此外还为模型提供了多维分数,为不同的能力提供了分数。我们相信,这种范式可以在TinyStories之外发挥更大的作用。
最后,我们提出了初步发现,这些发现指出了宽度与深度在生成网络的智力能力中的作用,这表明宽度对于捕捉事实知识更重要,而深度对于上下文跟踪更重要。此外,我们的研究结果表明,就出现而言,语法和句法能力比产生一致文本的能力出现得更早,而产生一致文本又比产生被认为具有创造性的内容的能力出现的更早。这些初步发现只是提示性的(并不是这项工作的主要焦点),但它们表明了我们的数据集和评估范式如何能够对生成模型中各种语言能力的出现和评估进行更细粒度的分析。
我们希望TinyStores能够促进语言文字的开发、分析和研究,特别是对于资源较少或专业领域,并揭示语言文字中语言能力的出现。这项工作产生的一个普遍问题是,合成一个精细的数据集是否有利于训练网络以供实际使用。例如,也许可以通过合成假设呼叫的大型数据集来训练客户服务聊天机器人。