机器之心报道

机器之心编辑部

UltraChat 处理了数据荒的一大难题。

自 ChatGPT 发布以来,这段时刻对话模型的热度只增不减。当我们赞叹这些模型体现冷艳的一起,也应该猜到其背后巨大的算力和海量数据的支持。

单就数据而言,高质量的数据至关重要,为此 OpenAI 对数据和标示工作下了很大力气。有多项研究标明,ChatGPT 是比人类愈加牢靠的数据标示者,假如开源社区能够获得 ChatGPT 等强大言语模型的很多对话数据,就能够练习出性能更好的对话模型。这一点羊驼系列模型 ——Alpaca、Vicuna、Koala—— 现已证明过。例如,Vicuna 运用从 ShareGPT 搜集的用户同享数据对 LLaMA 模型进行指令微调,就复刻了 ChatGPT 九成功力。越来越多的依据标明,数据是练习强大言语模型的第一生产力。

ShareGPT 是一个 ChatGPT 数据同享网站,用户会上传自己觉得风趣的 ChatGPT 回答。ShareGPT 上的数据是开放但琐碎的,需求研究人员自己搜集整理。假如能够有一个高质量的,掩盖规模广泛的数据集,开源社区在对话模型研发方面将会事半功倍。

根据此,最近一个名为 UltraChat 的项目就体系构建了一个超高质量的对话数据集。项目作者测验用两个独立的 ChatGPT Turbo API 进行对话,从而生成多轮对话数据。

  • 项目地址:github.com/thunlp/Ultr…
  • 数据集地址:http://39.101.77.220/
  • 数据集交互地址:atlas.nomic.ai/map/0ce6578…

详细而言,该项目旨在构建一个开源、大规模、多轮的根据 Turbo APIs 的对话数据,便利研究者开发具有通用对话能力的强大言语模型。此外,考虑到隐私保护等要素,该项目不会直接运用互联网上的数据作为提示。为了保证生成数据质量,研究者在生成过程中采用了两个独立的 ChatGPT Turbo API,其中一个模型扮演用户角色来生成问题或指令,另一个模型生成反馈。

调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了

假如直接运用 ChatGPT 根据一些种子对话和问题让其自在生成,容易出现话题单一、内容重复等问题,从而难以保证数据本身的多样性。为此,UltraChat 对对话数据掩盖的主题和使命类型进行了体系的分类和规划,还对用户模型和回复模型进行了细致的提示工程,它包含三个部分:

  • 关于国际的问题(Questions about the World):这部分对话来自于对实际国际中的概念、实体和目标相关的广泛询问。所涉及的主题包含科技、艺术、金融等多个范畴。
  • 写作与创造(Writing and Creation):这部分对话数据着重于指示 AI 从头进行创造一个完整的文本资料,并在此基础上进行后续的发问或进一步指导以完善写作,撰写的资料内容类型包含文章、博客、诗篇、故事、戏剧,电子邮件等等。
  • 关于现有资料的辅助改写(Writing and Creation):该对话数据是根据现有资料生成的,指令包含但不限于改写、续写、翻译、概括、推理等,包含主题相同十分多样。

这三部分数据掩盖了大部分用户关于 AI 模型的要求。一起,这三类数据也会面临着不同的应战,为此需求不同的结构方法。

例如,第一部分的数据主要应战在于怎么在总量为几十万组对话中尽量广泛地包含人类社会中的常见知识,为此研究者从主动生成的主题和来源于 Wikidata 的实体两个方面进行了挑选和结构。

第二、三部分的应战主要来自于怎么模拟用户指令,并在后续对话中让用户模型的生成尽量多样化的一起又不违背对话的最终目标(按照要求生成资料或改写资料),为此研究者对用户模型的输入提示进行了充沛的规划和实验。在结构完成之后,作者还对数据进行了后处理以削弱幻觉问题。

现在,该项目现已发布了前两部分的数据,数据量为 124 万条,应该是现在开源社区内规模最大的相关数据集。内容包含在实际国际中丰富多彩的对话,最终一部分数据将在未来发布。

国际问题数据来源于 30 个具有代表性和多样性的元主题,如下图所示:

调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了

  • 根据以上元主题,该项目生成了 1100 + 子主题用于数据构建;
  • 关于每个子主题,最多生成 10 个详细问题;
  • 然后运用 Turbo API 为 10 个问题中的每一个生成新的相关问题;
  • 关于每个问题,如上所述迭代地运用两个模型生成 3~7 轮对话。

此外,该项目从维基数据中搜集了最常用的 10000 个命名实体;运用 ChatGPT API 为每个实体生成 5 个元问题;关于每个元问题,生成 10 个更详细的问题和 20 个相关但一般的问题;采样 20w 个特定问题和 25w 个一般问题以及 5w 个元问题,并为每个问题生成了 3~7 轮对话。

接下来我们看一个详细的例子:

调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了

我们在 UltraChat 平台上测试了数据查找作用。例如,输入「音乐(music)」,体系会主动查找出 10000 组与音乐相关的 ChatGPT 对话数据,而且每组都是多轮对话

调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了

输入关键词「数学(math)」的查找结果,有 3346 组多轮对话:

调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了

现在,UltraChat 包含的信息范畴现已十分多,包含医疗、教育、运动、环保等多个话题。一起,笔者测验运用开源的 LLaMa-7B 模型在 UltraChat 上进行监督的指令微调,发现只是练习 10000 步后就有十分可观的作用,一些例子如下:

调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了

国际知识:分别列出 10 个很好的我国和美国大学

调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了

幻想问题:当时空旅行成为可能后,有什么可能的后果?

调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了

三段论:鲸鱼是鱼吗?

调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了

假设问题:证明成龙比李小龙更超卓

调用多个ChatGPT API相互对话,清华开源的多轮对话数据UltraChat来了

整体来说,UltraChat 是一个高质量、规模广的 ChatGPT 对话数据集,能够和其它数据集结合,显著地提高开源对话模型的质量。现在 UltraChat 还只放出了英文版,但也会在未来放出中文版的数据。感兴趣的读者快去探索一下吧。