概率图模型中的模型推断

文章目录

  • 摘要
  • Abstract
  • 1. 概率图模型
    • 1.1 模型推断概念
    • 1.2 模型推断分类
      • 1.2.1 变量消去
      • 1.2.2 信念传播
      • 1.2.3 近似推断
        • 1.2.3.1 采样法
          • 1.2.3.1.1 MCMC(马尔可夫链蒙特卡罗)方法
        • 1.2.3.2 变分推断
    • 1.3 话题模型
      • 1.3.1 LDA的基本单元
      • 1.3.2 话题模型的构成
      • 1.3.3 LDA的基本问题
        • 1.3.3.1 模型参数估计
        • 1.3.3.2 模型推断
      • 1.3.4 实例
  • 2. 总结

摘要

概率图模型通过对目标变量的边际分布或条件分布进行推断,能够有效处理高维和复杂数据。在模型推断中,参数估计可采用极大似然估计或EM方法,推断方法包括变量消去法和信念传播算法。对于复杂分布,近似推断方法(如采样法和变分推断)被广泛使用。本周通过实例展示了话题模型LDA的应用,利用LDA模型进行文本数据的主题推断,介绍了其基本构成及推断步骤。

Abstract

Probability graph model can deal with high and complex data effectively by inferring marginal or conditional distribution of target variables. In the model inference, parameters can be estimated by maximum likelihood estimation or EM method, which includes variable elimination method and belief propagation algorithm. For complex distributions, approximate inference methods such as sampling and variational inference are widely used. This week, we demonstrate the application of topic model LDA through examples, and use LDA model to make topic inference of text data, and introduce its basic structure and inference steps.

1. 概率图模型

1.1 模型推断概念

基于概率图模型定义的分布,能对目标变量的边际分布或某些可观测变量为条件分布进行推断
对概率图模型,需要确定具体分布的参数(参数估计或者学习问题)通常使用极大似然估计或后验概率估计求解。贝叶斯学派中,将参数视为待推测的变量,则参数估计过程和推断过程十分相似。以下图是贝叶斯学派的观点。
在这里插入图片描述
假设图模型所对应的变量集X = {x1,x2,…,xn}能分为XE,XF两个不相交的变量集,推断问题的目标就是计算边际概率 p(XF)或者条件概率p(XF|XE),由条件概率定义容易有
在这里插入图片描述
联合概率p(XF,XE)可基于图模型(如势函数)获得,推断问题的关键就在于如何高效计算边际分布,即
p ( x E ) = ∑ F p ( x F , x E ) p(\mathbf{x}_E)=\sum_Fp(\mathbf{x}_F,\mathbf{x}_E) p(xE)=Fp(xF,xE)

1.2 模型推断分类

1.2.1 变量消去

给出以下例题:
在这里插入图片描述
上述在隐马尔可夫链中的求解过程:
在这里插入图片描述
上述图面说明:在求解x5中通过消去无关变量实现最终的求解(此问题也说明了在隐马尔可夫链中只有前面一个的状态有关,与之前所有的信息状态无关)。
上述是在有向图中,在无向图中也同样适用,假如忽略上述箭头,通过势函数的分析得到下面的公式:
P ( x 1 , x 2 , x 3 , x 4 , x 5 ) = 1 Z ψ 12 ( x 1 , x 2 ) ψ 23 ( x 2 , x 3 ) ψ 34 ( x 3 , x 4 ) ψ 35 ( x 3 , x 5 ) P(x_1,x_2,x_3,x_4,x_5)=\frac{1}{Z}\psi_{12}(x_1,x_2)\psi_{23}(x_2,x_3)\psi_{34}(x_3,x_4)\psi_{35}(x_3,x_5) P(x1,x2,x3,x4,x5)=Z1ψ12(x1,x2)ψ23(x2,x3)ψ34(x3,x4)ψ35(x3,x5)其中Z为规范化因子,边际分布p(x5)可以这样计算:
在这里插入图片描述
变量消去法实际上是利用了乘法对加法的分配律,将对多个变量的积的求和问题转化为对部分变量交替进行求积和求和的问题。这种转化使得每次的求和求积运算被限制在局部,仅和部分变量有关。
变量消去存在一个明显的缺点:若需要计算多个边际分布,重复使用变量消去法将会造成大量的冗余计算。

