聊聊 ChatGPT

news2025/1/12 12:28:36

一、ChatGPT一次添加一个词

ChatGPT作用:人为输入任何文本后,自动生成一个"合理的延续",合理指的是:假如你看了数十亿网页上的内容后,发现大家都这么写,那你也这么写,就是合理的。ChatGPT就是这样,所以就能解释,为什么ChatGPT给出的答案让人觉得是“友好”并且“人性化”的。

现在假设我们输入如下内容The best thing about AI is its ability to。想象一下当你浏览了数十亿页的文字后(比如在网上的文章和数字化书籍),然后看看接下来应该出现的是什么词,以及这些词的概率是多少。

最终结果是它会生成一个可能跟在后面的单词的排名列表,以及概率:
The best thing about AI is its ability to

learn4.5%
predict3.5%
make3.2%
understand3.1%
do2.9%

然后我们把生成的词加到原来的文本中,反复让语言模型生成下一个词的概率,就会得到一个“合理”的文本

{
The best thing about AI is its ability to,
The best thing about AI is its ability to create,
The best thing about AI is its ability to create worlds,
The best thing about AI is its ability to create worlds that,
The best thing about AI is its ability to create worlds that are,
The best thing about AI is its ability to create worlds that are both,
The best thing about AI is its ability to create worlds that are both exciting,
}

我们可能想着每次找概率最高的词填入就行了。但是这里有点玄学的意思在里面,如果你每次都填写概率最高的词temperature=0,使用ChatGPT2模型,可能得到的是这样的文本:
在这里插入图片描述
可以看到文本就开始陷入重复了。

如果你设定temperature=0.8时,会得到如下文本
在这里插入图片描述
比前面那个例子好一点,但还是有点奇怪。如果用ChatGPT3就会通顺许多。ChatGPT默认temperature就是0.8,至于为啥0.8效果最好,没有任何“理论”,其实就是在实践中发现有效的的一个参数。

下一个词的概率怎么算出来的?

如果只有一个词的概率好统计,我们就统计一下所有词出现的次数就行了。但是长文本的概率统计只凭简单的计算是无法胜任的。这时就需要建立一个模型来进行概率预测,ChatGPT就是所谓的大语言模型。

模型可以理解为一个函数f,你输入The best thing about AI is its ability to=>f=> 下一个词的概率

怎么训练出这么一个语言模型呢?
总的来说,GPT模型训练分为四个训练步骤,这四个训练步骤是有先后依赖关系的,他们分别是:
【1】预训练Pretraining
【2】监督微调训练Supervised Finetuning,SFT
【3】奖励模型训练Reward Molel,RM
【4】强化学习训练Reinforcement Learning,RL

二、预训练(Pretraining)

预训练就是不断输入例子,来调试模型的参数。比如下面这个例子子,我们怎么确定出合适的函数来表示这些值呢?
在这里插入图片描述
我们用ax+bx+cx^2实现,发现效果最好。
在这里插入图片描述
再进一步,我们可以调整a/b/c的值,可以更加接近这些数据。这些值可以叫做权重,也就是参数,ChatGPT3实际上1750亿个参数。而ChatGPT3.5/4没有公开数据,但是可以想到只会更多。ChatGPT这个所谓的函数其实就是一个神经网络
在这里插入图片描述

可以想象一下1750亿个参数是怎么样的,这个有一个ChatGPT23的参数可视化图
在这里插入图片描述

每个token的生成其实都要经过1750亿个参数参与计算,不过它是存在并行计算优化,所以也不至于很慢。

更具体一点的话,GTP的全称是Generative Pre-Trained Transformer,其实就是用Transformer模型做的预训练。

Transformer是谷歌在2017年发表的一篇论文,它的出现为自然语言处理NLP提供了一种全新的范式,尤其是其核心自注意力机制,提供了一种更加高效、更加强大的方法来处理序列数据。

Transformer之前呢,这个任务通常是由RNN模型来实现的,RNN有个缺点:计算是顺序进行的,如果我们要得到最后一个单词的处理结果,就必须要先计算前面9个单词的处理结果,这样就存在信息的衰减,很难处理相隔比较远的两个单词之间的信息。

