浅谈ChatGPT

news2024/11/27 13:29:36

ChatGPT概述

ChatGPT是一种自然语言处理模型,ChatGPT全称Chat Generative Pre-trained Transformer,由OpenAI开发。它使用了基于Transformer的神经网络架构,可以理解和生成自然语言文本。ChatGPT是当前最强大和最先进的预训练语言模型之一,可以生成具有逻辑和语法正确性的连贯文本。它在自然语言处理的各个领域,例如对话生成、文本分类、摘要生成和机器翻译等方面都取得了非常优秀的成绩。ChatGPT的成功表明,预训练语言模型已经成为自然语言处理领域的主流技术之一

ChatGPT原理

ChatGPT从领域上是属于自然语言处理(Natural Language Processing),简称NLP
NLP的主要目标是使计算机能够理解、分析、操作人类语言,从而实现更加智能化的自然语言交互

自然语言处理

历年发展

自然语言处理技术的发展历程经历了从规则到统计再到深度学习的三个阶段:

  1. 规则型方法阶段(1950年代至1980年代初):该阶段主要采用人工规则来描述语言结构和语义,并通过编写一系列规则来实现自然语言处理任务。这种方法的局限性在于需要大量的人工参与,难以处理复杂的语言现象。
  2. 统计型方法阶段(1980年代中期至1990年代中期):该阶段主要采用统计模型来处理自然语言,例如基于马尔可夫模型和隐马尔可夫模型的自然语言处理技术。这种方法依赖于大规模语料库的统计分析,可以处理一定程度上的语言不确定性,但在语义分析和生成等方面仍存在较大局限性。
  3. 深度学习方法阶段(2010年代至今):该阶段主要采用深度学习模型来处理自然语言,例如基于循环神经网络(RNN)和长短时记忆网络(LSTM)的模型,以及后来的Transformer模型。深度学习模型具有较强的表达能力和泛化能力,可以处理复杂的语言结构和语义关系,广泛应用于自然语言理解、机器翻译、文本分类、问答系统等任务中。

自然语言处理开始时是利用传统的技术来解决问题,例如基于规则的方法、词典匹配等。但是这些传统方法需要大量手工编写规则和模式来处理自然语言,难以适应自然语言的多样性和复杂性。相比之下,人工智能技术具有自主学习和适应数据的能力,能够更加灵活和高效地处理自然语言。因此,在解决自然语言处理问题时,人工智能技术已经成为主流和先进的方法。

NLP的复杂性体现在以下几个方面:

  1. 多义性:自然语言中的词汇经常有多个意义,需要根据上下文确定其意义。
  2. 含糊性:自然语言中的表达往往不够准确,可能存在歧义,需要通过语境来确定其含义。
  3. 语言多样性:不同语言之间存在差异,同一语言的不同方言或口音也存在差异。
  4. 长距离依赖关系:句子中的某些词可能影响句子中很远的其他词,需要考虑整个句子的语义。
  5. 知识不完备:自然语言处理需要大量的先验知识和语言资源,而这些知识和资源往往是不完备的。
    这些复杂性使得自然语言处理任务具有挑战性,需要使用先进的技术和算法来解决。

NLP主要内容包括以下:

  1. 语音识别:将人的语音转换成可被计算机理解的文本形式。
  2. 语言理解:理解人类语言的含义,包括语法、词汇、语义和上下文。
  3. 机器翻译:将一种语言的文本自动转换成另一种语言的文本。
  4. 信息检索:在大量文本数据中查找相关信息。
  5. 文本分类:将文本数据分成不同的类别。
  6. 命名实体识别:从文本数据中识别出具有特定名称的实体,例如人名、地名、公司名等。
  7. 信息抽取:从文本数据中抽取出有用的信息,例如时间、地点、事件等。
  8. 情感分析:分析文本数据中的情感倾向,例如正面、负面或中立等。
  9. 文本生成:自动产生新的文本数据,例如文章、诗歌等。

其中ChatGPT在语言理解、机器翻译、文本分类、信息抽取、文本生成方面表现相当优秀

目前NLP的主流解决技术方案是人工智能,人工智能的技术要素包括数据、算法、算力、模型。他们的关系为通过数据、算法、算力求模型,通俗地理解为如同人类一样用数据找到规律。人工智能区别于传统编程开发,传统编程开发是用已知规律求数据

