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

news2024/12/26 17:43:57

目录

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 隐马尔可夫模型

        隐马尔可夫模型(Hidden Markov Model,简称HMM)是结构最简单的一种贝叶斯网,在语音识别与自然语言处理领域上有着广泛的应用。HMM中的变量分为两组:状态变量与观测变量,其中状态变量一般是未知的,因此又称为“隐变量”,观测变量则是已知的输出值。在隐马尔可夫模型中,变量之间的依赖关系遵循如下两个规则:

  1. 观测变量的取值仅依赖于状态变量
  2. 下一个状态的取值仅依赖于当前状态,通俗来讲:现在决定未来,未来与过去无关,这就是著名的马尔可夫性

 基于上述变量之间的依赖关系,我们很容易写出隐马尔可夫模型中所有变量的联合概率分布:

\(P(x_1,y_1,\ldots,x_n,y_n)=P(y_1)P(x_1\mid y_1)\prod_{i=2}^nP(y_i\mid y_{i-1})P(x_i\mid y_i)\)

易知:欲确定一个HMM模型需要以下三组参数

  • 状态转移概率:模型在各个状态间转换的概率,通常记为矩阵\(A=[a_{ij}]_{N\times N}\),其中

\(a_{ij}=P(y_{t+1}=s_j\mid y_t=s_i) ,\quad1\leqslant i,j\leqslant N,\)

        表示在任意时刻t,若状态为\(s_i\), 则在下一时刻状态为\(s_j\)的概率.

  • 输出现测概率:模型根据当前状态获得各个观测值的概率,通常记为矩阵\(\mathbf{B}=[b_{ij}]_{N\times M}\),其中

\(b_{ij}=P(x_t=o_j\mid y_t=s_i) ,\quad1\leqslant i\leqslant N ,1\leqslant j\leqslant M\)

        表示在任意时刻t, 若状态为\(s_i\), 则观测值\(o_j\)被获取的概率.

  • 初始状态概率:模型在初始时刻各状态出现的概率,通常记为\(\pi=(\pi_1,\pi_2,\ldots,\pi_N)\),其中

\(\pi_{i}=P(y_{1}=s_{i}),\quad1\leqslant i\leqslant N\)

        表示模型的初始状态为\(s_i\)的概率.
 

当确定了一个HMM模型的三个参数后,便按照下面的规则来生成观测值序列: 

(1) 设置t = 1 ,并根据初始状态概率\(\pi\)选择初始状态\(y_1\);
(2) 根据状态\(y_t\)和输出现测概率B 选择观测变量取值\(x_t\);
(3) 根据状态\(y_t\)和状态转移矩阵A 转移模型状态,即确定\(y_t+1\);
(4) 若\(t < n\), 设置\(t = t + 1\) ,并转到第(2) 步,否则停止.

在实际应用中,HMM模型的发力点主要体现在下述三个问题上: 

  • 给定模型\( \lambda = [\mathbf{A},\mathbf{B},\pi]\),,如何有效计算其产生观测序列\(\mathbf{x}=\{x_{1},x_{2},\ldots,x_{n}\}\)的概率\(P(\mathbf{x}\mid\lambda)\)?换言之,如何评估模型与观测序列之间的匹配程度?
  • 给定模型\( \lambda = [\mathbf{A},\mathbf{B},\pi]\)和观测序列\(\mathbf{x}=\{x_{1},x_{2},\ldots,x_{n}\}\), 如何找到与此观测序列最匹配的状态序列\(\mathbf{y}=\{y_{1},y_{2},\ldots,y_{n}\}\)?换言之,如何根据观测序列推断出隐藏的模型状态?
  • 给定观测序列\(\mathbf{x}=\{x_{1},x_{2},\ldots,x_{n}\}\),如何调整模型参数\( \lambda = [\mathbf{A},\mathbf{B},\pi]\)使得该序列出现的概率\(P(\mathbf{x}\mid\lambda)\)最大?换言之,如何训练模型使其能最好地描述观测数据?

14.2 马尔可夫随机场 

         马尔可夫随机场(Markov Random Field)是一种典型的马尔可夫网,即使用无向边来表达变量间的依赖关系。在马尔可夫随机场中,对于关系图中的一个子集,若任意两结点间都有边连接,则称该子集为一个团;若再加一个结点便不能形成团,则称该子集为极大团。MRF使用势函数来定义多个变量的概率分布函数,其中每个(极大)团对应一个势函数,一般团中的变量关系也体现在它所对应的极大团中,因此常常基于极大团来定义变量的联合概率分布函数。具体而言,若所有变量构成的极大团的集合为C,则MRF的联合概率函数可以定义为:

\(P(\mathbf{x})=\frac{1}{Z}\prod_{Q\in\mathcal{C}}\psi_Q(\mathbf{x}_Q)\)

        对于条件独立性,马尔可夫随机场通过分离集来实现条件独立,若A结点集必须经过C结点集才能到达B结点集,则称C为分离集。书上给出了一个简单情形下的条件独立证明过程,十分贴切易懂,此处不再展开。基于分离集的概念,得到了MRF的三个性质: 

  1. 全局马尔可夫性:给定两个变量子集的分离集,则这两个变量子集条件独立。
  2. 局部马尔可夫性:给定某变量的邻接变量,则该变量与其它变量条件独立。
  3. 成对马尔可夫性:给定所有其他变量,两个非邻接变量条件独立。

        对于MRF中的势函数,势函数主要用于描述团中变量之间的相关关系,且要求为非负函数,直观来看:势函数需要在偏好的变量取值上函数值较大,例如:若x1与x2成正相关,则需要将这种关系反映在势函数的函数值中。一般我们常使用指数函数来定义势函数:

\(\psi_Q(\mathbf{x}_Q)=e^{-H_Q(\mathbf{x}_Q)}\)

\(H_Q(\mathbf{x}_Q)=\sum_{u,v\in Q,u\neq v}\alpha_{uv}x_ux_v+\sum_{v\in Q}\beta_vx_v\)

14.3 条件随机场 

        条件随机场(Conditional Random Field,简称CRF) 是一种判别式无向图模型。

        隐马尔可夫模型和马尔可夫随机场都属于生成式模型,即对联合概率进行建模,条件随机场则是对条件分布进行建模

        CRF试图在给定观测值序列后,对状态序列的概率分布进行建模,即P(y | x)。直观上看:CRF与HMM的解码问题十分类似,都是在给定观测值序列后,研究状态序列可能的取值。CRF可以有多种结构,只需保证状态序列满足马尔可夫性即可,一般我们常使用的是链式条件随机场

        与马尔可夫随机场定义联合概率类似地,CRF也通过团以及势函数的概念来定义条件概率P(y | x)。在给定观测值序列的条件下,链式条件随机场主要包含两种团结构:单个状态团及相邻状态团,通过引入两类特征函数便可以定义出目标条件概率:

\(P(\mathbf{y}\mid\mathbf{x})=\frac{1}{Z}\exp\left(\sum\sum_{i=1}^{n-1}\lambda_{j}t_{j}(y_{i+1},y_{i},\mathbf{x},i)+\sum_{k}\sum_{i=1}^{n}\mu_{k}s_{k}(y_{i},\mathbf{x},i)\right)\)

        以词性标注为例,如何判断给出的一个标注序列靠谱不靠谱呢?转移特征函数主要判定两个相邻的标注是否合理,例如:动词+动词显然语法不通;状态特征函数则判定观测值与对应的标注是否合理。因此我们可以定义一个特征函数集合,用这个特征函数集合来为一个标注序列打分,并据此选出最靠谱的标注序列。也就是说,每一个特征函数(对应一种规则)都可以用来为一个标注序列评分,把集合中所有特征函数对同一个标注序列的评分综合起来,就是这个标注序列最终的评分值。可以看出:特征函数是一些经验的特性。 

14.4学习与推断 

         对于生成式模型,通常我们都是先对变量的联合概率分布进行建模,接着再求出目标变量的边际分布(marginal distribution),那如何从联合概率得到边际分布呢?这便是学习与推断。下面主要介绍两种精确推断的方法:变量消去信念传播

14.4.1 变量消去 

        变量消去利用条件独立性来消减计算目标概率值所需的计算量,它通过运用乘法与加法的分配率,将对变量的积的求和问题转化为对部分变量交替进行求积与求和的问题,从而将每次的运算控制在局部,达到简化运算的目的。 

\(\begin{aligned}
P(x_{5})& =\sum_{x_{4}}\sum_{x_{3}}\sum_{x_{2}}\sum_{x_{1}}P(x_{1},x_{2},x_{3},x_{4},x_{5}) \\
&=\sum_{x_{4}}\sum_{x_{3}}\sum_{x_{2}}\sum_{x_{1}}P(x_{1})P(x_{2}\mid x_{1})P(x_{3}\mid x_{2})P(x_{4}\mid x_{3})P(x_{5}\mid x_{3})\end{aligned}\) 

