目录
引言
2022年11月30日,OpenAI在其博客上发布了ChatGPT的介绍,掀起了大语言模型的一波狂风,席卷了2023年伊始几乎所有的话题。这个能够“理解”人类语言的模型,不仅可以完成接续上下文的查询和交流任务,还能够实现包括代码、论文、周报等在内的撰写工作。
它的能力,远不仅如此。它的出现,是一场“变革”。
截止到此文发布,Google上关于ChatGPT的搜索词条达到6.5亿个,包括Meta(Galactica,已下线)、百度(文心一言)在内的诸多公司火速开展了基于ChatGPT的研究工作并推出了产品。微软已率先将其应用在搜索领域,开启了ChatGPT影响的第一个领域:搜索引擎。
在这波浪潮之下,作为人工智能从业者,我们有必要好好了解一下这个“大杀器”的能力和其背后的原理。
注:
- 这篇文章的出现离不开各社区内的研究者们的分享,所有参考文献已列于本文最后,感谢各位的工作。
- 截止到发文(2023.2.20),OpenAI公司暂未ChatGPT论文,只先介绍其前序工作,待文章发表后继续更新。
- 为了文章的简洁性,本文只简要介绍各方法的思想和主要贡献,关于方法的具体内容可以参考论文等其他资料。
基石
对于ChatGPT而言,技术的发展并非一蹴而就。它的出现,依赖了许多前人的工作。在了解这项不可思议的工作之前,让我们先看看它的发展历程。
故事的开始:Transformer
2017年6月,Google公司在《Attention is All You Need》一文中发布了名为“Transformer”的方法,引用量达到了6万5千余次。
异姓兄弟:GPT、Bert与GPT-2
GPT
在Transformer发布的一年后,2018年6月,OpenAI公司推出了第一代GPT模型,其名字是后人根据论文题目中的“Generative Pre-Training”取首字母得到的。其目的是为了解决自然语言处理任务中,有标注的样本数量不足给深度学习类方法带来的局限。
GPT模型采用的是生成-判别结构:首先在未标注文本上预训练生成一个语言模型,随后在此基础上,用有标注样本在特定任务下训练一个判别模型。尽管生成-判别结构早在几年前就广泛应用于了图像处理领域,但由于自然语言处理当时还没有大规模的已标注数据集(句子数1000万以上),因此在GPT和Bert出现前,这种结构并未在NLP领域打开局面。由于GPT的生成模型是是未标注文本上训练得到的,因此在解决样本问题上向前迈进了一大步。
另外,在GPT提出之前,虽然也有基于非标注样本训练的例子(如word2vec),但是这些方法通常需要对一个特定的语言任务构造网络结构。不同的是,GPT在应对各任务时,只需要改变输入,而无需修改模型。这也是一个很大的创新。
总体而言,在当时,使用无标注样本训练的时候主要存在两个困难:
- 优化目标函数的选择比较困难:不同的目标函数擅长不同的NLP子任务,没有一个通用的解决方案;
- 如何将学习到的文本描述传递到下游子任务:NLP子任务之间的差距比较大,很难有一个一致的描述可以适应所有的子任务。
注: 对不熟悉自然语言处理任务的小伙伴解释一下,这里所说的“特定的语言任务”是指包括词理解、短语理解、句子理解、句子生成等在内的多样化任务。
在GPT工作开始的时候,是选择transformer作为基础架构还是选择RNN作为基础架