ChatGPT模型训练

ChatGPT是一个模型,是通过数据、算法、算力求得的一个模型,其中数据、算法、算力具体内容为:

  1. 数据:ChatGPT使用了大量的自然语言文本数据进行预训练,包括维基百科、BookCorpus等。
  2. 算法:ChatGPT使用了Transformer算法,这是一种基于自注意力机制的神经网络模型,能够有效地处理自然语言文本数据
  3. 算力:为了训练和使用ChatGPT模型,需要大量的计算资源,包括GPU和分布式计算框架等。具体来说,OpenAI在训练13亿参数的GPT-3模型时使用了数千个GPU和TPU

其原理主要包括以下几个方面:

  1. Transformer结构:ChatGPT使用了Transformer结构作为其基本架构,通过自注意力机制实现了对输入序列的编码和对输出序列的解码。
  2. 预训练:ChatGPT使用了大规模语料库进行了预训练,从而学习到了大量的语言知识,包括词汇、语法和语义等。
  3. 微调:ChatGPT在预训练的基础上,通过针对具体任务进行微调,从而实现了在特定任务上的优秀表现。
  4. 无监督学习:ChatGPT通过无监督学习的方式进行训练,即在不需要人工标注数据的情况下,通过最大化语言模型的似然函数来训练模型,从而实现了对语言知识的自动学习。

那么ChatGPT模型是如何训练的呢

ChatGPT模型的主要训练流程可以概括为以下几个步骤:

  1. 数据准备:准备大规模的文本数据作为训练数据集
  2. 模型设计:采用Transformer架构,构建多层的编码器-解码器结构,并采用自注意力机制实现对文本的建模
  3. 模型初始化:使用随机初始化的参数,构建初始的模型
  4. 模型训练:采用大规模的文本数据集对模型进行训练,以最小化损失函数为目标,让模型逐步学习输入文本的规律
  5. 模型评估:对训练好的模型进行评估,通常采用困惑度(perplexity)等指标来衡量模型的性能
  6. 模型微调:通过对模型参数进行微调,进一步提高模型的性能
  7. 模型部署:将训练好的模型部署到应用场景中,实现自然语言生成、问答等功能
训练模型

在这里插入图片描述

首先以监督学习方式训练能够写答案的生成模型,然后利用人工排序训练奖励模型,用于对生成模型的输出打分, 最后用奖励模型预测结果且通过 PPO 算法优化 SFT 模型得PPO-ptx模型

阶段1:利用人类的标注数据(demonstration data)去对 GPT3 进行监督训练。
1)先设计了一个prompt dataset,里面有大量提示样本,给出了各种各样的任务描述;
2)其次,标注团队对 prompt dataset 进行标注(本质就是人工回答问题);
3)用标注后的数据集微调 GPT3(可允许过拟合),微调后模型称为 SFT 模型(Supervised fine-tuning,SFT),具备了最基本的文本生成能力。

阶段2:通过 RLHF 思路训练奖励模型 RM
1)微调后的 SFT 模型去回答 prompt dataset 问题,通过收集 4 个不同 SFT 输出而获取 4 个回答;
2)接着人工对 SFT 模型生成的 4 个回答的好坏进行标注且排序;
3)排序结果用来训练奖励模型RM (Reward Model),即学习排序结果从而理解人类的偏好。

阶段3:通过训练好的 RM 模型预测结果且通过 PPO 算法优化 SFT 模型的策略。
1)让 SFT 模型去回答 prompt dataset 问题,得到策略的输出,即生成的回答;
2)此时不再让人工评估好坏,而是让阶段 2 RM 模型去给 SFT 模型的预测结果进行打分排序;
3)使用 PPO 算法对 SFT 模型进行反馈更新,更新后的模型称为 PPO-ptx。

为什么ChatGPT在语言理解、机器翻译、文本分类、信息抽取、文本生成方面表现相当优秀?

其中重要的一个原因是预训练,相当于人类的通识教育

预训练的文本数据集包括维基百科、书籍、期刊、Reddit链接、Common Crawl和其他数据集
主要语言为英文,中文只有5%,ChatGPT-3预训练数据量达45TB,参数量1750亿,对应成本也非常高,GPT-3 训练一次的费用是 460 万美元,总训练成本达 1200 万美元

