机器学习 第十四章

目录

前言

一、隐马尔可夫模型

二、马尔可夫随机场

三、条件随机场

四、学习和推断

1.变量消去

2.信念传播

五、近似推断

1.MCMC采样

2.变分推断

六、话题模型

总结


前言

机器学习最重要的任务是根据一些已观察到的证据来对感兴趣的未知变量进行估计和推测。概率模型是其中的一种描述框架,在概率模型中,利用已知变量推测出未知变量的分布称为推断,核心是如何基于可观测变量推断出未知变量的条件分布。生成式模型先对联合分布进行建模,从而再来求解后验概率;判别式模型则是直接对条件分布进行建模。

概率图模型是一类用图来表达变量相关关系的概率模型。其图中的一个结点表示一个或一组随机变量,结点之间的边表示变量间的概率相关关系,即变量关系图。根据边的性质,可将概率图分为两类。第一类使用有向无环图表示变量间的依赖关系,称为有向图模型或贝叶斯网;第二类使用无向图表示变量间的相关关系,叫做无向图模型或者马尔可夫网。

一、隐马尔可夫模型

隐马尔可夫模型(HMM)是结构最简单的动态贝叶斯网,主要用于时序数据建模。其结构如下图所示:

其中的变量大致分为两组,第一组为状态变量y,通常假定状态变量是隐藏的、不可被观察的,因此也叫隐变量;第二组是观测变量x,其值可以是连续的也可以是离散的。变量之间的依赖关系遵循马尔可夫链,即系统下一时刻的状态仅由当前状态决定,不依赖于以往的任何状态。因此可以得到所有变量的联合概率分布:

P(x_1,y_1,\cdots ,x_n,y_n)=P(y_1)P(x_1|y_1)\prod_{i=2}^{n}P(y_i|y_{i-1})P(x_i|y_i)

 要想确定一个隐马尔可夫模型还需要一下的三种参数:

  • 状态转移概率:模型在各状态间转换的概率,通常即为矩阵A=[a_{ij}]_{N*N},其中a_{ij}=P(y_{t+1}=s_j|y_t=s_i)
  • 输出观测概率:根据状态输出获得各个观测值的概率,即为矩阵B=[b_{ij}]_{N*M},其中b_{ij}=P(x_t+o_j|y_t=s_i)
  • 初始状态概率:模型在初始时刻各状态出现的概率,记为\pi = (\pi _1,\pi _2,\cdots,\pi _N),其中\pi _i=P(y_1=s_i)

前上述三种参数加上状态空间和观测空间都确定了之后,就可以确定一个隐马尔可夫模型,其产生观测序列的步骤为:

  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,并执行第二步,否则停止

在实际应用中,人们主要关注的隐马尔可夫模型的三个基本问题:

  • 如何评估模型与观测序列之间的匹配程度
  • 如何根据观测序列推断出隐藏的模型状态
  • 如何训练模型使其能最好的描述观测数据

二、马尔可夫随机场

马尔可夫随机场(MRF)是典型的马尔可夫网,是一种著名的无向图模型。图中的每一个结点表示一个或一组变量,结点之间的边表示两个变量之间的依赖关系。MRF有一组势函数,也叫因子,其定义在变量子集上的非负实函数,主要用于定义概率分布函数。

下图为一个简单的MRF,对图中结点的子集,若其中任意两结点间都有边相连,就叫结点子集为一个团;若在一个团中加入任意一个结点都不在形成团,叫说该团为极大团。

若所有变量构成的极大团的集合为C,则MRF的联合概率函数可以定义为:

P(x)=\frac{1}{Z}\prod_{Q\in C}\Psi _Q(x_Q)

 其中Z=\sum_{x}\prod_{Q\in C}\psi _Q(x_Q)为规范化因子。

对于条件独立性,马尔可夫随机场通过分离集来实现条件独立。如下图所示,若A结点集必须经过C结点集才能到达B结点集,则称C为分离集。

全局马尔可夫性:给定两个变量子集的分离集,则这两个变量子集条件独立。

局部马尔可夫性:给定某变量的邻接变量,则该变量与其它变量条件独立。

成对马尔可夫性:给定所有其他变量,两个非邻接变量条件独立。

MRF中的势函数主要用于描述团中变量之间的相关关系,且要求为非负函数,且在所偏好的变量取值上有较大的函数值。一般使用指数函数来定义势函数,即