1.2.2 信念传播

信念传播算法将变量消去法中的求和操作看作一个消息传递过程,较好的解决了求解多个边际分布时重复计算问题。
对于mij(xj)的计算就是信念传播的过程,完善了变量消去存在的缺陷,有公式如下:
m i j ( x j ) = ∑ x i ψ ( x i , x j ) ∏ k ∈ n ( i ) ∖ j m k i ( x i ) m_{ij}(x_j)=\sum_{x_i}\psi(x_i,x_j)\prod_{k\in n(i)\setminus j}m_{ki}(x_i) mij(xj)=xiψ(xi,xj)kn(i)jmki(xi)
若图中没有环,则信念传播算法经过两个步骤即可完成所有消息传递,进而能计算所有变量上的边际分布:

  1. 指定一个根节点,从所有叶节点开始向根节点传递消息,直到根节点收到所有邻接结点的消息
  2. 从根节点开始向叶节点传递消息,知道所有叶节点均收到消息
    在这里插入图片描述

1.2.3 近似推断

近似推断方法大致分为两类:

  1. 采样法:通过使用随机化方法完成近似,如马尔可夫链蒙特卡罗算法(MCMC)
  2. 变分推断:使用确定性近似完成推断
1.2.3.1 采样法
  1. 在很多任务中,主要关心的并非概率分布本身,而是基于概率分布的期望,并且还能基于期望进一步作出决策。
  2. 若直接计算或逼近这个期望比推断概率分布更容易,则直接操作无疑使得推断问题更为高效
  3. 采样法基于这个思路,假定目标是计算函数f(x)在概率密度函数p(x)下的期望:
    E p [ f ] = ∫ f ( x ) p ( x ) d x \mathbb{E}_p[f]=\int f(x)p(x)dx Ep[f]=f(x)p(x)dx
  4. 可根据p(x)抽取一组样本{x1,x2,…,xN},然后计算f(x)在这些样本上的均值
    f ^ = 1 N ∑ i = 1 N f ( x i ) \hat{f}=\frac{1}{N}\sum_{i=1}^{N}f(x_i) f^=N1i=1Nf(xi)
    用于近似期望E[f],如果样本{x1,x2,…,xN}独立,基于大数定理,这种通过大量采样的方法就获得较高的近似精度。问题的关键是如何采样(如何高效的从图模型所描述的概率分布中获取样本)
1.2.3.1.1 MCMC(马尔可夫链蒙特卡罗)方法

给定连续变量x∈X的概率密度函数p(x),x在区间A中的概率为:
P ( A ) = ∫ A p ( x ) d x P(A)=\int_Ap(x)dx P(A)=Ap(x)dx
MCMC先构造出服从p分布的独立同分布随机变量x1、x2,…,xn,再得到无偏估计:
p ~ ( f ) = 1 N ∑ i = 1 N f ( x i ) \tilde{p}(f)=\frac{1}{N}\sum_{i=1}^Nf(x_i) p~(f)=N1i=1Nf(xi)
MCMC算法的关键在于通过”构造平稳分布为p的马尔可夫链来产生样本:当马尔可夫链运行足够长的时间(收敛到平稳状态)则产生的样本x近似服从p分布;并且通过多次重复运行、遍历马尔可夫链就可以取得多个服从该分布的独立同分布样本。
判断马尔可夫链的平稳态:

  1. 假定马尔可夫链T的状态转移概率为T(x’|x),t时刻状态的分布为p(x^t),则若在某个时刻马尔可夫链满足平稳条件:
    p ( x t ) T ( x t − 1 ∣ x t ) = p ( x t − 1 ) T ( x t ∣ x t − 1 ) p(\mathbf{x}^t)T(\mathbf{x}^{t-1}\mid\mathbf{x}^t)=p(\mathbf{x}^{t-1})T(\mathbf{x}^t\mid\mathbf{x}^{t-1}) p(xt)T(xt1xt)=p(xt1)T(xtxt1)
  2. 若满足上述公式,则认为p(x)是该马尔可夫链的平稳分布,且马尔可夫链在满足该条件时已经收敛到平稳状态。