注:参数量指的是模型中需要学习的可调整参数的数量,也就是神经网络中各层之间的连接权重和偏置项的数量之和。在深度学习中,参数量通常是衡量模型规模和容量的重要指标,一般来说参数量越多,模型的表达能力也就越强

ChatGPT应用场景

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ChatGPT的优势和限制

ChatGPT的优势包括:

  1. 高度的自然语言处理能力:ChatGPT使用了深度学习的方法,可以对自然语言进行高度理解和处理,从而在回答问题和生成文本方面具有很高的准确性和流畅性
  2. 大规模预训练模型:ChatGPT使用了大规模预训练模型,能够学习到大量的自然语言数据,从而提高了模型的表现和效果
  3. 可扩展性和可定制性:ChatGPT的架构和预训练模型可以轻松地进行扩展和定制,以适应不同的自然语言处理任务和应用场景

ChatGPT的限制包括:

  1. 需要大量的数据和计算资源:由于ChatGPT使用了大规模的预训练模型,因此需要大量的数据和计算资源进行训练和调优
  2. 对话质量受限于数据质量:ChatGPT的对话质量受限于使用的数据集质量,如果数据集中存在噪声或错误,可能会对模型的表现和效果产生负面影响
  3. 存在一定的误差率:尽管ChatGPT的表现很优秀,但由于自然语言处理的复杂性,它仍然存在一定的误差率,需要进行不断的优化和改进

实践案例

官网例子
https://platform.openai.com/examples

官网提供了多种编程语言的SDK接入
https://platform.openai.com/docs/libraries

常见问题

FAQ

ChatGPT需要人工标注吗

作为一种大规模预训练语言模型,ChatGPT的训练需要依赖大量的无监督文本数据。在模型预训练完成后,如果要将其应用于某个具体任务,比如问答系统、机器翻译等,通常需要用到一些有标注的数据集进行微调。这些标注数据可以通过人工标注获得,也可以通过其他方法生成,如利用规则、自动标注等。因此,ChatGPT在预训练阶段不需要人工标注,但在应用阶段需要借助标注数据进行微调和优化。

ChatGPT训练之后还有什么成本吗

训练一个大型的语言模型像ChatGPT需要大量的计算资源和时间。但是一旦训练完成,部署和使用的成本就相对较低了。部署方面,可以选择在云端或者本地部署,云端部署可以更加灵活和便捷,而本地部署则可以提高一定的安全性和隐私性。

在使用过程中,ChatGPT仍然需要一定的计算资源来运行和生成文本,特别是当输入的序列长度和生成文本的长度增加时,所需的计算资源也会相应增加。此外,如果要对ChatGPT进行微调,需要准备大量的数据和进行反复的实验,这也需要一定的成本。

官方的FAQ

使用 ChatGPT 需要付费吗?

ChatGPT 的研究预览是免费的。

ChatGPT 是如何工作的?

ChatGPT 是基于 GPT-3.5 进行微调的语言模型,其目的是生成文本。通过使用强化学习与人类反馈(RLHF)的方法,ChatGPT 被优化为对话模型。该方法利用人类演示和偏好比较来指导模型朝着所需的行为方向发展。

为什么人工智能似乎如此真实和逼真?

这些模型是在大量来自人类撰写的互联网数据上进行训练的,包括对话,因此它提供的回复可能听起来像人类一样。重要的是要记住,这是系统设计的直接结果(即最大化输出与模型训练数据集之间的相似性),这样的输出有时可能是不准确的、不真实的,或者具有误导性。

我能相信人工智能告诉我的真相吗?

ChatGPT 未连接到互联网,偶尔可能会产生错误的答案。它对于2021年之后的世界和事件的了解有限,并且有时可能会提供有害的指令或有偏见的内容。

我们建议检查模型的响应是否准确。如果您发现回答不正确,请使用“反对”按钮提供反馈。

谁可以查看我的对话?

作为我们致力于安全和负责任的人工智能的一部分,我们会审核对话,以改善我们的系统,并确保内容符合我们的政策和安全要求。

您会使用我的对话来进行培训吗?

