通俗易懂的chatgpg的原理简介

目录

一、深度学习与语言模型

二、ChatGPT训练三步走

三、情景学习与思维链

四、修改提示语优化结果

五、能力评估和注意问题

六.算法原理

极简ChatGPT原理

简介:

ChatGPT的人工智能原理主要基于深度学习技术,特别是大规模的预训练语言模型和Transformer结构。ChatGPT通过接收用户输入并返回响应,逐渐学习对话生成的任务,其内部包含大量的参数和复杂的结构,能够进行高度复杂的语言理解、推理和生成。

一、深度学习与语言模型

深度学习就是用层数较多(深)的人工神经网络从数据中学习输入与输出之间映射关系的算法,而人工神经网络是受生物神经网络的结构和功能启发下设计的计算模型。

用深度学习训练得到的网络就叫深度神经网络,它可以简单的看成一个函数,能够完成任何输入到输出的转换。比如:我们可以用它玩成语补全的游戏,输入成语的前三个字,让网络输出最后一个字(见图1)。

图1. 成语补全的深度神经网络

语言模型可以看成是成语补全的扩展版,它能够给定任意上文的情况下,预测下一个字或词。比如:输入“床前明月光,疑是地”,模型会输出“上”,然后将“上”添加到原输入中变成“床前明月光,疑是地上”,再输入到模型中,则会输出“霜”。如此这般,可以生成出完整的唐诗《静夜思》。使用这样的语言模型就可以完成文本生成任务了,类似技术被称为生成式人工智能(当然也还要包括生成图像、声音和视频等等啦)。

能够依据多长的上文来预测下一个字或词对模型的性能影响较大,目前一般从几千到几万个字或词不等,能够处理的上文越长,模型越强大。很多情况下,相同的上文,可以有多个不同的下文,所以模型输出实际上是不同可选字或词的概率分布。基于这些概率分布,使用随机采样方法就可以为同一个上文生成不同的下文,这种能力对于ChatGPT这种聊天和对话模型非常有用,因为它可以带来回答的多样性。

二、ChatGPT训练三步走

第一步“学会说话”:我们用深度神经网络来训练语言模型,先收集包含各种语言(英文、中文、法文等)尽可能多的文本,每次随机抽一段上文,让模型学会接着往下“背诵”(见图2)。由于看过和背过的文字实在是太多了(实际训练使用了几乎所有能从各种渠道获得的文字和图书资源),模型就可以像模像样地说话了。训练时除了使用海量文本,还会包括大量的代码(就当普通文本一样对待)。一般认为代码有助于提高模型的“逻辑推理”能力,因为代码实现的算法就是对求解问题所需逻辑步骤的描述。

图2. 使用海量包含多种语言的文本训练语言模型

第二步“理解意图”:光会文字接龙肯定是不够的,最终目标是要用它来替我们干活的。所以这一步我们让模型统一以“给上文、补下文”方式来学习完成各种各样的任务。问答任务直接可以用“给上文(问题)、补下文(回答)”方式实现,但有些任务还需要在上文中加上提示(见图3)。以翻译为例,除了告诉模型需要翻译的内容外,还要指示模型翻译成哪种目标语言。这一步提示学习完成之后,模型即已“博览群书”(第一步)而“胸有成竹”,又能“领会意图”(第二步)而“对答如流”,已经处于基本可用的状态了。

图3. 多任务提示学习让模型学会各种任务(绿色字体为提示语)

第三步“反馈择优”:对于某些问题,模型可能会生成带有偏见、歧视或者令人不适的回答。另外,之前提到过,对于同一个问题,模型能够生成多个不同的回答。这一步中我们让人们对同一问题的不同回答进行排序,然后采用强化学习算法(从交互中得到反馈,迭代优化模型的生成策略)进一步调整模型,使输出回答更符合人们的期望,达到与人们期望对齐的效果(见图4)。

图4. 使用强化学习提高模型生成与人们期望相符回答的概率

经过以上学会说话、理解意图和反馈择优三个主要训练步骤,能够以自然语言对话方式完成各种任务的生成式大模型就构建出来了,之后当然还可用领域数据或强化学习进一步对模型进行迭代精调。一般而言,模型的规模越大,能够存储和融合的信息和知识就越多,性能也就越好。

希望详细了解构建和训练类ChatGPT模型完整过程可以参阅《如何构建和训练ChatGPT》(特别是强化学习部分)。

三、情景学习与思维链
使用ChatGPT时,情景学习(In-context Learning)方法能够显著提高其回答的质量,它的原理其实也非常简单。比如:问一位年幼的孩子4乘以5等于多少,他可能答不上来。但你先告诉他:“1乘以5等于5;2乘以5等于10;3乘以5等于15。”接着再问他:“4乘以5等于多少?”,他回答正确的可能性就增加了。同样,情景学习也是在提问前列举一些相似的例子作为输入喂给模型。
以影评的情感分析为例(见图5),先给出三个影评及其情感极性(好评、中性和差评),然后让模型分析“看完后让人感慨万分,久久不能忘怀。”的极性。