MCMC方法设法构造一条马尔可夫链,使其收敛至平稳分布恰为待估计参数的后验分布,然后通过该马尔可夫链产生样本,用这些样本进行估计。同时在MCMC中如何构造马尔科夫链的转移概率至关重用,不同构造方法产生不同的MCMC算法。

MH算法是MCMC算法的代表之一。基于“拒绝采样”逼近平稳分布。

  1. 算法每次根据上一轮采样结果 x t − 1 \mathbf{x}^{t-1} xt1来采样获得候选状态样本 x ∗ \mathbf{x}^{*} x,但是这个样本会以一定概率被拒绝。
  2. 若从状态 x t − 1 \mathbf{x}^{t-1} xt1到状态 x ∗ \mathbf{x}^{*} x的转移概率为 Q ( x ∗ ∣ x t − 1 ) A ( x ∗ ∣ x t − 1 ) Q(\mathrm{x}^{*}|\mathrm{x}^{t-1})A(\mathrm{x}^{*}|\mathrm{x}^{t-1}) Q(xxt1)A(xxt1) x ∗ \mathbf{x}^{*} x最终被收敛到平稳状态,则:
    在这里插入图片描述
    为达到平稳状态,只需将接受率设置为:
    A ( x ∗ ∣ x t − 1 ) = min ⁡ ( 1 , p ( x ∗ ) Q ( x t − 1 ∣ x ∗ ) p ( x t − 1 ) Q ( x ∗ ∣ x t − 1 ) ) A(\mathbf{x}^*\mid\mathbf{x}^{t-1})=\min\left(1,\frac{p(\mathbf{x}^*)Q(\mathbf{x}^{t-1}|\mathbf{x}^*)}{p(\mathbf{x}^{t-1})Q(\mathbf{x}^*|\mathbf{x}^{t-1})}\right) A(xxt1)=min(1,p(xt1)Q(xxt1)p(x)Q(xt1x))
1.2.3.2 变分推断

变分推断根据已知简单分布来逼近需推断的复杂分布,同时通过限制近似分布的类型,从而得到一种局部最优、但具有确定解的近似后验分布
图模型中,已知变量样本x = {x1、x2,…,xn}, Θ \Theta Θ是服从x与z的分布参数。所有能观察到的变量x的联合分布概率密度函数是:
p ( x ∣ Θ ) = ∏ i = 1 N ∑ z p ( x i , z ∣ Θ ) p(\mathbf{x}\mid\Theta)=\prod_{i=1}^N\sum_\mathbf{z}p(x_i,\mathbf{z}\mid\Theta) p(xΘ)=i=1Nzp(xi,zΘ)
推断和学习任务主要是由观察变量x来估计隐变量z和分布参数 Θ \Theta Θ(回顾前几周所学的EM算法最大化对数似然估计)

1.3 话题模型

话题模型是一类生成式有向图模型,主要用来处理离散型的数据集合(如文本集合)。是一种非监督产生式模型,话题模型能够有效利用海量数据法文档集合中隐含的语义。隐狄里克雷分配模型(LDA)是话题模型的典型代表。