是的。我们的人工智能培训师可能会审核您的对话,以改善我们的系统。

您能删除我的数据吗?

是的,请按照数据删除流程操作。

您能删除特定的提示吗?

不可以,我们无法从您的历史记录中删除特定的提示。请不要在对话中分享任何敏感信息。

我可以查看我的对话记录吗?我如何保存我进行过的对话?

是的,您现在可以查看并继续您过去的对话。

翻译自官方常见问题
https://help.openai.com/en/articles/6783457-chatgpt-general-faq

参考链接

https://openai.com/blog/chatgpt

为什么ChatGPT仿如十万个为什么回答机?

https://www.zhihu.com/question/570431477

https://mdnice.com/writing/367eff477f6644a5b4c50301a443018e

ChatGPT是怎样被训练出来的?

https://www.bilibili.com/video/BV1e24y1s7k8/?spm_id_from=333.788&vd_source=c90e27f6e0935bab786c15cc6e330f63

https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=2247554744&idx=2&sn=3b93ca4720cd86fb13978d40a2c691c6&chksm=ebb72e6cdcc0a77a56a7ab0e1b315baf7801e418af0d1f88c0446dd25e93c8b50a6cdc471cb0&scene=27

https://zhuanlan.zhihu.com/p/609795142

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows应用(vc++2022)MFC基础到实战(3)-基础(3)

目录框架调用代码MFC 对象之间的关系访问其他对象CWinApp:应用程序类initInstance 成员函数运行成员函数OnIdle 成员函数ExitInstance 成员函数CWinApp 和 MFC 应用程序向导特殊 CWinApp 服务Shell 注册文件管理器拖放CWinAppEx 类用于创建 OLE 应用程序的操作顺序用…

【算法题目】【Python】一文刷遍贪心算法题目

文章目录介绍分配饼干K 次取反后最大化的数组和柠檬水找零摆动序列单调递增的数字介绍 贪心算法是一种基于贪心思想的算法,它每次选择当前最优的解决方案,从而得到全局最优解。具体来说,贪心算法在每一步都做出局部最优选择,希望…

Flutter——Isolate主线机制

简述 在DartFlutter应用程序启动时,会启动一个主线程其实也就是Root Isolate,在Root Isolate内部运行一个EventLoop事件循环。所以所有的Dart代码都是运行在Isolate之中的,它就像是机器上的一个小空间,具有自己的私有内存块和一个运行事件循…

Linux下LED灯驱动模板详解

一、地址映射我们先了解MMU,全称是Memory Manage Unit。在老版本的Linux中要求处理器必须有MMU,但是现在Linux内核已经支持五MMU。MMU主要完成的功能如下:1、完成虚拟空间到物理空间的映射2、内存保护,设置存储器的访问权限&#…

【Linux学习笔记】mmap-共享内存进程通信 vs 有名信号量和无名信号量

mmap和信号量实现进程间通信相关mmap1. mmap 使用的注意事项2. mmap的两种映射3. mmap调用接口以及参数4. 使用存储映射区实现父子进程间通信(有名)父子进程通信的三种方式unlink5. 创建匿名存储映射区6. 通过存储映射区实现非血缘关系进程间的通信信号量…

SiteSucker for macOS + CRACK

SiteSucker for macOS CRACK SiteSucker是一个简单的macOS应用程序,允许您下载网站。它还可以将网站、网页、背景图片、视频和许多其他文件复制到Mac的硬盘上。 SiteSucker是一个Macintosh应用程序,可以自动下载Internet上的网页。它通过将网站的页面、…

遥感影像道路提取算法——SGCN

论文介绍 Split Depth-wise Separable Graph Convolution Network for Road Extraction in Complex Environment from High-resolution Remote Sensing Imagery(TGRS) 用于从高分辨率遥感图像(TGRS)中提取复杂环境中道路的分割深…

java对象的创建与内存分配机制

文章目录对象的创建与内存分配机制对象的创建类加载检查分配内存初始化零值设置对象头指向init方法其他:指针压缩对象内存分配对象在栈上分配对象在Eden区中分配大对象直接分配到老年代长期存活的对象进入老年代对象动态年龄判断老年代空间分配担保机制对象的内存回…

Spring的核心模块:Bean的生命周期(内含依赖循环+业务场景)。

