机器学习第十四章-概率图模型

news2024/12/26 23:13:58

目录

14.1 隐马尔可夫模型

14.2马尔科夫随机场

14.3条件随机场

14.4学习与推断

14.4.1变量消去

14.4.2信念传播

14.5近似推断

14.5.1 MCMC采样

14.5.2 变分推断

14.6 话题模型


14.1 隐马尔可夫模型

       概率围棋型是一类用图来表达变量相关关系的概率模型.它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的边表示变量间的概率相关关系,即"变量关系图”。

        隐马尔可夫模型是结构最筒单的动态贝叶斯网 ,这是一种著名的有向图模型,主要用于时序数据建模,在语音识别、自然语言处理等领域有广泛应用。
                        
        系统下一时刻的状态仅由当前状态决定,不依赖于以往的任何状态.基于这种依赖关系,所有变量的联合概率分布为:        
                P\left(x_{1}, y_{1}, \ldots, x_{n}, y_{n}\right)=P\left(y_{1}\right) P\left(x_{1} \mid y_{1}\right) \prod^{n} P\left(y_{i} \mid y_{i-1}\right) P\left(x_{i} \mid y_{i}\right)
欲确定一个隐马尔可夫模型还需以下三组参数:

1. 状态转移概率矩阵:
   记作 A = [a_{ij}],其中a_{ij} = P(Y_{t+1} = S_j \mid Y_t = S_i)
   表示从状态 S_i转移到状态S_j 的概率。矩阵的每个元素 a_{ij}描述了状态转移的可能性。

2. 观测概率矩阵:
   记作 B = [b_{ij}],其中b_{ij} = P(X_t = O_j \mid Y_t = S_i)
   描述在状态S_i 下观测到观测值 O_j的概率。每个元素b_{ij}指定了在某个隐状态下生成某个观测值的概率。

3. 初始状态概率向量:
   记作\pi = [\pi_i],其中 \pi_i = P(Y_1 = S_i)
   表示在初始时刻系统处于状态S_i的概率。这个向量定义了模型开始时各状态的分布。

        通过指定状态空间 、观测空间 和上述三组参数,就能确定一个隐马尔可夫模型,通常用其参数 λ= [A ,B,π ]来指代.给定隐马尔可夫模型 ,它按如下过程产生观测序列 {x1,x2,x3..... }:
        
(1) 设置 t =1  ,并根据初始状态概率π选择初始状态 y1 ;
(2) 根据状态yt和输出现测概率 B 选择观测变量取值 Xt;
(3) 根据状态yt和状态转移矩阵 A 转移模型状态,即确定 Yt +1;
(4) t < n 设置 t = t +1  ,并转到第 (2) 步,否则停止.

14.2马尔科夫随机场

        马尔可夫随机场(Markov Random Field ,简称 MRF)是典型的马尔可夫网, 这是一种著名的无向圈模型,圈中每个结点表示一个或一组变量,结点之间 的边表示两个变量之间的依赖关系。

                        

        对于n个变量 X={x1,x2....xn} 所有团构成的集合为C ,与团Q\epsilon C 对应的变量集合记为X_{q} 则联合概率 P(X) 定义为:
                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        P(\mathbf{x})=\frac{1}{Z} \prod_{Q \in \mathcal{C}} \psi_{Q}\left(\mathbf{x}_{Q}\right)
        基于分离集的概念,得到了MRF的三个性质:
  1. 全局马尔可夫性:给定两个变量子集的分离集,则这两个变量子集条件独立。
  2. 局部马尔可夫性:给定某变量的邻接变量,则该变量与其它变量条件独立。
  3. 成对马尔可夫性:给定所有其他变量,两个非邻接变量条件独立。

        ​​​​​​​        

14.3条件随机场

        条件随机场(Conditional Random Field ,简称 CRF) 是一种判别式无向图模型。条件随机场试图对多个变量在给定观测值后 的条件概率进行建模.

        其中最常用到的是 "链式条件随机场":
                                

14.4学习与推断

