专门做鞋子的网站有哪些/石家庄seo推广优化
Transformer是一种特殊的神经网络,一种机器学习模型。
谷歌在2017年推出的原版Transformer,论文《Attention Is All You Need》,专注于将一种语言的文本翻译成另一种。
而我们要关注的Transformer变种,即构建ChatGPT等工具的模型,则是输入一段文本、图像或音频,预测文本接下来的内容,并将结果展现为,接下来不同文本片段的概率分布。
你可能觉得预测下一个词与生成新文本的目标截然不同,但有了这样的预测模型后,要让它生成更长的文本,一个简单的方法是,给它一个初始片段,然后从它给出的概率分布中取一个片段,追加到文本末尾,再用所有文本包括追加的内容,进行新一轮的预测。
这个重复预测和抽样的过程,正是你与GPT或其他大语言模型,进行交互时所遇到的一个一个打印出来的词。它的展现过程,也是它的原理。
数据如何在Transformer里流动?
聊天机器人生成特定单词时,背后实际在做的事情,主要分5步。①分词 ②变id ③变向量 ④加位置编码 ⑤计算attention。
1、分词。将输入内容切分为多个小片段,每个小片段称为tokens;在文本中,token往往是单词、单词片段或其他字符组合。
对于图像或声音而言,token则可能代表小块图像或声音片段。
每个token对应一个向量,即一组数字。目的是编码该片段的含义。
如果将向量看作高维空间中的坐标,那么意思相近的词,对应的向量也相近。
这些向量随后经过attention block处理,使得向量能够相互交流。通过相互传递信息,来更新自己的值。
例如机器学习中的model和时尚中的model含义不同,attention block就是找出上下文中哪些词会改变哪些词的含义,以及这些词应该更新为何种含义。
之后,这些向量会经过另一种处理,取决于不同的资料,有的叫多层感知机(multi-layer perceptron),有的叫前馈层(feed-forward layer)。此阶段,向量不再相互交流,而是并行经历相同的处理。
对每个向量提出一系列问题,然后根据这些问题的答案来更新向量。
这里的所有处理,本质都是大量的矩阵乘法。而我们的主要目的是弄懂如何解读这些底层矩阵。
之后,基本是重复这个过程,attention blocks 和 multi-layer perceptron blocks 层层堆叠。
最后的目标是能将整段文字的所有关键含义,以某种方式融入到序列的最后一个向量,然后对这最后一个向量进行某种操作,得出所有token可能的概率分布,即各小块文本接下来出现的概率。
前面提到的,只要能够根据给定的文本,预测下一个词,你能给它喂一点初始文本,然后反复进行预测、抽样、追加,这一过程。
在GPT出现之前,GPT-3的早期演示,根据初始文本自动补全故事和文章,把这样的工具做成聊天机器人,最基础简单的方法是,准备一段文本,设定用户与AI助手互动的场景,即系统提示词(system prompt),然后将用户的初始问题或提示词作为第一段对话,让模型预测AI助手会如何回应。要做好这一步,还需要额外的训练步骤。
神经网络的开始端和结尾端是怎样的?
深度学习是机器学习中的一种方法。
机器学习采用数据驱动,反馈到模型参数,指导模型行为。
比如:输入图像,经过模型处理后,能够输出对应的描述标签。或是,给定一段文本,预测下一个单词。
机器学习的理念是,不要在代码中明确定义如何执行一个任务,而是去构建一个具有可调参数的灵活架构。机器学习最简单的形式,可能是线性回归。
这条线受2个参数影响,即斜率slope和截距intercept。y=wx+b。线性回归的目标是确定这些参数,以尽可能拟合数据。
深度学习就比较复杂了,比如GPT-3的参数不止2个,而是有1750亿个,但问题是,并不是直接扩大模型参数量就可以。发现有时数据严重过拟合,有时完全训练不出来。
深度学习描述的一类模型,在过去几十年中,这类模型展现了出色的规模化能力,它们的共同点是都使用相同的训练算法,即反向传播(Backpropagation)。要让这种训练算法,在大规模应用中有效运行,模型必须遵循某种特定的结构,对这种结构有所了解后,就能更好理解transformer对语言处理的许多选择,否则有些选择可能会显得没道理。
首先,无论你在构建何种模型,输入的格式必须为实数数组,可以是一维数列、二维数组或是更高维的数组,也就是所谓的张量。输入数据通常被逐步转换成多个不同的层,同样,每一层的结构都是实数数组,到了最后一层,就看作输出。
例如,文本处理的最后一层,是一个数列,表示接下来所有可能token的概率分布。在深度学习中,这些模型的参数被称为权重(weight)。
这些模型的关键特征是参数与待处理数据之间的唯一交互方式,就是通过加权和。虽然模型中也有一些非线性函数,但它们并不依赖于参数。通常情况下,加权和不会直接这样写出来,而是打包成矩阵向量相乘的形式。
例如,GPT-3有1750亿个weights,组成了约28000个矩阵,这些矩阵分为8类,我们需要逐一了解各个类别的作用。
虽说现在有更大更强的模型,但GPT-3作为第一个真正从机器学习破圈,爆火全球的大语言模型,仍具有其独特的魅力。对于更先进的模型,公司往往对其具体数据保密。
当你研究ChatGPT这种工具的内部原理时,几乎所有的计算过程,都体现为矩阵向量乘法。
图里模型的权重用蓝色或红色标注,待处理数据用灰色标注。
权重相当于模型的大脑,是在训练过程中学习的,决定了模型的行为模式。待处理数据,则仅编码了某次运行模型时的输入,比如一段示例文本。
有了以上这些基础,我们来对该示例文本进行第一步的处理。
即把输入切分成小块(这些小块被称为token),然后转化成向量。
模型有预设的词汇库,包含所有可能的词汇,假设有5万个,我们将遇到的第一个矩阵,被称为嵌入矩阵(embedding matrix)。每个词都对应一列,这些列决定了第一步中,每个单词对应的向量,将其记为。跟其他矩阵一样,它的初始值随机,但将根据数据进行学习。
在transformer出现之前,将单词转化为向量就是机器学习的常见做法,但对于初次接触的人,可能略显奇怪。但它为接下来的一切,奠定了基础,所以我们花点时间来熟悉一下。
我们通常称其为词嵌入(embedding a word),从几何角度来理解这些向量,将它们视为高维空间中的点。
将3个数字视为三维空间坐标很简单,但词嵌入的维度往往高的多。GPT-3有12288个维度。
在三维空间中,取一个二维切片,并将所有点投射到该切片上。
当模型在训练阶段调整权重,以确定不同单词将如何被嵌入向量时,它们最终的嵌入向量,在空间中方向,往往具有某种语义意义。
嵌入矩阵,一列对应一个单词,是我们模型中的第一组权重,根据GPT-3的数据,词汇库里有50257个词,即50257个token,每个嵌入有12288维,两者相乘,得到权重数约为6.17亿。将该数字记入统计表,要记得最后,总权重数加起来应该是1750亿。
就transformer而言,嵌入空间的向量,不能仅视为代表单个单词,它们还编码了单词的位置信息。值得关注的是,这些向量能结合上下文语境。例如,一个词嵌入向量国王(King),可能会被网络中各个模块逐渐拉扯,最终指向一个更具体细致的方向。比如说居住在苏格兰(lived in Scotland),它通过弑君上位(murdered predecessor),且用莎士比亚文风描述(in Shakespearean language)。
思考一下,你如何理解某个词。它的词义显然会受到上下文语境的影响。有时甚至来自很远的上下文,因此,构建能够预测下一个单词的模型时,目标就是使其能有效结合上下文信息。
在第一步,即根据输入文本创建向量数组时,每个向量都是直接从嵌入矩阵中拉出来的。所以最开始,每个向量只能编码单个单词的含义。
没有上下文信息,而流经这个网络的主要目标是使这些向量能获得 比单个词更丰富更具体的含义。这种网络一次只能处理特定数量的向量,称作它的上下文长度(context size)。
GPT-3的上下文长度为2048,因此流经网络的数据有2048列,每列12000维。上下文长度限制了transformer在预测下一个词时能结合的文本量。这就是为什么有些聊天机器人,如chatgpt早期版本,在进行长对话时,时常会感觉健忘。
请注意,目标输出是下一个可能token的概率分布。例如,如果最后一个词是Professor,而上下文包含Harry Potter这样的词,紧接着前面的又是least favourite teacher,如果将token视为完整单词的话,那么一个训练良好的网络,在叠加了Harry Potter有关知识后,大概率会给Snape一词打高分。
这包含两个步骤,首先,用另一个矩阵将上下文中的最后一个向量,映射到一个包含50000个值的列表,每个值对应词库里的一个token,然后用Softmax函数将其归一化为概率分布。
你可能会疑问,只用最后一个嵌入来做预测,有点奇怪。毕竟在最后一层中,还有成千上万其他的向量,都蕴含着丰富的上下文信息。这是因为在训练过程中,效率更高的方法是,利用最终层的每一个向量,同时对紧随着这个向量的词进行预测,后面再单独详述更多关于训练的细节。
若想将一串数字作为概率分布,比如所有可能下一个词的概率分布,那么每个值都必须介于0到1,并且总和为1。但对于深度学习,每一步都像是矩阵向量乘法,那么默认输出完全不满足要求,经常会有负值,或远大于1,而且几乎肯定总和不会为1。
要把任意数列转换为合理概率分布,标准方法是使用softmax,它使最大值最接近1,而最小值接近0。softmax是对每一项取以e为底的指数函数,使得数列中全是正数,然后求和。并将每一项除以该总和。得到归一化后的数列,它的总和为1.
如果输入中某一项显著突出,那么输出中,对应项就会占绝对主导,这样从中抽样,也只会选到最大的输入值,但它比只选取最大值要柔和,即当有值靠近最大值时,概率分布中也会获得相当大的权重,随着输入的连续变化,输出也连续变化。
在某些情况下,如ChatGPT利用该分布生成下一词时,可以给这个函数加入一点趣味性,给指数加个分母,常量T,它被称为温度,因为它与某些热力学方程中温度的作用有些相似,其效果是,当T较大时,会给低值赋予更多权重,使得分布更均匀一些。当T很小时,则较大的数值更占优势。极端情况下,将T设为0,意味着所有权重都给到最大值。
例如,让GPT-3生成一个故事,初始文本为:“one upon a time there was a ",每轮测试采用不同的温度,温度为0表示模型总是选择最可能的词。得到的结果有点像金发姑娘的老套改编。温度越高,模型就越可能选择可能性较低的词,但风险也更大。
严格来说,API不允许你选择大于2的温度,这没有数学依据,只是人为的限制,可能是为了避免工具产生过于荒诞离谱的内容。
大家通常将Softmax函数的输出作为概率,输入则称为logits。
相关文章:

