chatGPT结构及商业级相似模型应用调研
GPT前言
说明
ChatGPT这项技术的历史可以追溯到2018年,当时由Facebook实验室的团队开发出该技术,以开发聊天机器人为目的。随后,ChatGPT在2019年由来自谷歌的DeepMind团队在国际会议ICLR上发表了论文,其中提出了ChatGPT的技术框架,以及用以构建聊天机器人的应用技术和模型。
ChatGPT的前身版本有:
- GPT 1.0:2018年由Facebook实验室开发,是ChatGPT技术的第一个版本,它可以帮助开发人员在真实环境中构建聊天机器人,简单说就是全局生成式预训练,但是相对于bert预训练难度太大,而且所有的下游任务都要替换预训练模型。
- GPT 2.0:2019年,由谷歌DeepMind团队在ICLR会议上发表了论文,提出了ChatGPT的技术框架,以及用以构建聊天机器人的应用技术和模型,是ChatGPT的第二个版本。它相对于GPT-1,添加了一个zero-shot,在预测模型里加入相应提示,使得下游任务变得统一可控,但是模型结构变得更负责,数据也更丰富了。
- GPT 2.2:2020年7月,ChatGPT官方发布了2.2版本,添加了基于深度学习的自然语言处理技术,以及有效的图形规划技术,可以构建出更高效的聊天机器人应用程序。它提供了一个用于快速构建聊天机器人的开源框架,支持Python和JavaScript两种语言,添加了基于深度学习的自然语言处理技术,以及有效的图形规划技术,可以构建出更高效的聊天机器人应用程序。此时模型采用one-shot方式进行训练。
- 2020年,谷歌又发布了一个新的模型——GPT-3,它是一种更加强大和有效率的模型,它使用类似于ChatGPT的技术,并加入了更多先进的技术,以构建更复杂的聊天机器人应用程序。此时模型积累更大,但是相对于gpt-2,加上了一些提示,或者一些例子帮助,此时是few-shot。batch-size达到了3.2m
到目前为止,ChatGPT已经广泛应用于各种领域,比如教育、商业、健康等,可以帮助开发者构建自然语言处理
结构介绍
ChatGPT(Chat Graphical Planning Tool)是一种用于设计和开发现代聊天机器人的AI技术。它是一个开源的自然语言处理框架,可以帮助开发人员在真实环境中构建聊天机器人。ChatGPT包括组件,这些组件可以让开发人员创建自然语言处理系统,此外还可以实现智能行为和多伦智能的用户交互。ChatGPT的实现方式是将机器学习,自然语言处理,图形规划等技术结合在一起,创建出一个全方位的聊天机器人框架。
论文:
GPT论文:Language Models are Few-Shot Learners Language Models are Few-Shot Learners.
InstructGPT论文:Training language models to follow instructions with human feedback Training language models to follow instructions with human feedback.
ChatGPT的模型结构主要包括以下组件:
-
语句表示层:用于将输入的文本转换为句子的表示形式,以便获得可理解的信息。
-
意图检测层:在该层,模型将尝试从语句表示中提取意图,以便根据用户的意图做出相应的动作。
-
图形规划层:用于根据模型检测的意图来构建聊天流程图,以便获得最优的对话结果。
-
行为实现层:用于实现由图形规划层生成的行为,以及处理和响应用户输入。
-
学习层:用于学习用户行为和反馈,以改进模型的性能,从而使模型的功能更加完善。
具体训练过程如下:
1. 训练监督策略模型
GPT 3.5本身很难理解人类不同类型指令中蕴含的不同意图,也很难判断生成内容是否是高质量的结果。为了让GPT 3.5初步具备理解指令的意图,首先会在数据集中随机抽取问题,由人类标注人员,给出高质量答案,然后用这些人工标注好的数据来微调 GPT-3.5模型(获得SFT模型, Supervised Fine-Tuning)。此时的SFT模型在遵循指令/对话方面已经优于 GPT-3,但不一定符合人类偏好。
2. 训练奖励模型(Reward Mode,RM)
这个阶段的主要是通过人工标注训练数据(约33K个数据),来训练回报模型。在数据集中随机抽取问题,使用第一阶段生成的模型,对于每个问题,生成多个不同的回答。人类标注者对这些结果综合考虑给出排名顺序。这一过程类似于教练或老师辅导。接下来,使用这个排序结果数据来训练奖励模型。对多个排序结果,两两组合,形成多个训练数据对。RM模型接受一个输入,给出评价回答质量的分数。这样,对于一对训练数据,调节参数使得高质量回答的打分比低质量的打分要高。
3. 采用PPO(Proximal Policy Optimization,近端策略优化)强化学习来优化策略。
PPO的核心思路在于将Policy Gradient中On-policy的训练过程转化为Off-policy,即将在线学习转化为离线学习,这个转化过程被称之为Importance Sampling。这一阶段利用第二阶段训练好的奖励模型,靠奖励打分来更新预训练模型参数。在数据集中随机抽取问题,使用PPO模型生成回答,并用上一阶段训练好的RM模型给出质量分数。把回报分数依次传递,由此产生策略梯度,通过强化学习的方式以更新PPO模型参数。如果我们不断重复第二和第三阶段,通过迭代,会训练出更高质量的ChatGPT模型。
优势及缺点
ChatGPT的发展趋势以及将来的应用前景都非常令人兴奋。ChatGPT的未来发展可以期望更多的AI技术来处理和分析聊天机器人数据,比如语音识别、机器翻译等,以便更好地与用户交互。此外,ChatGPT也可以用于开发具有自我学习功能的聊天机器人,可以自动学习、记忆和模仿不同场景下的用户行为,以及拓展不同场景下的对话范围。随着云计算技术的发展与人工智能技术的突破,对ChatGPT的研究和使用也将越来越多,未来将为人工智能领域带来有趣的应用。
但是,只要用户输入问题,ChatGPT 就能给予回答,是否意味着我们不用再拿关键词去喂 Google或百度,就能立即获得想要的答案呢?尽管ChatGPT表现出出色的上下文对话能力甚至编程能力,完成了大众对人机对话机器人(ChatBot)从“人工智障”到“有趣”的印象改观,我们也要看到,ChatGPT技术仍然有一些局限性,还在不断的进步。
1)ChatGPT在其未经大量语料训练的领域缺乏“人类常识”和引申能力,甚至会一本正经的“胡说八道”。ChatGPT在很多领域可以“创造答案”,但当用户寻求正确答案时,ChatGPT也有可能给出有误导的回答。例如让ChatGPT做一道小学应用题,尽管它可以写出一长串计算过程,但最后答案却是错误的。
2)ChatGPT无法处理复杂冗长或者特别专业的语言结构。对于来自金融、自然科学或医学等非常专业领域的问题,如果没有进行足够的语料“喂食”,ChatGPT可能无法生成适当的回答。
3)ChatGPT需要非常大量的算力(芯片)来支持其训练和部署。抛开需要大量语料数据训练模型不说,在目前,ChatGPT在应用时仍然需要大算力的服务器支持,而这些服务器的成本是普通用户无法承受的,即便数十亿个参数的模型也需要惊人数量的计算资源才能运行和训练。,如果面向真实搜索引擎的数以亿记的用户请求,如采取目前通行的免费策略,任何企业都难以承受这一成本。因此对于普通大众来说,还需等待更轻量型的模型或更高性价比的算力平台。
4)ChatGPT还没法在线的把新知识纳入其中,而出现一些新知识就去重新预训练GPT模型也是不现实的,无论是训练时间或训练成本,都是普通训练者难以接受的。如果对于新知识采取在线训练的模式,看上去可行且语料成本相对较低,但是很容易由于新数据的引入而导致对原有知识的灾难性遗忘的问题。
5)ChatGPT仍然是黑盒模型。目前还未能对ChatGPT的内在算法逻辑进行分解,因此并不能保证ChatGPT不会产生攻击甚至伤害用户的表述。
类GPT模型产品
-
GPT-2(Generative Pre-trained Transformer 2):由OpenAI开发,是一种强大的自然语言处理模型,可生成高质量的文本,包括对话、文章和新闻等。
- GPT-2的算法链接为:https://openai.com/blog/better-language-models/
- GPT-2的预训练语料链接为:https://d4mucfpksywv.cloudfront.net/better-language-models/gpt2_bible.zip
-
GPT-3(Generative Pre-trained Transformer 3):也是由OpenAI开发的模型,是GPT-2的升级版,拥有更多的参数和更强大的语言生成能力。GPT-3可以生成更自然、更流畅的文本,包括对话、文章、代码等。
- 源码及语料:https://github.com/EleutherAI/gpt-neo/
-
XLNet:由谷歌开发,是一种自然语言处理模型,使用了自回归和自编码两种技术,可以处理不同长度的输入序列,并且在一些任务上表现良好。
- 源码及语料:https://gitee.com/lduml/xlnet/
-
BERT(Bidirectional Encoder Representations from Transformers):也是由谷歌开发的模型,使用双向Transformer编码器,能够在许多自然语言处理任务中取得很好的效果。
- 源码及语料:https://gitcode.net/mirrors/google-research/bert?utm_source=csdn_github_accelerator
-
T5(Text-to-Text Transfer Transformer):由谷歌Brain团队开发,是一种万能的文本生成模型,可以完成多种自然语言处理任务,包括翻译、摘要、问答等。
- 源码及语料:https://github.com/google-research/text-to-text-transfer-transformer
-
OpenAI:ChatGPT模型是由OpenAI开发的,该公司已经将该模型应用于自己的产品和服务中,包括AI写作助手GPT-3。
- 源码及语料:https://github.com/openai/gpt-3
-
Microsoft:微软使用了一个名为DialoGPT的ChatGPT模型来开发其AI聊天机器人。
- 源码及语料:https://github.com/microsoft/DialoGPT
-
Facebook:Facebook使用了名为Blender的ChatGPT模型来提高其Messenger和Portal的聊天机器人的能力。
- 源码及语料:git clone git://git.blender.org/blender.git ||
https://github.com/blender/blender
- 源码及语料:git clone git://git.blender.org/blender.git ||
-
Google:谷歌正在开发自己的ChatGPT模型,并将其应用于其智能助手Google Assistant中。
-
Alibaba:阿里巴巴使用自己的ChatGPT模型,名为PAI-DA,来改善其自然语言处理应用程序的能力。
- 源码及语料:
- Tencent:腾讯使用自己的ChatGPT模型,名为PLATO,来提升其聊天机器人的能力,并将其应用于其智能客服和智能客户服务平台。
- 源码及语料:https://github.com/Tencent/plato
-
WeChat:微信是腾讯开发的一款聊天应用程序,它使用了自然语言处理和聊天机器人技术来提供自动回复和智能客服功能。
-
Amazon:亚马逊使用名为Amazon Lex的聊天机器人服务,该服务可以自动识别自然语言并自动回复问题,同时还可以与Alexa智能助手集成。
-
IBM:IBM开发了自己的ChatGPT模型,名为Project Debater,该模型可以自动识别和分析大量文本信息,并生成可信的自然语言回答。
-
Salesforce:Salesforce是一家销售自动化和客户关系管理软件公司,他们使用名为Einstein的聊天机器人服务来提高客户服务的效率,并改善用户体验。
- 源码及语料:https://github.com/salesforce/cove
- 数据集
- 分类:
- ST-2 https://nlp.stanford.edu/sentiment/treebank.html
- SST-5 https://nlp.stanford.edu/sentiment/treebank.html
- IMDb http://ai.stanford.edu/~amaas/data/sentiment/
- 问题分类
- TREC-6 http://cogcomp.cs.illinois.edu/Data/QA/QC/
- TREC-50 http://cogcomp.cs.illinois.edu/Data/QA/QC/
- 蕴含分类
- SNLI https://nlp.stanford.edu/projects/snli/
- 问答
- SQuAD https://rajpurkar.github.io/SQuAD-explorer/
- 分类:
- 百度文心模型:
- OpenAssistant:是一个不断开发的开源人工智能代理能够实现基本的对话和互动与越来越多的任务自动化
- 源码及语料:https://github.com/openassistant/oa-core/tree/next
ChatGPT 的模型相似的技术也有 Google DialogFlow 和 IBM Watson Assistant,它们都是基于自然语言处理的聊天机器人框架,可以帮助开发者快速搭建聊天机器人。和ChatGPT一样,Google Dialogflow 和 IBM Watson Assistant 也包含组件,允许开发者通过自然语言处理系统来实现智能行为和多轮对话交互。此外,它们也都有学习组件,以便根据用户的反馈和行为来改进模型的性能。
相似产品还有Microsoft Bot Framework、Amazon Lex、Rasa NLU、Gupshup、Santa AI Bot Builder等等。这些产品均使用自然语言处理技术来帮助开发人员快速构建聊天机器人,并且也都具有学习模块,可以从用户交互中学习行为和反馈,从而改进模型的性能。
上述这些模型都是基于Transformer架构的,使用预训练技术进行训练,并在自然语言处理任务中表现出色。
参考文章
- GPT论文:https://arxiv.org/pdf/2005.14165.pdf
- GPT结构:https://mp.weixin.qq.com/s?__biz=MzU2NTcxODIyMg==&mid=2247507286&idx=1&sn=b7141f5817b86c363638c9c5b52d5824&chksm=fcb5e0f7cbc269e164547becbfd1c86654815e698d46309e8d7761ff00086d3813580dd3ccfa&mpshare=1&scene=24&srcid=0213j8KFZUPImp0ftYvi1ZWc&sharer_sharetime=1676262790635&sharer_shareid=8d16eb5213019b5d4600c882e10dd275#rd
- 文本任务模型:https://baijiahao.baidu.com/s?id=1730861595934353908&wfr=spider&for=pc
- salesforce:
https://einstein.ai/static/images/layouts/research/cove/McCann2017LearnedIT.pdf - blender:
https://docs.blender.org/manual/zh-hans/dev/index.html - textToText:https://arxiv.org/pdf/1910.10683.pdf
相关文章:

chatGPT结构及商业级相似模型应用调研
GPT前言 说明 ChatGPT这项技术的历史可以追溯到2018年,当时由Facebook实验室的团队开发出该技术,以开发聊天机器人为目的。随后,ChatGPT在2019年由来自谷歌的DeepMind团队在国际会议ICLR上发表了论文,其中提出了ChatGPT的技术框架…...

HarmonyOS鸿蒙原生应用开发设计- 华为分享图标
HarmonyOS设计文档中,为大家提供了独特的华为分享图标,开发者可以根据需要直接引用。 开发者直接使用官方提供的华为分享图标内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的内容产生的侵权意外情况等&…...
Java基础-反射
代理相关 为什么需要代理? 代理可以无侵入式的对方法进行增强,而不需要修改原始方法的代码,这样就可以在不修改原始方法的情况下,对方法进行增强。 代理长什么样子? 代理里面就是对象要被代理的方法 Java通过什么方式…...

计算机毕设 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化
# 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通…...
【转载】 Bytedance火山引擎智能拥塞控制算法 VICC
BytedanceTechBlog : 火山引擎实时、低延时拥塞控制算法的优化实践 火山引擎 网站如何利用播放器节省20%点播成本点击下面的链接进入原文:原创 翟强俊、唐辉 字节跳动技术团队 2023-10-18 11:59 发表于北京 一些专利摘要 火山引擎智能拥塞控制算法 VICC(Volcano Intelligent…...

Postman如何测试WebService接口
前言: 由于工作所需,需要使用Postman测试工具,对基于ws规范的WebService接口进行测试.在经过多种尝试后,终于找到了正确的测试方法.下面我便详细记录测试步骤,以便以后再次测试时可以拿来主义. 第一步:确保WebService服务端正常启动(注意服务端各个接口发布的url地址) 第二步…...

微服务-Eureka
文章目录 提供者与消费者Eureka注册中心搭建EurekaServer服务注册服务发现项目结构 提供者与消费者 Eureka注册中心 服务消费者该如何获取服务提供者的地址信息? 服务提供者启动时向eureka注册自己的信息 eureka保存这些信息 消费者根据服务名称向eureka拉取提供者信…...

超声电机工作原理
超声波电机的工作原理 在压电陶瓷振子上加高频交流电压时,利用逆压电效应或电致伸缩效应使定子产生微观机械振动。并将这种振动通过共振放大和摩擦耦合变换成旋转或直线型运动。 超声波驱动有两个前提条件: 需在定子表面激励出稳态的质点椭圆运动轨迹…...

基于人工蜂鸟优化的BP神经网络(分类应用) - 附代码
基于人工蜂鸟优化的BP神经网络(分类应用) - 附代码 文章目录 基于人工蜂鸟优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工蜂鸟优化BP神经网络3.1 BP神经网络参数设置3.2 人工蜂鸟算法应用 4.测试结果…...
两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称,根据属性名称处理两个list
需求:两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称.要求根据传入的属性(多个)判断两个list中是否有重复的对象, 如果重复则删除数据库的list, 然后合并两个list. /*** 处理导入和数据库重复数据* param list* param l…...

为什么C++能搜到的框架介绍都好抽象?
为什么C能搜到的框架介绍都好抽象? 那是因为c每次都要自建生态 随便一个库发展到一定阶段,它就开始跨界,做得又大又全 结果就是,虽然都叫c,但其实是由一大堆不同生态组成的统称 c跟c的差异,比java跟c的差…...

人工智能(6):机器学习基础环境安装与使用
1 库的安装 整个机器学习基础阶段会用到Matplotlib、Numpy、Pandas等库,为了统一版本号在环境中使用,将所有的库及其版本放到了文件requirements.txt当中,然后统一安装 新建一个用于人工智能环境的虚拟环境 mkvirtualenv ai matplotlib3.8…...

电力巡检/电力抢修行业解决方案:AI+视频技术助力解决巡检监管难题
一、行业背景 随着国民经济的蓬勃发展,工业用电和居民用电需求迅速增加,电厂、变电站、输电线路高负荷运转,一旦某个节点发生故障,对生产、生活造成巨大的影响。目前电力行业生产现场人员、设备较多,而生产监督员有限…...
区块链轻节点的问答
EOS的nodeos并没有获取merkle proof的功能,那应该怎样获取merkle proof nodeos(EOS区块链节点软件)本身并不提供Merkle Proof的功能,而是全节点或其他数据源通常提供Merkle Proof。获取Merkle Proof的过程通常需要与全节点或区块浏…...

常用Web安全扫描工具汇整
漏洞扫描是一种安全检测行为,更是一类重要的网络安全技术,它能够有效提高网络的安全性,而且漏洞扫描属于主动的防范措施,可以很好地避免黑客攻击行为,做到防患于未然。 1、AWVS Acunetix Web Vulnerability Scanner&a…...

查看当前cmake版本支持哪些版本的Visual Studio
不同版本的的cmake对Visual Studio的版本支持不同,以下图示展示了如何查看当前安装的cmake支持哪些版本的Visual Studio。 1.打开cmake-gui 2.查看cmake支持哪些版本的Visual Studio...

岩土工程桥梁监测中智能振弦传感器的应用方案
岩土工程桥梁监测中智能振弦传感器的应用方案 岩土工程桥梁监测是重要的安全保障措施,而智能振弦传感器是其中一种有效的监测手段。它可以通过测量桥梁振动的频率和幅值,监测桥梁的健康状态,预测可能出现的问题,并及时采取措施进…...

上云容灾如何实现碳中和-万博智云受邀参加1024程序员节数据技术论坛并发表演讲
近日,2023长沙中国1024程序员节在长沙召开。 长沙中国1024程序员节继2020年后已成功连续举办三届,逐步成为 IT 行业引领技术前沿、推动应用创新发展的高影响力年度盛会。是 IT 领域新技术、新产品、新服务的重要发布平台。 万博智云CEO Michael受邀参加…...

蓝桥杯每日一题2023.10.26
测试次数 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 对于本题我们可以使用动态规划来分析 dp[i][j]代表剩余i层,j台手机的情况下对应的测试数量 分类进行讨论一下: 1.当只剩下一台手机的时候,只能从第一层一层一层往上尝试,…...

[已解决]安装的明明是pytorch-gpu,但是condalist却显示cpu版本,而且torch.cuda.is_available 也是flase
问题; 安装了gpu版本的pytorch,但是显示的torch.cuda.is_available()却是flase。 conda list查看 版本显示只有cpuonly 在网上找了半天,也没有解决办法。 仔细看了一下,发现,有个单独的包叫cpuonly,不知道…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...

Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...

ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
2024年初,人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目(一款融合大型语言模型能力的云端AI编程IDE)时,技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力,TRAE在WayToAGI等…...

Axure零基础跟我学:展开与收回
亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...