Chatgpt 原理解构

news2024/12/22 19:01:18

一、背景知识

1. 自然语言处理的发展历程

自然语言处理在不同时期呈现出不同的特点和发展态势。萌芽期,艾伦・图灵在 1936 年提出 “图灵机” 概念,为计算机诞生奠定基础,1950 年他提出著名的 “图灵测试”,预见了计算机处理自然语言的潜力。1956 年,乔姆斯基的形式语言理论和香农的信息论模型为自然语言处理的发展铺平了道路,这一时期的研究成果为后续自然语言处理技术的发展提供了重要的理论基础。

发展期,自然语言处理融入人工智能研究领域,分为基于规则方法的符号派和采用概率方法的随机派两大阵营。这一时期,两种方法的研究都取得了长足的发展,如宾夕法尼亚大学研制成功的 TDAP 系统和布朗美国英语语料库的建立等。

低速的发展期,虽然自然语言处理的研究进入低谷,但仍取得了一些成果,如基于隐马尔可夫模型的统计方法在语音识别领域获得成功,话语分析也取得重大进展。

复苏融合期,90 年代中期以后,计算机速度和存储量大幅增加以及 Internet 商业化和网络技术发展,促进了自然语言处理研究的复苏与发展。2001 年神经语言模型出现,2008 年多任务学习、2013 年 Word 嵌入和 NLP 的神经网络、2014 年序列到序列模型、2015 年注意力机制和基于记忆的神经网络、2018 年预训练语言模型等不断推动自然语言处理技术的进步。

2. 大型语言模型的发展历程

大型语言模型的发展历程与自然语言处理紧密相关。早期阶段主要是基于规则的方法,处理少量数据。随着技术的发展,进入基于统计的阶段,如 N-Gram 等模型,但容易出现数据稀疏等问题。2017 年 Transformer 发布后,大语言模型进入基于神经网络的阶段,参数量增长迅速。以 GPT-3 为例,2020 年发布的 GPT-3 算力消耗费用达到千万美元级别,预训练数据量达到 45TB,实际参数量达到 1750 亿。大语言模型通过数据信息容量巨大、底层模型结构优秀、模型训练方法完善等关键突破,实现了性能的大幅提升。未来,大语言模型有望呈现超线性发展趋势,并形成全新产业形态,为各个行业带来巨大的变革和机遇。

二、ChatGPT 同类产品

1. BlenderBot3

BlenderBot3 是 Meta 推出的聊天机器人,具有以下特点和优势。首先,它可以与人交互并接收反馈以提高对话能力。基于 Meta AI 公开提供的 OPT-175B 语言模型构建,规模是其前身 BlenderBot 2 的 58 倍。融合了人格、共情和知识等对话技能,并通过利用长期记忆和搜索互联网来进行有意义的对话。

在与 ChatGPT 的对比方面,BlenderBot3 有一些独特之处。它的模型所有部分,包括代码、数据集等全部公开,可供所有人使用。用户在与 BlenderBot3 聊天时,可以点击机器人给出的回答,查看这句话在互联网上的出处。然而,BlenderBot3 也存在一些问题,例如在回答问题时可能会出现错误信息或负面言论。

2. LaMDA

LaMDA 是谷歌推出的一系列专门用于对话的基于 Transformer 的模型。它具有 1370 亿个参数,并使用 1.56 万亿个公开对话数据进行训练。

LaMDA 的运行方式是通过微调采用 Transformer 架构的专用对话神经语言模型而构建,可以利用外部知识源展开对话。在对话时,LaMDA 生成器会对面向的上下文生成几个候选回应,然后 LaMDA 分类器预测每个候选回应的质量和安全分数,最后根据这两项数据的排名选出最佳回应。

在谷歌产品中的应用方面,LaMDA 被用于提高谷歌的对话服务质量,为用户提供更安全、更高质量的对话体验。与 ChatGPT 相比,LaMDA 在参数规模上具有一定优势,但在实际应用中,两者各有特点。

3. sparow

Sparrow 是由 DeepMind 开发的聊天机器人,具有自动执行重复性任务和流程、学习和适应能力强、提供多种定制选项和集成等功能。

