当前位置: 首页 > news >正文

【人工智能】—_贝叶斯网络、概率图模型、全局语义、因果链、朴素贝叶斯模型、枚举推理、变量消元

文章目录

  • 频率学派 vs. 贝叶斯学派
  • 贝叶斯学派
  • Probability(概率):
  • 独立性/条件独立性:
  • Probability Theory(概率论):
  • Graphical models (概率图模型)
    • 什么是图模型(Graphical Models)
    • 图是什么
    • 计算机科学中的图模型:
    • 为什么图模型有用?
    • 图模型:统一框架
    • 图模型在机器学习中的作用:
    • 图的方向性:
  • 贝叶斯网络
    • 举例说明:
    • 举例说明:
  • Compactness(紧致性)
  • 全局语义
  • 局部语义
  • 因果链
  • 共同原因
  • 共同效应
  • 构建贝叶斯网络
    • 构建贝叶斯网络举例
    • 因果方向
    • 因果性?
  • 贝叶斯网络中的推理
    • 推理任务
    • 枚举推理
    • 枚举推理举例
    • 枚举效率不高
  • 变量消元
  • 精确推理的复杂度
    • 举例:朴素贝叶斯模型
    • 举例:垃圾邮件检测
    • 举例:数字识别器
  • 对朴素贝叶斯模型的评价:

频率学派 vs. 贝叶斯学派

频率学派:

  • 概率是事件发生的长期预期频率。
  • P(A) = n/N,其中n是事件A在N次机会中发生的次数。
  • "某事发生的概率是0.1"意味着0.1是在无穷多样本的极限条件下能够被观察到的比例。
  • 在许多情况下,不可能进行重复实验。
  • 例如问题:第三次世界大战发生的概率是多少?

贝叶斯学派

  • 概率是信念的度量。
  • 它是一种基于不完全知识给出事件可能性的度量。
  • 贝叶斯分析从先验信念开始,根据新的数据更新这种信念。
  • 贝叶斯概率的主观性可能是一个限制,因为不同的人可能有不同的先验信念,并且可能根据相同的数据以不同的方式更新他们的信念。

Probability(概率):

  • Probability(概率)是对不确定知识一种严密的形式化方法。
  • 它提供了一种量化不同事件或结果的可能性的方式。
  • 全联合概率分布指定了对随机变量的每种完全赋值,即每个原子事件的概率。
  • 可以通过把对应于查询命题的原子事件的条目相加的方式来回答查询。
  • 对于复杂的领域,联合分布可能会变得过于复杂,我们必须找到一种方法来减少它的大小。
  • 独立性和条件独立性提供了分解联合分布和简化计算的工具。

独立性/条件独立性:

  • 当且仅当 P ( A ∣ B ) = P ( A ) P(A|B) = P(A) P(AB)=P(A),或 P ( B ∣ A ) = P ( B ) P(B|A) = P(B) P(BA)=P(B),或 P ( A , B ) = P ( A ) P ( B ) P(A,B) = P(A)P(B) P(A,B)=P(A)P(B)时,A和B是独立的。
  • 如果 P ( A ∣ B , C ) = P ( A ∣ C ) P(A|B,C) = P(A|C) P(AB,C)=P(AC),则在给定C的条件下,A对于B是条件独立的。
  • 在大多数情况下,使用条件独立性可以将全联合概率的表示从指数关系减少为线性关系。
  • 条件独立性是我们关于不确定环境最基本和最强大的知识形式。
  • 它可以简化复杂模型和更有效地进行推断。

Probability Theory(概率论):

  • 概率论可以用两个简单的方程式表达:
    • 加法规则(Sum Rule): P ( X ) = ∑ Y P ( X , Y ) P(X) = \sum_Y P(X,Y) P(X)=YP(X,Y),通过边缘化或求和其他变量来获得变量的概率。
    • 乘法规则(Product Rule): P ( X , Y ) = P ( X ∣ Y ) P ( Y ) P(X,Y) = P(X|Y)P(Y) P(X,Y)=P(XY)P(Y),联合概率可以用条件概率表达。
  • 所有的概率推断和学习都可以归结为不断应用加法规则和乘法规则。

Graphical models (概率图模型)

什么是图模型(Graphical Models)

  • 图模型是概率分布的图表表示。
  • 它是概率论和图论的结合。
  • 也被称为概率图模型(Probabilistic Graphical Models)。
  • 它们增强了分析,而不是使用纯代数。

图是什么

  • 由节点(也称为顶点)和链接(也称为边或弧)组成。在这里插入图片描述
  • 在概率图模型中,
    • 每个节点表示一个随机变量(或一组随机变量)。
    • 链接表示变量之间的概率关系。

计算机科学中的图模型:

  • 处理不确定性和复杂性的自然工具,这些概念贯穿应用数学和工程。
  • 图模型的基本思想是模块化,即通过组合较简单的部分来构建复杂的系统。
  • 图模型为许多领域提供了一种有效的建模和推断方法,如人工智能、机器学习、计算机视觉和自然语言处理等。

为什么图模型有用?

  • 概率理论提供了粘合剂,通过它,各部分得以结合,从而确保整个系统的一致性,并为模型与数据之间提供接口。
  • 图论方面提供了:
    • 直观的可视化界面,使人类能够对高度交互的变量集进行建模。
    • 数据结构,自然地适合设计高效的通用算法。
  • 图模型为许多领域提供了一种有效的建模和推断方法,如人工智能、机器学习、计算机视觉和自然语言处理等。

图模型:统一框架

  • 将经典的多元概率系统视为共同的基础形式,如混合模型、因子分析、隐马尔可夫模型、卡尔曼滤波器等。
  • 在系统工程、信息理论、模式识别和统计力学等领域中遇到。
  • 观点的优点:
    • 可以在不同领域之间转移和利用特定技术。
    • 为设计新系统提供自然框架。
  • 图模型为许多领域提供了一种有效的建模和推断方法,如人工智能、机器学习、计算机视觉和自然语言处理等。

图模型在机器学习中的作用:

  1. 形象化概率模型的结构,提供了一种简单的可视化方式。
  2. 通过检查图,可以深入了解模型的属性,如条件独立性属性。
  3. 需要进行推断和学习的复杂计算可以表示为图操作,从而简化了计算过程。

图的方向性:

  • 有向图模型

    • 箭头表示方向性。

    • 贝叶斯网络在这里插入图片描述

      • 表示随机变量之间的因果关系。
    • 在人工智能和统计学中更为流行。

  • 无向图模型

    • 没有箭头的链接。

    • 马尔科夫随机场在这里插入图片描述

      • 更适合表示变量之间的软约束。
    • 在视觉和物理学中更为流行。