14.4.2 信念传播 

        若将变量求和操作看作是一种消息的传递过程,信念传播可以理解成:一个节点在接收到所有其它节点的消息后才向另一个节点发送消息,同时当前节点的边际概率正比于他所接收的消息的乘积: 

\(P(x_i)\propto\prod_{k\in n(i)}m_{ki}(x_i)\)

        因此只需要经过下面两个步骤,便可以完成所有的消息传递过程。利用动态规划法的思想记录传递过程中的所有消息,当计算某个结点的边际概率分布时,只需直接取出传到该结点的消息即可,从而避免了计算多个边际分布时的冗余计算问题。 

  1. 指定一个根节点,从所有的叶节点开始向根节点传递消息,直到根节点收到所有邻接结点的消息(从叶到根)
  2. 从根节点开始向叶节点传递消息,直到所有叶节点均收到消息(从根到叶)

 14.5 近似推断

        在现实应用中近似推断方法更为常用,近似推断方法大致可分为两大类: 第一类是采样(sampling),通过使用随机化方法完成近似;  第二类是使用确定性近似完成近似推断,典型代表为 变分推断(variational inference)。 

14.5.1 MCMC采样

        采样法直接计算或逼近这个期望,比较高效,若样本\({x_1,x_2,...,x_n}\)独立,基于大数定律,这种通过大量来样的办法就能获得较高的近似精度。问题的关键变为如何采样。对概率图模型来说,就是如何高效地基于图模型所描述的概率分布来获取样本.。概率图模型中最常用的采样技术是马尔可夫链蒙特卡罗(Markov Chain Monte Carlo,简称 MCMC)方法。

        MCMC 方法的关键就在于通过构造"平稳分布为 p 的马尔同夫链"来产生样本。若马尔可夫链运行时间足够长(即收敛到平稳状态),则此时产出的样本 x 近似服从于分布 p。如何判断马尔可夫链到达平稳状态呢???

若在某个时刻马尔可夫链满足平稳条件,

 \(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(x) 是该马尔可夫链的平稳分布,且马尔可夫链在满足该条件时巳收敛到平稳状态。

        MCMC 方法先设法构造一条马尔可夫链,使其收敛至平稳分布恰为待估计参数的后验分布,然后通过这条马尔可夫链来产生符合后验分布的样本,并基于这些样本来进行估计。这里马尔可夫链转移概率的构造至关重要、 不同的构造方法将产生不同的 MCMC 算法。

        Metropolis-Hastings (简称 MH) 算法是 MCMC 的重要代表。它基于"拒绝采样" (rejeet sampling) 来逼近平稳分布 p。

        吉布斯采样(Gibbs sampling)有时被视为MH 算法的特例,它也使用马尔可夫链获取样本,而该马尔可夫链的平稳分布也是采样的目标分布p(x). 具体来说,假定\(\mathbf{x}=\{x_{1},x_{2},\ldots,x_{N}\}\), 目标分布为p(x) , 在初始化x 的取值后,通过循环执行以下步骤来完成采样: 

  1. 随机或以某个次序选取某变量\(x_i\);
  2. 根据x中除\(x_i\)外的变量的现有取值,计算条件概率\(p(x_{i}\mid\mathbf{x}_{\bar{i}})\),其中\(\mathbf{x}_{\bar{i}}=\{x_{1},x_{2},\ldots,x_{i-1},x_{i+1},\ldots,x_{N}\}\);
  3. 根据\(p(x_{i}\mid\mathbf{x}_{\bar{i}})\)对变量\(x_i\)采样,用来样值代替原值

14.5.2 变分推断 

        变分推断通过使用己知简单分布来逼近需推断的复杂分布,并通过限制近似分布的类型,从而得到一种局部最优、但具有确定解的近似后验分布。

概率图模型一种简洁的表示方法一一盘式记法

        使用变分法时,最重要的是考虑如何对隐变量进行拆解,以此假 设各变量子集服从何种分布,结合 EM 算法 可进行概率图模型的推断和参数估计。显然,若隐变量的拆解或变量子集的分布假设不当,将会导致变分法效率低、效果差。 

14.6 话题模型 

        话题模型主要用于处理文本类数据,其中隐狄利克雷分配模型(Latent Dirichlet Allocation,简称LDA)是话题模型的杰出代表。在话题模型中,有以下几个基本概念:词(word)、文档(document)、话题(topic)。 

  • :最基本的离散单元;
  • 文档:由一组词组成,词在文档中不计顺序;
  • 话题:由一组特定的词组成,这组词具有较强的相关关系。

        在现实任务中,一般我们可以得出一个文档的词频分布,但不知道该文档对应着哪些话题,LDA话题模型正是为了解决这个问题。具体来说:LDA认为每篇文档包含多个话题,且其中每一个词都对应着一个话题。因此可以假设文档是通过如下方式生成: 

(1) 根据参数为α 的狄利克雷分布随机采样一个话题分布\(\Theta_{t};\);

(2) 按如下步骤生成文档中的N个词:

(a) 根据\(\Theta_{t};\)进行话题指派, 得到文档t 中词n的话题\(z_t,n\)

(b) 根据指派的话题所对应的词频分布\(\beta_{k}\)随机采样生成词

        这样一个文档中的所有词都可以认为是通过话题模型来生成的,当已知一个文档的词频分布后(即一个N维向量,N为词库大小),则可以认为:每一个词频元素都对应着一个话题,而话题对应的词频分布则影响着该词频元素的大小。因此很容易写出LDA模型对应的联合概率函数: 

(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})}\) 

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

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