Sparrow 的功能特色包括:旨在正确回答用户的问题,同时减少不安全和不适当回答的风险。通过使用人类判断进行训练,使其比基线预训练语言模型更有帮助、更正确和更无害。在自然语言处理领域,Sparrow 为解决语言模型产生不正确、带偏见或潜在有害输出的问题提供了一种新的思路和方法。与 ChatGPT 相比,Sparrow 在回答问题的准确性和安全性方面可能更具优势,但在语言的丰富性和创造性方面可能还有待提高。

三、ChatGPT 的工作原理

1. 预训练与提示学习阶段

ChatGPT 在大规模文本数据上进行预训练,学习语言的通用表示。其预训练数据来源广泛,包括互联网上的各种文本内容,如新闻、博客、小说等。据统计,ChatGPT 的预训练数据量达到了数百 GB 甚至更多。通过对如此庞大的数据进行学习,ChatGPT 能够掌握语言的语法、语义和常见的表达方式。

在提示学习阶段,ChatGPT 根据特定任务进行调整,以更好地适应不同的对话场景。例如,当用户提出一个问题时,ChatGPT 会根据问题的关键词和上下文,利用预训练阶段学到的知识,生成一个初步的回答。然后,通过不断调整回答的内容和形式,使其更符合用户的需求。

2. 结果评价与奖励建模阶段

在这个阶段,ChatGPT 收集相同上文下根据回复质量进行排序的数据。具体来说,随机抽取一大批 Prompt,使用第一阶段微调模型,产生多个不同的回答。然后,标注人员对这些回答进行排序,形成训练数据对。

接下来,训练奖励模型。奖励模型的作用是预测标注者更喜欢哪个输出。通过使用 pairwise loss 来训练奖励模型,可以给出相对精确的奖励值。这一步使得 ChatGPT 从命令驱动转向了意图驱动,引导 ChatGPT 输出符合人类预期的内容。

例如,对于一个问题 “今天天气怎么样?”,ChatGPT 可能会生成多个回答,如 “今天天气很好。”“今天天气晴朗。”“今天天气不错。” 标注人员会根据回答的质量进行排序,奖励模型会学习这些排序结果,从而能够预测出在不同情况下,标注者更倾向于哪个回答。

3. 强化学习与自我进化阶段

在这个阶段,ChatGPT 使用 PPO 强化学习策略微调模型。具体步骤如下:

首先,利用上段训练好的奖励模型,靠奖励打分来更新预训练模型参数。在数据集中随机抽取问题,使用 PPO 模型生成回答,并用上一阶段训练好的 RM 模型给出质量分数。

然后,将回报分数依次传递,从而产生策略梯度,通过强化学习的方式来更新 PPO 模型参数。整个过程迭代数次直到模型收敛。

强化学习算法可以简单理解为通过调整模型参数,使模型得到最大的奖励(reward),最大奖励意味着此时的回复最符合人工的选择取向。而对于 PPO,它是一种新型的强化学习策略优化算法,具有实现简单、易于理解、性能稳定、能同时处理离散 / 连续动作空间问题、利于大规模训练等优势。

通过不断地进行强化学习和自我进化,ChatGPT 能够不断优化回复质量,提高对话的准确性和流畅性,更好地满足用户的需求。

四、算法细节

1. 标注数据

ChatGPT 的训练数据标注工作至关重要。据了解,其训练数据由标注师分别扮演用户和聊天机器人产生人工精标的多轮对话数据,以及根据回复质量排序的数据等。

数据标注的过程复杂且工作量庞大。标注师需要对大量的文本数据进行精细处理,例如对不同类型的回复进行质量排序。这就如同为一座巨大的知识宝库进行分类整理,以便让 ChatGPT 能够更好地从中学习和提取信息。

有研究指出,为了训练 ChatGPT,OpenAI 的合作伙伴 Sama 雇佣了肯尼亚、乌干达和印度的外包员工。这些标注员每 9 个小时要阅读和标注 150 - 200 段文字,段落长度从 100 个单词到 1000 多个单词不等。薪酬方面,Sama 为 OpenAI 雇佣的数据标签员工支付的时薪在 1.32 美元 - 2 美元之间,具体取决于资历和表现。

