首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >开发者的AI通识课

开发者的AI通识课

原创
作者头像
黄豆酱
发布2025-07-10 21:59:38
发布2025-07-10 21:59:38
20600
代码可运行
举报
文章被收录于专栏:AI大模型自学logAI大模型自学log
运行总次数:0
代码可运行

规则驱动系统—人类手把手教“机器逻辑”

核心解决的问题

通过预设的“条件—动作”规则集合来模拟人类决策的过程(专家系统)。让机器在特定、狭窄、规则极其明确的领域模仿人类专家的决策逻辑(比如诊断特定疾病)。这一阶段的AI系统完全依赖手工编码的专家规则,采用符号逻辑 和 确定性算法处理结构化输入。

核心模块:人工搭建的“逻辑机器”

知识库

巨大的“规则手册”,以 “规则” 形式表示的领域专家知识。规则按照领域细分,并且标注优先级。

IF <前提条件1> AND/OR <前提条件2>... THEN <结论/动作>

推理引擎

一个“规则执行器”,基于输入数据,一条条去匹配知识库里的规则,按照规则链推导出结论。推理三种方式(典型代表MYCIN医疗诊断专家系统):

正向推理

从事实出发,匹配规则前提,推导出结论。比如:

fact1: 咳嗽 = 是 fact2: 发热 = 是 fact3: 呼吸困难 = 是

综合数据库初始状态为 {fact1, fact2, fact3}。系统扫描知识库,发现规则 R1

R1: IF 咳嗽 且 发热 且 呼吸困难 THEN 存在呼吸系统病症

R1 的前提条件全部满足,触发该规则,生成中间结论 “存在呼吸系统病症”,存入综合数据库,此时数据库更新为 {fact1, fact2, fact3, 存在呼吸系统病症}。

反向推理:从目标结论出发,反向验证前提条件(目标驱动)

R2: IF 存在呼吸系统病症 且 白细胞计数 > 10×10^9/L THEN 可能为细菌感染

“存在呼吸系统病症” 已确认,但缺乏白细胞计数数据。

系统询问:“患者的白细胞计数是多少?”。这时候医生给患者开具一张化验单,化验单结果出来后补充数据 “白细胞计数 = 12×10^9/L”,更新综合数据库为 {fact1, fact2, fact3, 存在呼吸系统病症, 白细胞计数 = 12×10^9/L},此时 R2 前提条件全部满足,触发 R2,生成结论 “可能为细菌感染”。

混合推理:结合两者,先正向收集数据,再反向验证目标。当多条规则匹配时,通过优先级、最新性、特殊性等策略选择执行规则。

综合数据库

存储当前问题的输入数据、推理过程中的中间结果及最终结论。包括:初始事实(如用户输入的症状、设备参数);推理生成的新事实;中间计算结果;

用户接口/数据输入

实现用户与系统的交互,包括数据输入与结果输出,如:文本问答输入症状。

辅助专家更新、维护知识库,降低规则编写门槛。规则语法校验:如检查前提条件与结论的逻辑正确性;冲突检测:如发现两条规则结论矛盾时提示专家;半自动规则生成:如通过历史案例归纳简单规则;

解释器

解释推理过程,如:记录规则触发顺序:如 “因为体温> 38℃且咳嗽,所以触发规则 R12”;展示证据链:如 “结论 A 的支持证据包括事实 X、规则 Y 的推导”;支持用户追问:如 “为什么建议做血常规?”;

知识点链接小贴士:

1、规则驱动系统是一个包含数据输入,数据处理、输出输出的完整的、闭环的生态。规则引擎则仅负责规则的计算,需要依赖外部完整生态。

2、业务的正面和反面

关键技术

  • 用数学符号(命题逻辑、谓词逻辑)精确表示知识和推理规则。
  • 确定性/概率性规则: 规则可以是确定性的(IF A THEN B),也可以带简单概率(IF A THEN B (概率P))。
  • 专家系统外壳: 提供构建知识库和推理引擎的通用框架。