贝叶斯网络

贝叶斯网络是一种简单的、图形化的数据结构,用于表示变量之间的依赖关系(条件独立性),为任何全联合概率分布提供一种简明的规范。

  • 语法:
    • 一个节点对应一个变量。
    • 一个有向无环图(DAG)(链接≈“直接影响”)。
    • 每个节点都有一个条件分布,给定其父节点的条件下的概率分布: P ( X i ∣ P a r e n t s ( X i ) ) P(X_i | Parents(X_i)) P(XiParents(Xi)),量化其父节点对该节点的影响。
  • 在最简单的情况下,条件分布可以表示为一个条件概率表(CPT),给出每个父节点值组合下Xi的分布。

举例说明:

网络的拓扑结构编码了条件独立性的断言:

  • 天气与其他变量无关。
  • 在给定牙齿蛀牙的情况下,牙痛和牙感染(Catch)是条件独立的。
    在这里插入图片描述

举例说明:

我正在工作,邻居约翰(John)打电话说我的闹钟响了,但邻居玛丽(Mary)没有打电话。有时它会因为小的地震而触发。这是不是有夜贼?

变量:入室行窃、地震、闹钟、約翰打电话、玛丽打电话。
网络拓扑反映了“因果”知识:

  • 夜贼可以触发闹钟。

  • 地震可以触发闹钟。

  • 闹钟可以导致玛丽打电话。

  • 闹钟可以导致约翰打电话。

    • P(Burglary)
    • P(Earthquake)
    • P(Alarm | Burglary, Earthquake)
    • P(JohnCalls | Alarm)
    • P(MaryCalls | Alarm)
  • 给定观测到的变量,可以进行推断,例如:

    • 如果John报警,那么入室行窃的后验概率是多少?
    • 如果没有人打电话,那么地震的后验概率是多少?
    • 如果没有地震,也没有报警,那么入室行窃的后验概率是多少?

通过贝叶斯网络,可以直观地表达变量之间的依赖关系和条件独立性,从而进行推断和决策。
在这里插入图片描述

Compactness(紧致性)

一个具有k个布尔父节点的布尔变量的条件概率表中有 2 k 2^k 2k个独立的可指定概率,对应于父节点值的组合。

每一行需要一个数字 p p p,表示 X i X_i Xi = = = t r u e true true的概率( X i X_i Xi = = = f a l s e false false的概率是 1 − p 1-p 1p)。在这里插入图片描述

如果每个变量的父节点不超过k个,则完整的网络需要 O ( n ⋅ 2 k ) O(n \cdot 2^k) O(n2k)个数字。与完整的联合分布相比,其增长率是线性的,而不是 O ( 2 n ) O(2^n) O(2n)

例如,对于入室行窃网络,有 1 + 1 + 4 + 2 + 2 = 10 1 + 1 + 4 + 2 + 2 = 10 1+1+4+2+2=10个数字(而全联合分布有 2 5 − 1 = 31 2^{5}-1=31 251=31)。

全局语义

在贝叶斯网络中,全联合概率分布可以表示为所有变量的条件概率分布的乘积,即:

P ( X 1 , X 2 , . . . , X n ) = ∏ i = 1 n P ( X i ∣ P a r e n t s ( X i ) ) P(X_{1},X_{2},...,X_{n}) = \prod_{i=1}^{n}P(X_{i}|Parents(X_{i})) P(X1,X2,...,Xn)=i=1nP(XiParents(Xi))在这里插入图片描述

这个等式表明,联合概率分布可以完全由局部条件概率分布确定。这意味着,贝叶斯网络提供了一种紧凑、可解释、易于推断的方式来表示联合概率分布。

局部语义

局部语义指的是,给定父节点,一个节点与它的非后代节点是条件独立的。换句话说,每个节点只依赖于它的父节点和自身,与其他节点无关。在这里插入图片描述

定理:局部语义 ⇔ \Leftrightarrow 全局语义

即,全局语义中的联合概率分布可以由每个节点的条件概率分布表示,每个节点的条件独立性质可以保证全局条件独立性质。

因果链

  • 基本结构
    在这里插入图片描述

    • 在给定Y的条件下,X是否与Z独立?在这里插入图片描述

    • 沿着链的证据“阻止”了影响。

因果链是一种基本的因果结构,其中一个变量直接影响另一个变量,从而构成一个链。例如,如果X导致Y,然后Y导致Z,那么这个结构就是一个因果链。

在因果链中,如果给定Y的条件下,X和Z是独立的,那么我们可以说Y是一个“阻碍变量”,它“阻止”了X对Z的影响。这种阻碍效应是因果推断的基础,因为它们提供了关于变量间因果关系的信息。

共同原因

  • 另一个基本结构:同一原因的两个影响在这里插入图片描述

    • X和Z是否独立?
    • 在给定Y的条件下,X和Z是否独立?在这里插入图片描述

共同原因是另一个基本的因果结构,其中两个变量都受到同一原因的影响。例如,如果X和Z都是由Y导致的,那么这个结构就是一个共同原因。

在共同原因结构中,如果没有给定Y,那么X和Z可能会出现关联。但是,如果给定Y,则X和Z可能成为条件独立的,因为给定Y的情况下,它们的共同原因已经被控制。这种情况被称为“控制反应”,它提供了关于变量间因果关系的信息。

共同效应

• 最后一种结构:一个影响的两个原因(v-structures)在这里插入图片描述

  • X和Z是否独立?
    • 是:记住球赛和下雨导致交通堵塞,没有相关性吗?
  • 在给定Y的条件下,X和Z是否独立?
    • 不是:记住看到交通堵塞让雨和球赛处于竞争状态吗?
  • 这与其他情况不同
    • 观察效应可以使原因之间产生影响。

共同效应是一种因果结构,其中两个原因都可以导致同一效应。例如,如果X和Z都可以导致Y,那么这个结构就是一个共同效应。

在共同效应结构中,如果X和Z都是独立的,那么它们可能不会对Y产生影响,因为它们没有直接的关系。但是,如果给定了Y,则X和Z可能成为条件独立的,因为在给定Y的情况下,它们之间的影响路径被阻断了。这种情况被称为“掩蔽”,它提供了关于变量间因果关系的信息。

需要注意的是,观察到效应可能会导致原因之间产生影响,这与其他情况不同。例如,如果我们观察到交通堵塞,那么球赛和下雨可能会成为竞争因素,从而影响彼此的发生概率。这种情况是与其他情况相反的,因为观察到效应可以启用原因之间的影响。
在这里插入图片描述