Bean的生命周期前言为什么要学习Bean的生命周期前置知识Spring Post-processor(后置处理器)Aware接口简单介绍Bean的实例化过程为什么会有bean的实例化?过程Bean的初始化阶段为什么会有Bean的初始化?Bean的初始化目的是什么&#…

线性和非线性最小二乘问题的常见解法总结

线性和非线性最小二乘问题的各种解法 先看这篇博客,非常好:线性和非线性最小二乘问题的各种解法 1. 线性最小二乘问题有最优解 但是面对大型稀疏矩阵的时候使用迭代法效率更好。 迭代法 有Jacobi迭代法、 Seidel迭代法及Sor法 【数值分析】Jacobi、Se…

[ubuntu][GCC]gcc源码编译

1.下载gcc安装包 https://ftp.gnu.org/gnu/gcc/ 选择一个需要的gcc版本,下载。 2.下载依赖包 查看下载的gcc安装包中contrib文件夹下的download_prerequisites文件,查看需要的依赖包版本。 根据download_prerequisites中红框位置的信息,在下…

JSON.stringify()的5种使用场景

JSON.stringify() 方法将一个JavaScript对象或值转换为JSON字符串,如果指定了一个replacer函数,则可以选择性地替换值,或者指定的replacer是数组,则可选择性地仅包含数组指定的属性。 语法如下: JSON.stringify(value…

电子技术课程设计基于FPGA的音乐硬件演奏电路的设计与实现

wx供重浩:创享日记 对话框发送:乐曲电路 免费获取完整无水印论文报告(包含电路图) 文章目录一、设计任务要求二、总体框图三、选择器件四、功能模块五、总体设计电路图六、结束语一、设计任务要求 1、课程设计题目 设计一个乐曲演…

【Flutter从入门到入坑之三】Flutter 是如何工作的

【Flutter从入门到入坑之一】Flutter 介绍及安装使用 【Flutter从入门到入坑之二】Dart语言基础概述 【Flutter从入门到入坑之三】Flutter 是如何工作的 本文章主要以界面渲染过程为例,介绍一下 Flutter 是如何工作的。 页面中的各界面元素(Widget&…

使数组和能被P整除[同余定理+同余定理变形]

同余定理同余定理变形前言一、使数组和能被P整除二、同余定理变形总结参考资料前言 同余定理非常经典,采用前缀和 map,当两个余数前缀和为一个值时,则中间一段子数组刚好对P整除。但是能否找到前面是否有一段子数组和可以对P整除呐&#xf…

认识CSS之元素显示模式

🌟所属专栏:前端只因变凤凰之路🐔作者简介:rchjr——五带信管菜只因一枚😮前言:该系列将持续更新前端的相关学习笔记,欢迎和我一样的小白订阅,一起学习共同进步~👉文章简…

深度学习训练营之数据增强

深度学习训练营学习内容原文链接环境介绍前置工作设置GPU加载数据创建测试集数据类型查看以及数据归一化数据增强操作使用嵌入model的方法进行数据增强模型训练结果可视化自定义数据增强查看数据增强后的图片学习内容 在深度学习当中,由于准备数据集本身是一件十分复杂的过程,…

Python 中 KeyError: 0 exception 错误

Python “KeyError: 0” 异常是在我们尝试访问不包含0 这个键的时候去访问该键而引起的。 要解决该错误,请在尝试访问字典之前在字典中设置键,或者如果键不存在,则使用 dict.get() 获取默认值。 下面是一个产生上述错误的示例 my_dict {1…

KDZD互感器二次负载测试仪

一、概述 电能计量综合误差过大是电能计量中普遍存在的一个关键问题。电压互感器二次回路压降引起的计量误差往往是影响电能计量综合误差的因素。所谓电压互感器二次压降引起的误差,就是指电压互感器二次端子和负载端子之间电压的幅值差相对于二次实际电压的百分数…

五分钟了解JumpServer V2.* 与 v3 的区别

一、升级注意项 1、梳理数据。JumpServer V3 去除了系统用户功能,将资产与资产直接绑定。当一个资产名下有多个同名账号,例如两个root用户时,升级后会自动合并最后一个root,不会同步其他root用户。升级前需保证每一个资产只拥有一…