今天天气很好,我的心情也很__
今天天气很差,我的心情也很__

如果只看后半句,其实都一样,决定下一次词的关键,是前面的上下文。如果上下文很长,通常会丢失重点。所以引入了自注意力机制,简单理解就是会抓住关键词,它会计算出下一个词跟前面哪个词比较有关系。

所以说预训练的过程,就是在调整这个Transformer模型的参数,让它越来越清楚词与词之间的相关性,让它生成的概率越来越准确。

具体的过程就是把从网络上收集的文本,输入到模型当中,让模型根据前文和后面跟着的词,来调整参数。为了给出准确的预测,神经网络每次都需要调整其上百亿个参数。以LLaMA的训练数据集为例,共1.4T tokens
在这里插入图片描述

这是《纽约时报》用莎士比亚作品训练的一个小型GPT。这里给出了莎士比亚作品中的一小段以及在其上训练GPT的情况。
在这里插入图片描述

刚开始时,参数是随机生成的,所以它的结果也是随机的。随着时间推移,训练时间越来越长,GPT不断迭代,模型给出的结果样本也就越来越连贯通顺了。

在所有阶段中,预训练阶段所需的计算量是最大的,可以说99%的训练计算时间和浮点运算量都集中在这个阶段。因为这一阶段需要处理超大规模的互联网数据集,可能需要数千GPU构成的超级计算机工作几个月时间。像GPT3就需要几千张V100 GPU训练了数月份,花费几百万美元。

预训练完的模型我们称之为Base Model。但是Base Model并不是一个可以直接回答你问题的“助手”,如果你向它问问题,它大概率会拒绝回答,或者不理解你的问题,再或者用更多的问题来回答你的问题。
在这里插入图片描述

简单说这个模型只会把你的要求看做一个文章,然后试图续写它。

或者可能是这种画风:

public void main(String[] args) {
  Integer num1 = 200;
  Integer num2 = 200;
  if (num1 != num2) {
    System.out.print(1);
  } else {
    System.out.print(2);
  }
  if (!num1.equals(num2)) {
    System.out.print(3);
  } else {
    System.out.print(4);
  }
 }

它的回答可能是
A、13
B、24
C、14
D、23
可以看到这个模型好像有点笨,有点像人工智障,但是绝对不要小看了这个模型,这个模型就可以理解为读了世界上所有的文本,掌握了所有语言的内在规律,但是还不知道人类的喜好,只知道续写文本,就像小说里面天赋异禀的主角,突然得到了深厚的内力,却不知道招式,不知道如何使用内力。
下一步就是教这个基本模型一些招式了。官网上给的博客就是下面一张图。
【1】监督微调训练Supervised Finetuning,SFT
【2】奖励模型训练Reward Molel,RM
【3】强化学习训练Reinforcement Learning,RL
在这里插入图片描述

三、监督微调训练(Supervised Finetuning,SFT)

这一步就是让人类老师来指导它一下。

OpenAI的方法是以人工方式写的少量但是高质量的promptresponse数据,数量大约1w~10w条。然后,继续在这些数据上训练语言建模。算法不变,只是换了训练数据集:从大量低质量的互联网文档换成了少量高质量的问答式「prompt - response」数据。
在这里插入图片描述

问题的形式是各种各样的,包含问题、总结、分类、解释等等。

前面这种方式,需要人工提供答案,或者人工写答案,可以想到是比较难实现的,所以也就只能写1w左右了。一直写下去也不现实,需要找到一个更好的方式,不然就全是人工,没有智能了

这时候就需要引出下面两个部分

四、奖励模型Reward Molel,RM)和强化学习(Reinforcement Learning,RL)

我们可以建立一个奖励模型,然后让这个奖励模型去持续地训练语言模型,让语言模型的输出更符合人类的习惯。

在建立奖励模型这一阶段,需要将数据收集转变成比较的形式。这里给出了一个示例,对于同样的prompt,即要求写一个能检查给定字符串是否为回文的函数。再使用已经训练好的SFT模型生成多个结果,这里给出了三个。然后再让人类给这些结果排名。
在这里插入图片描述

