01.ChatGPT原理剖析

news2024/11/18 2:54:21

目录

  • ChatGPT初体验
    • 对ChatGPT的误解
    • ChatGPT的本质
    • 模型的训练
  • ChatGPT的关键技术
    • 监督学习
    • 预训练(Pre-train)
      • GPT系列的历史
      • 预训练的好处
    • 强化学习
  • ChatGPT带来的研究问题

部分截图来自原课程视频《2023李宏毅最新生成式AI教程》,B站自行搜索

ChatGPT初体验

ChatGPT:Chat表示聊天,G表示Generative,P表示Pre-train,T表示Transformer。
可以回答问题,但每次回答问题的结果会不同。

可以进行追问。若要清除历史信息,需要开启新对话。

对ChatGPT的误解

1.ChatGPT的回答是从现有的数据(比喻为罐头数据)中copy出来的。否,有些回答还有很明显的生成痕迹,例如讲笑话,笑点和人类明显不同。
2.ChatGPT的回答是从Internet上搜索得来的(类似百科类网站)。否,有些回答会由模型自行捏造,例如问其一些不存在的东西,会得到瞎编的结果。官方也说明该模型是不联网的,模型的答案也不一定正确。

ChatGPT的本质

ChatGPT的本质:文字接龙
在这里插入图片描述
模型吃输入后,通过function计算得到下一个字可能的分布,再随机选择top N中的一个作为结果,得到下一个字的结果。由于随机选择这个操作,使得每次结果会有所不一样。
在这里插入图片描述
将得到结果与前面的句子作为输入再次丢进模型,并循环,直到模型输出结束为止。
为了让模型能够进行多轮对话,输入通常还会包含当前对话中的历史信息作为上下文。

模型的训练

在这里插入图片描述
在训练阶段,需要从Internet上收集大量数据,完成训练后在使用(或者说测试)时则不需要在进行联网,这里老师给出了一个非常形象的比喻:
训练就好比学生平时学习,可以看各种资料,测试就好比闭卷考试,只能凭学习到的知识解题。

ChatGPT的关键技术

ChatGPT的关键技术:预训练(Pre-train),又叫自监督学习(Self-supervised Learning)、基石模型(Foundation Model)

监督学习

一般的机器学习使用的是监督学习,例如在机器翻译任务中,通常先收集大量双语语料:

英文中文
This is an apple这是一个苹果
That is an orange那是一个橘子

模型通过大量吃入语料后找出函数,学到:
this
that
apple
orange
几个单词的意思后,模型就能够翻译:
That is an apple|那是一个苹果

如果将监督学习方式用在ChatGPT上,那么就会出现以下形式的训练:

输入输出
TW第一高峰是那一座?玉山
帮我修改这段文字:…好的,…
教我做坏事…这样是不对的

在这里插入图片描述
根据监督学习的方式训练出来的生成模型能力非常有限,它的推断能力非常差,由于训练数据的限制(数据对于机器学习非常重要,决定了模型的上限),模型无法回答训练数据中没有出现过的问题,例如:世界第一高峰是哪一座?
当然这个例子在这里有点不太全面,即使是人如果你没教过他世界最高峰是那座,他也无法回答这个问题,这里应该是想表明ChatGPT的推理能力。

预训练(Pre-train)

当然,模型只要参数足够多,就可以记住它看过的各种资料,如何拿到天量的数据对,让模型进行学习呢?答案就是利用Internet上现成的语料。例如有这么一句话:世界第一高峰是喜拉雅山。今天天气真好,我要出去玩。则可将其拆分:
世界第一高峰是 喜拉雅山 今天天气真好 ,我要出去玩 {\color{Blue} 世界第一高峰是}{\color{Red} 喜拉雅山}\\ {\color{Blue} 今天天气真好}{\color{Red} ,我要出去玩} 世界第一高峰是喜拉雅山今天天气真好,我要出去玩
意味着,模型在吃:世界第一高峰是,要学会输出【喜】;
模型在吃:今天天气真好,要学会输出【,】在这里插入图片描述

GPT系列的历史

确定了GPT的训练方式,那么回顾其发展历史:

GPTGPT-2GPT-3
模型大小117M1542M175GB
训练数据1GB40GB570GB
年份201820192020