2. 建模思路

ChatGPT 基于 Transformer 架构,采用 “预训练 + 微调” 的方法,通过自监督学习、遮蔽语言模型和强化学习等技术,生成准确、连贯和有意义的对话内容。

Transformer 架构是一种仅依赖于注意力机制而不使用循环或卷积的简单模型,它在性能方面表现出色,具有更好的并行度和更短的训练时间。在预训练阶段,ChatGPT 通过自监督学习在大规模文本数据上学习语言的通用表示,掌握语言的语法、语义和常见表达方式。遮蔽语言模型则通过随机遮蔽部分文本,让模型预测被遮蔽的部分,进一步提高模型对语言的理解能力。

在微调阶段,ChatGPT 根据特定任务进行调整,以更好地适应不同的对话场景。强化学习则通过奖励模型和策略优化算法,不断优化回复质量,使模型输出更符合人类预期。

3. 存在的问题

尽管 ChatGPT 取得了巨大的成功,但它仍然存在一些问题。

首先,简单逻辑问题错误依旧明显。在处理一些需要逻辑推理的问题时,ChatGPT 可能会给出错误的答案。例如,在数学问题上,根据亚利桑那州立大学副教授的一项研究,ChatGPT 的准确率低于 60%。

其次,有时会给出看似合理但不正确或荒谬的答案。这是因为 ChatGPT 是基于大量数据进行训练的,它可能会受到数据中的偏见和错误信息的影响。

此外,ChatGPT 的部分回复废话较多、句式固定。在回答问题时,它可能会重复之前提出的观点,或者使用一些固定的句式,这可能会让人类读者感到不和谐。

抵抗不安全的 prompt 能力较差也是一个问题。如果用户输入一些不安全或不适当的提示,ChatGPT 可能会给出不恰当的回复,这可能会带来一定的风险。

五、关于 chatpgt 的思考

ChatGPT 的出现无疑给社会带来了巨大的冲击和变革。从社会层面来看,它极大地提高了信息处理和交流的效率。例如,在客服领域,ChatGPT 可以快速响应客户的问题,为企业节省大量人力成本。据统计,一些企业在引入 ChatGPT 后,客服响应时间缩短了 50% 以上,客户满意度也有显著提升。同时,它也为人们的日常生活提供了便利,如帮助人们撰写邮件、文案等,节省了时间和精力。然而,它也带来了一些挑战,如虚假信息的传播和就业岗位的调整。

在教育领域,ChatGPT 既带来了机遇也带来了挑战。一方面,它可以作为学生的学习助手,提供在线学习资源,支持学生自主学习,改善教学方式。例如,学生可以通过与 ChatGPT 对话,获取知识和解答疑惑,提高学习效率。但另一方面,它也可能导致学生作弊行为的增加,影响学生的独立思考能力。因此,教育工作者需要引导学生正确使用 ChatGPT,培养学生的批判性思维和创新能力。

在科技领域,ChatGPT 推动了自然语言处理技术的发展,为人工智能的进一步发展奠定了基础。未来,ChatGPT 有望在提升语境理解能力、生成文本的多样性和创造性、增强对话系统的实时学习与适应能力、提高跨语言和文化交流能力、提升计算效率及环保性、增强个性化和定制能力等方面取得突破。例如,通过改进算法和模型结构,让 ChatGPT 具备更人性化的推理能力,包括因果关系推理、逻辑演绎能力,更好地把握长对话的上下文、对复杂情境的准确识别和更精细化的情绪感知。

然而,ChatGPT 的发展也面临着一些挑战。首先,数据隐私和安全问题是一个重要的挑战。由于 ChatGPT 需要大量的数据进行训练,这些数据可能包含个人隐私信息,如果处理不当,可能会导致数据泄露和隐私侵犯。其次,伦理道德问题也需要引起关注。例如,ChatGPT 可能会被用于不道德的目的,如传播虚假信息、进行网络攻击等。此外,ChatGPT 的发展也可能加剧社会不平等,因为只有具备一定技术和资源的人才能充分利用它的优势。