这一步的工作量其实也不小,因为有时候几个版本差别不大,需要认真读才能给出正确的排名。有了人类排名的数据后,使用这个排序结果数据来训练奖励模型。对多个排序结果,两两组合,形成多个训练数据对。RM模型接受一个输入,给出评价回答质量的分数。这样,对于一对训练数据,调节参数使得高质量回答的打分比低质量的打分要高。

这样,训练好的奖励模型这时候就是熟知人心了,知道人类喜欢的东西是什么。

然后就是强化学习的部分,还是提出问题,让SFT模型生成多个答案,不同是的是,之前是人类来排名,现在交给奖励模型打分,如果对一个答案分数比较高,则这个答案的所有token都会强化,就是概率会增加,而如果分数比较低,则所有的token出现的概率会降低。在这样训练许多遍之后,所有的答案都能得到很高的分数,也就是说,它每次输出的不同答案,都是能让人类满意的。

这样,语言模型给的答案都是会符合人类习惯的,可以说是一个成品了,ChatGPT也就诞生了。

这样一个模型越来越符合人类的喜好,但是同时也失去了更多可能性,也就是失去了更多创造性
在这里插入图片描述

所以如果你想要执行更多创造性的事情,可以使用基础模型,比如你要给宝可梦起名字。在前面输入7个现有的宝可梦名字,会输出其他宝可梦的名字,这些宝可梦的名字都是现在不存在的,所以在这方面,gpt是有创造性的,因为宝可梦本来就是不存在的东西。
在这里插入图片描述

真正让ChatGPT发挥作用的是什么呢?
我们目前知道的语言的规则,首先想到的就是语法。在英语中,名词前面有形容词、后面可以有动词,两个名词不能挨在一起。
在这里插入图片描述

只有语法肯定是不够的,因为“快乐的鱼想吃理论”这句话在语法上是正确的,但是不符合人类的语义。怎么判断一句话是否有意义呢?其实现在没有一个具体的“理论、规则”

让我们从另一个角度来看看:
gpt中,任何一个文本都可以表示成一个向量,可以视为某个“语言特征空间”中的坐标,如果把这个空间投影到二维平面,单个词的可能的布局方式:
在这里插入图片描述

可以看到相同特征的词,位置比较靠近。这其实是在二维平面上的展示,而实际这个特征空间是下面这样的,这样的高维空间(在chatGpt2中长度是768,在ChatGPT3中长度是12288),能存储的信息就太多了,所以还有很多我们不能看到的信息。
在这里插入图片描述

ChatGPT并不明确了解语言规则,但是在训练过程中,它隐含地发现了这些规律,并且很擅长这些规律。

所以说真正让ChatGPT发挥作用的是什么呢?可能的答案是,语言在根本上可能比它看起来更简单。ChatGPT的成功隐含地揭示了一个重要的 “科学” 事实:有意义的人类语言实际上比我们所知道的更加结构化、更加简单,最终可能可以用相当简单的规则来描述语言的规律。如果我们能通过某种方式,弄清ChatGPT里面隐含的法则,我们可能就可以更高效地做出ChatGPT所做的事情。

五、大模型的顿悟时刻

其实ChatGPT在算法层面上面其实没有特别颠覆性的创新,其实底层也还是用之前的transformer模型,ChatGPT主要是在数据量上面达到了一个新的层面,所谓大力出奇迹,量变引起质变。据说openAPI内部的人,对于ChatGPT涌现的能力也感到震惊

下图是各个主流的语言模型在不同量级的参数下面,对8个不同任务的表现。可以看到,在10biliion的时候才有一个质变
在这里插入图片描述

六、疑问

ChatGPT怎么学会中文的?
监督微调训练的时候,肯定都是用英文写的,为什么可以学会中文?
在这里插入图片描述

104中语言上做预训练,人类只用英语来指导它,也能完成中文的回答,表现和用中文指导差不多。所以可以推测,这个大预言模型,在用104种语言预训练后,其实就已经懂得不同语言间的翻译了。

为什么能写代码?
ChatGPT是一个用于处理文本的语言模型,自然也包含代码,对于ChatGPT来说,代码,分隔符等也只是一个个token
在这里插入图片描述

相比之下,其实代码没有那么复杂,代码有固定的格式,在学习了githubStackOverflow和维基百科上面的代码,ChatGPT能做到这一点也不足为奇了。