图5. 影评情感分析中使用情景学习的例子
一般来讲,使用情景学习时,所给出的例子越多越好。这里有一个有趣的现象值得一提,测试表明在所给出的例子中标签(即图5中的“差评”、“中性”和“好评”)是否正确与性能关系不大。比如:我们将“主演表情作作、略显浮夸。”的标签改成“好评”,又将“这部电影叙事紧凑、特技一流。”的标签改成“差评”,并不会影响模型对于“看完后让人感慨万分,久久不能忘怀。”影评的分析结果。但是例子呈现的格式(图5为一则影评后跟相应的情感标签,中间以空格分隔)要与提问的形式保持一致,并且文字内容要来自同一领域(图5中的例子不宜是餐馆或旅店评价的语句,因为问题是对电影评价的情感分析)。
我个人认为出现以上现象的原因是:ChatGPT是一种集成了语言运用、语义理解和世界知识的模型。模型其实已经具备了回答所需要的知识,少量的例子并不足于改变模型对于问题的判断和回答,难点是如何引导模型准确提取出与问题相关的知识来。所以情景学习中的例子要来自同一领域,这有利于模型检索出回答问题所需的相关信息和知识。同时,以统一的格式呈现例子和问题,则有利于模型按格式规定的顺序依次生成回答。
思维链(Chain-of-Thought)可以看成是情景学习的扩展,它不仅给出例子及相应结果,还给出得到该结果的计算或推理步骤(见图6)。本人猜想思维链有效的原因是给模型解题提供了一种模板或过程的指引,这种序列化的文本模板易于被生成模型所使用,它为生成较长内容的整体结构和中间步骤进行了预先的规划。这种模板也为模型在特定步骤上调取计算或推理所需知识提供了线索,从而引导模型得出正确的答案。

图6. 求解数学应用题时使用思维链的例子
四、修改提示语优化结果
提示语(本文第二节的第二步提到过)的好坏确实会影响ChatGPT的回答质量(情景学习和思维链都可以看成是特殊的提示),现在已经出现了提示工程(Prompt Engineering)这个研究方向和提示工程师这种职位。撰写好的提示语有两个基本原则:
  1. 指令清晰并且具体;
  2. 给模型思考的时间。
第1条原则比较好理解,一般不要担心指令写得过长。在没有冗余的情况下,宜长不宜短。第2条原则的意思是复杂问题不要让模型直接得出结论,而要详细指示所需步骤,然后让模型根据每一步得到的结果再给出最终的判断。比如:对于一道比较复杂的数学应用题,不要直接问某个答案是否正确。可以参考以下形式来写提示语:
  • 第一步:先求解这道数学应用题;
  • 第二步:将求解出的答案与给出的答案进行比较;
  • 第三步:根据比较的结果,回答给出的答案是否正确。
如果以API方式批量调用ChatGPT的话,这里提醒一个小技巧。可以指示ChatGPT以JSON、HTML等结构化形式返回结果,以方便提取所需的内容。
五、能力评估和注意问题
2022年11月所推出的ChatGPT已经非常可怕了,OpenAI公司又于2023年3月推出比ChatGPT更为强大的GPT-4,并且还开始支持网页搜索、图片生成、计算器等插件(Plugins),使其能够在必要时调用插件来提高解决问题的能力。
ChatGPT在没有针对医学知识精调和强化的情况下,在美国医学执照考试的三个部分中达到或接近通过的门槛。Google公司对ChatGPT进行了程序员招聘面试,结果其编程能力可匹敌一位三级水平的软件工程师,每年可攒得18.3万美元薪资。ChatGPT还在MBA核心课程《运营管理》的期末考试中的基本运营管理和流程分析方面表现出色,不仅答案正确,而且能给出合理的解释。
我们近期借助认知心理学方面的理论对ChatGPT认知能力进行了评测,它在词汇的任务上表现相对出色,与英语母语的16岁左右高中生的认知能力相当,但逻辑推理和数字处理方面的能力相对较弱,相当于10岁左右的小学生水平,整体表现文强理弱。
ChatGPT和GPT-4等本质上是能够执行生成任务的机器学习模型,其天生会存在或衍生出以下一些问题:
  1. “幻觉”问题,即生成看起来似乎合理,但不准确或编造的信息(天生什么话都会接);
  2. 容易生成带有偏见、歧视和不符合伦理内容(训练使用的数据集里就存在);
  3. 缺乏及时更新信息和知识的方法(使用网页搜索插件会有所缓解);
  4. 某些任务的返回结果受提示词的影响较大;
  5. 使用和交互时可能会泄露个人的隐私;
  6. 可能被某些人滥用来制造虚假信息和内容等