14.4.1变量消去

        变量消去法是最直观的精确推断算法,以下的有向图模型为例来介绍其工作流程:

        变量捎去法把多个变量的积的求和问题,转化为对部分变量交替进行求积与求和的问题.变量消去法有一个明显的缺点:若需计算多个边际分布,重复使用变量消去法将会造成大量的冗余计算.
下面是关于变量消去法的实验代码及分析于结果:
        
import numpy as np

# 定义增广矩阵
A = np.array([[2, -1, 1, 4],
              [1,  2,  1, 5],
              [3, -2,  2, 8]], dtype=float)

def elimination(A):
    n = len(A)
    for i in range(n):
        # 主元归一化
        A[i] = A[i] / A[i, i]
        # 消去当前列的其他元素
        for j in range(i + 1, n):
            factor = A[j, i]
            A[j] = A[j] - factor * A[i]
    return A

def back_substitution(A):
    n = len(A)
    x = np.zeros(n)
    for i in range(n-1, -1, -1):
        x[i] = A[i, -1]
        for j in range(i+1, n):
            x[i] -= A[i, j] * x[j]
    return x

# 执行变量消去法
A_eliminated = elimination(A.copy())
solution = back_substitution(A_eliminated)

print("经过消去后的增广矩阵:")
print(A_eliminated)
print("\n方程组的解:")
print(solution)

分析:

  1. 增广矩阵处理:代码首先定义了一个增广矩阵 A,其最后一列为常数项。elimination 函数对增广矩阵进行消元操作,逐步将其转化为上三角形式。
  2. 消元过程:在 elimination 函数中,首先对每一行进行主元归一化,然后对每一列的其他元素进行消去,从而简化矩阵。
  3. 回代过程back_substitution 函数从上三角矩阵的最后一行开始,逐步计算未知数的值,得到方程组的解。

结果:

14.4.2信念传播

        信念传播算法将变量消去法中的求和操作看作一个消息传递过程,具体来说,变量消去法通过求和操作:

                        m_{i j}\left(x_{j}\right)=\sum_{x_{i}} \psi\left(x_{i}, x_{j}\right) \prod_{k \in n(i) \backslash j} m_{k i}\left(x_{i}\right)

下面是关于信念传播算法的实验代码及分析于结果:

        下面实验是关于一个简单的二值马尔可夫随机场(MRF)模型上的信念传播。将使用一个4x4的网格模型,其中每个节点代表一个二值变量。

import numpy as np

def initialize_messages(n):
    return np.zeros((n, n, 2, 2))  # Message array for 4 neighbors: Up, Down, Left, Right

def belief_propagation(grid, max_iters=10):
    n = len(grid)
    messages = initialize_messages(n)
    
    # Helper functions
    def compute_message(node, direction, messages):
        # Compute the message from the node to the neighbor in the specified direction
        pass
    
    def update_beliefs(grid, messages):
        # Update the belief of each node based on incoming messages
        beliefs = np.zeros((n, n, 2))
        for i in range(n):
            for j in range(n):
                # Update beliefs based on messages from neighbors
                beliefs[i, j] = grid[i, j]  # Placeholder for actual belief calculation
        return beliefs

    for _ in range(max_iters):
        for i in range(n):
            for j in range(n):
                # Compute messages in all directions
                for direction in ['Up', 'Down', 'Left', 'Right']:
                    messages[i, j] = compute_message((i, j), direction, messages)
        
        # Update beliefs
        beliefs = update_beliefs(grid, messages)
    
    return beliefs

# Define a grid with initial values (prior probabilities)
grid = np.random.rand(4, 4, 2)  # Random initial values for simplicity

# Normalize grid values to sum to 1
grid /= grid.sum(axis=2, keepdims=True)

# Run belief propagation
beliefs = belief_propagation(grid)