Transformer介绍(一)
Transformer是一种特殊的神经网络,一种机器学习模型。 谷歌在2017年推出的原版Transformer,论文《Attention Is All You Need》,专注于将一种语言的文本翻译成另一种。 而我们要关注的Transformer变种,即构建ChatGPT等工具的模型…...

[CKS] TLS Secrets创建与挂载
目前的所有题目为2024年10月后更新的最新题库,考试的k8s版本为1.31.1 BackGround 您必须使用存储在TLS Secret中的SSL文件,来保护Web 服务器的安全访问。 Task 在clever-cactus namespace中为名为clever-cactus的现有Deployment创建名为clever-cactu…...

java双向链表解析实现双向链表的创建含代码
双向链表 一.双向链表二.创建MyListCode类实现双向链表创建一.AddFirst创建(头插法)二.AddLast创建(尾叉法)三.size四.remove(指定任意节点的首位删除)五.removeAll(包含任意属性值的所有删除)六.AddIndex(给任意位置添加一个节点…...

【Kafka-go】golang的kafka应用
网络上关于go的Kafka还是比较少的今天就先出一篇入门级别的,之后再看看能能出一个公司业务场景中的消息流。 一、下载github.com/segmentio/kafka-go包 go get github.com/segmentio/kafka-go二、建立kafka连接 正常来说下面的配置host topic partition 应该写在…...

redis:set集合命令,内部编码,使用场景
个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言命令SADDSMEMBERSSISMEMBERSCARDSPOPSMOVESREM集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 内部编码使用场景总结 前言…...

45期代码随想录算法营总结
代码随想录训练营总结与收获 在为期60天的代码随想录训练营结束后,我感慨良多。这段时间不仅让我在编程技能上有了明显的提升,更让我在学习习惯和时间管理上有了深刻的反思和改变。 报名参加这个训练营对我来说是一个重要的监督机制。之前我总是拖延&a…...

深入理解Java中的instanceof关键字及接口新特性:方法实现的可能性
目录 引言 1. 什么是instanceof关键字? 1.1 语法结构 1.2 instanceof的用法示例 1.3 instanceof的应用场景 2. Java中的接口能包含方法实现吗? 2.1 默认方法(Default Method) 2.2 静态方法(Static Method&…...

【python中如果class没有self会怎行】
python中如果class没有self会怎样TOC 在Python中,self是一个约定俗成的名称,用于表示类的实例。如果没有使用self,会导致以下问题: 1、无法访问实例属性: 在类的方法中,如果没有self,方法将无…...

【算法】(Python)动态规划
动态规划: dynamic programming。"programming"指的是一种表格法,而非编写计算机程序。通常解决最优化问题(optimization problem)。将问题拆分成若干个子问题,求解各子问题来得到原问题的解。适用于多阶段…...

EasyExcel 学习之 导出 “提示问题”
EasyExcel 学习之 导出 “提示问题” 现象分析解决(伪代码)前端 POST 实现后端实现 现象 EasyExcel 支持导出 xlsx、xls、csv 三种文件格式。在导出过程中可能发生各种异常,当发生异常时应该提示错误信息而非导出一个错误的文件。 分析 首…...

应用系统开发(3)低功耗四运算放大器LM324N
LM324N 是一种广泛使用的 低功耗四运算放大器,由德州仪器(Texas Instruments)和其他制造商生产。它具有四个独立的运算放大器,能够在单电源或双电源模式下运行,适合多种模拟电路应用。以下是详细信息: 芯片基本信息 型号:LM324N封装类型:常见 DIP(双列直插封装)或 SO…...

基于微信小程序的电商平台+LW示例参考
1.项目介绍 系统角色:管理员、普通用户功能模块:管理员(用户管理、商品分类、商品管理、订单管理、系统管理等),普通用户(个人中心、收藏、我的订单、查看商品等)技术选型:SpringBo…...

[Android] Graphic Buffer 的申请
前言: MediaCodec 支持 texture mode,即MediaCodec解码video完毕后把 yuv 数据填入 GPU 共享出来的 graphic buffer 里面,app 会把 video 的 yuv数据 和 ui 的数据通过通过软件渲染组件(opengl等)发送给GPU 进行一并渲染。这样做的效率较低&…...

【大数据学习 | HBASE高级】storeFile文件的合并
Compaction 操作分成下面两种: Minor Compaction:是选取一些小的、相邻的StoreFile将他们合并成一个更大的StoreFile,对于删除、过期、多余版本的数据不进行清除。 Major Compaction:是指将所有的StoreFile合并成一个StoreFile&am…...

多平台编包动态引入依赖的解决方案
最近开发时遇到了这样的需求,A 平台需要引入一个 video.js,B 平台却是不需要的,那么面向 B 平台打包的时候把依赖装进去自然就不大合适。最好的方法是动态引入依赖,根据平台来判断要不要引入 动态引入依赖 很快啊,动…...

[单例模式]
目录 [设计模式] 单例模式 1. 饿汉模式 2. 懒汉模式 3. 单例模式的线程安全问题 [设计模式] 设计模式是软件工程中的一种常见做法, 它可以理解为"模板", 是针对一些常见的特定场景, 给出的一些比较好的固定的解决方案. 不同语言适用的设计模式是不一样的. 这里…...

速盾:游戏盾的功能和原理详解
速盾有一款专注于网络游戏安全的防护系统,它通过实时监测游戏网络流量和玩家行为,以及使用先进的算法和技术进行分析和识别,检测出各种外挂、作弊行为和恶意攻击,从而保障游戏的公平性和玩家的安全性。 速盾游戏盾的主要功能包括…...

Spleeter:音频分离的革命性工具
目录 什么是Spleeter?Spleeter的工作原理Spleeter的应用场景Spleeter的技术优势Spleeter的挑战与局限性结论 什么是Spleeter? Spleeter 是一个由 Deezer 开发的开源音频源分离工具。它基于深度学习技术,尤其是卷积神经网络(CNN&a…...

【笔记】自动驾驶预测与决策规划_Part6_不确定性感知的决策过程
文章目录 0. 前言1. 部分观测的马尔可夫决策过程1.1 POMDP的思想以及与MDP的联系1.1.1 MDP的过程回顾1.1.2 POMDP定义1.1.3 与MDP的联系及区别POMDP 视角MDP 视角决策次数对最优解的影响 1.2 POMDP的3种常规解法1.2.1 连续状态的“Belief MDP”方法1. 信念状态的定义2. Belief …...

openresty入门教程:access_by_lua_block
在OpenResty中,access_by_lua_block 是一个功能强大的指令,它允许你在Nginx的访问控制阶段执行Lua脚本。这个阶段发生在Nginx处理请求的过程中,紧接在rewrite阶段之后,但在请求被传递到后端服务器(如PHP、Node.js等&am…...

Caused by: org.apache.flink.api.common.io.ParseException: Row too short:
Flink版本 1.17.2 错误描述 Caused by: org.apache.flink.api.common.io.ParseException: Row too short: 通过flink中的flinkSql直接使用对应的connector去获取csv文件内容,报获取的数据太短了 可能原因 1.创建的表字段多于csv文件当中的表头 定位 在获取csv…...

hbase的安装与简单操作
好的,这里是关于 HBase 的安装和基本操作的详细步骤,分成几个更清晰的阶段: 第一部分:安装和配置 HBase 1. 环境准备 HBase 依赖于 Hadoop,因此首先确保 Hadoop 已经正确安装和配置。如果没有安装,请先下…...

PySpark本地开发环境搭建
一.前置事项 请注意,需要先实现Windows的本地JDK和Hadoop的安装。 二.windows安装Anaconda 资源:Miniconda3-py38-4.11.0-Windows-x86-64,在window使用的Anaconda资源-CSDN文库 右键以管理员身份运行,选择你的安装路径&#x…...

【进阶】Stable Diffusion 插件 Controlnet 安装使用教程(图像精准控制)
Stable Diffusion WebUI 的绘画插件 Controlnet 最近更新了 V1.1 版本,发布了 14 个优化模型,并新增了多个预处理器,让它的功能比之前更加好用了,最近几天又连续更新了 3 个新 Reference 预处理器,可以直接根据图像生产…...

调试、发布自己的 npm 包
查看 npm 的配置 npm config ls登录 whoami 查看当前登录的用户 npm whoamiaduser 登录 adduser 有以下参数: –scope 作用域–registry 注册地址 默认地址:https://registry.npmjs.org/,也可通过.npmrc文件配置 npm login 是 …...

拓扑学与DNA双螺旋结构的奇妙连接:从算法到分子模拟
拓扑的形变指的是通过连续地拉伸、弯曲或扭曲物体而不进行撕裂或粘合来改变其形状的一种数学变换。拓扑形变属于拓扑学的一个分支,研究在这些操作下保持不变的性质。简单来说,它关注的是物体“形状的本质”,而不是具体的几何形状。 拓扑形变…...

mysql数据库(四)单表查询
单表查询 文章目录 单表查询一、单表查询1.1 简单查询1.2where1.3group by1.4having1.5order by1.6limit 一、单表查询 记录的查询语法如下: SELECT DISTINCT(去重) 字段1,字段2… FROM 表名 WHERE 筛选条件 GROUP BY 分组 HAVING 分组筛选 ORDER BY 排序 LIMIT 限…...

JavaEE初阶---properties类+反射+注解
文章目录 1.配置文件properities2.快速上手3.常见方法3.1读取配置文件3.2获取k-v值3.3修改k-v值3.4unicode的说明 4.反射的引入4.1传统写法4.2反射的写法(初识)4.3反射的介绍4.4获得class类的方法4.5所有类型的class对象4.6类加载过程4.7类初始化的过程4…...

HarmonyOS一次开发多端部署三巨头之功能级一多开发和工程级一多开发
功能级一多开发与工程级一多开发 引言功能级一多开发SysCaps机制介绍能力集canlUse接口 工程级一多开发三层架构规范 引言 一次开发多端部署 定义:一套代码工程,一次开发上架,多端按需部署 目标:支撑开发者快速高效的开发多终端设…...

STL常用遍历算法
概述: 算法主要是由头文件<algorithm> <functional> <numeric>组成。 <algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 <numeric>体积很小,只包括几个在序列上面进行简…...