构建贝叶斯网络

需要一种方法使得局部的条件独立关系能够保证全局语义得以成立。

  1. 选择变量 X 1 X_1 X1 X 2 X_2 X2,…, X n X_n Xn的顺序。
  2. 对于 i = 1 i = 1 i=1 n n n,将 X i X_i Xi添加到网络中,并从 X 1 X_1 X1 X 2 X_2 X2,…, X i − 1 X_{i-1} Xi1中选择父节点,使得条件概率符合以下条件:
    P ( X i ∣ P a r e n t s ( X i ) ) = P ( X i ∣ X 1 , . . . , X i − 1 ) P(X_i|Parents(X_i)) = P(X_i|X_1,...,X_{i-1}) P(XiParents(Xi))=P(XiX1,...,Xi1)

这种父节点的选择方式可以保证全局语义成立:
P ( X 1 , . . . , X n ) = P ( X i ∣ X 1 , . . . , X i − 1 ) = ∏ i = 1 n P ( X i ∣ P a r e n t s ( X i ) ) (使用链法则、通过上述构建方法) P(X_1,...,X_n) = P(X_i|X_1,...,X_{i-1})= \prod_{i=1}^{n} P(X_i | Parents(X_i))\\(使用链法则、通过上述构建方法) P(X1,...,Xn)=P(XiX1,...,Xi1)=i=1nP(XiParents(Xi))(使用链法则、通过上述构建方法)

通过这种构建方式,可以保证贝叶斯网络中的条件独立关系与全局语义相一致。此外,这种构建方式还具有计算效率高、可解释性强等优点。

  • 要求网络的拓扑结构确实反映了合适的父节点集对每个变量
    的那些直接影响。
  • 添加节点的正确次序是首先添加“根本原因”节点,然后加
    入受它们直接影响的变量,以此类推。

构建贝叶斯网络举例

在这里插入图片描述

假设我们选择顺序为M,J,A,B,E。下面是对每个问题的解释:

  1. P ( J ∣ M ) = P ( J ) ? P(J | M) = P(J)? P(JM)=P(J)? No
    这个问题询问M是否影响J的概率。从网络结构来看,M是J的父节点,因此M会影响J的概率。因此, P ( J ∣ M ) ≠ P ( J ) P(J | M) \neq P(J) P(JM)=P(J)

  2. P ( A ∣ J , M ) = P ( A ∣ J ) ? P(A | J, M) = P(A | J)? P(AJ,M)=P(AJ)? No
    这个问题询问J和M是否一起影响A的概率,或者说是否存在直接影响A的路径上的变量被忽略了。从网络结构来看,A的父节点是M和J,因此M会影响A的概率。因此, P ( A ∣ J , M ) ≠ P ( A ∣ J ) P(A | J, M) \neq P(A | J) P(AJ,M)=P(AJ)

  3. P ( B ∣ A , J , M ) = P ( B ∣ A ) ? P(B | A, J, M) = P(B | A)? P(BA,J,M)=P(BA)? Yes
    这个问题询问是否存在一个变量,使得在给定其他相关变量的情况下,该变量与B的独立性与其他变量无关。从网络结构来看,B的父节点是M和E,而A和J不是B的父节点,因此在给定A和J的情况下,M和E对B的概率具有独立性。因此, P ( B ∣ A , J , M ) = P ( B ∣ A ) P(B | A, J, M) = P(B | A) P(BA,J,M)=P(BA)

  4. P ( B ∣ A , J , M ) = P ( B ) ? P(B | A, J, M) = P(B)? P(BA,J,M)=P(B)? No
    这个问题询问B是否独立于M和J。从网络结构来看,B的父节点是M和E,而J和A不是B的父节点,因此在给定A和J的情况下,M和E对B的概率具有独立性,但是B的概率仍然会受到E的影响。因此, P ( B ∣ A , J , M ) ≠ P ( B ) P(B | A, J, M) \neq P(B) P(BA,J,M)=P(B)

  5. P ( E ∣ B , A , J , M ) = P ( E ∣ A ) ? P(E | B, A, J, M) = P(E | A)? P(EB,A,J,M)=P(EA)? No
    这个问题询问是否存在一个变量,使得在给定其他相关变量的情况下,该变量与E的独立性与其他变量无关。从网络结构来看,E的父节点是B,B对E的概率仍然有影响。因此, P ( E ∣ B , A , J , M ) ≠ P ( E ∣ A ) P(E | B, A, J, M) \neq P(E | A) P(EB,A,J,M)=P(EA)

  6. P ( E ∣ B , A , J , M ) = P ( E ∣ A , B ) ? P(E | B, A, J, M) = P(E | A, B)? P(EB,A,J,M)=P(EA,B)? Yes
    这个问题询问是否存在一个变量,使得在给定其他相关变量的情况下,该变量与E的独立性与其他变量无关。从网络结构来看,E的父节点是B,而J和M不是E的父节点,因此 P ( E ∣ B , A , J , M ) = P ( E ∣ A , B ) P(E | B, A, J, M) = P(E | A, B) P(EB,A,J,M)=P(EA,B)

因果方向

决定非因果方向上的条件独立关系是困难的。因为在这种情况下,变量之间的关系可能是相互影响的,而不是单向因果关系。这使得我们不能简单地依靠因果模型和条件独立性来解决问题。

相比之下,在因果方向上,因果模型和条件独立性是相对容易理解的,因为它们反映了真实世界中变量之间的因果关系。这是因为我们的大脑天生被设计用来理解因果关系,而不是非因果关系。

此外,在非因果方向上,构建网络所需的数字数量通常更多,因为我们需要考虑所有可能的相互作用,而不仅仅是单向因果关系。例如,在一个由5个变量组成的网络中,如果我们选择非因果方向,则需要13个数字来表示条件概率分布,而在因果方向上只需要5个数字

综上所述,虽然在非因果方向上决定条件独立关系是困难的,但因果模型和条件独立性仍然是人类天生熟悉的概念,可以帮助我们更好地理解复杂的关系网络。

数学公式:
在给定变量X和Y的情况下,如果变量Z与变量Y条件独立,则可以表示为:
P ( Z ∣ X , Y ) = P ( Z ∣ X ) P(Z|X,Y)=P(Z|X) P(ZX,Y)=P(ZX)

因果性?

  • 当贝叶斯网络反映真实因果模式时:

    • 常常更简单(节点具有较少的父节点)
    • 常常更易于思考
    • 常常更容易从专家那里获取
  • 贝叶斯网络不一定是因果的

    • 有时在领域中不存在因果网络(特别是如果变量缺失)
    • 最终得到的箭头反映相关性,而不是因果关系
  • 箭头真正意味着什么?

    • 拓扑结构可能偶然编码了因果结构
    • 拓扑结构真正编码了条件独立性

