流行的技术名词按发音难度排序,ChatGPT肯定排在前面。
到底它为什么叫做ChatGPT呢?
先说GPT:GenerativePre-TrainingTransformer
虽然我们已经习惯了话唠的机器人絮絮叨叨的说个不停,但这只是众多的人工智能模型的一种方式。比如还有识别类的(Congnition):人脸识别,车牌识别这些,还有语音识别,文字识别各种识别任务。(在提到模型的时候,也常常被叫做判别模型,discriminative)。Generative这个大的种类里面有几个小分支,DALLE的画图的用的是对抗网络方式GAN(这个晚些可以分析),现在最火的StableDiffusion,MidJourney走向了另外一个分支,叫做Difusion,而ChatGPT又是一个分支,就是转换器Transformer。
而TransformerGenerative的语言模型的核心,通俗的说就是「顺口溜」。
当看了足够多的文本以后,发现有一些语言模式是反复出现的。它之所以可以准确的填补「锄禾日当__」的空格,不是因为它在自己的大脑子里面重构了一副农民劳动的场景,仅仅是不过脑子,顺口溜出来的。
你问它:3457*43216=,它回答149575912(这是错的。正确结果是149397712)。之所以结果的2是对的,仅仅因为它读了太多的文字资料以后,隐约感觉到
7结尾的文字,乘号,6结尾的文字,和2结尾的文字比较「押韵」
从语感上比较像一首诗,所以它就学会了这样的文字,而不是学会了计算。
生成式模型努力解决的问题,就是给定一些字,预测如果是人类会写什么字。
在BERT那个年代,为了训练,大家常常把一句话中随机几个单词遮起来,让计算机用现有的模型预测那几个单词,如果预测准了,就继续加强,如果预测错了,就调整模型,直到上百万上亿次训练之后越来越准。只不过ChatGPT的Generative的部分,不仅仅把文字,还把上下文、intention(意图)也放进去做训练和预测。
以前很多的人工智能模型都是为了一个目标训练的。比如给我1000张猫的照片,我就很容易的可以训练出来一个模型,判断一个图片是有猫还是没有猫。这些都是专用的模型。
而Pre-Training模型不是为了特定的目标训练,而是预先训练一个通用的模型。如果我有特定的需求,我可以在这个基础上进行第二次训练,基于原来已经预训练的模型,进行微调(Fine-Tuning)。
这事儿就像家里请了个阿姨,她已经被劳务公司预训练了整理家务的知识,在此之前已经被小学老师预训练了中文对话,到了我家里面我只要稍微finetune一些我家里特定的要求就好了,而不需要给我一个「空白」的人,让我从教汉语开始把她彻底教一遍才能让她干活。
ChatGPT的预训练就是给了我们所有人(尤其是创业者,程序员)一个预先训练好的模型。这个模型里面语言是强项,它提供的内容无论多么的胡说八道,至少我们必须承认它的行文通畅程度无可挑剔。这就是他pre-training的部分,而回答的内容部分,正是我们需要finetuning的。我们不能买了个Apache服务器回来,不灌内容,就说他输出的内容不够呀。
变电器就是一种transformer:220伏电进,12伏出。
语言的转换器就是把语言的序列作为输入,然后用一个叫做编码器encoder的东西变成数字的表现(比如GPT就用1536个浮点数(也叫1536维向量)表示任何的单词,或者句子,段落,篇章等),然后经过转化,变成一串新的序列,最后再用decoder把它输出。这个转换器,是这个自然语言处理的核心。
比如如果给ChatGPT输入「Apple」这个词,它给你返回
[0.0077999732,-0.02301609,-0.007416143,-0.027813964,-0.0045648348,0.012954261,.....0.021905724,-0.012022103,-0.013550568,-0.01565478,0.006107009]
这1536个浮点数字来表示Apple(其中一个或着多个维度的组合表达了「甜」的含义,另外一堆表达了「圆」的含义,还有一大堆共同表达了「红」等等属性组合,至于具体哪些表达了这些,不得而知)
然后这堆数字,再交给decoder,并且限定中文的话,它会解码成为「苹果」,限定西班牙语的话,它会解码成「manzana」,限定为emoji的话,就输出「」。总之,通过编码,转换,解码,它就完成了从Apple到目标输出语言的转化。
ChatGPT所做的事情远远多于翻译。但核心上,它就是把一个语言序列,转换为了另外一堆语言序列,这个任务完成得如此的好,以至于让人产生了它有思想的错觉。
把上面三段话加在一起,GPT就是
一个预先训练好的,用生成的方式,把输入文字转化成输出文字的翻译
除了这个以外的各种能力和各种定义,大多数是这个翻译官的应用场景而不是它本身。
刚才解释了GPT,那ChatGPT呢?
OpenAI用这个名字描述他们正在做的这个模型,历史的版本包括GPT-1,GPT-2(这个模型是开源的),GPT-3(这个就是传说中175B参数的大模型)。而这些都是生成式的,也就是给的prompt(提示词),它负责补全(completion)。但是这个东西用于聊天不是很好用,因为本来就不是为聊天这个场景准备的。
所以在GPT-3基础上发展出了下一代模型InstructGPT,专注于让这个模型可以听懂指令。在上面继续发展出了ChatGPT,就是对于对话场景,比如多轮对话,还有一些安全边界设定等,进行了加强。但这个模型是基于GPT-3上面的,可以说严格意义是GPT-3模型上面的一个微调(FineTuning)的产物。
欢迎转发给对ChatGPT感兴趣的朋友。欢迎专业人士指正(我其实不懂自然语言处理里面的细节)