机器学习(14)

概率图模型(PGM)

含义:用图来表示变量概率依赖关系

三步曲:

  • 表示 representation(建模为图结构)
  • 推断 inference(计算概率)
  • 学习 learning(估计模型参数)

有向图

  • 节点对应连续或离散随机变量
  • 有向边连接父节点
  • 有向边表示条件概率分布
  • 不存在回路,又称为有向无环图模型(DAG)

公式

  • :节点父节点集合

  • 每一项都是一个条件概率分布(CPD)

无向图

  • 节点对应连续或离散随机变量
  • 边表示依赖关系
  • 任意两节点都有连接,则该节点子集为团(clique)
  • 联合概率分布能够基于团分解(实现简化)

公式

  • :所有的集合

  • :团上的势函数(potential function)

  • 配分函数(Partition Function),用于归一化,让整体还是一个概率

相互转换

有向图转换为无向图

  1. 对"共同子节点"的父节点连边(道德化)
  2. 去掉所有箭头方向
  3. 得到无向图(MRF)

无向图转换为有向图

弦: 在一个 里,连接两个不相邻节点的那条边,就叫弦

  1. 检查无向图是否为弦图,任意长度 ≥ 4 的简单环,都必须存在一条"弦"
  2. 给节点设定一个序号(方便后续定向)
  3. 节点连线并给边定向(也可以按照**所有边都从"后出现的节点"指向"先出现的节点"**的规则)

推断方法

  • 精确推断:变量消去法、信念传播法
  • 近似推断:MCMC采样法、变分推断(Variational inference)

隐马尔可夫模型(HMM)

HMM 用一个"看不见的状态序列"来生成"看得见的观测序列",并假设状态满足马尔可夫性、观测只依赖当前状态。

存在隐状态序列

  • 数据是由不可直接观测的状态生成的
  • 我们只能看到状态的"外在表现"

例子:

  • 真实天气(隐)→ 是否下雨/带伞(观测)
  • 人的行为意图(隐)→ 传感器数据(观测)

近似推断----EM算法参数估计

期望最大化算法(Expectation Maximization)

目标:估计模型参数 θ,使观测数据的似然最大

Jensen不等式(函数的期望与期望的函数的关系):

算法思想:

EM 算法使用Jenson不等式 ,将难以直接优化的对数似然函数转化为一个可优化的下界 ,并通过交替最大化该下界实现参数估计

先"猜"隐变量的分布(公式中的),再用这个"猜测"来更新模型,不断重复,直到参数和隐变量相互匹配

E步骤:估计隐变量

  • q分布不变
  • 最大化Z

M步骤:更新参数

  • Z不变
  • q最大化寻优

隐马尔可夫模型代码实现

基本假设

观测独立性假设

当前观测只由当前隐状态决定,与其他状态和观测无关。

齐次马尔科夫假设

当前隐状态只依赖于前一个隐状态,与更早的状态无关。

简单的隐马尔可夫模型

问题:已知小明连续五次考试成绩:A+,B,A-,C+,A,求小明每次考试的状态

存在三种状态(隐状态):认真复习(S1),简单复习(S2),没有复习(S3)

考试成绩--->观测数据:A+:o1,A:o2,A-:o3,B+:o4,B:o5,B-:o6,C+:o7,C:o7,C-:o9
隐状态转移概率 隐状态对应观测结果

状态初始概率:

状态转移矩阵:

发射概率矩阵(在某个隐状态下,产生各个观测值的概率分布):

隐马尔可夫模型推理

|---------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------|
| 时间 | | | | | |
| 成绩 | A+ | B | A- | C+ | A |
| 观测 | | | | | |
| 隐状态 | | | | | |

  • t0,t2,t4时刻产生的观测数据只能由状态S1产生所以此时三个时刻对应的状态为S1
  • t1时刻观测值为o5,可能由S1,S2产生,分析t0->t2时刻:

①S1->S1->S1概率:

②S1->S2->S1概率:

对比分析①的概率大于②的概率,则选择①

  • 同理,继续分析下面的状态
  • 最终状态:

代码实现

python 复制代码
import numpy as np
state = np.array(['认真复习','简单复习','没有复习'])
grade = np.array(['A+','A','A-','B+','B','B-','C+','C','C-'])
n_state = len(state)
m_grade = len(grade)
pi = np.ones(n_state)/n_state
t = np.array([
    [0.4,0.3,0.3],
    [0.3,0.4,0.3],
    [0.3,0.3,0.4]
])
e = np.zeros([3,9])
e[0,:9]=1/9
e[1,3:9]=1/6
e[2,5:9]=1/4

from hmmlearn.hmm import CategoricalHMM
hmm = CategoricalHMM(n_state)

hmm.startprob_ = pi
hmm.transmat_ = t
hmm.emissionprob_ = e
hmm.n_features = 9

datas = np.array([0,4,2,6,1])
datas = np.expand_dims(datas,axis=1)
states = hmm.predict(datas)

优缺点和适用条件

|---------|----------------------------|--------------------|-------------------------|
| 方法 | 优点 | 缺点 | 应用 |
| HMM | 很多场景下可以大大简化条件概率计算 | 应用范围比较窄,主要用于时序数据建模 | 语音识别 故障检测 行为识别 |
| 概率图 | 思路清晰:建模表示+推断学习 可解释性强,白盒子模型 | 推断和学习复杂,高维数据处理困难 | 动态化结构学习 非参数化建模 深度学习+概率图 |

相关推荐
ar01233 小时前
AR远程协助作用
人工智能·ar
北京青翼科技3 小时前
PCIe接口-高速模拟采集—高性能计算卡-青翼科技高品质军工级数据采集板-打造专业工业核心板
图像处理·人工智能·fpga开发·信号处理·智能硬件
软件聚导航4 小时前
马年、我用AI写了个“打工了马” 小程序
人工智能·ui·微信小程序
陈天伟教授4 小时前
人工智能应用-机器听觉:7. 统计合成法
人工智能·语音识别
笨蛋不要掉眼泪5 小时前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
昨夜见军贴06165 小时前
IACheck AI审核技术赋能消费认证:为智能宠物喂食器TELEC报告构筑智能合规防线
人工智能·宠物
DisonTangor5 小时前
阿里开源语音识别模型——Qwen3-ASR
人工智能·开源·语音识别
万事ONES5 小时前
ONES 签约北京高级别自动驾驶示范区专设国有运营平台——北京车网
人工智能·机器学习·自动驾驶
qyr67896 小时前
深度解析:3D细胞培养透明化试剂供应链与主要制造商分布
大数据·人工智能·3d·市场分析·市场报告·3d细胞培养·细胞培养
软件开发技术深度爱好者6 小时前
浅谈人工智能(AI)对个人发展的影响
人工智能