贝叶斯网络中的推理

推理任务

贝叶斯网络中通常需要进行以下三种推理任务:

  1. 简单查询(Simple queries):计算后验概率 P ( X i ∣ E = e ) P(X_i | E=e) P(XiE=e)。例如,给定油表为空,车灯亮起且车辆未启动的情况下,计算没有汽油的概率 P ( N o G a s ∣ G a u g e 油表 = e m p t y , L i g h t s = o n , S t a r t s = f a l s e ) P(NoGas|Gauge油表=empty, Lights=on, Starts=false) P(NoGasGauge油表=empty,Lights=on,Starts=false)

  2. 联合查询(Conjunctive queries):计算 P ( X i , X j ∣ E = e ) = P ( X i ∣ E = e ) P ( X j ∣ X i , E = e ) P(X_i, X_j | E=e) = P(X_i | E=e)P(X_j | X_i, E=e) P(Xi,XjE=e)=P(XiE=e)P(XjXi,E=e)。这种查询涉及两个或多个变量的联合概率分布。
    这个等式成立是因为它基于条件概率的定义和贝叶斯定理。

根据条件概率的定义,我们有: P ( X i , X j ∣ E = e ) = P ( X i , X j , E = e ) P ( E = e ) P(X_i,X_j|E=e) = \frac{P(X_i,X_j,E=e)}{P(E=e)} P(Xi,XjE=e)=P(E=e)P(Xi,Xj,E=e)
接下来,我们可以将分子 P ( X i , X j , E = e ) P(X_i,X_j,E=e) P(Xi,Xj,E=e)拆分为条件概率的形式,即: P ( X i , X j , E = e ) = P ( X j ∣ X i , E = e ) P ( X i , E = e ) P(X_i,X_j,E=e) = P(X_j|X_i,E=e)P(X_i,E=e) P(Xi,Xj,E=e)=P(XjXi,E=e)P(Xi,E=e) 将上式代入分母 P ( E = e ) P(E=e) P(E=e)中,得到: P ( X i , X j ∣ E = e ) = P ( X j ∣ X i , E = e ) P ( X i , E = e ) P ( E = e ) P(X_i,X_j|E=e) = \frac{P(X_j|X_i,E=e)P(X_i,E=e)}{P(E=e)} P(Xi,XjE=e)=P(E=e)P(XjXi,E=e)P(Xi,E=e) 接着,根据贝叶斯定理,我们可以将条件概率 P ( X i , E = e ) P(X_i,E=e) P(Xi,E=e)表示为: P ( X i , E = e ) = P ( X i ∣ E = e ) P ( E = e ) P(X_i,E=e) = P(X_i|E=e)P(E=e) P(Xi,E=e)=P(XiE=e)P(E=e) 代入上式中,得到: P ( X i , X j ∣ E = e ) = P ( X j ∣ X i , E = e ) P ( X i ∣ E = e ) P ( E = e ) P ( E = e ) P(X_i,X_j|E=e) = \frac{P(X_j|X_i,E=e)P(X_i|E=e)P(E=e)}{P(E=e)} P(Xi,XjE=e)=P(E=e)P(XjXi,E=e)P(XiE=e)P(E=e) 化简后,即可得到:
P ( X i , X j ∣ E = e ) = P ( X j ∣ X i , E = e ) P ( X i ∣ E = e ) P(X_i,X_j|E=e) = P(X_j|X_i,E=e)P(X_i|E=e) P(Xi,XjE=e)=P(XjXi,E=e)P(XiE=e)

这就是等式 P ( X i , X j ∣ E = e ) = P ( X i ∣ E = e ) P ( X j ∣ X i , E = e ) P(X_i,X_j|E=e) = P(X_i|E=e)P(X_j|X_i,E=e) P(Xi,XjE=e)=P(XiE=e)P(XjXi,E=e)的推导过程。它表示在给定观测值 E = e E=e E=e的条件下,变量 X i X_i Xi X j X_j Xj的联合概率分布可以表示为在给定 E = e E=e E=e的条件下,变量 X i X_i Xi的条件概率分布和在给定 E = e E=e E=e X i X_i Xi的条件下,变量 X j X_j Xj的条件概率分布的乘积。这个等式在贝叶斯网络中具有重要的应用价值,可以用于概率推断和条件概率分布的计算等任务。

  1. 最优决策(Optimal decisions):决策网络包括效用信息;需要概率推理以计算 P ( o u t c o m e ∣ a c t i o n , e v i d e n c e ) P(outcome|action, evidence) P(outcomeaction,evidence),其中outcome表示结果,action表示决策,evidence表示证据。这种推理任务通常用于在不确定性环境中做出最优决策。

这些推理任务可以帮助我们理解变量之间的概率关系,并用于许多实际应用,例如医学诊断、金融风险预测和自然语言处理等。

枚举推理

枚举推理是一种在贝叶斯网络中进行推理的方法,它通过计算条件概率的乘积并求和来回答查询,而不需要显式构建联合概率分布的完整表示。

在贝叶斯网络中,可以使用条件概率乘积的形式表示全联合概率分布。具体来说,假设我们有一个由变量 X 1 , X 2 , . . . , X n X_1, X_2, ..., X_n X1,X2,...,Xn组成的贝叶斯网络 B B B,则可以将全联合概率分布 P ( X 1 , X 2 , . . . , X n ) P(X_1, X_2, ..., X_n) P(X1,X2,...,Xn)表示为:
P ( X 1 , X 2 , . . . , X n ) = ∏ i = 1 n P ( X i ∣ P a r e n t ( X i ) ) 其中, P a r e n t ( X i ) 表示变量 X i 的父节点集合。 P(X_1, X_2, ..., X_n) = \prod_{i=1}^n P(X_i | Parent(X_i))\\其中,Parent(X_i)表示变量X_i的父节点集合。 P(X1,X2,...,Xn)=i=1nP(XiParent(Xi))其中,Parent(Xi)表示变量Xi的父节点集合。

这个公式利用了条件独立性的性质,即在给定父节点的情况下,每个变量的条件概率只依赖于其父节点,而与其他变量无关。因此,我们可以将全联合概率分布表示为每个变量的条件概率的乘积,从而简化计算的复杂度。
这个公式可以用于进行贝叶斯网络的推理,例如计算给定证据的情况下某个变量的后验概率。