相关文章

入门 MySQL 数据库:基础指南

简介 MySQL 是一个非常流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛用于 Web 应用、企业应用和数据仓库。本博客将引导你从零开始&#xff0c;学习 MySQL 数据库的基础知识。 什么是 MySQL&#xff1f; MySQL 是一个基于 SQL&#xff08;Str…

秒懂Linux之制作简易shell

目录 一.全部代码 二.自定义shell 一.全部代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h>#define SIZE 1024 #define MAX_ARGC 64 #define SEP &…

pnpm【实用教程】2024最新版

pnpm 简介 pnpm 全称 performant npm&#xff0c;即高性能的 npm&#xff0c;由 npm/yarn 衍生而来&#xff0c;解决了 npm/yarn 内部潜在的 bug&#xff0c;极大的优化了性能&#xff0c;扩展了使用场景&#xff0c;被誉为 最先进的包管理工具 安装 pnpm npm i -g pnpm使用 pn…

安全基础学习-SM4加密算法

SM4 是一种中国国家密码标准(GB/T 32907-2016)中定义的分组加密算法,又称为“中国商用密码算法SM4”。它是由中国国家密码管理局发布的,并广泛应用于金融、电子商务和其他需要数据加密的场景。 1、SM4 算法概述 SM4 是一种对称加密算法,意味着加密和解密使用相同的密钥。…

升级 kubeadm 部署的 k8s 集群

文章目录 一、环境二、注意事项1、备份数据2、跨版本升级3、支持的版本偏差3.1、kube-apiserver3.2、kubeklet3.3、kube-proxy3.4、kube-controller-manager、kube-scheduler 和 cloud-controller-manager3.5、kubectl 4、升级流程 三、版本升级&#xff08;补丁版本升级&#…

css 文字图片居中及网格布局

以下内容纯自已个人理解&#xff0c;直接上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

ervlet、jsp、Cookie、Ajax学习

系列文章目录 第一章 基础知识、数据类型学习 第二章 万年历项目 第三章 代码逻辑训练习题 第四章 方法、数组学习 第五章 图书管理系统项目 第六章 面向对象编程&#xff1a;封装、继承、多态学习 第七章 封装继承多态习题 第八章 常用类、包装类、异常处理机制学习 第九章 集…

Nginx 正则表达式与rewrite

目录 一、正则表达式 二、rewrite 2.1 rewrite简述 2.2 rewrite 跳转 2.3 rewrite 执行顺序 2.4 rewrite 语法格式 三、location 3.1 location 类别 3.2 location常用匹配规则 3.3 location优先级 3.4 示例说明 3.5 匹配规则总结 3.6 三个匹配规则定义 四、实战…

【业务场景实战】如何优雅地进行缓存预热?

从Java基础到中间件再到微服务&#xff0c;我们学了这么多&#xff0c;但遇到真实项目的时候&#xff0c;还是不会根据所学知识&#xff0c;对项目进行改造&#xff1b;或者太久不用早已忘记。学会用才是走得更远&#xff01; 缓存穿透、雪崩&#xff0c;大家都不陌生&#xf…

