首页 > 其他分享 >智能关键技术三:智能优化器

智能关键技术三:智能优化器

时间:2025-01-16 14:23:59浏览次数:1  
标签:概率 关键技术 模型 建模 贝叶斯 智能 网络 优化 节点

贝叶斯网络模型原理贝叶斯网络是一种概率图模型,拓扑结构通常为一个有向无环图。

贝叶斯网络的优势在于能够利用条件独立假设对多变量数据进行建模,并且自适应变量之间的相关性,具体是指每个变量的概率分布只和与它直接连接的父亲节点有关。使用这种方法能够比基于简单的独立性假设的模型获得更高的建模准确率,也能够比完整的联合分布建模获得更高的执行效率。在关系数据表中,每一列数据都可以成为一个变量,比如下表中包含A,B,C三列数据:

在这里插入图片描述
分别使用基于独立性假设的单列建模和基于条件独立假设的贝叶斯网络计算查询 SELECT * FROM table WHERE A=A1 AND B=B1 AND C=C1的选择率:单列建模:P(A=A1, B=B1, C=C1)=P(A1)P(B1)P(C1)=0.5 * 0.67 * 0.67=0.22贝叶斯网络:P(A=A1, B=B1, C=C1)= P(A1)P(B1|A1)P(C1|B1)=0.51.01.0=0.5可以看出贝叶斯网络在列相关性强的场景下能够更加准确地估计出多列查询选择率(和基数)。

贝叶斯网络结构搜索贝叶斯网络的拓扑结构决定于变量之间的互相关性,直观上看,将互相关性强的变量进行连接并计算条件概率有助于提高分布建模准确性。假设有两列数据A和B,互相关性定义如下:

在这里插入图片描述
遍历上述临时表,对每一行求得互相关性,然后求和之后就是A和B列的整体相关性。

贝叶斯网络对于每个节点父亲节点的数量是没有要求的,但是父亲节点越多,条件概率建模的难度也越大,消耗的空间和时间代价也会相应变大。

所以在本子系统中,我们只采用树型的网络拓扑结构。这种结构中每个节点只有一个父亲节点,所以只需要保存本节点可以另一个父亲节点的条件概率即可,示例如下:

在这里插入图片描述
在有了树型限制之后,结构搜索空间就少了很多,现在的目标就是找到一颗总互相关性最大的生成树,这里本系统采用chow-liu算法,也是一种加权最大生成树算法,算法流程如下:

在这里插入图片描述
根据搜索出的贝叶斯网络结构,构造出包含所有边的字符串,比如”a,b,a,c”或者”a,b,b,c”传入贝叶斯网络算子进行模型创建。

贝叶斯网络训练

在这里插入图片描述
贝叶斯网络训练过程中,算子首先会遍历一遍样本数据,获得每列数据不同值统计;然后对于每列数据,根据是否是连续数据类型进行数据分桶或者高频值抽取以减小存储和计算代价;对数据分桶采用等高分桶,尽量使每个桶内的频度是相似的,每个桶中范围值下界被存储在数据列表中,NULL值单独作为一个值放在列表最后;连续值高频值抽取会将频度最高的K各元素放置在数据列表中,除此之外的其他元素都被表示为一个通配符号放在列表最后;为了减少查找匹配代价,字符串类型数据会存储一个额外的哈希值;列表中每个元素表示结构如下所示:

typedef struct ValueInTuple {    Datum data;    Oid type;    bool isnull;    uint32_t hashval;} ValueInTuple;

概率建模过程中,针对形如P(离散值|离散值)的条件概率使用概率表记录每种值的概率;针对P(离散值|连续值),将连续值通过范围分桶当做离散值处理;针对P(连续值|离散值),使用高斯分布对连续值分布进行建模;针对P(连续值|连续值),使用高斯分布对条件连续值进行离散化分桶处理,对目标连续值进行高斯分布建模。训练完成之后,将模型序列化成一个二进制字符串。

贝叶斯网络模型推理

在这里插入图片描述
贝叶斯网络从第一个位置开始获得一个未访问节点,如果该节点存在未访问父亲节点,那么就递归访问父亲节点;如果父亲节点都已经被访问,那么利用条件独立性假设,利用概率表或者是高斯函数局部计算出当前节点的条件概率并且和父亲节点的概率相乘作为联合概率。

然后判断当前节点是否是叶子节点,如果是叶子节点则将联合概率和选择率相乘,否则继续寻找下一个未被访问过的节点。

最后返回选择率。

模型参数缓存策略

在基数估计的时候需要获得相应的模型参数,这个过程需要从磁盘读取以及反序列化两种操作,涉及到磁盘访问以及内存申请操作,效率较低,所以在模型数量不多的情况下可以利用全局共享缓存将其存在内存中,下次访问效率就会变高,但是在模型数量变多之后就需要缓存替换策略以保证内存使用是可控的。