枚举推理的基本思想是枚举网络中的每个变量,对每个变量计算其条件概率,并将它们相乘。然后,将所有变量的条件概率乘积相加,得到所需的概率分布。在这个过程中,枚举推理使用了贝叶斯定理和条件独立性的性质,对计算过程进行了简化。

枚举推理是一种比较直观的方法,可以在计算条件概率时避免显式地构建完整的联合概率分布。然而,当网络结构较为复杂时,枚举推理的计算复杂度会非常高,因此需要使用其他更高效的推理方法,例如变量消元和近似推理等。

总的来说,枚举推理是一种简单而直观的推理方法,可以用于解决许多实际问题,但在处理大型网络时可能会面临计算复杂度高的问题。

枚举推理举例

从“偷窃”网络简单查询在这里插入图片描述

在这里插入图片描述
使用条件概率表项重写全联合项
在这里插入图片描述
递归深度优先搜索: O ( n ) 空间复杂度, O ( d n ) 时间复杂度 O(n)空间复杂度,O(d^n)时间复杂度 O(n)空间复杂度,O(dn)时间复杂度

枚举效率不高

在这里插入图片描述
重复计算 P ( j ∣ a ) P ( m ∣ a ) P(j|a)P(m|a) P(ja)P(ma)对于e的每个取值

变量消元

变量消元是贝叶斯网络中一种常用的推理方法,它通过从右到左进行求和,并存储中间结果(因子)以避免重新计算,来简化计算复杂度。

变量消元的基本思想是将网络中的变量根据其与待求变量的关系进行分组,将每组变量的条件概率分布乘起来,得到一个新的因子。然后,对于不需要的变量,可以将它们从因子中消去,最终得到一个只包含待求变量的因子。通过对这个因子进行归一化,我们可以得到待求变量的后验概率分布。

变量消元可以通过多种方式实现,例如求和-乘积算法和置信传播算法等。其中,求和-乘积算法是最常用的变量消元算法之一。该算法使用因子表示联合概率分布,通过从右到左进行求和的方式,逐步消去不需要的变量,最终得到只包含待求变量的因子。

变量消元是一种高效且常用的推理方法,可以用于计算贝叶斯网络中任意变量的后验概率分布。

在这里插入图片描述

精确推理的复杂度

在贝叶斯网络中,精确推理的复杂度取决于网络的结构和大小。对于单联通网络(或多树),变量消元的时间和空间复杂度都与网络规模呈线性关系,具体地说,是 O ( d k n ) O(d^kn) O(dkn),其中d是每个节点的最大父节点数,k是每个节点的最大取值数,n是网络中的节点数。

对于多联通网络,精确推理的复杂度可能非常高,实际上,它可以被归约到解决3SAT问题上,从而是NP难的。此外,计算多联通网络的模型数量等价于计数3SAT模型的数量,这被称为#P完全问题。

总的来说,精确推理在单联通网络(或多树)上是高效的,但在多联通网络上可能非常困难,需要使用近似推理或其他高级技术来解决。
在这里插入图片描述

举例:朴素贝叶斯模型

朴素贝叶斯模型是一种基于贝叶斯定理的分类算法,它假设每个特征与其他特征相互独立。这使得朴素贝叶斯模型的计算复杂度低,同时在许多实际应用中表现出色。在这里插入图片描述

在朴素贝叶斯模型中,假设有一个类别变量 Y Y Y n n n个特征变量 X 1 , X 2 , . . . , X n X_1, X_2, ..., X_n X1,X2,...,Xn。朴素贝叶斯模型假设每个特征变量 X i X_i Xi与类别变量 Y Y Y相互独立,但在给定类别变量 Y Y Y的情况下,每个特征变量 X i X_i Xi可能的取值是有条件依赖的。因此,我们可以使用贝叶斯定理来计算给定类别变量 Y Y Y和特征变量 X 1 , X 2 , . . . , X n X_1, X_2, ..., X_n X1,X2,...,Xn的联合概率分布:

P ( Y , X 1 , X 2 , . . . , X n ) = P ( Y ) ∏ i = 1 n P ( X i ∣ Y ) P(Y, X_1, X_2, ..., X_n) = P(Y) \prod_{i=1}^n P(X_i | Y) P(Y,X1,X2,...,Xn)=P(Y)i=1nP(XiY)

其中, P ( Y ) P(Y) P(Y)是类别变量 Y Y Y的先验概率分布, P ( X i ∣ Y ) P(X_i | Y) P(XiY)是在给定类别变量 Y Y Y的情况下,特征变量 X i X_i Xi的条件概率分布。

可以使用朴素贝叶斯模型进行分类,即给定一个未知的特征向量 X = ( X 1 , X 2 , . . . , X n ) X=(X_1, X_2, ..., X_n) X=(X1,X2,...,Xn),我们可以计算每个类别变量 Y Y Y的后验概率分布 P ( Y ∣ X ) P(Y|X) P(YX),然后选择后验概率最大的类别作为预测结果。

总的来说,朴素贝叶斯模型是一种简单而有效的分类算法,适用于许多实际应用场景,如文本分类、垃圾邮件过滤等。

举例:垃圾邮件检测

假设我们要解决自动检测垃圾邮件的问题。一个简单的起点是仅查看邮件中的“主题:”头,并通过检查一些简单的可计算特征来尝试识别垃圾邮件。我们考虑的两个简单特征是:

Caps:主题头是否全部大写
Free:主题头是否包含单词“free”,无论是大写还是小写

该模型基于以下三个随机变量:Caps(是否全大写)、Free(是否包含单词“free”)和Spam(是否为垃圾邮件),每个变量都取值为Y(是)或N(否)。

具体来说,当且仅当邮件主题不含小写字母时,Caps = Y;当且仅当邮件主题中包含单词“free”(不区分大小写)时,Free = Y;当且仅当邮件是垃圾邮件时,Spam = Y。

我们可以使用联合概率分布来描述这三个变量之间的关系,即:

P ( F r e e , C a p s , S p a m ) = P ( S p a m ) P ( C a p s ∣ S p a m ) P ( F r e e ∣ S p a m ) P(Free, Caps, Spam) = P(Spam) P(Caps|Spam) P(Free|Spam) P(Free,Caps,Spam)=P(Spam)P(CapsSpam)P(FreeSpam)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

举例:数字识别器

在这里插入图片描述

  • 简单版本:
    • 每个网格位置<i,j>都有一个特征Fij
    • 可能的特征值是开/关,基于底层图像中强度是否大于0.5
    • 每个输入对应一个特征向量,例如:在这里插入图片描述
    • 这里有很多特征,每个特征都是二进制的
    • 朴素贝叶斯模型:在这里插入图片描述
  • 条件概率表
    在这里插入图片描述