print("最终的信念分布:")
print(beliefs)
分析:
  1. 初始化消息和信念initialize_messages 函数初始化了用于消息传递的数组,belief_propagation 函数则开始信念传播过程。初始信念是随机的,并且需要归一化以确保每个节点的信念总和为1。

  2. 消息计算compute_message 是一个占位函数,实际实现会计算从一个节点向邻居节点传递的消息。在实际应用中,这个函数需要根据具体的模型和边缘条件进行实现。

  3. 信念更新update_beliefs 函数根据传入的消息更新每个节点的信念。在这个示例中,信念更新的实现被简化为直接使用初始值。实际中,这个步骤需要结合消息传递结果进行信念计算。

  4. 迭代过程:信念传播算法通过迭代来更新消息和信念。在每次迭代中,节点之间的消息会被计算并更新,最终收敛到一个稳定的信念分布。

结果:

14.5近似推断

14.5.1 MCMC采样

        概率图模型中最常用的采样技术是马尔可夫链蒙特卡罗(简称 MCMC) 方法.给定连续变量x\epsilon X 的概率密度函数 p(x) ,x在区间A中的概率可计算为:

                                                                P(A)=\int_{A} p(x) d x

下面是MCMC算法流程:

下面是关于MCMC算法的实验代码及分析于结果:

import numpy as np
import matplotlib.pyplot as plt

# 目标分布(标准正态分布)
def target_distribution(x):
    return np.exp(-0.5 * x**2) / np.sqrt(2 * np.pi)

# 提议分布(正态分布)
def proposal_distribution(x, sigma):
    return np.random.normal(x, sigma)

# Metropolis-Hastings 算法
def metropolis_hastings(num_samples, proposal_std):
    samples = np.zeros(num_samples)
    x = 0  # 初始值
    for i in range(num_samples):
        x_new = proposal_distribution(x, proposal_std)
        acceptance_ratio = target_distribution(x_new) / target_distribution(x)
        if np.random.rand() < acceptance_ratio:
            x = x_new
        samples[i] = x
    return samples

# 参数设置
num_samples = 10000
proposal_std = 1.0

# 生成样本
samples = metropolis_hastings(num_samples, proposal_std)

# 绘制结果
plt.figure(figsize=(12, 6))

# 绘制样本直方图
plt.subplot(1, 2, 1)
plt.hist(samples, bins=30, density=True, alpha=0.6, color='g')
plt.title('样本直方图')

# 绘制目标分布
x = np.linspace(-4, 4, 100)
plt.subplot(1, 2, 2)
plt.plot(x, target_distribution(x), 'r', lw=2)
plt.title('目标分布')

plt.show()

分析:

  1. 目标分布target_distribution 函数定义了我们想要采样的目标分布,这里选择的是标准正态分布。

  2. 提议分布proposal_distribution 函数定义了提议分布,这里使用的是以当前样本为均值的正态分布。

  3. Metropolis-Hastings 算法metropolis_hastings 函数实现了 Metropolis-Hastings 算法。算法首先生成一个提议样本,然后根据接受概率决定是否接受该样本。最终生成的样本数组用于估计目标分布。

  4. 结果可视化

    • 样本直方图:左侧图显示了生成的样本的直方图。应该接近目标分布的形状。
    • 目标分布:右侧图显示了目标分布的理论曲线。通过对比样本直方图和目标分布,可以验证 MCMC 算法的效果。

结果:

14.5.2 变分推断

        变分推断通过使用己知简单分布来逼近需推断的复杂分布,并通过限制近似分布的类型,从而得到 种局部最优、但具有确定解的近似后验分布.概率图模型一种简洁的表示方法一一盘式记法:

                        

14.6 话题模型

        话题模型(topic model) 是一族生成式有向图模型,主要用于处理离散型的数据(如文本集合) ,在信息检索、自然语言处理等领域有广泛应用.隐狄利克雷分配模型(简称 LDA) 是话题模型的典型代表.在话题模型中,有以下几个基本概念:词(word)、文档(document)、话题(topic)。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2055893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Transformer(课程笔记)

一&#xff1a;Motivation RNN需要顺序的执行&#xff0c;不利于并行计算。 RNN的变体例如GRU、LSTM等需要依靠注意力机制解决信息瓶颈等问题。 抛弃RNN结构&#xff0c;提出了Transformer结构。 Transformer整体架构 二&#xff1a; 输入层&#xff08;BPE&#xff0c;PE&…