1.3.1 LDA的基本单元

  1. 词:待处理数据中的基本离散单元
  2. 文档:待处理的数据对象,由词组成,词在文档中不计顺序。其中,数据对象只要能用“词袋(bag-of-words”表示就可以使用话题模型
  3. 话题:表示一个概念,具体表示为一系列相关的词,以及它们在该概念下出现的概率

1.3.2 话题模型的构成

  1. 一个话题就像一个箱子,里面装着这个概念下出现概率较高的词
  2. 假定一个数据集中一共包含k个话题和T篇文档,文档中的词来自一个包含N个词的字典
  3. 用T个N维向量W={w1,w2,…,wT}表示文档集合
  4. 用k个N维向量 β k \beta_k βk表示话题
  5. wt的第n个分量wt,n表示文档t中词频

下面产生文档中的N个词的步骤:

  1. 根据 Θ k \Theta_k Θk进行话题指派,得到文档t中词n的话题Zt,n
  2. 根据指派的话题所对应的词分布 b e t a k beta_k betak随机采样生成词

1.3.3 LDA的基本问题

1.3.3.1 模型参数估计

给定训练数据W={w1,w2,…,wT},参数通过极大似然法估计,寻找下面公式中的两个参数以最大化对数似然
L L ( α , η ) = ∑ t = 1 T ln ⁡ p ( w t ∣ α , η ) LL(\boldsymbol{\alpha},\boldsymbol{\eta})=\sum_{t=1}^T\ln p(\boldsymbol{w}_t\mid\boldsymbol{\alpha},\boldsymbol{\eta}) LL(α,η)=t=1Tlnp(wtα,η)

1.3.3.2 模型推断

模型已知,上述公式中两个变量已经确定,根据词频来推断文档话题结构(推断 Θ t , β k , z t , n \Theta_t,\beta_k,z_{t,n} Θt,βk,zt,n),通过求解 p ( z , β , Θ ∣ W , α , η ) = p ( W , z , β , Θ ∣ α , η ) p ( W ∣ α , η ) p(\mathbf{z},\boldsymbol{\beta},\Theta\mid\mathbf{W},\boldsymbol{\alpha},\boldsymbol{\eta})=\frac{p(\mathbf{W},\mathbf{z},\boldsymbol{\beta},\Theta\mid\boldsymbol{\alpha},\boldsymbol{\eta})}{p(\mathbf{W}\mid\boldsymbol{\alpha},\boldsymbol{\eta})} p(z,β,ΘW,α,η)=p(Wα,η)p(W,z,β,Θα,η)进行模型推断。

1.3.4 实例

下面是利用LDA进行一个简单话题模型的例子:

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from gensim import corpora
from gensim.models import LdaModel

# 下载停用词和其他必要的数据
nltk.download('punkt')
nltk.download('stopwords')

# 示例文本数据
documents = [
    "Machine learning is fascinating and it is applied in many fields.",
    "Deep learning is a subset of machine learning and is used in AI applications.",
    "Natural language processing involves computational linguistics and deep learning.",
    "Neural networks are at the core of deep learning technologies.",
    "Artificial intelligence encompasses machine learning and deep learning techniques.",
]

# 数据预处理:分词、去除停用词等
stop_words = set(stopwords.words('english'))

def preprocess(text):
    tokens = word_tokenize(text.lower())  # 转为小写并分词
    tokens = [word for word in tokens if word.isalpha()]  # 去除非字母字符
    tokens = [word for word in tokens if word not in stop_words]  # 去除停用词
    return tokens

processed_docs = [preprocess(doc) for doc in documents]

# 创建词典和语料库
dictionary = corpora.Dictionary(processed_docs)
corpus = [dictionary.doc2bow(doc) for doc in processed_docs]

# 使用LDA模型进行主题推断,num_topics=2表示希望推断出2个主题
lda_model = LdaModel(corpus, num_topics=2, id2word=dictionary, passes=15)

# 打印每个主题及其关联词
for idx, topic in lda_model.print_topics(-1):
    print(f"Topic {idx}: {topic}")

# 推断给定新文档的主题分布
new_doc = "Deep learning is a critical component of AI."
bow = dictionary.doc2bow(preprocess(new_doc))
topics = lda_model.get_document_topics(bow)
print(f"\nNew document topic distribution: {topics}")

输出结果:
Topic 0: 0.070*“deep” + 0.070*“learning”

2. 总结

首先学习了概率图模型的推断问题,详细深入学习了变量消去法、信念传播及近似推断技术的原理和应用场景。在复杂问题中,利用采样法(如MCMC)和变分推断能够更有效地逼近分布。话题模型LDA被广泛应用于文本挖掘和自然语言处理任务,本文通过代码实例展示了LDA模型的构建及其推断流程,能够有效从文本数据中提取潜在的语义结构。未来研究可以进一步优化推断算法,提高计算效率和模型精度。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Threejs 实现3D 地图(01)创建基本场景

"d3": "^7.9.0", "three": "^0.169.0", "vue": "^3.5.10" <script setup> import { onMounted,ref } from vue import * as THREE from three import * as d3 from "d3"; //莫开托坐标 矫正地图…

快速上手C语言【下】(非常详细!!!)

目录 1. 指针 1.1 指针是什么 1.2 指针类型 1.2.1 指针-整数 1.2.2 指针解引用 1.3 const修饰 1.4 字符指针 1.5 指针-指针 1.6 二级指针 2. 数组 2.1 定义和初始化 2.2 下标引用操作符[ ] 2.3 二维数组 2.4 终极测试 3. 函数 3.1 声明和定义 3.2 传值调用…

解锁文本数据可视化的无限可能:Wordcloud库全解析

文章目录 **&#x1f31f;解锁文本数据可视化的无限可能&#xff1a;Wordcloud库全解析&#x1f510;**1. **背景介绍**2. **Wordcloud库是什么&#xff1f;**3. **如何安装Wordcloud库&#xff1f;**4. **Wordcloud库的基本函数使用方法**5. **实际应用场景**6. **常见问题及解…

JavaScript:闭包、防抖与节流

一&#xff0c;闭包 1&#xff0c;什么是闭包 闭包是指一个函数和其周围的词法环境(lexical environment)的组合。 换句话说&#xff0c;闭包允许一个函数访问并操作函数外部的变量。 闭包的核心特性: 函数内部可以访问外部函数的变量即使外部函数已经返回&#xff0c;内部…

(AtCoder Beginner Contest 375)B - Traveling Takahashi Problem

&#xff08;AtCoder Beginner Contest 375&#xff09;B - Traveling Takahashi Problem 题目大意 按顺序给定n个点 ( x i , y i ) (x_i,y_i) (xi​,yi​) 求按顺序走过这n个点并回到原点的总距离 任意两点之间的距离是欧几里得距离 思路 按照题意模拟即可&#xff0c;时间…

Cisco软件基础使用

‘地址还未设置’在交换机的CIL中输入enable进入特权模式&#xff0c;输入config t 进入设置 设置进入特权模式的密码和登录的密码 为交换机设置IP地址 未设置地址前显示如下。 下图设置进入特权模式的密码123456 &#xff0c;远程访问登录密码cisco。 exit退一步进入interfa…

cefsharp63.0.3(Chromium 63.0.3239.132)支持H264视频播放-PDF预览 老版本回顾系列体验

一、版本 版本:Cef 63/CefSharp63.0.3/Chromium63.0.3239.132/支持H264/支持PDF预览 支持PDF预览和H264推荐版本 63/79/84/88/100/111/125 <

免费字体二次贩卖;刮刮乐模拟器;小报童 | 生活周刊 #4

Raycast 的两款在线工具 Raycast 公司出品&#xff0c;必属精品&#xff0c;之前的代码转图片工具&#xff0c;交互和颜值都做得很漂亮 现在又新出了一个 图标制作器&#xff0c;一键制作美观好看的图标 猫啃网 没想到像【汇文明朝体】这样免费的字体都被人拿来当成【打字机字…

Gin框架操作指南03:HTML渲染

官方文档地址&#xff08;中文&#xff09;&#xff1a;https://gin-gonic.com/zh-cn/docs/ 注&#xff1a;本教程采用工作区机制&#xff0c;所以一个项目下载了Gin框架&#xff0c;其余项目就无需重复下载&#xff0c;想了解的读者可阅读第一节&#xff1a;Gin操作指南&#…

2024 “源鲁杯“ Round[1] web部分

Disal 打开页面没有有用信息&#xff0c;查看robots.txt发现f1ag.php&#xff0c;访问查看源代码&#xff1a; &#xfeff;<?php show_source(__FILE__); include("flag_is_so_beautiful.php"); $a$_POST[a]; $keypreg_match(/[a-zA-Z]{6}/,$a); $b$_REQUEST[…

【2024最新版】网络安全学习路线-适合入门小白

首先说明&#xff0c;我是一名CTF的web手&#xff0c;这是我自己亲身学习网络安全的路线&#xff0c;希望能够帮到大家&#xff0c;我虽然不是大牛&#xff0c;但我也希望能够帮助一些网安小白找到自己学习的方向&#xff0c;后面有就业的详细安全技术要求&#xff0c;如果真想…

NSSCTF-WEB-easy_eval

目录 前言 正文 思路 序列化构造 后渗透 思路点1:Redis 思路2:蚁剑插件绕过disable_functinons 结尾 作者的其他文章 前言 说是easy,实际很difficult 正文 思路 <?php class A{public $code "";function __call($method,$args){//最后执行命令eval($th…

(AtCoder Beginner Contest 375)A - Seats

&#xff08;AtCoder Beginner Contest 375&#xff09;A - Seats 题目大意 给定一个长度为 N N N的字符串 S S S S S S 只包含"#“和”." 求 "#.#"子串 的出现次数 思路 签到题 O ( N ) O(N) O(N) 模拟即可 代码 #include<iostream> #includ…

ssm配置模式

新版 用Java类&#xff0c;全注解demo案例 1. AppConfig.java (Spring主配置类)package com.example.config;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.cont…

SpringCloudAlibaba升级手册

目录 1. 版本对照 版本现状 SpringCloud与AlibabaCloud对应版本 Springboot与Elasticsearch版本对应 2. openfeign问题 问题 解决方案 3. Feign请求问题 问题 解决方法 4. Sentinel循环依赖 问题 解决方案 5. bootstrap配置文件不生效 问题 解决方案 6. Nacos的…

工信部绿色工厂、绿色设计产品、绿色供应链企业、绿色园区名单(2017-2022年)

我国工信部积极推动制造业的绿色转型&#xff0c;为了表彰在绿色制造领域取得显著成绩的企业和园区&#xff0c;发布了包括绿色工厂、绿色设计产品、绿色供应链企业、绿色园区在内的一系列公示名单。 2017年-2022年工信部绿色工厂、绿色设计产品、绿色供应链企业、绿色园区名单…

脉冲扩散模型

论文 Spiking Diffusion Models 主要内容是提出了“脉冲扩散模型&#xff08;Spiking Diffusion Models, SDMs&#xff09;”&#xff0c;一种基于脉冲神经网络&#xff08;SNN&#xff09;的生成模型&#xff0c;旨在解决传统人工神经网络&#xff08;ANN&#xff09;在图像生…

5G NR:UE初始接入信令流程浅介

UE初始接入信令流程 流程说明 用户设备&#xff08;UE&#xff09;向gNB-DU发送RRCSetupRequest消息。gNB-DU 包含 RRC 消息&#xff0c;如果 UE 被接纳&#xff0c;则在 INITIAL UL RRC MESSAGE TRANSFER 消息中包括为 UE 分配的低层配置&#xff0c;并将其传输到 gNB-CU。IN…

2012年国赛高教杯数学建模C题脑卒中发病环境因素分析及干预解题全过程文档及程序

2012年国赛高教杯数学建模 C题 脑卒中发病环境因素分析及干预 脑卒中&#xff08;俗称脑中风&#xff09;是目前威胁人类生命的严重疾病之一&#xff0c;它的发生是一个漫长的过程&#xff0c;一旦得病就很难逆转。这种疾病的诱发已经被证实与环境因素&#xff0c;包括气温和湿…

怎么开发一款app软件

我们公司想要做一个app软件&#xff0c;老板就让我多了解几家&#xff0c;我就总计一下相关的市场行业。 8月份我一共了解了6家的软件开发公司&#xff0c;也见识了什么叫软件开发公司&#xff0c;6套下来我也挑花了眼&#xff0c;老板也就更不用说了。老板只差让我做选择了…