ChatGPT强势爆红,背后的技术原理是?一文轻松搞懂!
作者:小牛呼噜噜 | https://xiaoniuhululu.com
计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「小牛呼噜噜」
大家好,我是呼噜噜,最近一段时间被ChatGPT疯狂刷屏,自从2022年11月发布上线后,不仅 5 天时间便突破百万用户,月活用户突破 1 亿更是仅用时 2 个月,成为史上增速最快的消费级应用,远超如今其他知名应用,tiktok,facebook,google等等,可谓来势汹汹。
什么是ChatGPT?
ChatGPT是由OpenAI团队开发和训练一个人工智能聊天机器人程序,换句话说就是专注于对话生成的大型语言模型。在2022年11月30 日OpenAI 的首席执行官Sam Altman在推特上写道:“今天我们推出了 ChatGPT,尝试在这里与它交谈”,然后是一个链接,任何人都可以注册一个帐户,开始免费与 OpenAI 的新聊天机器人交谈。
它有着通用人工智能的名义,我们人类可以和他谈日常琐事,还可以利用它来写年度总结,和程序员一样写代码,修改 bug,书写情诗,做表格,发论文,写作业,做翻译,甚至可以探讨哲学问题擎等……。人类历史上还没有出现过这么通用,"全知全能"的AI。
在ChatGPT发布后的五天内,就有超过100万的玩家,而Facebook花了 10 个月才达到这种程度。《纽约时报》称其为“有史以来向公众发布的最好的人工智能聊天机器人,比尔盖茨说 ChatGPT 出现的意义“不亚于互联网的诞生”,微软 CEO 纳德拉(Satya Nadella)说它堪比工业革命,也有人担忧其会取代大多数普通人的工作岗位
OpenAI
这我们就不得不提,ChatGPT的研发者OpenAI,OpenAI公司于2015年12月在美国旧金山成立,那时谷歌刚收购一家公司DeepMind,没错就是那个研制出接连击败世界围棋冠军李世石、柯洁的AlphaGo的公司
谷歌本世纪初就已经开始布局ai领域,拥有多年的技术积累,再收购DeepMind,垄断人工智能领域的野心路人皆知。为了阻止谷歌在人工智能领域的垄断,Altman带头提议组建一个与谷歌竞争的实验室,将作为一个非营利组织运营,通过与其他机构和研究者的“自由合作”,向公众开放专利和研究成果,促进先进人工智能的好处"民主化"。OpenAI的创立者不仅仅有Altman,还有Elon Musk、Greg Brockman、Ilya Sutskever、John Schulman等知名企业家财力支持,还拥有
各种技术大牛加入,如 Ilya Sutskever, Carlos Virella, James Greene, Wojciech Zaremb等。OpenAI团队麻雀虽小五脏俱全,但其能带来大量技术创新。
背后的原理和发展历程
如今ChatGPT取得令人惊艳的成就,但一切并不是一蹴而就的。ChatGPT是由OpenAI团队在2019年6月首次发布的,下图就是ChatGPT训练的主要3个阶段:
上图来自ChatGPT官网
第一步,首先收集演示数据并训练监督策略模型(SFT)
ChatGPT 模型本身是无法理解人类不同类型指令中蕴含的不同意图,这时候需要一个"老师"去教它,这个叫"训练"。
所以需要由人类事先标注好的高质量数据集进行训练。ChatGPT使用的数据集里面数据是海量的,所以我们不能忽视在背后默默标注数据的第三方外包人员的辛苦付出。
为了训练ChatGPT,ChatGPT被美国《时代周刊》爆料初雇佣肯尼亚外包劳工进行数据标注,他们时薪不到2美元且内容对他们造成心理伤害。
接着我们就需要把这些整理好的数据来喂给ChatGPT进行半监督学习,在ChatGPT出现之前,NLP 模型(自然语言处理)主要是基于针对特定任务的大量标注数据进行训练,也就是“有答案”的数据集,这也叫"监督式学习"。自然语言处理是一个非常严密的推理过程,不仅要识别每个词,还要处理词语间的序列,因此诞生了循环神经网络(RNN)模型。但RNN只考虑单词或者上下文信息,常常导致全文句意前后不连贯,或者理解复杂句子时出错。这也就导致一些缺点:需要大量的高质量标注数据,高质量的标注数据往往很难获得,而且在实际标注中,有些标签并不存在明确的边界;模型又仅限于所接受的训练,泛化能力不足。
所以ChatGPT采用"半监督式学习",使用海量的无标注数据训练一个预训练模型,然后再根据特定任务进行微调,比如自然语言推理、问答和常识推理、语义相似度、文本分类。将无监督学习的结果用于左右有监督模型的预训练目标,也叫生成式预训练(Generative Pre-training),没错这就是ChatGPT的GPT3个字的来源!
和谷歌一直换ai的策略不同的是,ChatGPT就很执着,ChatGPT-1刚出来的时候,被业内群嘲,但openai团队,并不气馁,不断扩大训练数据规模,属实是大力出奇迹的典范:
- 2019年6月,ChatGPT-1,这是第一个基于自然语言处理的对话生成模型,拥有1.17亿参数;
- 2020年6月:发布了ChatGPT-2,该模型拥有1.17亿个参数的基础上进一步增加到了15亿个参数,成为当时最先进的自然语言处理模型之一。
- 2020年11月:OpenAI推出了GPT-3,这是一个拥有1750亿个参数的巨型语言模型,可以生成高质量的自然语言文本。它的出现引起了广泛的关注和讨论,并被认为是人工智能领域的一项重大成就。
- 2022年3月,OpenAI新推出13亿参数的InstructGPT。从人工评测效果上看,相比1750亿参数的GPT3,人们更喜欢13亿参数的InstructGPT生成的回复。可见,并不是训练数据规模越大越好。更低的参数,也就意味着更低的成本
- 2022年11月,推测约20亿参数的ChatGPT-3.5被推出,具体数据暂未公开,轰动全球
到这里,就训练成了SFT模型(Supervised Fine-Tuning Model),此时ChatGPT已经能初步能够理解人类的真实意图,算是"学有小成"了
第二步:训练奖励模型(RM)
由于现有的回答是多种多样的,界限是模糊的,无法直接通过标注直接划分。那么如何让AI的回答符合人类的意图?
根据论文Scalable agent alignment via reward modeling: a research direction的理论, 这个时候我们需要给ChatGPT的随机抽取一批新问题,每个问题都设置一个奖励目标,让ChatGPT生成多个回答,接着人类根据回答的质量,打分,进而依据分数排名,让高质量回答的分数高于低质量回答,以符合人类意图的方式解决复杂的现实世界问题。
到这里,就形成了奖励模型(Reward Model),再次通过大量的训练,这个模型会让ChatGPT越来越能懂人类真是意图,不断打分,ChatGPT就会不断地进化。
第三步:采用近端策略优化PPO强化学习来优化策略
到了这一阶段,由于人类的精力是有限的,哪怕是雇佣更多的人,但对于互联网网上海量的数据,还是沧海一粟。这个时候,就需要让 ChatGPT 开启"自学"模式,不断学习,自我进化。
给ChatGPT更多全新的数据,通过PPO强化学习算法生成回答,并利用上一阶段训练好的奖励模型,来靠奖励打分排序来调整模型参数。然后不断重复第二和第三阶段的过程,也就是自己给自己出题,再自己对答案,然后微调模型参数,进行海量次数的迭代,这样直至训练出最终符合预期的模型,实现"最终进化"
在 ChatGPT 基础的 InstructGPT 的论文中,Actor 和监督微调模型都使用了 1750 亿参数的 GPT-3 系列模型,Critic 和奖励模型则使用了 60 亿参数的 GPT-3 系列模型。
更详细的移步论文:Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback
带来的争议和挑战
然后新事物的诞生并不仅仅只有美好的一面,ChatGPT也带来许多潜在的问题。2023年1月,国际机器学习大会禁止在提交的论文中使用ChatGPT或其他大型语言模型来生成任何文本。大量学生用ChatGPT来写作业,导致纽约市公立学校禁止师生在校园网路及装置上使用ChatGPT。
数据集的获取是否符合版权问题一直是ChatGPT绕不开的问题,无法保证个人信息安全,可能导致信息泄露。由于ChatGPT目前是基于2021年及其之前所拥有的数据集进行回答的整合,问它2022,2023或者最近国际上发生的事,它是不知晓的。这就不可避免地保证数据集接触到负面的,暴力的,充满恶意的信息。如何最大限度地并长久地隔离这些负面信息?如果是人工去隔离,是非常困难且痛苦的,类似于内容审核员,鉴黄师...
除此之外,用户对ChatGPT的恶意利用也会带来很多数据安全问题。比如利用自然语言编写的能力,编写恶意软件,从而逃避防病毒软件的检测;利用ChatGPT的编写功能,生成钓鱼电子邮件;利用对话功能,冒充真实的人或者组织骗取他人信息等。
现在尴尬的是当我们知晓答案的正确与否时,我们可以向ChatGPT求教,但当咨询我们不熟悉的领域,ChatGPT目前无法保证它的答案是正确的,需要再和专业的人确认。因为其技术上将海量的数据结合表达能力很强的Transformer模型结合,从而对自然语言进行了一个非常深度的建模。它本质上只是通过概率最大化不断生成符合预期的回答,而不是通过逻辑推理来生成正确的回答。
2022年12月,程序员非常熟悉的Stack Overflow禁止用户发布使用ChatGPT生成的答案,理由是ChatGPT的答案虽看似可用,实际上却有很高的错误率,一本正经地胡说八道。
尾语
从 IBM 的“深蓝”,到 Google 的 AlphaGo,再到 OpenAI 的 ChatGPT,AI的突破都是循序渐进、从小到大地一步步实现,只有脚踏实地深耕基础领域,才能有质的飞越。盲目地造新概念,一窝蜂去摘果实,割韭菜会制约整个行业的发展
随着时间和技术的发展,AI的崛起,是大势所趋。大量机械的、重复的,没有思考价值的工作,会逐渐消失,但也会将给世界带来新的产业革命。
ChatGPT可以用更接近人类的思考方式参与用户的查询过程,可以根据上下文和语境,提供恰当的回答,并模拟多种人类情绪和语气,甚至可以主动承认自身错误,吸取教训并优化答案。如果你长时间和它交流,你会有时感觉它在"讨好你"。
ChatGPT的出现给所有人都敲想了警钟,时代的轮盘已经悄悄转动,要想不被抛弃,我们人类只有不断地学习,思考,进步
参考论文&资料:
- Illustrating Reinforcement Learning from Human Feedback (RLHF) Illustrating Reinforcement Learning from Human Feedback (RLHF)
- Optimizing Language Models for Dialogue ChatGPT: Optimizing Language Models for Dialogue
- Scalable agent alignment via reward modeling: a research direction
- Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback
- wikipedia.chatgpt
- https://ishare.ifeng.com/c/s/v002SAoIcZHgoIRNibxJaZUF5GX--9krUn32boGRnKTCEXk4__
本篇文章到这里就结束啦,如果我的文章对你有所帮助,还请帮忙一键三连:点赞、关注、收藏,你的支持会激励我输出更高质量的文章,感谢!
计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「小牛呼噜噜」,我们下期再见。
ChatGPT强势爆红,背后的技术原理是?一文轻松搞懂!的更多相关文章
- 一文轻松搞懂redis集群原理及搭建与使用
今天早上由于zookeeper和redis集群不在同一虚拟机导致出了点很小错误(人为),所以这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. 笔主这里使用的是Centos7.如果 ...
- Redis | 一文轻松搞懂redis集群原理及搭建与使用
转载:https://juejin.im/post/5ad54d76f265da23970759d3 作者:SnailClimb 这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. ...
- 即时通讯App怎样才能火?背后的技术原理,可以从这5个角度切入
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云视频发表于云+社区专栏 关注公众号"腾讯云视频",一键获取 技术干货 | 优惠活动 | 视频方案 社交场景 ...
- 一文彻底搞懂CAS实现原理 & 深入到CPU指令
本文导读: 前言 如何保障线程安全 CAS原理剖析 CPU如何保证原子操作 解密CAS底层指令 小结 朋友,文章优先发布公众号,如果你愿意,可否扫文末二维码关注下? 前言 日常编码过程中,基本不会直接 ...
- 轻松搞懂WebService工作原理
用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...
- 一文快速搞懂MySQL InnoDB事务ACID实现原理(转)
这一篇主要讲一下 InnoDB 中的事务到底是如何实现 ACID 的: 原子性(atomicity) 一致性(consistency) 隔离性(isolation) 持久性(durability) 隔 ...
- 【转载】轻松搞懂WebService工作原理
用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...
- 轻松搞懂Python递归函数的原理与应用
递归: 在函数的定义中,函数内部的语句调用函数本身. 1.递归的原理 学习任何计算机语言过程中,“递归”一直是所有人心中的疼.不知你是否听过这个冷笑话:“一个面包,走着走着饿了,于是就把自己吃了”. ...
- 一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 反向传播算法(Backpropagation Algorithm, ...
- InfluxDB从原理到实战 - 一篇文章搞懂InfluxDB时区
0x00 简介 InfluxDB默认以UTC时间存储并返回时间戳,当接收到一个时序数据记录时,InfluxDB将时间戳从本地时区时间转换为UTC时间并存储,查询时,InfluxDB返回的时间戳对 ...
随机推荐
- webflux延迟队列逻辑更改过程记录
title : webflux延迟队列逻辑更改过程记录 author : simonLee date : 2022/11/22 10:26 目录 webflux延迟队列逻辑更改过程记录 一.问题背景 ...
- Qt网络编程-从0到多线程编程
网络编程开发 1.简介 两个协议,一个是TCP协议,一个是UDP协议 先说TCP: TCP的话,服务器端需要端口监听,直到有客户端进行连接发送过来请求数据,然后客户端根据请求数据进行应答,之后就算tc ...
- 多表查询两种方法、可视化软件navicat、python操作mysql、pymysql模块
目录 多表查询的思路 多表查询的两种方法 小知识点补充数说明 可视化软件Navicat 安装教程 数据库常用操作 多表查询练习题 python 操作MySQL pymysql补充说明 Non-grou ...
- SAP-FI模块 如何处理自动生成会计凭证增强
一. 相关问题概览 1. 固定资产业务过渡科目摘要增强功能-F-02 需用表BKPF.BSEG.T001.通过BUKRS.BELNR.GJAHR三个字段相等关联BKPF与BSEG.通过BKPF ...
- 根号分治简单笔记 | P3396 哈希冲突
简要题意 你需要维护一个长度为 \(n\) 的序列 \(v\),支持: A x y 求整个序列中,所有模 \(x\) 为 \(y\) 的下标的元素的值,即: \[\sum_{i=0}^{\lfloor ...
- 统一返回对象封装和统一异常捕获封装springboot starter
好久没有更新文章了,高龄开发没什么技术,去了外包公司后没怎么更新文章了.今天分享下统一处理starter,相信开发web系统的时候都是会涉及到前后端的交互,而后端返回数据的时候一般都会统一封装一个返回 ...
- Ubuntu desktop 文件的书写格式
首先切换到存放 desktop 文件的目录下,编辑好就可以保存了 cd /usr/share/applications/ vim name.desktop [Desktop Entry] Name=显 ...
- ES中的内置对象--jquery如何优化代码,少用$进行查找,减少查找次数的方法
- Odoo View 常用技巧
隐藏Field <field name="currency_id" invisible="True"/> <field name=" ...
- Typora 最后一个免费版本
介绍 Typora 是一款轻量级的 Markdown 编辑器,其最为出众的特点是: 所见即所得. Typora 于2021年11月23日推出了第一个正式版,并转为收费.不过价格也算合理,89元/3台设 ...