《黑神话:悟空》玩家必看!AMD显卡驱动24.8.1版全力支持!

系统之家于8月20日发出最新报道&#xff0c;AMD发布了最新的24.8.1版本驱动&#xff0c;本次更新增加了《黑神话&#xff1a;悟空》《星球大战&#xff1a;亡命之徒》等游戏的支持&#xff0c;且HYPR Tune支持允许HYPR-RX启用游戏内技术。下面跟随小编一起来看看AMD显卡驱动24.…

Centos7 message日志因dockerd、kubelet、warpdrive、containerd等应用迅速增长

问题&#xff1a;公司服务器在部署一套业务后&#xff0c;message日志记录大量的dockerd、kubelet、warpdrive、containerd应用日志&#xff0c;每天增加2G大小的日志 解决方案&#xff1a; 前期吐槽下&#xff1a;发现某个帖子&#xff0c;需要会员或者花钱才能看&#xff0c…

探索网络安全的深度与广度:挑战、策略与未来展望

一、引言 在当今数字化的时代&#xff0c;网络已经成为社会运转的核心基础设施之一。从个人的日常通信、娱乐到企业的业务运营、国家的关键服务&#xff0c;几乎所有领域都依赖于网络。然而&#xff0c;随着网络的普及和应用的深化&#xff0c;网络安全问题也日益凸显&#xf…

松下弧焊机器人维修 控制柜故障 连接线修复

一、Panasonic焊接机器人控制柜与机器人的接线 机器人的控制箱&#xff0c;一定要配对使用。松下焊接机器人控制柜已经记忆了机器人的绝对原点(机器人位置控制原点)。 二、编码器电缆 (圆形连接器) 1. 接口的插头插座要注意&#xff0c;插头要插到插座中。 2. 用一手握住电缆&a…

网络原理TCP/UDP详解

目录 传输属的几种格式 1.xml&#xff1a;通过成对的标签表示键值对信息。 2.json&#xff1a;当前更主流一点的&#xff0c;网络通信的数据格式 3.yml&#xff08;yaml&#xff09;强制要求数据的组织格式 4.google protobuffer 传输层 1.端口号&#xff1a; UDP协议 …

Vue3 组件管理 12 种神仙写法,灵活使用才能提高效率

SFC 单文件组件 顾名思义&#xff0c;就是一个.vue文件只写一个组件 模板写法 如果这个组件想要在别的组件里使用&#xff0c;就需要在另一个.vue中引入和使用、复用 h函数写法 使用 defineComponent h 去进行组件编写 JSX/TSX写法 使用 defineComponent JSX/TSX 去进行…

【html+css 绚丽Loading】 - 000008 三才虚空灵瞳

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

应用方案 | 降压型DC-DC电源管理电路 D2576介绍

概述 D2576是一款高效降压型DC-DC转换器&#xff0c;固定52KHz开关频率&#xff0c;可以提供最高3A输出电流能力&#xff0c;具有低纹波&#xff0c;出色的线性调整率与负载调整率特点。 D2576内置固定频率振荡器与频率补偿电路&#xff0c;简化了电路设计。PWM控制环路可以调节…

Rivian暂停亚马逊送货车生产,特斯拉Roadster再引关注

Rivian遭遇供应链挑战&#xff0c;暂停亚马逊送货车生产 电动汽车制造商Rivian近期宣布&#xff0c;由于零部件短缺&#xff0c;已暂停为零售巨头亚马逊生产商业送货车。这一决定标志着Rivian在应对供应链挑战方面遭遇了最新挫折。作为Rivian的最大投资者&#xff0c;亚马逊持有…

画板444

p31 画H1和H2的封装 立创里面这次有尺寸了没单位好像 给的1.02 他设的1.1焊盘可以大点 排针穿过去的&#xff08;别的焊盘也这样&#xff1f;&#xff09; 引脚编号 直接改成2.54 他焊盘直间的 距离了 刚才改成通用的直径了&#x1f605;&#x1f605;&#x1f605; 这能测尺寸…