六.算法原理
ChatGPT的算法原理主要基于深度学习和自然语言处理技术,通过构建一个大型语言模型来实现。这个模型的核心在于它能够学习并理解大量的文本数据,包括网页、新闻、书籍等,以及网络上的热点话题和流行文化,从而了解最新的语言模式和表达方式。ChatGPT的工作流程大致如下:
  1. 数据收集与预处理:首先,ChatGPT会收集大量的文本数据,并对这些数据进行预处理,包括分词、去除停用词、翻译等,以帮助模型更好地理解输入的文本并提高生成的文本质量。
  2. 建立模型:在预处理的基础上,ChatGPT会构建一个深度学习模型,该模型包含了多个卷积层、循环神经网络和池化层等,这些层的协同工作能够使模型更好地捕捉语言的模式和语义。
  3. 生成文本:一旦建立了模型,ChatGPT就可以生成与人类语言相似的输出文本。它使用的是一种称为“Transformer”的深度学习架构,该架构能够学习从输入文本到输出文本的映射关系。
  4. 输出控制:生成的文本输出后,还需要进行一系列的输出控制,包括语法、语义、情感等方面,以确保生成的文本符合人类语言习惯。
好吧,就到这里了!类似ChatGPT这种生成式大模型必然会对我们未来的工作生活产生较大影响。目前网络上绝大部分内容还是人类创造的,之后机器自动生成的比重会不断上升。既然避不开、躲不过、逃不脱,我们只能选择了解它、适应它、利用它。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud_Eureka注册中心

概述 Eureka是SpringCloud的注册中心。 是一款基于REST的服务治理框架,用于实现微服务架构中的服务发现和负载均衡。 在Eureka体系中,有两种角色: 服务提供者和服务消费者。 服务提供者将自己注册到Eureka服务器,服务消费者从Eureka服务器中…

使用Qt制作一个简单的界面

1、创建工程 步骤一: 步骤二: 步骤三: 选择 build system,有qmake、CMake 和 Qbs 三个选项。 CMake 很常用,功能也很强大,许多知名的项目都是用它,比如 OpenCV 和 VTK,但它的语法繁…

【Android面试八股文】什么是ANR?如何分析和定位ANR?如何避免ANR?

文章目录 一、ANR概述二、触发ANR的主要场景三、Android四大组件中的潜在的ANR风险五、避免ANR的实践建议六、ANR的产生原因与出现的场景6.1 原因:6.2 出现场景:七、ANR的定位与分析7.1. ANR分析思路——traces7.2 ANR其他分析思路与相关日志7.2.1 分析logcat思路7.2.2 分析k…

Spring Cloud Circuit Breaker基础入门与服务熔断

官网地址&#xff1a;https://spring.io/projects/spring-cloud-circuitbreaker#overview 本文SpringCloud版本为&#xff1a; <spring.boot.version>3.1.7</spring.boot.version> <spring.cloud.version>2022.0.4</spring.cloud.version>【1】Circu…

易校网校园综合跑腿小程序源码修复运营版

简介&#xff1a; 易校网校园综合跑腿小程序源码修复运营版&#xff0c;带服务端客户端前端文档说明。 源码安装方法&#xff1a; 需要准备小程序服务号 服务器 备案域名 校园网跑腿小程序源码需要准备 1.小程序 2.服务器&#xff08;推荐配置2h4g3m&#xff09; 3.域名…

【Python实战因果推断】13_线性回归的不合理效果3

目录 Regression Theory Single Variable Linear Regression Multivariate Linear Regression Frisch-Waugh-Lovell Theorem and Orthogonalization Regression Theory 我不打算太深入地探讨线性回归是如何构建和估计的。不过&#xff0c;一点点理论知识将有助于解释线性回归…

更新!谷歌倾斜摄影OSGB数据V1.2版

谷歌倾斜摄影OSGB数据V1.2版终于来了&#xff01; 一个月前发布了谷歌倾斜摄影数据生成OSGB数据V1.0版&#xff0c;对谷歌倾斜摄影数据转换工具进行了重大更新&#xff0c;V1.1版主要解决了三个问题&#xff1a;1.支持Cesiumlab等数据处理软件&#xff0c;将OSGB数据转换成3DTi…

OFDM关键技术——PAPR降低技术

OFDM信号的峰均比问题 PAR问题由于不同子载波上N个正弦信号叠加引起&#xff0c;由于各个子载波的幅值和相位相互独立&#xff0c;当子载波数目较大时&#xff0c;由中心极限定理可知&#xff0c;同相分量的幅度服从高斯分布。 峰值功率&#xff1a;0.1033 平均功率&am…

网安小贴士(4)哈希函数