相信大家都用过,ChatGPT生成的代码还是有很多不足之处的,最主要的是不能保证正确率,甚至生成的代码也有可能编译不通过。听了前面的内容, 也已经知道了它实际上也只是预测文本而已,所以比较适合的是生成简单代码,或者让它读代码,比如又臭又长的代码,可以让ChatGPT让你解读一下,理一下思路。

最后分享一个看到的有意思的观点:有人说ChatGPT的写作能力比人类好,其实应该换个说法:从现在起没有人类的作文写得比ChatGPT差。ChatGPT的出现将提升人类全体水平。

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

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

相关文章

NC 删除有序链表中重复的元素-I

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 删除给出链表…

代码随想录训练营 Day14打卡 二叉树 part02 226.翻转二叉树 101. 对称二叉树 104. 二叉树的最大深度 111. 二叉树的最小深度

代码随想录训练营 Day14打卡 二叉树 part02 一、 力扣226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 : 输入: root [4,2,7,1,3,6,9] 输出: [4,7,2,9,6,3,1] 我们下文以前序遍…

前端工程化-vue项目创建

可以使用html、css、javascpript ,以及使用vue、axios等技术搭建前端页面,但效率低、结构乱。 实际前端开发: 前端工程化开发步骤: 一、环境准备 1.安装NodeJS2. 安装vue-cli 二、创建Vue项目 有两种方式创建,一般采用第二种图…

【连续3年稳定发表,门槛低 易中稿】第四届先进制造技术与电子信息国际学术会议(AMTEI 2024,9月20-22)

由深圳技术大学集成电路与光电芯片学院、中南大学自动化学院联合支持的第四届先进制造技术与电子信息学术会议(AMTEI 2024)将于2024年09月20-22日在重庆召开。 本次会议主要围绕先进制造技术与电子信息的最新研究领域,为来自国内外高等院校、…

Springboot+Thymeleaf实现纯静态化页面处理

前言&#xff1a;引入包什么的就不讲了&#xff0c;这里我只记录如何实现。 在template目录下构建模板页面 IndexTemplate.html。一般模板文件都是放在这个下面<!DOCTYPE html> <html lang"zh" xmlns:th"http://www.thymeleaf.org"> <head&…

深度模型中的优化 - 优化策略和元算法篇

序言 在人工智能与机器学习的快速发展中&#xff0c;深度模型作为核心技术之一&#xff0c;其优化问题至关重要。深度模型通过构建多层神经网络来模拟人脑的学习与推理过程&#xff0c;处理复杂数据模式与任务。然而&#xff0c;这些强大能力的背后&#xff0c;离不开高效的优…

【python函数】调用系统命令进行文件夹的创建与删除

大家好&#xff0c;我是一名_全栈_测试开发工程师&#xff0c;已经开源一套【自动化测试框架】和【测试管理平台】&#xff0c;欢迎大家关注我&#xff0c;和我一起【分享测试知识&#xff0c;交流测试技术&#xff0c;趣聊行业热点】。 一、函数说明&#xff1a; 获取系统名称…

人工智能计算机视觉系列—构建你的图像标签管理系统:使用Flask和SQLite实现前后端应用

文章目录 1. 项目背景2. 方案概述3. 环境部署4. 具体实现5. 运行步骤6. 总结 1. 项目背景 在机器学习和计算机视觉的开发过程中&#xff0c;我们经常需要处理大量的图像及其标签信息。一个直观、便捷的图像和标签展示工具可以极大地提高开发效率。本文将介绍如何使用Flask框架…

最靠谱的搭建方式-ESP32入门搭建Arduino开发环境基于mac系统

ESP32入门搭建Arduino开发环境基于mac系统 1.概述 ESP32开发版作为物联网开发非常的方便&#xff0c;不过在入门时候搭建Arduino开发环境比较麻烦&#xff0c;因为Arduino在下载ESP32开发环境时总是失败&#xff0c;因此不得不采用手动安装环境方式。 这篇文章主要介绍mac系统…

Java 并发编程实战权威指南(电子版教程)