为了应对这些挑战,我们需要采取一系列措施。在技术方面,加强数据隐私和安全保护技术的研发,确保用户数据的安全。在伦理道德方面,制定相关的规范和准则,引导 ChatGPT 的合理使用。在教育方面,加强对学生的数字素养教育,培养学生正确使用人工智能技术的能力。在社会层面,加强对人工智能技术的监管,确保其发展符合社会的利益和价值观。

总之,ChatGPT 的出现为我们带来了机遇和挑战,我们需要正确认识和对待它,充分发挥其优势,同时积极应对其带来的挑战,推动人工智能技术的健康发展,为人类社会的进步做出贡献。

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

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

相关文章

linux 配置nfs

服务器端 sudo apt update sudo apt-get install nfs-kernel-server配置NFS服务器 mkdir /home/aa/workspace/nfsdir chmod 777 /home/aa/workspace/nfsdir sudo vim /etc/exports添加这个语句 /home/aa/workspace/nfsdir *(rw,sync,no_root_squash,insecure)sudo systemctl …

【音频生成】mac安装ffmpeg

前言 ffmpeg是一个开放源代码的自由软件,可以执行音频和视频多种格式的录影、转换、串流功能。算的上是进行音频处理的基本软件了,也是python包pydub的依赖。如果没有安装ffmpeg,就会报这个错。 FileNotFoundError: [Errno 2] No such file…

灯塔:JavaWeb笔记

什么是HTML、CSS? HTML (HypeText Markup Lanage):超文本标记语言。 超文本:超过了文本的限制,比普通的文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。 标记语言:由表签构成的语言 HTML 标签都是提前预定义好的…

IT监控可视化:运维团队的智慧之眼

在当今这个数字化时代,IT系统已成为企业运营的核心支柱。随着业务的不断扩展和IT架构的日益复杂,运维团队面临着前所未有的挑战。如何高效、准确地监控和管理IT资源,确保系统的稳定性和可用性,成为了运维工作的重中之重。而IT监控…

利用可解释性技术增强制造质量预测模型

概述 论文地址:https://arxiv.org/abs/2403.18731 本研究提出了一种利用可解释性技术提高机器学习(ML)模型性能的方法。该方法已用于铣削质量预测,这一过程首先训练 ML 模型,然后使用可解释性技术识别不需要的特征并去…

库函数相关(上一篇补充)

一、创建自己的头文件 在当前目录下创建一个my_head.h将这个文件移动到/usr/include目录 #ifndef __MY_HEAD_H__ #define __MY_HEAD_H__#include <stdio.h> #include <errno.h> #include <string.h>#define PRINT_ERR(s) do{\printf("%s %s %d\n&quo…

MongoDB初学者入门教学:与MySQL的对比理解

&#x1f3dd;️ 博主介绍 大家好&#xff0c;我是一个搬砖的农民工&#xff0c;很高兴认识大家 &#x1f60a; ~ &#x1f468;‍&#x1f393; 个人介绍&#xff1a;本人是一名后端Java开发工程师&#xff0c;坐标北京 ~ &#x1f389; 感谢关注 &#x1f4d6; 一起学习 &…

JavaEE: HTTPS的魅力与优势揭秘

文章目录 HTTPSHTTPS 是什么HTTPS 基本工作过程Fiddle 等抓包工具,为啥能解析 HTTPS 的数据? HTTPS HTTPS 是什么 HTTPS 是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层. 几个核心概念: 明文: 要传输的原始数据.密文: 把明文进行加密之后得到一个让别人不能理解…

【算法篇】三道题理解什么是递归,回溯和剪枝

递归&#xff0c;回溯&#xff0c;剪枝 想必大家再学习算法知识的路上经常听到回溯&#xff0c;剪枝类似的概念&#xff0c;对于初学者来说&#xff0c;很容易把他们理解成一种新的算法思想&#xff0c;其实回溯和剪枝只是在递归的基础上稍加修改&#xff0c;对于解决某些特定问…

k8s的pod的管理

