《这就是ChatGPT》读书笔记

书名:这就是ChatGPT
作者:[美] 斯蒂芬·沃尔弗拉姆(Stephen Wolfram)
ChatGPT在做什么?
ChatGPT可以生成类似于人类书写的文本,它基本任务是弄清楚如何针对它得到的任何文本产生“合理的延续”。当ChatGPT写一篇文章时,它实质上只是在一遍又一遍地询问“根据目前的文本,下一个词应该是什么”,并且每次都添加一个词。更准确地说,它是每次都添加一个“标记”(token),而标记可能只是词的一部分。这就是它有时可以“造词”的原因。
可以简单的将ChatGPT做的事情看作是“单字接龙”,它总是根据概率选择下一个字,但是这些概率是从何而来的呢?
最佳思路是建立一个模型,让我们能够估计序列出现的概率。ChatGPT的核心正是所谓的“大语言模型”。
什么是模型?
假设你想(像16世纪末的伽利略一样)知道从比萨斜塔各层掉落的炮弹分别需要多长时间才能落地。当然,你可以在每种情况下进行测量并将结果制作成表格。不过,你还可以运用理论科学的本质:建立一个模型,用它提供某种计算答案的程序,而不仅仅是在每种情况下测量和记录。
模型是指有某种特定的基本结构,以及用于拟合数据的一定数量的“旋钮”(也就是可以设置的参数)。
对于ChatGPT,我们需要为人脑产生的人类语言文本建立模型。
如果函数给出的结果总是与人类的意见相符,那么我们就有了一个“好模型”。
LLM 容易产生所谓的 “幻觉”,即生成看似合理但实际并非真实的输出,这是因为 LLM 在训练时是基于训练数据中的模式预测下一个最可能的词,而非真正理解信息。
神经网络
用于图像识别等任务的典型模型到底是如何工作的呢?目前最受欢迎而且最成功的方法是使用神经网络。可以视作对大脑工作机制的简单理想化。
神经网络可以被视为根据其输入和权重计算的一个数学函数。可以执行各种任务,还可以通过逐步“根据样例训练”来学习执行这些任务
神经网络的基本思想是利用大量简单(本质上相同)的组件来创建一个灵活的“计算结构”,并使其能够逐步通过学习样例得到改进。
神经网络的一个重要特征是说到底和计算机一样只是在处理数据。
如果有一个足够大的神经网络,那么你可能能够做到人类可以轻易做到的任何事情。
嵌入
神经网络以目前的设置来说,基本上是基于数的。因此,如果要用它来处理像文本这样的东西,我们需要一种用数表示文本的方法。
可以将嵌入视为一种尝试通过数的数组来表示某些东西“本质”的方法,其特性是“相近的事物”由相近的数表示,这就是“嵌入”(embedding)的思想。我们可以将词嵌入视为试图在一种“意义空间”中布局词,其中“在意义上相近”的词会出现在相近的位置。如果测量这些向量之间的距离,就可以找到词之间的“相似度”。
如何才能构建这样的嵌入呢?大致的想法是查看大量的文本(这里查看了来自互联网的50亿个词),然后看看各个词出现的“环境”有多“相似”。例如,alligator(短吻鳄)和crocodile(鳄鱼)在相似的句子中经常几乎可以互换,这意味着它们将在嵌入中被放在相近的位置。但是,turnip(芜菁)和eagle(鹰)一般不会出现在相似的句子中,因此将在嵌入中相距很远。
ChatGPT的内部原理
从根本上说,ChatGPT是一个专门为处理语言而设置的庞大的神经网络,ChatGPT的总体目标是根据所接受的训练(查看来自互联网的数十亿页文本,等等),以“合理”的方式续写文本。它最显著的特点是一个称为Transformer的神经网络架构,Transformer引入了“注意力”的概念。
Transformer的思想是,为组成一段文本的标记序列做与此相似的事情。但是,Transformer不是仅仅定义了序列中可以连接的固定区域,而是引入了“注意力”的概念。
它的操作分为三个基本阶段:
● 第一阶段,它获取与目前的文本相对应的标记序列,并找到表示这些标记的一个嵌入(即由数组成的数组);
● 第二阶段,它以“标准的神经网络的方式”对此嵌入进行操作,值“像涟漪一样依次通过”网络中的各层,从而产生一个新的嵌入(即一个新的数组);
● 第三阶段,它获取此数组的最后一部分,并据此生成包含约50000个值的数组,这些值就成了各个可能的下一个标记的概率。(没错,使用的标记数量恰好与英语常用词的数量相当,尽管其中只有约3000个标记是完整的词,其余的则是片段。)
这条流水线的每个部分都由一个神经网络实现,其权重是通过对神经网络进行端到端的训练确定的。换句话说,除了整体架构,实际上没有任何细节是有“明确设计”的,一切都是从训练数据中“学习”来的。
当ChatGPT要生成一个新的标记时,它总是“读取”(即获取为输入)之前的整个标记序列,包括ChatGPT自己先前“写入”的标记。
个人常用的GPT工具推荐
文生文:
kimi
智谱清言
文生图
即梦
个人书评
这本书是看小红书推荐的,OpenAI的CEO称之为“对ChatGPT原理最佳的解释”,本书包含作者在ChatGPT问世后不久写的两篇长文。第一篇介绍了ChatGPT,第二篇则展望了ChatGPT的未来,第二篇我没读,只读了第一篇。第一篇介绍了ChatGPT在做什么,并且一步一步推导如何通过计算机生成语言文字解释了它为何拥有像人类一样的生成语言的能力,推导过程中还会解释重要的概念,但是个人感觉并不适合完全新手小白阅读,像我读起来很吃力,很多内容读不太懂,但是我觉得不是作者的问题,是我文化水平的问题,所以我给这本书4颗星,满分5颗星。