\psi _Q(x_Q)=e^{-H_Q(x_Q)}

其中H_Q(x_Q)为一个定义在变量x_Q上的实值函数。

三、条件随机场

条件随机场(CRF)是一种判别式无向图模型。条件随机场试图对多个变量在给定观测值后的条件概率进行建模,即若令x=\left \{ x_1,x_2,\cdots ,x_n \right \}为观测序列,y=\left \{ y_1,y_2,\cdots ,y_n \right \}为与之对应的标记序列,则条件随机场的目标是构建条件概率模型P。

理论上讲,图G可以具有任意结构,只要能表示标记变量之间的条件独立性关系即可;在现实应用之中,常用的为链式条件随机场(chain-structured CRF),结构大致如下图

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

P(y|x)=\frac{1}{Z}exp(\sum_{j}\sum_{i=1}^{n-1}\lambda _jt_j(y_{i+1},y_i,x,i)+ \sum_{k}\sum_{i=1}^{n}\mu _ks_k(y_i,x,i))

其中的t_j为定义在观测序列的两个相邻标记位置上的转移特征函数,用于刻画相邻标记变量之间的相关关系以及观测序列对它们的影响。s_k是定义在观测序列的标记位置i上的状态特征函数。要使用条件随机场,还需要合适的特征函数,一般为实值函数,以刻画数据的一些很可能成立或期望成立的经验特性。

条件随机场处理的是条件概率,马尔可夫随机场处理的是联合概率。

四、学习和推断

基于概率图模型定义的联合概率分布,能对目标变量的边际分步或以某些可观测变量为条件的条件分布进行推断。边际分布是指对无关变量求和或积分后得到结果。给定参数\Theta求解某个变量x的分布,就变成对联合分布中其他无关变量进行积分的过程,叫做边际化。

概率图模型推断大致分为两类:其一为精确推断方法,希望能计算出目标变量的边际分布或条件分布的精确值;其二为近似推断方法,希望在较低的时间复杂度的情况下获得原问题的近似解。

1.变量消去

 精确推断的实质是一类动态规划算法,其利用图模型所描述的条件独立性来削减计算目标概率值所需的计算量。变量消去法是最直观的精确推断算法,是构建其他精确推断算法的基础。下图为其工作流程:

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

其一个明显的缺点在于若需计算多个边际分布,重复使用变量消去法将会造成大量冗余计算。

2.信念传播

信念传播算法将变量消去法中的求和操作看做一个消息传递过程,较好的解决了求解多个边际分布时的重复计算问题。在信念传播算法中,一个结点仅在接收到来自其他所有结点的消息后才能向另一个结点发送消息,并且结点的边际分布正比于他所接受的消息的乘积。即:

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

若图结构中没有环,那么通过下述两个步骤就可以完成所有消息的传递(如下图所示):

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

五、近似推断

现实中近似推断更常用,其方法可大致分为采样和使用确定性近似完成近似推断。

1.MCMC采样

采样法基于的思路是基于概率分布来计算期望,并且可能进一步基于这些期望做出决策。概率图模型中最常用的采样技术是马尔可夫链蒙特卡罗(MCMC)方法。给定连续变量x\in X的概率密度函数p(x),假定有函数f:X\rightarrow \mathbb{R},那么可以计算f(x)的期望为

p(f)=E_p[f(X)]=\int_{x}f(x)p(x)dx

若x为一个高维多元变量,且服从一个复杂的分布。MCMC先构造出服从p分布的独立同分布变量,再得到上式的无偏估计:

\tilde{p}(f)=\frac{1}{N}\sum_{i=1}^{N}f(x_i)

构造出服从p分布的独立同分布变量的关键在于通过构造平稳分布为p的马尔可夫链来产生样本:若马尔可夫链运行时间足够长(即收敛到平稳状态),那么产出的样本x近似服从分布p。

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

MCMC的重要代表为MH算法,其基于拒绝采样来逼近平稳分布p,其基本步骤如下图所示:

吉布斯采样有时被视为MH算法的特例,其也使用马尔可夫链获取样本。

2.变分推断

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

概率图的一种简洁的表示方法为盘式记法,如下所示:

 盘式记法中相互独立、由相同机制生成的多个变量会被放在同一个方框里面,并在方框里面标出类似变量重复出现的个数N。上图所对应的推断和学习任务主要是由观察到的变量x来估计隐变量z和分布参数变量\Theta