前言 Java并发编程主要涉及多线程编程&#xff0c;通过创建多个线程来并发执行任务&#xff0c;从而提高程序的执行效率和响应能力。Java提供了多种机制和技术来实现并发编程&#xff0c;包括进程和线程的管理、同步机制、高级并发工具以及最佳实践。 一、下载地址 下载地址…

hadoop学习笔记3-yarn

4.YARN yarn本质上是一个负责管理资源节点、调度资源节点的资源调度平台&#xff0c;负责为运算程序提供服务器计算资源&#xff0c;把任务调度到合适的节点上执行 4.1yarn架构 yarn 主要由ResourceManager、NodeManager、applicationmaster组件构成 yarn将资源管理和应用程…

PowerDNS架构解析与安装部署指南

1、背景介绍 目前公司使用PowerDNS进行DNS管理&#xff0c;但由于采用的是单节点架构&#xff0c;存在不可用的风险。为提升系统的稳定性和可靠性&#xff0c;我们计划对现有架构进行重构。通过引入高可用性设计&#xff0c;我们将优化系统架构&#xff0c;使其能够在故障情况…

设计模式 之 —— 抽象工厂模式

目录 什么是抽象工厂模式&#xff1f; 定义 特点 抽象工厂模式&#xff08;java代码示例&#xff09; 首先定义第一个接口 实现第一个接口的类 定义第二个接口 实现第二个接口的类 * 创建抽象工厂类 创建扩展了 AbstractFactory 的工厂类 饮料工厂 食物工厂 * 创建一个…

非科班出身的你,如何转行web安全工程师?零基础入门到精通,收藏这一篇就够了

想从其他行业转行到算法工程师的人&#xff0c;无外乎以下几个原因&#xff1a; 现在工资太低 工作没有前景 对现在的工作没有热情 对web安全工程师很感兴趣 那么&#xff0c;转行web安全工程师&#xff0c;你需要掌握哪些技能呢&#xff1f; ​ 为了帮助大家更好的学习网络…

第100+18步 ChatGPT学习:R实现SVM分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言&#xff0c;不想学Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了&#xff0c;就帮各位搬运一下吧。 二、R代码实现SVM分类 &#xff08;1&a…

Docker部署nacos...用户名密码错误

前提 镜像选择v2.3.0版本&#xff0c;因为最新的没拉下来用的别的地方save load的镜像。 官方示例 官方文档 数据库脚本&#xff0c;直接去数据库新建数据库nacos吧&#xff0c;执行脚本&#xff0c;执行完成后&#xff0c;发现只有建表语句&#xff0c;查询得知&#xff0c…

springboot+Activiti7整合实践 (九) 网关

系列文章目录 第一章 springbootActiviti7整合实践 (一) 第二章 springbootActiviti7整合实践 (二) 模型定义 第三章 springbootActiviti7整合实践 (三) 流程定义 第四章 springbootActiviti7整合实践 (四) 分配规则 第五章 springbootActiviti7整合实践 (五) 发布流程 第…

股票预测模型中注意力多层Attention RNN LSTM 的应用

全文链接&#xff1a;https://tecdat.cn/?p37152 原文出处&#xff1a;拓端数据部落公众号 Attention 机制是一种在神经网络处理序列数据时极为关键的技术&#xff0c;它赋予了模型“聚焦”能力&#xff0c;能够自动评估输入序列中各部分的重要性。通过为序列中的每个元素分…

一文读懂CST电磁仿软件的TLM算法原理和历史背景

这期我们免公式地介绍一下TLM原理。TLM&#xff08;Transmission Line Method&#xff09;是传输线矩阵算法&#xff0c;基于Huygens的波传播模型的三维全波电磁算法&#xff0c;注意是full wave哦&#xff01; 什么是Huygens原理&#xff1f; 惠更斯原理能准确计算波的传播。…

三大旗舰实力,奇瑞风云T10全球上市,售价18.99万元起

旗舰之上&#xff0c;10力超群&#xff01;7月25日&#xff0c;超长续航旗舰电混SUV——风云T10于弥勒全球上市。基于全球标准及全球验证体系打造的风云T10&#xff0c;凭借旗舰级的性能、安全、空间三大产品价值&#xff0c;树立了新能源时代的新标杆。新车共推出3款车型&…