一、前言 哈希函数是密码学中的基础工具&#xff0c;哈希函数在密码学中扮演着至关重要的角色&#xff0c;广泛应用于确保数据的安全性和完整性。随着技术的发展&#xff0c;新的哈希算法和应用场景也在不断出现。 二、定义 哈希函数是一种数学函数&#xff0c;它接受一个输…

计算机I/O系统与外围设备详解:从基础概念到实际应用

计算机I/O系统与外围设备详解&#xff1a;从基础概念到实际应用 在计算机世界中&#xff0c;理解I/O系统和外围设备的基本概念对初学者来说至关重要。本文将详细介绍I/O系统的基础知识、I/O接口、计算机外围设备及其工作原理&#xff0c;帮助基础小白更好地理解这些概念。 I/O…

毫米波雷达深度学习技术-1.7训练一个神经网络

1.7 训练一个神经网络 对于训练神经网络&#xff0c;有两个步骤&#xff0c;即前向传递和误差反向传播。 1.7.1 前向传播和反向传播 在前向传递中&#xff0c;输入被馈送到模型并与权重向量相乘&#xff0c;并为每一层添加偏差以计算模型的输出。密集层或全连接层第l层的输入、…

中画幅巡检相机-SHARE 100M A10

【毫厘之间&#xff0c;洞见非凡】 ——SHARE 100M A10中画幅测量相机&#xff0c;巡检行业的新选择 在巡检行业&#xff0c;精准度是关键&#xff0c;深圳赛尔智控科技有限公司最新推出的SHARE 100M A10中画幅测量相机&#xff0c;基于先进的IMX461影像传感器&#xff0c;拥有…

prometheus 安装node_exporter, node_exporter 安装最新版 普罗米修思安装监控服务器client

1. 本文介绍两种安装方式&#xff0c;一种安装为service,使用systemctl start node_exporter管理&#xff0c;第二种为安装docker内 容器内使用。 1.1 安装到系统内&#xff1a; 1.1.1 github地址&#xff1a; Releases prometheus/node_exporter GitHub ​ 1.1.2 下载命…

解析Linux top 命令输出并生成动态图表

文章目录 0. 引言1. 原理2. 功能3. 程序架构流程图结构图 4. 数据解析模块5. 图表绘制模块6. 主程序入口7. 使用方法8. 总结9. 附录完整代码 0. 引言 在性能调优和系统监控中&#xff0c;top 命令是一种重要工具&#xff0c;提供了实时的系统状态信息&#xff0c;如 CPU 使用率…

PHP电商系统开发指南高级技巧

开发高级 php 电商系统所需的技巧包括&#xff1a;数据库优化&#xff1a;使用索引、规范化数据结构和缓存机制。性能优化&#xff1a;启用页面缓存、优化图像和使用 cdn。购物车管理&#xff1a;使用会话或数据库存储数据&#xff0c;实现实时更新和弃单恢复。支付集成&#x…

windows10如何打开开发者模式

按键盘上的win键或者点击屏幕左下角的开始图标&#xff0c;即可出现如下的界面 在打开的界面中找到设置按钮&#xff0c;点击设置按钮 进入windows设置界面后&#xff0c;找到‘更新和安全’的选项&#xff0c;随后点击进入 进去后在左侧的功能列表中找到‘开发者选…

Transformer模型原理细节解析

基本原理: Transformer 的核心概念是 自注意力机制(Self-Attention Mechanism),它允许模型在处理每个输入时“关注”输入序列的不同部分。这种机制让模型能够理解每个单词或符号与其他单词或符号之间的关系,而不是逐个地线性处理输入。 Transformer 主要由两个部分组成:…

推荐算法学习笔记2.1:基于深度学习的推荐算法-基于共线矩阵的深度推荐算法-AutoRec模型

AutoRec模型 前置知识&#xff1a;推荐算法学习笔记1.1:传统推荐算法-协同过滤算法 AutoRec模型通过引入自编码器结构&#xff0c;将共线矩阵中的用户向量&#xff08;基于用户的U-AutoRec&#xff09;或物品向量&#xff08;基于物品的I-AutoRec&#xff09;嵌入到低维空间后还…

Ubuntu24.04LTS基础软件下载

librewolf: deb文件link 作用&#xff1a;访问github&#xff0c;无痕浏览&#xff0c;这个速度&#xff0c;不指望了 vscodium: 从deb安装&#xff0c;ubuntu sudo dpkg -i xxx.debpaste-image 插件替代 markdown wps: libreoffice: 替换USTC源 sudo nano /etc/apt/sourc…

Objective-C语法基础

新建一个XCode项目 新建一个类 1、成员变量、属性 1.1、类内使用成员变量&#xff0c;类外使用属性 Role.h #import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGINinterface Role : NSObject {//成员变量&#xff1a;只能类内使用NSString *_name;int _age; }//属…