当前阶段的局限

  • 完全不能学习: 规则全靠人工一条条编写、录入和更新。机器自身没有任何学习能力。
  • 脆弱不堪: 一旦遇到规则手册里没写过的情况,或者问题稍微超出预设范围,系统就完全傻眼或给出荒谬答案。毫无灵活性。
  • 知识获取瓶颈: 把人类专家的知识转化成精确规则极其困难、耗时且昂贵(称为“知识获取瓶颈”)。
  • 无法处理模糊性: 对现实世界中大量存在的模糊、不确定、不完整信息束手无策。

小结

这个时期就像给机器一本厚厚的、极其详细的特定领域操作手册,并配上一个只会按手册查条文的办事员。机器没有理解能力、没有学习能力、没有适应能力,完全依赖人类预先编写的规则。核心是基于符号逻辑的显式知识表示和推理。

统计AI与机器学习—机器开始“自己找规律”

这个阶段机器能够从数据中自动学习规律,从而处理更复杂、更模糊的任务,不再完全依赖手工规则。但学习到的能力通常是单一、专用的(比如只能从图片上认出是猫,或者只做垃圾邮件过滤)。

最左边代表现实中待解决的各类实际问题、需求或现象,简单的例子:识别垃圾邮件、房价预测。

中间 “fx”(模型 / 算法):是机器学习的关键环节,承担 “抽象转化” 角色。它把现实问题提炼成数据可表达、可计算的形式(构建数据模型、设计算法逻辑 ),让现实问题转化为数据层面的数学问题。

最右侧借助训练好的模型、算法,根据机器处理转化后的 “数据问题”,输出分析结果、预测结论等,再反向作用于现实场景,完成 “用数据驱动解决现实问题” 的闭环,比如通过算法识别出垃圾邮件并拦截,实现解决现实场景里邮件管理的问题 。

监督学习

训练数据包含正确的 “输入数据”x 和 “输出标签”y。在图像分类中,输入是图片像素值,以及对应的标签“猫”。得到拟合输入到输出的映射(也就是图像像素的规律),本质上是一个函数f。训练过程中,通过对比模型预测结果和真实结果,以及调节模型参数,让预测更准确。

监督学习的典型应用场景,识别照片中的物体类别、新闻主题分类、将语音信号转换为文本、信用卡欺诈检测、推荐系统(通过用户历史行为(点击、评分)预测其对物品是否喜欢)。

无监督学习

从无标签数据中发现隐藏模式或结构。只有输入,无预设输出标签。用算法来分析并聚类未标记的数据集,以便发现数据中隐藏的模式和规律,不需要人工干预,因此被称为“无监督的”学习。

下面是某商场会员基本信息,包括信息(数据集)客户ID、性别、年龄、年收入(k$)、消费指数(1-100),

通过已有信息对客户进行细化分类,以便营销运营团队更好的制定策略。

无监督学习常用于客户细分、探索性数据分析、推荐系统等。监督学习解决明确目标的任务,无监督学习探索未知数据模式,两者结合可提升模型泛化能力

单变量线性回归

线性回归是一种基础的机器学习模型,核心是通过拟合一条线性方程来描述自变量(特征)和因变量(目标)之间的关系,常用于预测连续值。

比如:根据房子大小来预测房子的价格(监督学习)。现有一些数据集,x(房子大小) y(房子价格)。根据数据集,我们在二维坐标中画出数据,其中横坐标是房间大小,纵坐标是房子价格。

现在可以根据数据集构建一个线性回归的模型,模型将拟合为一条直线。根据拟合出来的直线,将房子大小代入函数式,就可预测房子的价格(以数字作为输出,回归模型)。

经过推导得出模型函数如下,对应图三中那条直线。其中x是房间大小,w是函数的斜率,b是截距。通过调整w,b来拟合数据。

怎样找到最合适的w,b,来让预测更准确?这个时候需要引入成本函数。

成本函数

