Home

Awesome

RefGPT: Reference-to-Dialogue by GPT and for GPT

[English Version]

众所周知,事实正确性是ChatGPT的一大薄弱环节,也是所有试图复现ChatGPT的同行们所面临的重大挑战。想要提升事实正确性,可以标注大量的事实型对话数据(比如人物、科技、医疗、法律、艺术)用于微调GPT模型。为了避免人工标注的昂贵成本,我们提出一种自动生成事实型对话的方法,并公开我们的部分数据。我们是来自上海交大、香港理工大学等机构的NLP从业者,我们决定公开一批数据,这批数据包含5万条中文多轮对话。

方法介绍

我们的目标是自动生成海量、高质量、事实型多轮对话,用于训练GPT,提升GPT的事实正确性。我们采用如下方法自动生成数据。

  1. 采集优质的事实型文档,我们称之为reference,其来源可以是电子书、维基百科、优质垂类网站。文档需要涵盖尽量多的主题,包括但不限于人物、机构、科技、医疗、法律、人文、经济、家居、汽车、出行、美食、时尚、体育、教育、宠物。
  2. 利用已有的LLM(例如付费API)生成多轮对话。输入是一篇reference,prompt类似“请根据这篇文章生成多轮问答”。API会输出一段多轮对话(dialogue)。这种方法将原本只适合预训练的文档转化成可供微调的多轮对话。
  3. 第2步收集到大量的reference-dialogue二元组。将reference和prompt作为输入,dialogue作为目标,微调一个GPT模型(可以基于LLaMA或BLOOM的预训练基座)。我们将微调出的模型称作Reference-to-Dialogue GPT,缩写RefGPT。有了RefGPT,即可基于reference生成多轮对话,获得海量的数据。

外界复现我们的方法时,需要关注2个要点。

  1. Reference的质量、广度。Reference内容质量必须高,比如医疗等优质垂类网站的页面、维基百科上非生僻的词条,且需要对网页做清洗。Reference的广度应当大,不能限制在单个垂类或单个网站。
  2. 调用已有LLM时需要写prompt,需要仔细尝试各种prompt,使得LLM生成的多轮对话符合预期。

数据公开

我们使用上述步骤1和2获得大量多轮对话。我们公开其中部分数据,称之为“RefGPT-Dataset-V1-CN”,包含5万对中文reference-dialogue二元组,其中dialog是基于reference生成的多轮对话。

例1:

例2:

例3:

注:

  1. 本次公开的数据(V1-CN)只包含中文。对于其他语言,可以采用类似的方法用reference生成dialog,也可以将我们公开的数据翻译成其他语言。我们计划在未来公布英文数据。
  2. 本次公开的数据(V1-CN)未经人工校验,无法严格保证正确性、安全性。使用者需要对数据产生的结果负责。

RefGPT模型

我们使用某些已有的LLM生成了大量的多轮对话(公开了其中5万段)。我们用所有的reference-dialogue二元组微调GPT,将得到的模型称为RefGPT,RefGPT是单任务模型,专门根据reference生成dialogue。我们可能会在未来公开RefGPT,届时同行可以用RefGPT生成多轮对话,最后将多轮对话用于复现ChatGPT。

FAQ

主要贡献者

  1. 杨东杰, djyang.tony@sjtu.edu.cn
  2. 袁瑞峰, ruifeng.yuan@connect.polyu.hk
  3. 范元涛, yuantaofan@bupt.edu.cn
  4. 杨逸飞, yifeiyang@sjtu.edu.cn
  5. 汪自力, ziliwang.do@gmail.com
  6. 王树森wssatzju@gmail.com

引用

如果你使用我们的方法或数据,请引用本GitHub Repo。

@misc{refgpt,
  author = {Dongjie Yang and Ruifeng Yuan and Yuantao Fan and and Yifei Yang and Zili Wang and Shusen Wang},
  title = {RefGPT: Reference-to-Dialogue by GPT and for GPT},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/ziliwangnlp/RefGPT}},
}