GPT-2在CoQA数据集上F1的表现,模型越大,效果越好
在这里插入图片描述
GPT-3的训练数据是从45T中筛选出来的570GB,相当于阅读Harry Potter全集(1-7)30万套的数据量。GPT-3还点出写代码的技能点,下面是该模型在42个任务取得的平均准确率。
在这里插入图片描述
但它由于只学习从网络上获取的语料,因此其回答问题往往也比较不受控,例如:
在这里插入图片描述
明显看到,在学习语料中包含大量的题库,里面有很多选择题,GPT就直接套用了选择题的模式,并没有回答具体问题。
因此,从GPT进化到ChatGPT需要加入监督学习(语料由人工为主),这个过程称为:Finetune。
在这里插入图片描述

预训练的好处

通过预训练可以大大加强模型的泛化能力,最明显的例子就是多语言训练,可以使得模型自动具有不同语言任务上的泛化能力。
下面是一个例子,使用的英文QA数据集为SQuAD,中文QA数据集为DRCD
在这里插入图片描述
可以看到最后一行使用104中语言进行预训练后,使用中英文数据进行微调,最后的F1为90.1,已经非常接近人类的成绩。

强化学习

在从GPT进化到ChatGPT过程中,除了加入监督学习之外,还加入了强化学习,强化学习在训练时人工介入相对简单,只需要对模型输出结果给出好或者不好的评价即可。

ChatGPT带来的研究问题

1.如何精准提出需求(Prompting)
https://github.com/PlexPt/awesome-chatgpt-prompts-zh
下面是个例子:
请你充当一名论文编辑专家,在论文评审的角度去修改论文摘要部分,使其更加流畅,优美。下面是具体要求:

能让读者快速获得文章的要点或精髓,让文章引人入胜;能让读者了解全文中的重要信息、分析和论点;帮助读者记住论文的要点
字数限制在300字以下
请你在摘要中明确指出您的模型和方法的创新点,强调您的贡献。
用简洁、明了的语言描述您的方法和结果,以便评审更容易理解论文
下文是论文的摘要部分,请你修改它:

https://www.rayskyinvest.com/96682/chatgpt-examples
https://www.explainthis.io/zh-hant/ai/website
这个网站的prompting指令是ChatGPT生成的。
2.如何更正错误
由于ChatGPT的预训练数据只截止到2021年,因此最近发生的事情它是不知道的。
例如问,最近一次世界杯足球赛冠军是谁?
回答是:2018年的法国。
这里如果硬改成阿根廷,那么可能下次同样的问题,模型就会回答2018年的阿根廷。这是因为模型是黑盒,不像人类。
因此如何让模型回答正确,也是一个研究方向:Neutral Editing
3.判断AI生成的物件
物件包括:文字、声音、图片、影像等
思路肯定不能简单的看做是分类任务,将数据丢模型进行判断。
4.是否会泄露机密
为了防止模型泄露个人隐私,有一个研究课题叫:Machine Unlearning
在这里插入图片描述

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

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

相关文章

虹科方案 | 汽车CAN/LIN总线数据采集解决方案

全文导读:现代汽车配备了复杂的电子系统,CAN和LIN总线已成为这些系统之间实现通信的标准协议,为了开发和优化汽车的电子功能,汽车制造商和工程师需要可靠的数据采集解决方案。基于PCAN和PLIN设备,虹科提供了一种高效、…

day30

今日内容概要 继承(面向对象中得核心) 单继承 多继承 单继承下的属性查找 多继承下的属性查找 super和mro的使用 多态和鸭子类型 继承(核心) 面向对象的三大特征:封装、继承、多态 1.什么是继承 继承就是一种新建类的方式&#xff0…

Bootstrap的宽度和高度的设置(相对于父元素的宽度和高度、相对于视口的宽度和高度)

在Bootstrap中,宽度和高度的设置分为两种情况,一种是相对于父元素的宽度和高度设置,以百分比来表示;另一种是相对于视口的宽度和高度设置,单位为vw(视口宽度)和vh(视口高度)。 01-相对于父元素的宽度和高度设置 示例…

Ubuntu磁盘满了,导致黑屏

前言 (1)最近要玩Milk-V Duo,配置环境过程中,发现磁盘小了。于是退出虚拟机,扩大Ubuntu大小,重新开机,发现无法进入Ubuntu界面。 (2)查了很久,后面发现是磁盘…

软件测试之压力测试详解

压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力,并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试,并评估软件在极端…

外汇天眼:外汇投资小白必读! 4大外汇交易常见提问释疑

近年来外汇市场急速发展,加上科技不断进步,只要通过手机就能随时随地进行交易,因此吸引愈来愈多投资人参与,无论目的是资产多元配置还是避险,都进一步增加市场的流动性与热络程度。因此考虑想要投资外汇,很…