【Linux操作系统】——Centos7下安装python3.8

1.Centos7下安装python3.8 1.1 安装依赖包 yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel ncurses-devel sqlite-devel readline-devel readline-devel make在CentOS 7上安装Python时&#xff0c;‌需要安装一些必要的依赖包以确保Python的正常编译和运…

HarmonyOS NEXT - 项目基础框架的搭建

demo 地址: https://github.com/iotjin/JhHarmonyDemo 代码不定时更新&#xff0c;请前往github查看最新代码 HarmonyOS NEXT - 项目基础框架的搭建 序前置工作项目的目录结构主界面实现BaseTabBar代码实现子页面实现路由跳转登录页面和主页面切换登录实现退出登录 序 项目基于…

Spark-环境启动

一、概览 从start-all.sh开始捋&#xff0c;一直捋到Master、Worker的启动并建立通信 二、宏观描述 Master端 1、start-all.sh调用start-master.sh启动Master 2、执行org.apache.spark.deploy.master.Master中main方法 3、通过工厂模式创建RpcEnv子类NettyRpcEnv a、创建…

viper配置文件读取管理库 一个支持12种文件类型,5种远程协议的配置文件管理和加载工具库 使用方法示例

viper是一个不错的配置文件管理库&#xff0c; 他支持的配置文件类型依次有 "json", "toml", "yaml", "yml", "properties", "props", "prop", "hcl", "tfvars", "dotenv&quo…

java:实现简单的验证码功能

效果 实现思路 验证码图片的url由后端的一个Controller生成&#xff0c;前端请求这个Controller接口的时候根据当前时间生成一个uuid&#xff0c;并把这个uuid在前端使用localStorage缓存起来&#xff0c;下一次还是从缓存中获取。 Controller生成验证码之后&#xff0c;把前…

Qt 学习第六天:页面布局

如何设计页面&#xff1f; 有个类似沙盒模式的玩法&#xff0c;Qt Widget Designer可以更好的帮助我们设计页面 点击.ui文件进入 右上方可以看到四种常见的布局&#xff1a; 四种布局 &#xff08;一&#xff09;水平布局horizontalLayout&#xff1a;QHBoxLayout H 是 hori…

c++实现B树(上)

哈喽啊&#xff01;好久不见&#xff0c;甚是想念&#xff01;失踪人口要回归了&#xff0c;时隔一个多月小吉我终于要更新blog了&#x1f389;。在停更的一个多月中&#xff0c;小吉也有在好好学习提升自己&#xff0c;立志给大家呈现好文章。  现在让我们进入正题吧&#xf…

初识C++:开启C++之旅

目录 1.C的第一个程序 2.namesapce命名空间域 2.1namespace的意义 2.2.2namespace的定义 2.3命名空间的使用 3.C输入/输出 4.缺省参数 5.函数重载 6.引用 6.1引用的特性 6.2引用的使用 1.C的第一个程序 c版本&#xff1a; #include<iostream>using std::cout…

kali安装wechart

前言&#xff1a; 突发奇想想在kali安装个wechart&#xff0c;试了下网上的很多&#xff0c;玩坏了一个虚拟机算是找到了一个不错的方法&#xff0c;这里记录下&#xff0c;防迷路 基础配置&#xff1a; 首先修改源&#xff1a; vim /etc/apt/sources.list 注释默认配置&…

EasyCVR视频汇聚平台:打造全栈视频监控系统的基石,解锁可视化管理与高效运维

随着科技的飞速发展&#xff0c;视频监控已成为现代社会不可或缺的一部分&#xff0c;广泛应用于社区、公共场所、工业领域等多个场景。EasyCVR视频汇聚平台&#xff0c;作为一款高性能的视频汇聚管理平台&#xff0c;凭借其强大的视频处理、汇聚与融合能力&#xff0c;在构建全…

centos8 安装zookeeper

1&#xff1a;下载 zookeeper官网 解压&#xff1a;tar -zxvf apache-zookeeper-3.6.3.tar.gz 修改自己想要的文件目录 mv apache-zookeeper-3.6.3 zookeeper_3.6.3 备份一下 配置文件 cp zoo_sample.cfg zoo.cfg vim zoo.cfg 编辑日志文件和端口号