成本函数是衡量模型预测结果与真实标签之间差异的函数,成本函数值越小预测越准确。

选定一个w,b就能构造一个模型f,同时计算出模型f的成本函数的值。当选择了一堆w、b时就能计算并画出成本函数的函数图像。成本函数的公式,m数据集的数量。(此处忽略推导过程)。

假设b=0,w=1,得到下图。可以看到每次都拟合,所以当w=1时,成本函数值为0,也就是零误差。

接着我们继续调参,b=0 w=0.5就得到了下图,可以看到每次的预估数值都和真实的数据有差距。

在多次输入不同的w,b数值后,我们得到了成本函数曲线。

上面的过程就是我们寻找最小成本函数的过程。在这个简单的案例场景下,我们能用肉眼一看看出最合适的w、b参数。那对于复杂、多维数据怎么办?

梯度下降

梯度下降(Gradient Descent)的核心目标是通过迭代优化参数,找到使成本函数最小的参数(如权重 w 和偏置 b)。

单变量梯度下降

上图是一元二次函数的曲线图案,可以看出:在最低点的左边部分,每一点的梯度方向值都是负值,因为每一点的斜率都是小于 0 的,所以当变量沿着梯度的方向递进,梯度值越来越大;同理右边,每一点的梯度方向都是大于 0 的,所以沿着梯度方向,梯度值也是越来越大。所以,函数的梯度方向总是成本函数值越来越大的方向。

要想求成本函数最小值,就应该沿着梯度的反方向进行,这就是梯度下降法的原理。

沿着成本函数下降最快的方向(即负梯度方向)更新参数 w,从而最小化 J(w) (预估误差)。其中α(Alpha)为学习率,控制步长。重复这个步骤,直到:成本函数变化很小;达到最大迭代次数,得到最优的w。

更直观的理解

比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步。每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。

当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。梯度下降像蒙眼下山,可能停在小坑(局部最优)而非最低谷(全局最优),但通过调整策略和初始化,可以找到足够好的解。

(对于凸函数,局部最优解也是全局最优解。那啥是凸函数呢?)

向量化

向量算法,如NumPy的np.dot一维数组的点积:

代码语言:javascript
代码运行次数:0
运行
复制
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
result = np.dot(a, b)
print(result) 

计算过程为 1*4 + 2*5 + 3*6 = 4 + 10 + 18 = 32

相比传统循环计算具有以下优势,数据量越大差距提效越显著:

  • 并行计算能力:传统循环(左侧)需逐个元素串行计算(w[0]*x[0] → w[1]*x[1] → ...),共16次顺序操作。向量算法(右侧)通过np.dot一次性并行计算所有元素的乘积(图中蓝色标注的"in parallel"),16次乘法同步完成,大幅缩短计算时间。
  • 硬件优化潜力:并行计算能充分利用现代CPU/GPU的SIMD(Single Instruction Multiple Data,单指令流多数据流,一条指令同时处理多个数据)指令集,通过向量化操作高效处理数据,而循环难以实现此类硬件级优化(循环中下一次计算依赖上一次的结果;循环串行无法填满寄存器)。
  • 代码简洁性与效率:np.dot仅需一行代码,内部由高度优化的底层C/Fortran( C 语言和Fortran语言编写的高性能计算库)实现,计算效率更高。
  • 规模扩展性:当向量维度增加(如从16维到1万维),循环的计算时间线性增长,而向量算法通过并行化几乎保持恒定时间