概率模型的参数估计一般使用最大化似然函数的方法。再实践中使用变分法时最重要的是考虑对隐变量进行拆解,以及假设各变量子集服从何种分布。

六、话题模型

话题模型是一族生成式有向图模型,主要用于处理离散型数据。隐狄利克雷分配模型(LDA)是话题模型的典型代表。首先需要先了解话题模型的几个概念:词、文档和话题。

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

现实任务中可通过统计文档中出现的词来获得词频向量,但不知道其对应的话题是什么,也不知道与哪些话题相关。LDA解决了这些问题,其认为每篇文档包含多个话题,那么可以认为可以通过下述的步骤由话题生成文档t:

1.根据参数为\alpha的狄利克雷分布随机采样一个话题分布\Theta _t

2.在按下述步骤生成文档中的N个词:

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

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

 LDA的变量关系为:

其中文档的词频 w_{t,n}为唯一的已观测变量,通过其可以得到LDA模型对应的概率分布为:

p(W,z,\beta ,\Theta |\alpha ,\eta )=

                \prod_{t=1}^{T}p(\Theta _t|\alpha )\prod_{t=1}^{K}p(\beta _k|\eta )(\prod_{n=1}^{N}P(w_{t,n}|z_{t,n},\beta _k)P(z_{t,n}|\Theta _t))

给定训练数据W,LDA的模型参数可通过极大似然法估计,即寻找\alpha\eta已最大化似然估计下式:

LL(\alpha ,\eta )=\sum_{t=1}^{T}ln\, p(w_t|\alpha ,\eta )

在实践中通常采用变分法来求解。对于参数\alpha\eta已确定的,根据词频w_{t,n}来推断文档集所对应的话题结构可通过求解下式:

p(z,\beta ,\Theta |W,\alpha ,\eta )=\frac{p(W,z,\beta ,\Theta |\alpha ,\eta )}{p(W|\alpha ,\eta )}

在实践中常使用吉布斯采样或者变分法进行近似推断。

总结

 本章主要从生成式模型与判别式模型出发,引入概率图模型基本概念,利用图结构表达变量依赖关系;介绍隐马尔可夫模型、马尔可夫随机场、条件随机场、精确推断方法及LDA话题模型。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴听到你正在学习《机器学习》这本经典的教材,下面我为你提供第十四章概率图模型的Python实现学习笔记。 ## 1. 朴素贝叶斯分类器 ### 1.1 数据准备 在本章中,我们将使用著名的鸢尾花数据集进行分类。首先,我们可以从sklearn库中导入该数据集。 ```python from sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target ``` ### 1.2 朴素贝叶斯分类器实现 接下来,我们可以使用sklearn库中的朴素贝叶斯分类器进行分类,具体实现如下: ```python from sklearn.naive_bayes import GaussianNB from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) gnb = GaussianNB() gnb.fit(X_train, y_train) y_pred = gnb.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` ### 1.3 结果分析 运行上述代码后,我们可以得到该模型在测试集上的准确率,结果如下所示: ``` Accuracy: 1.0 ``` 可以看出,该模型在鸢尾花数据集上表现出色,准确率达到了100%。 ## 2. 隐马尔可夫模型 ### 2.1 数据准备 在本节中,我们将使用一个简单的例子来介绍隐马尔可夫模型的实现。假设我们有一个长度为100的序列,每个位置上的值都是0或1,其中0和1出现的概率分别为0.6和0.4。我们可以使用numpy库生成这个序列。 ```python import numpy as np np.random.seed(42) sequence = np.random.choice([0, 1], size=100, p=[0.6, 0.4]) ``` ### 2.2 隐马尔可夫模型实现 接下来,我们可以使用hmmlearn库中的隐马尔可夫模型进行序列建模,具体实现如下: ```python from hmmlearn import hmm model = hmm.MultinomialHMM(n_components=2) model.fit(sequence.reshape(-1, 1)) logprob, states = model.decode(sequence.reshape(-1, 1)) print('Sequence:', sequence) print('States:', states) ``` ### 2.3 结果分析 运行上述代码后,我们可以得到该模型对序列的建模结果,结果如下所示: ``` Sequence: [0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] States: [1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] ``` 可以看出,模型对序列进行了建模,并输出了每个位置上的状态,其中0表示“假”,1表示“真”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值