金九银十,软件测试面试八股文【含答案+文档】

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 测试技术面试题 1、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f; 参考答案&#xff1a; 兼容测试主要是检查软件在不同的硬件平台、软件…

google seo基础宝典,新手必学

Google SEO 是什么&#xff1f; Google SEO是指针对谷歌搜索引擎优化网站排名的一种营销方式&#xff0c;旨在提升外贸网站在谷歌的品牌和产品曝光度&#xff0c;从而吸引外贸订单。具体做法是根据谷歌的搜索引擎排名规则&#xff0c;对网站的内容、结构、链接等方面进行优化&a…

C++竞赛初阶L1-13-第五单元-循环嵌套(29~30课)536: T456455 画矩形

题目内容 根据输入的四个参数&#xff1a;a,b,c,f 参数&#xff0c;画出对应的矩形。 前两个参数 a,b 为整数&#xff0c;依次代表矩形的高和宽&#xff1b; 第三个参数 c 是一个字符&#xff0c;表示用来填充的矩形符号&#xff1b; 第四个参数 f 为整数&#xff0c;0 代表…

测试资料2222

一 解决穷举场景&#xff1a;使用等价类划分法 适用场景 正向用例&#xff1a;一条尽可能覆盖多条 逆向用例&#xff1a;每一条数据&#xff0c;都是一条单独用例 完整的用例应该是等价类和边界值一块写 二 能对限定边界规则设计测试点 2.1选取正好等于、刚好大于、刚好小于…

搜维尔科技:【产品推荐】Manus Quantum Mocap Metagloves VR手套数据手套机械手训练专用手套

全新量子追踪技术 Quantum Mocap Metagloves通过使用毫米级精确的指尖跟踪传感器来提供高保真手指跟踪。传感器没有漂移&#xff0c;可提供高度准确且可靠的手指捕获数据。 手指追踪的新黄金标准 Quantum Mocap Metagloves使用精确的量子跟踪技术捕捉手部每一个细节动作。让您…

Unity与UE,哪种游戏引擎适合你?

PlayStation vs Xbox&#xff0c;Mario vs Sonic&#xff0c;Unreal vs Unity&#xff1f;无论是游戏主机、角色还是游戏引擎&#xff0c;人们总是热衷于捍卫他们在游戏行业中的偏爱。 专注于游戏引擎&#xff0c;Unity和Unreal Engine&#xff08;简称UE4&#xff09;是目前市…

软件测试 - 自动化测试(概念)(Java)(自动化测试分类、web自动化测试、驱动、selenium自动化测试工具的安装)

一、自动化的概念 ⾃动洒⽔机&#xff0c;主要通上⽔就可以⾃动化洒⽔并且可以⾃动的旋转。 ⾃动洗⼿液&#xff0c;免去了⼿动挤压可以⾃动感应出洗⼿液 超市⾃动闸⻔&#xff0c;不需要⼿动的开⻔关⻔ ⽣活中的⾃动化案例有效的减少了⼈⼒的消耗&#xff0c;同时也提⾼了⽣…

淘宝API常见问题解答

本文总结了4个淘宝API常见问题并给出解答&#xff0c;如果有其他关于淘宝API的问题&#xff0c;可以向点三客服提问。 问题1&#xff1a;如何获取淘宝订单&#xff0c;需用哪几个淘宝API&#xff1f; 回答&#xff1a;一般是3个淘宝API接口配合使用&#xff1a;先用taobao.trad…

发展数控教育机床提高制造创新能力

随着科技的不断发展&#xff0c;智能化教学设备在教育领域中得到广泛的应用。在中小学课堂中&#xff0c;智能化教学设备的应用可以提高教学效率&#xff0c;激发学生的学习兴趣&#xff0c;促进学生的全面发展。 "教育科技”展示的魅力&#xff0c;让我们对未来的创新教学…