机器学习全流程应用架构

  1. 数据与特征工程流水线:是基础环节,从原始数据开始,经数据提取获取所需数据,预处理(如清洗、格式转换)提升数据质量,质量检查保障数据可用,特征工程(如特征提取、选择、构建)挖掘数据价值,处理后特征存入特征存储,为后续建模供优质输入 。
  2. 模型训练 / 重训练流水线:基于处理好的特征,先做模型实验(尝试不同算法、参数),评估(用指标、日志等看效果)选优,将有效模型及参数、指标等作为元数据注册,模型元数据存储这些信息,支撑模型迭代与管理。
  3. 模型服务流水线:把训练好的模型,经预测(实际场景推断)、验证(确认效果),打包成可用服务,对外提供模型能力,让模型从训练走向实际应用。
  4. 生产环境模型:模型部署到生产后,模型监控持续关注其运行状态、效果,及时发现漂移、性能问题,保障稳定服务。
  5. 支撑体系:机器学习流水线整合各环节;工作流编排调度流程,保障各步骤有序执行;CI/CT/CD &IaC(持续集成、测试、交付与基础设施即代码 )实现高效迭代、部署;数据与模型端到端质量把控,贯穿全流程,保障数据和模型质量,提升机器学习应用可靠性与效率,推动模型从开发到落地应用闭环。

实际应用改进 (相比规则驱动阶段)

机器开始“学习”! 不再完全依赖手工规则,能从数据中自动发现统计规律,处理模糊性和不确定性能力大幅提升。

应用范围扩大: 文本处理(垃圾邮件过滤)、推荐系统(协同过滤)等。

当前阶段的瓶颈

  • 特征工程地狱: 模型效果极度依赖人工设计的特征的好坏。这需要丰富的领域知识和大量试错,是开发中最耗时、最依赖人的环节。
  • 没有通用能力: 训练出的模型通常是高度专用的。一个识别猫的模型完全不会认狗,一个过滤垃圾邮件的模型看不懂新闻。
  • 模态单一: 一个模型通常只处理一种类型的数据文本 或 图像 或 声音等。
  • 数据依赖且脆弱: 需要大量标注数据训练,对训练数据分布之外的,模型容易在没见过的新样本上出错。

小结

就像给机器配了一个“统计学徒”。人类师傅(专家)不再直接告诉徒弟每一步该怎么做(规则),而是给徒弟看大量例子(数据),并告诉徒弟例子中的关键点是什么(特征工程),然后徒弟(机器学习算法)自己琢磨(训练)出一套判断方法(模型)。但这个学徒只会做师傅教过的特定任务,换个任务就得从头再教,而且师傅教“看什么”(特征工程)非常费劲。核心是从数据中学习特定任务的统计模式。

大模型预训练阶段——盖好“大脑”的地基和主体

传统神经网络

这张图是生物神经元的结构,一个神经元有很多输入端可以从其他神经元接受电脉冲;经过神经元的计算,将信息输出并给到其他的神经元,作为下个神经元的输入。下个神经元又会将多个其他神经元的输入进行汇总,计算后输出发送给其他的神经元。这就是人类思考过程。

生物神经元的信号传递、整合机制,启发了人工神经网络的模型架构设计。让算法模拟生物神经的信息处理方式,实现机器学习任务。人工神经网络使用了一个很简化的数学模型来模拟神经元的功能。

下图展示了人脸识别场景下的神经网络基本工作流程,用简化的神经网络结构,解释 “输入人脸图像→输出是否为某个人的概率” 的过程:

  1. 输入层:左侧的人脸图像,是神经网络的输入数据。在实际场景中,会先把图像转化为数字矩阵(如像素值数组 ),让神经网络能 “读懂”。输入的数据是向量矩阵,每个输入单元对应数据的一个维度(像素点 )。
  2. 隐藏层:第一层隐藏层:提取简单特征(如边缘、轮廓 ),如短的线线条;后续层:组合低层特征,生成更复杂抽象的特征(如五官形状、眼睛、鼻子 );第三层我们可以看到基本上输出人脸的轮廓了。

隐藏层中,每个蓝色圆圈代表一个神经元,模拟生物神经元的 “计算单元”。层与层之间神经元全连接,体现神经网络 “逐层传递、加工信息” 的逻辑。

  1. 输出层:粉色圆圈所在的是神经网络的输出层,它输入数据是隐藏层处理后的特征。也就是照片识人的结论。