VUE(递归)语法没错,但报 ESLint: ‘formatToTree‘ is not defined.(no-undef)

原因:ESLint(JavaScript 检查器)不允许有未定义的函数,但在递归语法中,自身需要调用自身,则嵌套在里面的函数就会被认为是没定义。 解决办法: 在项目根目录下找到.eslintrc.js文件,文件路径如下图&#xff…

红队专题-Cobalt strike从小白到飞升手册

红队专题 招募六边形战士队员Cobalt strike渗透测试先进威胁战术介绍使用注意事项 架构Listener(监听器)Foreign Listeners (外部监听器)Pivot Listeners BeaconBeacon 的安全特性stager下载stagestage准备check in从Team Server下载任务返回任务结果 Be…

springboot家乡特色推荐系统springboot28

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

《计算机网络:自顶向下方法》第六章--链路层和局域网

网络层提供了任意两台主机之间的通信服务。在两台主机之间,数据报跨越一系列通信链路传输,(一些是有线链路,一些是无线链路)从源主机开始,通过一系列分组交换机到达目的主机 链路层中有两种不同类型的链路…

当 AI 成为“逆子”;强化学习之父联手传奇程序员丨 RTE 开发者日报 Vol.62

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有…

MongoDB-介绍与安装部署

介绍与安装部署 1.MongoDB简介a) 体系结构b) 数据模型c) MongoDB的特点c.1) 高性能c.2) 高性可用性c.3) 高拓展性c.4) 丰富的查询支持 2.单机部署a) Windows系统中的安装启动b) Shell连接(mongo命令)c) Linux系统中的安装启动和连接 1.MongoDB简介 MongoDB是一个开源、高性能、…

OpenSSL安装过程总结

1 OpenSSL是什么及怎么用 参考: openssl中文手册 2 下载源文件 Github: https://github.com/openssl/openssl 官网: https://www.openssl.org/source/ 3 安装 先查看README.md文档,根据描述找到自己对应平台的NOTES-*.md文档和INSTALL.m…

RunnerGo亮相QECon大会上海站,来看看这款全栈测试平台

QECon(Quality Efficiency Conference)质量效能大会在上海正式开幕!本次大会以"数生智慧:高质量发展新引擎"为主题,深入探讨如何借助数字化和智能化技术推动软件质量的发展,为高质量经济发展提供…

【TES720D-KIT】青翼科技支持双网口的全国产化四核CPU+FPGA处理器开发套件

TES720D-KIT是专门针对我司TES710D(基于复旦微FMQL10S400的全国产化ARM核心板)的一套开发套件,它包含1个TES720D核心板,加上一个TES720D-EXT扩展底板。 FMQL20S400是复旦微电子研制的全可编程融合芯片,在单芯片内集成…

第八章 排序 七、堆排序

目录 一、堆的概念 1、大根堆 2、小根堆 二、建立大根堆 1、举个例子,我们要让一个序列变换成为一个大根堆 2、我们把序列看成一棵完全二叉树,而完全二叉树有以下特性: 3、在此序列中,由于是从1开始的序列,所以分…

海外网红营销:赢得年轻人的心,打破传统的秘密武器

随着数字时代的崛起,社交媒体已经成为了年轻人生活的一部分。年轻人在社媒平台上创造和分享内容,构建着他们的社交圈子,也塑造着全球的文化和趋势。对于企业来说,赢得年轻人的心已经成为了一项关键任务,而海外网红营销…

linux环境下 查看 进程内存占用情况

新版本 -o %MEM 按内存排序 top -o %MEM -b -n 1 | grep java | awk {print "PID: "$1" \t MEM: "$6" \t %CPU: "$9"% \t %MEM: "$10"%"} 通过指令找到内存消耗量最大的几个进程 查看内存消耗情况 top -b -n 1 | grep jav…

Linux从时间服务器同步时间

一、基本设定 自己的时间服务器:111.11.11.111 二、操作 查看当前时间命令:date,发现时间不一致。 同步命令:/usr/sbin/ntpdate 111.11.11.111 然后等待同步完成即可。 如果同步命令不可用,需要先安装Ntp服务&…

使用运放产生各种波形

目录复制 文章目录 RC正弦振荡电路文氏电桥振荡电路移项式正弦波振荡电路 集成函数发生器运算放大器驱动电容性负载峰值检波多通道运放未使用的运放接法 RC正弦振荡电路 文氏电桥振荡电路 这个振荡器起振条件RF > 2R1,起振后又希望RF 2R1产生矛盾怎么办? 将RF换…