常用的Pod基础命令 列出所有命名空间中的所有Pod kubectl get pods --all-namespaces 列出指定命名空间中的所有Pod kubectl get pods -n <namespace> 显示指定Pod的详细信息&#xff0c;包括状态、事件等 kubectl describe pod <pod-name> -n <namespace>…

机器学习入门(一)

一、机器学习概述 1、人工智能 像人一样智能的综合与分析&#xff0c;机器模拟人类。 是一个系统&#xff0c;像人那样思考&#xff0c;像人那样理性思考。 是一个系统&#xff0c;像人那样活动&#xff0c;像人那样合理的系统 2、机器学习 让机器自动学习&#xff0c;而不…

SAP将假脱机(Spool requests)内容转换为PDF文档[RSTXPDFT4]

将假脱机(Spool requests)内容转换为PDF文档[RSTXPDFT4] 有时需要将Spool中的内容导出成PDF文件&#xff0c;sap提供了一个标准程序RSTXPDFT4可以实现此功能。 1, Tcode:SP01, 进入spool requests list 2, SE38 运行程序RSTXPDFT4 输入spool reqeust号码18680&#xff0c;然后…

excel 单元格嵌入图片

1.图片右键,设置图片格式 2.属性 随单元格改为位置和大小 这样的话&#xff0c;图片就会嵌入到单元格&#xff0c;也会跟着单元格的大小而改变

10-记录器

这个功能允许记录和重现以前的模拟。所有发生的事件都记录在记录器文件 recorder file中。 1 记录 所有数据仅在服务器端以二进制文件的形式写入。但是&#xff0c;记录器是使用 carla.Client管理的。 注意&#xff1a;在回放结束时&#xff0c;车辆将被设置为自动驾驶&#xf…

强化学习和QLearning及GAN到底是什么关系啊

强化学习&#xff08;Reinforcement Learning&#xff09;、Q-Learning 和生成对抗网络&#xff08;GANs&#xff09;是机器学习中的三个不同概念&#xff0c;它们虽然有一些交叉&#xff0c;但本质上是针对不同问题的技术方法。下面我来详细解释它们之间的关系和区别&#xff…

leetcode每日一题day22(24.10.2)——准时到达的列车最小时速

思路&#xff1a;这种在有约束条件情况下&#xff0c;求最值或最符合要求的情况&#xff0c;首先是很容易想到&#xff0c;从时速为1开始往后找找到满足条件就输出&#xff0c;但这无疑工程量很大&#xff0c;每种可能的速度都要对列车数组进行遍历&#xff0c; 时间复杂度为C…

链表Set_LinkList(并集)

并集是把两个集合合并&#xff0c;去除重复元素后组成的集合。 通过键盘输入将两个集合保存在链表A和链表B中&#xff0c;再创建一个链表C用于保存集合A、B的并集&#xff0c;将链表C打印输出。 提示&#xff1a; 1.相对于上一题&#xff08;链表Set_LinkList&#xff08;建立&…

java 微服务 端口冲突 redis虚拟磁盘满 nacos挂

java 微服务 端口冲突 哥 排除法呀 什么卸载软件QAQ netstat -ano | findstr :48080 输这个呀 然后 taskkill /PID 1234 /F redis虚拟磁盘满 导致 假死 挂了 nacos 挂了重启 nacosrun.bat startup -m standalone

facebook受众选择设置策略的最佳方式

在进行Facebookguanggao投放时&#xff0c;受众的选择是一个至关重要的步骤。正确的受众选择不仅能够帮助我们更好地定位目标用户&#xff0c;还能显著提高guanggao的转化率和投资回报率&#xff08;ROI&#xff09;。然而&#xff0c;受众选择的数量和范围同样是需要认真考虑的…

QtDesign预览的效果与程序运行的结果不一致的解决方法

存在的问题 使用Qt designer软件设计出来的界面&#xff0c;与转换成python程序运行出来的结果不一致&#xff0c;具体看下图 Qt designer预览结果 程序运行出来的结果 原因分析 我自己的电脑是2560*1600分辨率的屏幕&#xff0c;采用的是200%的缩放比例&#xff0c;出现这种…