神经网络对比传统机器学习的优势就是,不需要特征工程,神经网络会自动学习检测不同的特征。我们对刚才的神经网络模型输入一个汽车的图片,也会通过隐藏层识别出汽车的特性。

神经网络计算的过程涉及大量矩阵运算,手动实现这些计算极其繁琐且容易出错。以及神经网络训练依赖反向传播(类似前面讲过的梯度下降,寻找最小成本函数对应调参w的值),手动计算梯度(尤其是复杂模型)几乎不可行。那么TensorFlow就诞生了。

TensorFlow

Tensorflow顾名思义是由Tensor(张量、向量)+ Flow(流动,流动的数据、动态的计算)两个英文单词组成的,TensorFlow计算图的每个节点的输入输出都是 Tensor,而连接节点的有向线段就是 Flow,表示从一个 Tensor 状态到另一个 Tensor 状态。

TensorFlow包含三个角色:client、master和worker。

  • client负责构造计算图,然后发送给master。
  • master则负责协调和管理所有worker按流程执行计算图。
  • worker负责执行计算图。

worker又分为三个角色:ps(parameter server)、worker和chief worker。

  • ps(parameter server):PS角色负责维护模型的参数,例如提供模型参数的副本,收集各个worker节点计算出的梯度并更新参数。
  • worker:worker节点负责管理设备的cpu或gpu,执行实际的计算任务,例如计算梯度,更新模型参数等。
  • chief worker:这个角色负责协调整个分布式系统的工作,例如计算总体损失、触发检查点保存等。chief worker角色不是必选的,没有它模型也可以运行。

知识点链接小贴士:由TensorFlow联想到传统软件开发使用的——线(协)程池,在系统中都是“并发工具/框架”的角色。只管使用,具体的资源申请、资源调度管理、资源回收都内置了。满足了“既要又要”的要求:既要在高并发场景下高效、频繁的申请/释放内存,又要避免频繁GC带来的性能影响。

核心概念——计算图

普通的计算是直接按顺序执行操作,会浪费计算资源,TensorFlow是将计算表示为计算图(Computational Graph),并优化图的执行。就是将多个小操作合并为一个复合操作,通过减少中间结果和内核调用提升效率;提前规划内存使用;自动拆分计算到多GPU(前面讲过的向量化)。

简单的比喻就是“点动成线、线动成面”。点:计算的节点及单个人工神经元;线:流动的张量(向量、矩阵),也就是数据输出、接收的方向;面:大批量的数据计算都是提前规划、定义好的。当并行计算数据量足够庞大,那么就形成了类似的“图”(类比:图片是由无数个像素组成)。一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。

TensorFlow 的核心价值之一就是提供复杂计算的能力,将开发者从底层数学实现、硬件优化和工程琐事中解放出来,专注于模型设计和应用逻辑。

知识点链接小贴士:

1、类似这种数据拆分、规划计算路径、并发执行,在传统软件中也应用广泛,比如分布式数据库TiDB、ES;大数据中的Spark。

2、在技术中(传统软件或者AI领域),对于大文件、大数据,解决的中心方法都是“拆”。拆完之后调度、并发。

梯度消失

梯度消失是深度学习中的一种常见问题一句话概括原因:神经网络反向传播时(梯度下降是根据成本函数倒推参数w),梯度像“传话游戏”一样每层打折(梯度会随着反向传播逐层传递而指数级衰减),传到前面几乎归零导致浅层参数无法更新;或者靠前层级的权重系数几乎不变。

模型仅靠深层学习,性能大幅下降;损失函数长期不下降,模型无法收敛;难以学习远距离依赖。

自注意力机制

Transformer 的核心是自注意力机制,要想深入理解,就需要从 Q、K、V 开始理解 W^q ,W^k,W^v,W^o 这四个权重矩阵以及词嵌入。

Query、Key、Value三者之间的运算关系