对朴素贝叶斯模型的评价:

  1. 通过假设条件独立性,使概率推理变得可行。这个假设虽然很强,但是在许多实际应用中都表现出了较好的效果。

  2. 尽管使用了这个强假设,朴素贝叶斯模型在许多应用中表现出色,尤其是在文本分类等领域。

  3. 实验表明,朴素贝叶斯模型在标准数据集上与其他分类方法相比具有相当的竞争力。

  4. 特别是在文本分类中,例如垃圾邮件过滤,朴素贝叶斯模型非常受欢迎。

总的来说,朴素贝叶斯模型是一种简单而有效的分类算法,尤其适用于文本分类和垃圾邮件过滤等应用。虽然它有一个强假设,但在许多实际应用中,它表现得很好,并且在竞争性实验中也表现出良好的性能。

相关文章:

【人工智能】—_贝叶斯网络、概率图模型、全局语义、因果链、朴素贝叶斯模型、枚举推理、变量消元

文章目录 频率学派 vs. 贝叶斯学派贝叶斯学派Probability&#xff08;概率&#xff09;:独立性/条件独立性&#xff1a;Probability Theory&#xff08;概率论&#xff09;:Graphical models &#xff08;概率图模型&#xff09;什么是图模型&#xff08;Graphical Models&…...

学习笔记:ROS使用经验( 查看rostopic的信息)

查看topic的信息 要查看ROS中的话题信息&#xff0c;你可以使用以下命令&#xff1a; 1.查看所有活动话题&#xff1a; $ rostopic list这将列出当前运行的所有活动话题。 2.查看特定话题的消息类型&#xff1a; $ rostopic info <topic_name>将<topic_name>替…...

数据库——redis内存淘汰,持久化机制

文章目录 Redis 内存淘汰机制了解么&#xff1f;⭐了解操作系统中lru并尝试用java实现lru 2.Redis 持久化机制(怎么保证 Redis 挂掉之后再重启数据可以进行恢复)快照&#xff08;snapshotting&#xff09;持久化&#xff08;RDB&#xff09;AOF&#xff08;append-only file&am…...

亚马逊云科技 云技能孵化营 我也说ai

自从chatgpt大火以后&#xff0c;我也关注了人工智能方面的东西&#xff0c;偶尔同学推荐参加了亚马逊云科技云技能孵化营活动&#xff0c;免费学习了亚马逊云科技和机器学习方面的知识&#xff0c;还获得了小礼品&#xff0c;现在将活动及心得分享给大家。 活动内容&#xff…...

『PyQt5-基础篇』| 04 Qt Designer的初步快速了解

04 Qt Designer的初步快速了解 1 Qt Designer入口2 Qt Designer-Widget Box2.1 窗口部件盒(Widget Box)2.2 Layouts布局2.3 Spacers间隔部件2.4 Button按钮2.5 Item Views(Model-Based)2.6 Item Widgets(Item-Based)2.7 Containers容器2.8 Input Widget输入部件2.9 Display W…...

SpringCloud学习笔记(十一)_Hystrix仪表盘

我们来看一下如何使用它吧 1.引入依赖 1 2 3 4 5 6 7 8 9 10 11 12 | <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </depende…...

# ruby安装设置笔记

ruby安装设置笔记 文章目录 ruby安装设置笔记1 克隆并设置环境变量2 安装ruby3 设置ruby4 设置源5 安装bundler6 检查安装后的软件版本7 ubuntu 20.04 默认ruby环境 系统自带的ruby版本低了&#xff0c;需要手动安装更高版本&#xff08;使用rbenv方式&#xff09; 环境&#x…...

关于对文件路径权限判断的记录

首先需要添加引用 using System.Security.AccessControl;以下为具体代码&#xff0c;其中fileServerPath为需要判断的文件路径 #region Authority judgmentDirectorySecurity fileAcl Directory.GetAccessControl(fileServerPath);var rules fileAcl.GetAccessRules(true, t…...

git 基础

1.下载安装Git&#xff08;略&#xff09; 2.打开git bash窗口 3.查看版本号、设置用户名和邮箱 用户名和邮箱可以随意起&#xff0c;与GitHub的账号邮箱没有关系 4.初始化git 在D盘中新建gitspace文件夹&#xff0c;并在该目录下打开git bash窗口 git init 初始化完成后会…...

C语言网络编程实现广播

1.概念 如果同时发给局域网中的所有主机&#xff0c;称为广播 我们可以使用命令查看我们Linux下当前的广播地址&#xff1a;ifconfig 2.广播地址 以192.168.1.0 (255.255.255.0) 网段为例&#xff0c;最大的主机地址192.168.1.255代表该网段的广播地址&#xff08;具体以ifcon…...

js对url进行编码解码(三种方式)

第一种&#xff1a;escape 和 unescape escape()不能直接用于URL编码&#xff0c;它的真正作用是返回一个字符的Unicode编码值 它的具体规则是&#xff0c;除了ASCII字母、数字、标点符号" * _ - . /"以外&#xff0c;对其他所有字符进行编码。在u0000到u00ff之间…...

React面向组件编程

往期回顾&#xff1a;# React基础入门之虚拟Dom【一】 面向组件编程 react是面向组件编程的一种模式&#xff0c;它包含两种组件类型&#xff1a;函数式组件及类式组件 函数式组件 注&#xff1a;react17开始&#xff0c;函数式组件成为主流 一个基本的函数组件长这个样子 …...

Linux 多线程同步机制(上)

文章目录 前言一、线程同步二、互斥量 mutex三、死锁总结 前言 一、线程同步 在多线程环境下&#xff0c;多个线程可以并发地执行&#xff0c;访问共享资源&#xff08;如内存变量、文件、网络连接 等&#xff09;。 这可能导致 数据不一致性, 死锁, 竞争条件等 问题。 为了解…...

C++学习vector

1,把list的相关函数都实现出来&#xff08;未完&#xff09; 2&#xff0c; 运行结果&#xff1a;...

17.3 【Linux】systemctl 针对 service 类型的配置文件

17.3.1 systemctl 配置文件相关目录简介 服务的管理是通过 systemd&#xff0c;而 systemd 的配置文件大部分放置于/usr/lib/systemd/system/ 目录内。但是 Red Hat 官方文件指出&#xff0c; 该目录的文件主要是原本软件所提供的设置&#xff0c;建议不要修改&#xff01;而要…...

融云获评「创业邦 · 最具创新价值出海服务商」