本子系统采用的是异步批量替换策略,在模型访问亲和性高的场景下,当前一段时间所需要的模型都放置在内存中,不会带来额外的性能损失,访问申请的也都是共享锁支持高并发;当负载偏移之后,新的模型会被访问,从磁盘中被加载到内存,内存中的数量就会超过阈值,这种情况下系统按照每个模型的最近访问时间归一化之后的概率选择1/3的旧模型替换出内存。这种一次性替换多个模型的方法可以避免每次读操作都要申请互斥锁维护链表并且降低替换操作触发的次数。并发analyze场景通过互斥锁进行共享缓存访问控制。

标签:概率,关键技术,模型,建模,贝叶斯,智能,网络,优化,节点
From: https://www.cnblogs.com/xiaoxu0211/p/18674919

相关文章

  • 智能关键技术二:库内AI引擎
    GaussDB库内AI引擎架构如下图:图4DB4AI架构图用户接口层在用户接口层,实现SQL-like语法,提供CreateModel、Predict等关键字,支持AI算法训练和预测。当前支持的AI算法包括:GD(梯度下降法)、KMeans(聚类)、XGBoost、决策树等。查询优化层查询优化层提供AI训练执行计划和AI预测执行计划......
  • GaussDB云原生数据库SQL引擎继承原来openGauss的词法解析,语法解析,查询重写,查询优化和
    云原生数据库SQL引擎继承原来openGauss的词法解析,语法解析,查询重写,查询优化和执行引擎的能力。由于云原生数据库是shareddisk架构,一个事务在一个节点上执行,所以不需要原来分布式根据分布式key进行数据分布,分布式执行和分布式2PC提交的能力。为了支持数据库粒度的异地多活,云原生......
  • GaussDB关键技术方案_通信组件
    GaussDB关键技术方案_通信组件云原生数据库采用shareddisk架构,各个计算节点对等,计算节点之间通过页面交换实现缓存数据的一致性,为了提高页面传递的效率,需要利用RDMA或UB单边读写的能力;云原生数据库为了管理动态资源,需要对动态资源的owner分配进行加锁,分布式锁管理需要利用原子操......
  • 上海人工智能实验室:书生·浦语大模型升级
    上海人工智能实验室宣布其书生大模型迎来了重要版本升级,推出了书生・浦语3.0(InternLM3)。据实验室介绍,新的版本通过精炼的数据框架,显著提升了数据使用效率,从而实现了思维密度的提升。此次升级的InternLM3-8B-Instruct模型仅使用4T的数据进行训练,官方表示其综合性能超过......
  • 计算机毕业设计Springboot“飞卷”窗帘报价管理系统的设计与实现 基于Springboot的“
    计算机毕业设计Springboot“飞卷”窗帘报价管理系统的设计与实现q62s9t2z(配套有源码程序mysql数据库论文)本套源码可以先看具体功能演示视频领取,文末有联xi可分享随着窗帘行业的不断发展,市场竞争日益激烈,传统的窗帘报价方式已难以满足现代企业对效率和准确性的要求。为了......
  • 【毕业设计】基于SSM的智能组卷系统的设计与实现
    1.绪论1.1研究背景在发展迅速的信息化时代中,越来越多互联网科技走进人们的生活,人们开始接受互联网带来的方便快捷的服务,同时享受这互联网带来的冲击与安全。课程智能组卷系统是目前宣传课程信息不可或缺的课程智能组卷系统网站,但是由于各种无法预测的现实原因让它无法普遍......
  • 宝塔面板操作反应慢的原因分析及优化建议
    宝塔面板操作反应慢的问题确实会给日常管理工作带来不便。造成这种情况的原因有很多,下面我们将从多个角度进行分析,并给出相应的优化建议:服务器资源不足:CPU负载过高:当服务器CPU利用率接近100%时,会导致系统响应缓慢。可以通过top命令查看当前进程占用情况,找出消耗大量CPU资源的......
  • 新购买的高防服务器连接速度慢,如何优化?
    新购买的高防服务器连接速度慢可能由多个因素引起。为了帮助您提升服务器的性能和响应速度,我们可以从以下几个方面进行优化:检查网络线路选择高防服务器通常会提供不同的网络线路选择(如电信、联通、移动等)。请确认您选择的线路是否适合您的用户群体。如果大部分用户来自特定地区......
  • 计算机智能卡登录系统多语言版
    友我计算机智能卡登录系统多语言版发布了,目前支持中文,英文,中文繁体,日文,韩文,越南语,为国外用户使用更方便了。计算机智能卡登录系统适用于企业,医院,工厂,学校和实验室等计算机的权限控制和使用情况记录。只需要使用员工卡或者校园卡,即可授权登录计算机并记录登录时间,方便快捷。友我计......
  • React项目优化
    一、使用React.memo对于纯组件(PureComponents),使用React.memo包装,防止不必要的重染。importReact,{useState,memo}from"react";//定义一个纯组件constChildComponent=({value})=>{console.log("ChildComponentrendered");return<div>子组件的......