Q、K、V 就好比当你在网页上搜索文章时,搜索引擎会把你的查询内容 Q ( Query 搜索栏中输入的查询内容)映射到数据库中与候选文章相关的一组关键字 K(Keys 视频标题、描述等)匹配相关性。最后系统通过计算,向你展示最匹配的 K 所对应的内容 V( Values 值,在网页上给出的搜索结果为最匹配的链接)。而 Attention 机制就好比是对这次查询整个过程的一个称呼。

Attention 将你想要查询的 Q 与文章数据库中 K 进行比较,一对一地测量它们之间的相似度,从最高相似度顺序向下依次返回并排列索引到的文章链接。可以理解 Attention 为一个数据库查表的过程:

在实际场景中,我们要给 Transformer 大模型输入一个序列的文本,即一句话或一段话,甚至是一篇论文、一本书的文字量。其中的每一个单词都会由一个 词嵌入 向量来表达。这个 Attention 查表的过程,其实就是对海量的 词向量 进行搜索查询的过程。每一个词都只有一个向量来表达。所以大模型也会有“词汇量”一说。

(上述的词其实是指token,token是词元,最小语义单位。输入一长段文字后,会对内容进行拆分。)

Query、Key、Value是怎么产生的

举个例子:

给 Attention输入 一句话:How are you?。此时系统会首先把这个输入序列转化为四个token “How”、“are”、“you”、“?” ,然后找出这四个 token 互相之间的语义关联度,即 Attention 过程。也就是“How”与其余三个 token:“are”、“you”、“?”之间的的语义关联度,“are”与其余三个 token:“How”、“you”、“?”之间的的语义关联度,以此类推。

那如果输入的是一本10万字的书呢,机器是怎么通过 Attention 机制用几秒钟的时间,一下子就读懂的呢?

其实,无论你输入给机器是四个 token 的一句话,还是10万字的一本书,它都在执行同一套运算。Attention 都要把输入的序列中的每一个 token,先转化成向量(对应词汇量概念里的向量),然后再把向量变幻成三个向量 Q、K、V。

实际上,我们把每个token的向量分别做三次线性变换,也就是说让token向量和不同的权重矩阵W^q、W^k、W^v相乘得到Q、K、V。其中W^q、W^k、W^v就是大模型在训练阶段,通过神经网络反向传播训练出来的权重,是大模型通过百亿级的语料训练十几天得到的固定数据(执行阶段,非训练阶段)。也就是大模型中的固定节点的链接权重是预先被训练好的。

上面图中,为了便于理解使用了token来进行计算的。实际运算中,都是以矩阵的形式计算的。整个序列的所有token向量都放在一起同时进行运算。

假设n是序列中的token数,W权重向量的维度一般是512,那么矩阵的形状是n*512。

多头注意力机制

在多注意力机制中,矩阵形状从n * 512变成了n * 64,中间差了8倍,也就一个完整的进程被分解了8个并行进程。这个进程在原论文中成为“头”。这8个头互不干扰各自运算各自的。

8个头中的每一个头都只用初始权重矩阵W^q、W^k、W^v每个向量的八分之一去计算。当然拆分8份后的权重矩阵各自是不同的。(这里的拆分,不是直接在长度512的向量上等分8份,是通过线性变换得来的 8 个具有独立语义逻辑的子空间)。那这样拆分后的所谓的固定权重还准确吗?

词向量(词嵌入)空间语义

词向量类似于这样:

代码语言:javascript
代码运行次数:0
运行
复制
"cat" 的向量:0.2,  −0.5,  0.8
"dog" 的向量:0.6,  0.1,  −0.7

在词向量中,一个词有语义逻辑、语法逻辑、上下文逻辑、在全句中的位置逻辑、分类逻辑等等等。

下图是在词向量二维空间中的表示,可以看到三个绿色的点离得很近,因为他们之间相对于其他的词汇来说更接近。我们可以看到,其中cat和tree会离得近一些,因为在多语言的文章中会有“猫爬树”类似的句子,相比“兔子爬树”。