点击报名&#xff0c;9 月 21 日融云直播课 8 月 22 日 - 23 日&#xff0c;创业邦主办的“2023 DEMO WORLD 全球开放式创新大会暨企业出海未来大会”在上海举行&#xff0c;会上发布了“创业邦 2023 出海企业创新价值 100 强”&#xff0c;融云荣登榜单&#xff0c;获评“最具…...

【中危】Apache XML Graphics Batik<1.17 存在SSRF漏洞 (CVE-2022-44729)

zhi.oscs1024.com​​​​​ 漏洞类型SSRF发现时间2023-08-23漏洞等级中危MPS编号MPS-2022-63578CVE编号CVE-2022-44729漏洞影响广度极小 漏洞危害 OSCS 描述Apache XML Graphics Batik 是一个开源的、用于处理可缩放矢量图形(SVG)格式图像的工具库。 受影响版本中&#xff0…...

AssemblyManager 程序集管理器

AssemblyManager 程序集管理器 程序执行中使用反射对框架的搭建有着强大的影响&#xff0c;如何管理程序集方便使用反射获取类型操作对象是本文章的重点 1.AssemblyInfo 对于一个程序集这里使用一个AssemblyInfo对象进行管理 Assembly &#xff1a;对应的程序集AssemblyTyp…...

几个nlp的小任务(生成式任务——语言模型(CLM与MLM))

@TOC 本章节需要用到的类库 微调任意Transformers模型(CLM因果语言模型、MLM遮蔽语言模型) CLM MLM 准备数据集 展示几个数据的结构...

单元测试用例mock的使用方法

单元测试用例mock的使用方法 提升代码测试覆盖率的关键策略 为什么单元测试是如此重要&#xff1f; 在软件开发中&#xff0c;单元测试是一个关键的环节&#xff0c;可以确保代码的质量和稳定性。而在进行单元测试时&#xff0c;使用mock对象可以帮助我们更好地测试代码逻辑…...

3D步进式漫游能够在哪些行业应用?

VR技术一直以来都是宣传展示领域中的热门话题&#xff0c;在VR全景技术的不断发展下&#xff0c;3D步进式漫游技术也逐渐覆盖各行各业&#xff0c;特别是在建筑、房产、博物馆、企业等领域应用更加广泛&#xff0c;用户通过这种技术能够获得更加直观、生动、详细的展示体验&…...

2023蓝帽杯初赛ctf部分题目

Web LovePHP 打开网站环境&#xff0c;发现显示出源码 来可以看到php版本是7.4.33 简单分析了下&#xff0c;主要是道反序列化的题其中发现get传入的参数里有_号是非法字符&#xff0c;如果直接传值传入my_secret.flag&#xff0c;会被php处理掉 绕过 _ 的方法 对于__可以…...

vue3+ts封装弹窗,分页封装

