|
发表于 2023-11-2 18:01:23
|
显示全部楼层
OpenAI在2022年11月份发布ChatGPT ,强大的文字对话、创意写作能力 ,全球掀起了⼀ 波AI浪潮。本文对ChatGPT的技术原理、厉害之处、可能的落地方向等方面进行了全面 的解析 ,看完后会对ChatGPT有更深入的了解。
⼀ 、前言
2022年11月30日 ,ChatGPT发布 ,5天内涌入100W用户。
他拥有持续的上下文对话能力 ,同时支持文章写作、诗词生成、代码生成等能力。 如果用旧技术去理解他 ,我们通常会认为他的背后是由复合Agent组合起来支撑的。
复合Agent是什么意思呢?即有若干个术业有专攻的Agent :有⼀个负责聊天对话的 ,⼀ 个负责诗词生成的 ,⼀个负责代码生成的 , ⼀个负责写营销文案的等等等等。
每个Agent只擅长做自己的那部分事情 ,而在用户使用的过程中 ,系统会先判定用户的意 图是什么 ,应该是哪个Agent ,然后再将用户的命令分发给对应的agent去解决并提供答。
因此看起来是很厉害的机器⼈ ,背后其实是若干个术业有专攻的机器⼈。事实上Siri、小 爱、小度 ,小冰甚至包括各个平台的客服机器⼈都是这种模式。这样当你要上线⼀个新能 力 (例如写古诗) ,你只需要新增训练⼀个Agent ,然后将这个Agent接入到总控的分类 意图器下就行。
这也是当前时代的⼀个缩影 ,不管外行⼈如何看待你从事的行业 ,不管媒体是如何⼀次次 ⼈云亦云地说警惕AI取代⼈类 ,你⼀直都知道 ,你在做的只是训练出⼀个术业有专攻的机 器⼈而已 ,离真正的⼈工智能⼗万八千里。
但ChatGPT的能力不再是这种模式了 ,他所采用的模式是大语言模型+Prompting。所有 的能力通过⼀个模型实现 ,背后只有⼀个什么都会的机器⼈ (即大语言模型), 并支持用 户借助文字下达命令 (即Prompting ,提示/指示) 。
虽然这种能力的表现还不算完美 ,但是他开启了⼀条⼀种通向“通用型⼈工智能”的道路, 曾经科幻故事里的Jarvis ,moss好像真的有了那么⼀点可能。而这才是7年前 ,我踏入这 个行业所憧憬的东西啊。
可能你对我的震撼有点无法理解 ,我接下来会讲明白他的技术原理 ,带你慢慢感知这项技 术的厉害之处。
二、ChatGPT原理
首先 ,我们要弄明白 ,NLP任务 ( 自然语言处理 ,AI的⼀个技术领域 ,即文本类的AI任 务) 的核心逻辑是⼀个“猜概率”的游戏。
比如说 ,“我今天被我老板___” ,经过大量的数据训练后 ,AI预测空格出会出现的最高概 率的词是“CPU了” ,那么CPU就会被填到这个空格中 ,从而答案产生——“我今天被我老 板CPU了”。
虽然非常不可思议 ,但事实就是这样 ,现阶段所有的NLP任务 ,都不意味着机器真正理解 这个世界 ,他只是在玩文字游戏 ,进行⼀次⼜⼀次的概率解谜 ,本质上和我们玩报纸上的 填字游戏是⼀个逻辑。只是我们靠知识和智慧 ,AI靠概率计算。
而在目前的“猜概率”游戏环境下 ,基于大型语言模型 ( LLM ,Large Language Model) 演 进出了最主流的两个方向 ,即Bert和GPT。
其中BERT是之前最流行的方向 ,几乎统治了所有NLP领域 ,并在自然语言理解类任务中 发挥出色 (例如文本分类 ,情感倾向判断等) 。
而GPT方向则较为薄弱 ,最知名的玩家就是OpenAI了 ,事实上在GPT3.0发布前 ,GPT方
向⼀直是弱于BERT的 (GPT3.0是ChatGPT背后模型GPT3.5的前身) 。
接下来我们详细说说BERT和GPT两者之间的差别。
BERT :双向 预训练语言模型+fine-tuning (微调)
GPT :自回归 预训练语言模型+Prompting (指示/提示)
每个字都认识 ,连到⼀起就不认识了是吗哈哈。没关系 ,接下来我们把这些术语逐个拆解 ⼀遍就懂了。
1、什么是“预训练模型”?
我们通常认知里的AI ,是针对具体任务进行训练。例如⼀个能分辨猫品种的Agent ,需要 你提供A-缅因猫 ,B-豹猫这样的数据集给他 ,让它学习不同品种之间的特征差异 ,从而学 会分辨猫品种这项能力。
但大语言模型不是这样运作的 ,他是通过⼀个大⼀统模型先来认识这个世界。再带着对这 个世界的认知对具体领域进行降维打击。
在这里让我们先从从NLP领域的中间任务说起。像中文分词 ,词性标注 ,NER ,句法分 析等NLP任务。他们本身无法直接应用 ,不产生用户价值 ,但这些任务⼜是NLP所依赖 的 ,所以称之为中间任务。
在以前 ,这些中间任务都是NLP领域必不可少的。但是随着大型语言模型的出现 ,这些中 间任务事实上已经逐步消亡。而大型语言模型其实就是标题中的“语言预训练模型”。
他的实现方式是将海量的文本语料 ,直接喂给模型进行学习 ,在这其中模型对词性、句法 的学习自然而然会沉淀在模型的参数当中。我们看到媒体对ChatGPT铺天盖地的宣传里 总是离不开这样⼀句话——在拥有3000亿单词的语料基础上预训练出的拥有1750亿参数 的模型。
这里面3000亿单词就是训练数据。而1750亿参数就是沉淀下来的AI对这个世界的理解 , 其中⼀部分沉淀了Agent (代理、 中间⼈) 对各类语法、句法的学习 (例如应该是两个馒 头 ,而不是⼆个馒头 ,这也是中间任务为什么消亡的原因) 。而另外⼀部分参数参数则储 存了AI对于事实的认知 (例如美国总统是拜登) 。
也就是经过预训练出⼀个这样的大语言模型后 ,AI理解了⼈类对语言的使用技巧 (句法、 语法、词性等) ,也理解了各种事实知识 ,甚至还懂得了代码编程 ,并最终在这样的⼀个
大语言模型的基础上 ,直接降维作用于垂直领域的应用 (例如闲聊对话 ,代码生成 ,文章 生成等) 。
而BERT和GPT两者都是基于大语言模型的 ,他们在这⼀点上是相同的。他们的不同在于 双向/自回归 ,fine-tuning/Prompting这两个维度 ,我们接下来会重点弄明白这四个术语。
2、猜字谜的两种方式,BERT、GPT
BERT 和 GPT 都是基于 Transformer 网络架构和预训练语言模型的思想而提出的。
它们都可以在不同语言任务上达到最先进的水平。BERT 和 GPT 展示了预训练语言模型 对于自然语言理解和生成任务的巨大潜力 ,在诸多任务中取得了突破性进展。
BERT ,全称为 Bidirectional Encoder Representations from Transformers ,是由 Google AI Language 团队在 2018 年提出的预训练语言模型。 它主要用于自然语言理解 ,具体应 用如下 :问答系统、句子相似度比较、文本分类、情感分析、命名实体识别等。BERT 的 训练过程分为预训练和微调两部分。预训练是 BERT 模型的基础部分 ,它包括使用大量 的文本来训练语言模型。微调过程是在预训练模型的基础上 ,使用更小的标记数据来调整 模型参数。
BERT是“双向”预训练法 ,是指这个模型在“猜概率的时候” ,他是两个方向的信息利用起 来同时猜测。例如“我__20号回家” ,他在预测的时候 ,是同时利用“我”+“20号回家”两端的 信息来预测空格中的词可能为“打算”。有点像我们做英文的完形填空 ,通常都是结合空格 两端的信息来猜测空格内应该是哪个单词。
GPT (Generative Pre-trained Transformer) 则是由 OpenAI 研究团队在 2018 年提出的 ⼀种语言模型。 它能够完成各种自然语言处理任务 ,在文本生成方面表现尤为优秀 ,可以 生成各种类型的文本 ,如文章、诗歌、对话等。其主要具体应用如下 :文本生成、文本自 动完成、语言翻译、对话生成、摘要生成等。
而GPT使用的是“自回归”预训练法 ,就是猜概率的时候从左往右做预测 ,不会利用文本中 右侧的内容 ,和BERT相反。这就有点像我们写作文的时候 ,我们肯定是⼀边写⼀边想。
BERT 和 GPT 的主要区别在于它们所采用的预训练方法不同。BERT 是使用双向的预训 练方法 ,即同时预测文本中的上下文信息 ,而 GPT 是使用单向的自回归预训练方法 ,即 从前到后生成下⼀个单词或句子。这意味着 BERT 可以更好地处理需要理解整个句子或 段落的任务 ,而 GPT 则更适合生成下⼀个单词或句子 ,两者基本理念的区别导致BERT 在之前更擅长自然语言理解类任务 ,而GPT更擅长自然语言生成类任务 (例如聊天、写 作文) 。——注意 ,我说的是之前 ,后面的章节我会介绍现在的情况发生了什么变化。
3、微调 vs 提示(咒语)
假设现在预训练好的大模型要针对具体领域工作了 ,他被安排成为⼀名鉴黄师 ,要分辨文 章到底有没有在搞黄色。那么BERT和GPT的区别在哪里呢?
BERT :fine-tuning (微调) 。微调是指模型要做某个专业领域任务时 ,需要收集相关的 专业领域数据 ,做模型的小幅调整 ,更新相关参数。
例如 ,我收集⼀大堆标注数据 ,A-是黄色 ,B-没有搞黄色 ,然后喂给模型进行训练 ,调整 他的参数。经过⼀段时间的针对性学习后 ,模型对于分辨你们是否搞黄色的能力更出色 了。这就是fine-tuning ,⼆次学习微调。
GPT :Prompting。prompt是指当模型要做某个专业领域的任务时 ,我提供给他⼀些示 例、或者引导。但不用更新模型参数 ,AI只是看看。
例如 ,我提供给AI模型10张黄色图片 ,告诉他这些是搞黄色的。模型看⼀下 ,效果就提 升了。大家可能会说 ,这不就是fine-tuning吗?不是⼀样要额外给⼀些标注数据吗?
两者最大的区别就是 :这种模式下 ,模型的参数不会做任何变化升级 ,这些数据就好像仅 仅是给AI看了⼀眼—— 嘿 ,兄弟 ,参考下这个 ,但是别往心里去。
不可思议吧 ,但他成功了 !而更令⼈疯狂的是 ,到目前为止 , 关于prompt明明没有对参 数产生任何影响 ,但确实⼜明显提升了任务的效果 ,还是⼀个未解之谜。暂时而言大家就 像程序员对待bug⼀样—— I don’t know why , but it work lol.
这种Prompt其实就是ICT (in-Context Learning) ,或者你也可以称为Few shot Promot ,用大白话说就是“给你⼀点小提示”。
同时还有另外⼀种Promot ,称之为Zero shot Promot。ChatGPT就是Zero shot promot模 式 , 目前⼀般称之为instruct了。
这种模式下用户直接用⼈类的语言下达命令 ,例如“给我写首诗” ,“给我做个请教条” ,但 是你可以在命令的过程中用⼀些⼈类语言增强AI的效果 ,例如“在输出答案之前 ,你先每 ⼀步都想⼀想”。就只是增加这样⼀句话 ,AI的答案效果就会明显提升。
你可能会问这是什么魔法咒语? !
有⼀个比较靠谱的猜测是这句话可能让AI回想起了学习的资料中那些推理知识好像前面都 会有这句话。
然后这⼀切莫名激活起了他死去的记忆 ,不自觉开始仿造那些严密的推理过程中⼀步步推 导。而这些推导会将⼀个复杂问题分解成若干子问题 ,AI因为对这些子问题的推导 ,从而 导致最终答案效果提升。
综上对比下来 ,你会发现好像GPT这种模式比起BERT模式更符合我们对⼈工智能的想 象 :通过海量的知识成长起来 ,然后经过稍微引导 ( Prompt) ,他就能具备不同领域的强大能力。
*最后总结⼀下 ,ChatGPT背后的GPT模型是什么?
在⼀个超大语料基础上预训练出的大语言模型 (LLM) ,采用从左到右进行填字概率预 测的自回归语言模型 ,并基于prompting (提示) 来适应不同领域的任务。
如果只基于上面的描述 ,你可能大概弄懂了他背后的原理 ,但是对于为什么他这么牛逼, 你仍然无法理解。没关系 ,我们教会你的。 |
|