我们把词向量想象成512维度的空间(这个……很难想),在这个多维的空间中,词和词之间的关系是非常多维度的,关联因素可能是成百上万的。

比如:man和woman会映射出king和queen;由 walking 到 walked 的距离与斜率和 swimming 到 swam 的距离与斜率一致(即向量的长度与斜率一致),且距离几乎相等,原因是都是现在分词和过去分词的形式变化。

在这个基础之上,我们再回看多头注意力机制中把固定的W权重向量变换成8块,去执行Attention其实并不会影响语义。反而是细分了不同的语义去运算,反而使运算更加精准,表达更加细腻了。

那问题来了,是不是拆分越细越好呢?

理论上,多头注意力机制设置4、8、16、32都可以,但是经过技术团队的反复测试得出结论,8个头的总计技术分最高。

有一个这样的句子“The animal didn't cross the street because it was too tired.”。我们模拟2个头Attention(橙黄色、绿色),可以看出橙黄色的头把 it 关注的细分语义逻辑重点放在了“The”、“animal”上,而绿色的头把 it 关注的细分语义逻辑重点放在了“tired”身上。

单头注意力机制的运算

针对每一个token单头的运算:

  1. 将一个输入序列中的其中一个token的向量经过线性变换得出Q2,用Q2和序列中其他token的Ki进行比较(包括K2),计算出token之间的关联性;
  2. 将第一步得出的关联性得分转换为权重值,数值在0--1之间,数值越高权重越高;
  3. 将第二步得到的关联性和每个token对应的Vi做加权和,得到最终结果Z2。

比如这样一句话:“He booked a room at a hotel.”。我们对其中“booked”这个单词(实际上是 token)做 Attention 机制。

  1. “booked”会对“He booked a room at a hotel.”这句话中所有的 token ,包括“booked”自己,都做一遍点乘,计算关联性;
  2. 然后转化成0--1的权重 ;
  3. 用0-1的权重与“He booked a room at a hotel.”其他token的转换成的 V 向量相乘,得到加权后的变换结果。即“booked”这个单词可以用0.55*booked+0.15*room+0.3*hotel“0.55*booked+0.15*room+0.3*hotel” 这样一个复杂的单词来表示。

多头注意力机制运算

实际上就是分配了8个头分别运算,运算完成后,再通过W^o(模型训练同阶段产出的权重矩阵)把结果连起来,再做一次线性变换(前面讲过拆分8个头不是平均拆分的)回到初始形状。

知识点链接小贴士:自注意力机制的本质就是“无中心”,在传统的软件工程中Redis集群也是由多个节点构成的“无中心”拓扑网。当然自注意力机制“无中心”的实现是通过“全计算”达到的,而Redis的Gossip是通过多轮局部传播,最终使所有节点获知全局信息。

AI的发展:专家系统,死规则 --> 机器学习,喂规律 --> 神经网络,自学规律 --> 大模型,海量自学规律--> Workflow/Agent,把规律用死规则串起来(螺旋式上升的循环)。

明其律而不拘,悟其道而自在。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 规则驱动系统—人类手把手教“机器逻辑”
    • 核心解决的问题
    • 核心模块:人工搭建的“逻辑机器”
    • 关键技术
    • 当前阶段的局限
    • 小结
  • 统计AI与机器学习—机器开始“自己找规律”
    • 监督学习
    • 无监督学习
    • 单变量线性回归
      • 成本函数
      • 梯度下降
      • 向量化
    • 机器学习全流程应用架构
    • 实际应用改进 (相比规则驱动阶段)
    • 当前阶段的瓶颈
    • 小结
  • 大模型预训练阶段——盖好“大脑”的地基和主体
    • 传统神经网络
    • TensorFlow
      • 核心概念——计算图
    • 梯度消失
    • 自注意力机制
      • Query、Key、Value三者之间的运算关系
      • Query、Key、Value是怎么产生的
      • 单头注意力机制的运算
      • 多头注意力机制运算
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档