定义defaultDialog .vue <script lang"ts" setup> import { ref,toRefs,onUpdated } from vue import { ElMessageBox } from element-plus const props defineProps({//接收参数&#xff0c;父组件传的时候用:msg123的形式msg:String,show:{type:Boolean,defa…...

2023-08-30 数据库-并发控制-冲突可串行化调度-是否可串行化检测-优先图-分析

摘要: 将冲突进行可串行化调度, 是解决冲突是一个基本功能. 对于冲突是否可被串行化调度, 比较有效的就是优先图的方法. 本文对检测冲突可串行化调度的优先图做一些分析. 上下文参考: 2023-08-30 数据库-并发控制-冲突可串行化的调度-思考_财阀悟世的博客-CSDN博客 事务的基…...

人员着装识别算法 yolo

人员着装识别系统通过yolo网络模型识别算法&#xff0c;人员着装识别系统算法通过现场安装的摄像头识别工厂人员及工地人员是否按要求穿戴着装&#xff0c;实时监测人员的着装情况&#xff0c;并进行相关预警。目标检测架构分为两种&#xff0c;一种是two-stage&#xff0c;一种…...

Linux:权限

目录 一、shell运行原理 二、权限 1.权限的概念 2.文件访问权限的相关设置方法 三、常见的权限问题 1.目录权限 2.umsk(权限掩码) 3.粘滞位 一、shell运行原理 1.为什么我们不是直接访问操作系统&#xff1f; ”人“不善于直接使用操作系统如果让人直接访问操作系统&a…...

Unity记录4.3-存储-点击Tilemap保存或读取区块

文章首发见博客&#xff1a;https://mwhls.top/4816.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议&#xff0c;私信不回。 汇总&#xff1a;Unity 记录 摘要&#xff1a;点击tilemap&#xff0c;文件 保存/读取 该地图区块数据…...

【小吉测评】哔哩哔哩接入AI?!效果如何?

文章目录 &#x1f384;前言⭐申请方式&#x1f3f3;️‍&#x1f308;注意 &#x1f6f8;简介&#x1f354;上手体验&#x1f6f8;进行数学计算&#x1f970;可以写代码吗 &#x1f384;前言 最近人工智能特别火&#xff0c;chatgpt&#xff0c;Claude2&#xff0c;文心一言等…...

微信开发之一键踢出群聊的技术实现

简要描述&#xff1a; 删除群成员 请求URL&#xff1a; http://域名地址/deleteChatRoomMember 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选…...

基于Spring Boot 的 Ext JS 应用框架之coworkee

Ext JS 官方提供了一个人员管理的完整应用框架 - coworkee。该框架的显示如下: 该框架的布局特点如下: 布局方式: 左右布局, 左侧导航栏默认收合特点:左侧导航区占用空间小, 工作区较大, 适合没有二级导航栏,工作区需要显示的内容较多的系统。如果导航栏是横向底部,就…...

HOT100打卡—day10—【DP+多维DP】—最新8.29(剩6题)

DP 1 70. 爬楼梯 70. 爬楼梯 一次做&#xff0c;AC代码&#xff1a; 疑问&#xff1a;怎么判断用搜索还是dp&#xff1f;这题&#xff0c;我没有受过dp训练所以第一反应是用dfs搜索&#xff0c;找到所有符合要求的叶子。 class Solution { public:int dp[50]; // step1&a…...

【不会用这个工具,你的Linux服务器就是个摆设!】

01 Tcpdump Tcpdump 是一个强大的网络监控工具&#xff0c;它允许用户有效地过滤网络上的数据包和流量。 这可以获得有关 TCP/IP 和网络上传输的数据包的详细信息。 当你遇到网络协议问题一筹莫展的时候&#xff0c;这时候往往可以通过tcpdump来看网络的通讯过程中发生了什么…...

09 生产者分区机制

kafka如何保证消息的有序 可以通过key-ording策略解决。kafka可以为每条消息定义消息键&#xff0c;也称为key&#xff0c;通常是带有业务属性的比如用户id之类的。有相同消息键的消息会被发到同一个分区。下面实现了key-ordering策略&#xff0c;对key的hashcode进行取模来决…...

亚马逊鲲鹏系统是怎么操作测评的

亚马逊鲲鹏系统可以注册亚马逊买家号、养号、下单留评等&#xff0c;是一款功能比较齐全的测评软件&#xff0c;具体操作如下&#xff1a; 首先我们需要先准备好买家账号&#xff0c;账号可以直接去购买已经注册好了的账号&#xff0c;也可以准备好账号所需要的一些邮箱、ip、…...

电脑上的视频如何导入苹果手机?

AirDroid支持Windows、macOS、android、iOS相互传输文件、视频、图片等。 想要从电脑传输文件到iPhone也很简单&#xff0c;在电脑和iPhone都安装AirDroid&#xff0c;连接同一网络&#xff0c;然后登录同一个帐号就可以了。可绑定的iPhone数量不限&#xff0c;只要都登录同一…...

tsmc standard cell命名规则

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 CKMUX2代表二输入clock mux&#xff0c;D2代表驱动强度X2&#xff0c;6T代表row高为6track&#xff0c;16P96C代表gate length和poly pitch&#xff0c;LVT就是low voltage thr…...

基于ssm医院在线挂号预约系统源码和论文

基于ssm医院在线挂号预约系统源码和论文072 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 课题研究的目的及意义&#xff1a; 专家号难求&#xff0c;是医院现场挂号存在的主要问题之一&#xff0c;每一名专…...

mysql binlog 浅谈

如何开启MySQL的binlog日志 在MySQL中&#xff0c;binlog指的是binary log&#xff0c;二进制日志文件。这个文件记录了MySQL所有的DML操作。通过binlog日志&#xff0c;我们可以做数据恢复&#xff0c;做主从复制等等。对于运维或架构人员来说&#xff0c;开启binlog日志功能…...

three.js(八):内置的三维几何体

三维几何体 BoxGeometry 立方体TetrahedronGeometry 四面体OctahedronGeometry 八面体DodecahedronGeometry 十二面体IcosahedronGeometry 二十面体PolyhedronGeometry 多面体SphereGeometry 球体ConeGeometry 圆锥CylinderGeometry 圆柱TorusGeometry 三维圆环TorusKnotGeomet…...

IDEA 性能优化

前言 IDEA 基于JVM&#xff0c;是内存紧张型的应用&#xff0c;即使是16GB内存也很一般。 机器配置&#xff1a; win10 proi7-4720hq 3.2G 4c8tddr3-1600IDEA 2023.2.1 本文优化在不升级硬件的前提下使用 优化 调整JVM堆内存及GC IDEA 自身的JVM运行时配置&#xff0c;启动…...

react 获取表单中输入框的值

通过使用useState钩子来创建一个状态变量&#xff0c;你可以同时获取多个Input框的值。 1获取input框的值&#xff1a; import React, { useState } from react;function MyComponent() {const [forms, setForms] useState({name: ,nation: ,});const handleInputChange (e…...

[虚幻引擎 UE5] EditableText(可编辑文本) 限制只能输入数字并且设置最小值和最大值

本蓝图函数可以格式化 EditableText 控件输入的数据&#xff0c;让其只能输入一定范围内的整数。 蓝图函数 调用方法 下载蓝图&#xff08;5.2.1版本&#xff09;https://dt.cq.cn/archives/618...

Docker技术--Docker容器管理

1.Docker容器相关的指令(单个容器操) 我们之前在Docker中部署了一个实际应用的案例wordpress,其中使用到了一些相关于容器的指令,那么下面我们一起来总结使用。 Docker指令的语法规则如下所示: Docker + 命令关键字 [+参数选项] -1类:关闭、开启、重启、开启自启 systemct…...

three.js(七):内置的二维几何体

二维几何体 PlaneGeometry 矩形平面CircleGeometry 圆形平面RingGeometry 圆环平面 PlaneGeometry 矩形平面 PlaneGeometry(width : Float, height : Float, widthSegments : Integer, heightSegments : Integer) width — 平面沿着X轴的宽度。默认值是1。height — 平面沿着Y…...

golang-bufio 缓冲读

缓冲 IO 计算机中我们常听到这样的两种程序优化方式&#xff1a; 以时间换空间以空间换时间 今天要来看的缓冲IO就是典型的以空间换时间&#xff0c;它的基本原理见上图。简单的解释就是&#xff1a;程序不再直接去读取底层的数据源&#xff0c;而是通过一个缓冲区来进行读取…...

前端 js实现 选中数据 动态 添加在表格中

如下图展示&#xff0c;表格上方有属性内容&#xff0c;下拉选中后&#xff0c;根据选中的内容&#xff0c;添加在下方的表格中。 实现方式&#xff0c;&#xff08;要和后端约定&#xff0c;因为这些动态添加的字段都是后端返回的&#xff0c;后端自己会做处理&#xff0c…...

MySQL—MySQL主从如何保证强一致性

一、前言 涉及到的东西&#xff1a;两阶段提交&#xff0c;binlog三种格式 1、两阶段提交 在持久化 redo log 和 binlog 这两份日志的时候&#xff0c;如果出现半成功的状态&#xff0c;就会造成主从环境的数据不一致性。这是因为 redo log 影响主库的数据&#xff0c;binlog…...

Lora升级!ReLoRa!最新论文 High-Rank Training Through Low-Rank Updates

目录 摘要1 引言2 相关工作3 方法4 实验5 结果6 结论7 局限性和未来工作 关注公众号TechLead&#xff0c;分享AI与云服务技术的全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0c;复旦机器人智能实验室成员&#xff0…...

gateway动态路由和普通路由+负载均衡,借助eureka

gateway 中的动态路由和普通路由是相互独立配置的注意consumer使用了openFeign远程调用的配置文件中 prefer-ip-address: false 必须为false 否则 gateway的动态路由和负载均衡无法实现 spring:cloud:gateway:enabled: truediscovery:locator:enabled: true #表示动态路由&a…...

HTTP原理与实现

一、基本概念 一、基本原理* 1、全称&#xff1a; HyperText Transfer Protocol (超文本传输协议) 2、底层实现协议&#xff1a;建立在 TCP/IP 上的无状态连接。 3、基本作用&#xff1a;用于客户端与服务器之间的通信&#xff0c;规定客户端和服务器之间的通信格式。包括请…...