相关文章:
《这就是ChatGPT》读书笔记
书名:这就是ChatGPT 作者:[美] 斯蒂芬沃尔弗拉姆(Stephen Wolfram) ChatGPT在做什么? ChatGPT可以生成类似于人类书写的文本,它基本任务是弄清楚如何针对它得到的任何文本产生“合理的延续”。当ChatGPT写…...
更专业的汽车软件研发工具链,怿星重磅发布新产品
怿星科技在2024北京国际车展同期举办主题为“创新引领未来——聚焦智能汽车软件新基建”的新产品发布会,重磅推出1款绝对优势产品和4套场景解决方案。同时举行了4场热点技术研讨:国产工具链的机遇与挑战、新架构下的的车载DDS应用探索及测试方案介绍、软…...
Stable Diffusion:AI绘画的新纪元
摘要: Stable Diffusion(SD)作为AI绘画领域的新星,以其开源免费、强大的生成能力和高度的自定义性,正在引领一场艺术与技术的革命。本文旨在为读者提供Stable Diffusion的全面介绍,包括其原理、核心组件、安…...
有5个excel表,每个表有6列。用python把这5个表合成1个表。
要将五个Excel表格合并成一个表格,我们可以使用pandas库,它提供了一个简单且强大的方式来处理和分析数据。下面是一个步骤说明和示例代码: 步骤: 安装pandas和openpyxl(如果你还没有安装的话):…...
【回溯算法】【Python实现】最大团问题
文章目录 [toc]问题描述回溯算法Python实现时间复杂性 问题描述 给定无向图 G ( V , E ) G (V , E) G(V,E),如果 U ⊆ V U \subseteq V U⊆V,且对任意 u u u, v ∈ U v \in U v∈U有 ( u , v ) ∈ E (u , v) \in E (u,v)∈E,则称…...
CMakeLists.txt语法规则:foreach 循环基本用法
一. 简介 cmake 中除了 if 条件判断之外,还支持循环语句,包括 foreach()循环、while()循环。 本文学习 CMakeLists.txt语法中的循环语句。 CMakeLists.txt语法中 有两种 循环实现方式:foreach循环与 while循环。 二. CMakeLists.txt语法规则…...
redis集群-主从机连接过程
首先从机需要发送自身携带的replid和offset向主机请求连接 replid:replid是所有主机在启动时会生成的一个固定标识,它表示当前复制流的id,当从机第一次请求连接时,主机会将自己的replid发送给从机,从机在接下来的请求…...
去哪里找高清视频素材?推荐几个短视频素材免费网站
在数字时代,视频内容的质量直接影响观众的吸引力和留存率。尤其是高清、4K视频素材和可商用素材,它们在提升视觉质量和叙事深度方面起到了至关重要的作用。以下是一些国内外的顶级视频素材网站,它们提供的资源将为您的创作提供极大的支持和灵…...
从互联网医院源码到搭建:开发视频问诊小程序的技术解析
如今,视频问诊小程序作为医疗服务的一种新形式,正逐渐受到人们的关注和青睐。今天,小编将为您详解视频问诊小程序的开发流程。 一、背景介绍 互联网医院源码是视频问诊小程序开发的基础,它提供了一套完整的医疗服务系统框架&…...
【Linux】常见指令(二)
mv指令 mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files) 是Linux系统下常用的命令,经常用来备份文件或者目录 功能: 1.剪切文件或者目录 2.对文件或者目录进行重命名 常用选项: -f …...
python元类与C#、Java中的反射
Python的元类和C#中的反射 在概念上有一定的相似性,但它们的目的和使用方式有所不同。 Python的元类: 元类(Metaclass)是控制类创建的类。它们定义了类的创建过程,可以修改类的行为。元类通过定制类的创建过程&…...
Echart.js绘制时间线并绑定事件
<template><div id"app"><!-- 定义一个具有指定宽高的容器,用于渲染图表 --><div ref"timeline" style"width: 800px; height: 600px;"></div></div> </template><script> import *…...
Flutter弹窗链-顺序弹出对话框
效果 前言 弹窗的顺序执行在App中是一个比较常见的应用场景。比如进入App首页,一系列的弹窗就会弹出。如果不做处理就会导致弹窗堆积的全部弹出,严重影响用户体验。 如果多个弹窗中又有判断逻辑,根据点击后需要弹出另一个弹窗,这…...
1290.二进制链表转整数
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字的 十进制值 。 示例 1: 输入:head [1,0,1] 输出:5 解释:二进制数 (101) 转化为十进制…...
P8803 [蓝桥杯 2022 国 B] 费用报销
P8803 [蓝桥杯 2022 国 B] 费用报销 分析 最值问题——DP 题意分析:从N张票据中选,且总价值不超过M的票据的最大价值(背包问题) K天限制 一、处理K天限制: 1.对于输入的是月 日的格式,很常用的方式是…...
【Android】Kotlin学习之Lambda表达式
java和kotlin对比 Lambda语法 Lambda隐形参数 it 也可以不使用指定的名称it, 可以 自定义 Lambda 使用下划线...
YOLOv5-7.0改进(四)添加EMA注意力机制
前言 关于网络中注意力机制的改进有很多种,本篇内容从EMA注意力机制开始! 往期回顾 YOLOv5-7.0改进(一)MobileNetv3替换主干网络 YOLOv5-7.0改进(二)BiFPN替换Neck网络 YOLOv5-7.0改进(三&…...
TCP协议的确认应答机制
TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议,它在网络通信中扮演着至关重要的角色。其中,确认应答机制是TCP协议中的一个核心概念,它确保了数据的可靠传输。本文将详细介绍J…...
【论文阅读笔记】MAS-SAM: Segment Any Marine Animal with Aggregated Features
1.论文介绍 MAS-SAM: Segment Any Marine Animal with Aggregated Features MAS-SAM:利用聚合特征分割任何海洋动物 Paper Code(空的) 2.摘要 最近,分割任何模型(SAM)在生成高质量的对象掩模和实现零拍摄图像分割方面表现出卓越…...
C语言中的精确宽度类型
概述 在 C 语言标准库 <stdint.h> 中定义了一系列精确宽度的整数类型,这些类型保证了它们的位数宽度,从而允许编写跨平台的可移植代码。以下是一些常用的精确宽度整数类型: int8_t: 8位有符号整数uint8_t: 8位无符号整数int16_t: 16位…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
