文章目录

  • 参考资料
  • 1. 基本概念
  • 2. 隐马尔可夫模型(HMM)
    • 2.1 隐马尔可夫三大问题
      • 1. 第一个问题解法
      • 2. 第二个问题解法
      • 3. 第三个问题解法
  • 3. 马尔可夫随机场(MRF)
    • 3.1 MRF性质
    • 3.2 势函数
  • 4. 条件随机场(CRF)
  • 5. 学习与推断
    • 5.1 变量消去
    • 5.2 信念传播
  • 6. LDA话题模型
  • 7. 后记
    • 7.1 EM算法、HMM、CRF的比较

参考资料

  1. Machine-learning-learning-notes
  2. LeeML-Notes
  3. ML-NLP

本博客根据周志华的西瓜书和参考资料1、2、3所做的笔记,主要用于学习,非技术类博客,因此存在大量复制粘贴,请见谅。
如果本篇博客有后记部分,则该部分表示的是在书本原有的基础知识上,进行的知识点的扩充。

1. 基本概念

概率图模型(probabilistic graphical model)是一类用图结构来表达各属性之间相关关系的概率模型,一般而言:图中的一个结点表示一个或一组随机变量,结点之间的边则表示变量间的相关关系,从而形成了一张“变量关系图”。

概率图模型分为贝叶斯网络(Bayesian Network)和马尔可夫网络(Markov Network)两大类。贝叶斯网络可以用一个有向图结构表示,马尔可夫网络可以表示成一个无向图的网络结构。更详细地说,概率图模型包括了朴素贝叶斯模型、最大熵模型、隐马尔可夫模型、条件随机场、主题模型等,在机器学习的诸多场景中都有着广泛的应用。

贝叶斯网络可参考之前的博客。

以下是一些基本概念。

  1. 将随机变量作为结点,若两个随机变量相关或者不独立,则将二者连接一条边;若给定若干随机变量,则形成一个有向图,即构成一个网络

  2. 如果该网络是有向无环图,则这个网络称为贝叶斯网络。

  3. 如果这个图退化成线性链的方式,则得到马尔可夫模型;因为每个结点都是随机变量,将其看成各个时刻(或空间)的相关变化,以随机过程的视角,则可以看成是马尔可夫过程

  4. 若上述网络是无向的,则是无向图模型,又称马尔可夫随机场或者马尔可夫网络

  5. 如果在给定某些条件的前提下,研究这个马尔可夫随机场,则得到条件随机场

  6. 如果使用条件随机场解决标注问题,并且进一步将条件随机场中的网络拓扑变成线性的,则得到线性链条件随机场

2. 隐马尔可夫模型(HMM)

马尔可夫模型相关知识点可参考博客。

在某些情况下马尔科夫过程不足以描述我们希望发现的模式。例如,一个隐居的人可能不能直观的观察到天气的情况,但是有一些海藻。民间的传说告诉我们海藻的状态在某种概率上是和天气的情况相关的。在这种情况下我们有两个状态集合,一个可以观察到的状态集合(海藻的状态)和一个隐藏的状态(天气的状况)。我们希望能找到一个算法可以根据海藻的状况和马尔科夫假设来预测天气的状况。而这个算法就叫做隐马尔可夫模型(HMM)

隐马尔可夫模型 (Hidden Markov Model) 是一种统计模型,用来描述一个含有隐含未知参数的马尔可夫过程。它是结构最简单的动态贝叶斯网,这是一种著名的有向图模型,主要用于时序数据建模,在语音识别、自然语言处理等领域有广泛应用。

HMM中的变量分为两组:状态变量观测变量
如图所示,隐马尔可夫模型中的变量可分为两组:第一组是状态变量[y1,y2,...,yn][y_1, y_2,..., y_n][y1​,y2​,...,yn​],其中yi∈yy_i \in yyi​∈y表示第iii时刻的系统状态,通常假定状态变量是隐藏的、不可被观测的,因此状态变量亦称隐变量(hidden variable).,第二组观测变量则是已知的输出值。

在隐马尔可夫模型中,变量之间的依赖关系遵循如下两个规则:

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

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

除了结构信息,欲确定一个隐马尔可夫模型还需以下三组参数:

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

2.1 隐马尔可夫三大问题

该部分摘抄自https://github.com/NLP-LOVE/ML-NLP/blob/master/Machine%20Learning/5.2%20Markov/5.2%20Markov.md

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

  1. 给定模型,如何有效计算产生观测序列的概率?换言之,如何评估模型与观测序列之间的匹配程度?

  2. 给定模型和观测序列,如何找到与此观测序列最匹配的状态序列?换言之,如何根据观测序列推断出隐藏的模型状态?

  3. 给定观测序列,如何调整模型参数使得该序列出现的概率最大?换言之,如何训练模型使其能最好地描述观测数据?

前两个问题是模式识别的问题:

  1. 根据隐马尔科夫模型得到一个可观察状态序列的概率(评价);
  2. 找到一个隐藏状态的序列使得这个序列产生一个可观察状态序列的概率最大(解码)。

第三个问题就是根据一个可以观察到的状态序列集产生一个隐马尔科夫模型(学习)。

对应的三大问题解法:

  1. 向前算法(Forward Algorithm)、向后算法(Backward Algorithm)
  2. 维特比算法(Viterbi Algorithm)
  3. 鲍姆-韦尔奇算法(Baum-Welch Algorithm) (约等于EM算法)

下面我们以一个场景来说明这些问题的解法到底是什么?

小明现在有三天的假期,他为了打发时间,可以在每一天中选择三件事情来做,这三件事情分别是散步、购物、打扫卫生(对应着可观测序列),可是在生活中我们所做的决定一般都受到天气的影响,可能晴天的时候想要去购物或者散步,可能下雨天的时候不想出门,留在家里打扫卫生。而天气(晴天、下雨天)就属于隐藏状态。

那么,我们提出三个问题,分别对应马尔可夫的三大问题:

  1. 已知整个模型,我观测到连续三天做的事情是:散步,购物,收拾。那么,根据模型,计算产生这些行为的概率是多少。
  2. 同样知晓这个模型,同样是这三件事,我想猜,这三天的天气是怎么样的。
  3. 最复杂的,我只知道这三天做了这三件事儿,而其他什么信息都没有。我得建立一个模型,晴雨转换概率,第一天天气情况的概率分布,根据天气情况选择做某事的概率分布。

1. 第一个问题解法

遍历算法

这个是最简单的算法了,假设第一天(T=1 时刻)是晴天,想要购物,那么就把图上的对应概率相乘就能够得到了。

第二天(T=2 时刻)要做的事情,在第一天的概率基础上乘上第二天的概率,依次类推,最终得到这三天(T=3 时刻)所要做的事情的概率值,这就是遍历算法,简单而又粗暴。但问题是用遍历算法的复杂度会随着观测序列和隐藏状态的增加而成指数级增长。

前向算法

  1. 假设第一天要购物,那么就计算出第一天购物的概率(包括晴天和雨天);假设第一天要散步,那么也计算出来,依次枚举。
  2. 假设前两天是购物和散步,也同样计算出这一种的概率;假设前两天是散步和打扫卫生,同样计算,枚举出前两天行为的概率。
  3. 第三步就是计算出前三天行为的概率。

细心的读者已经发现了,第二步中要求的概率可以在第一步的基础上进行,同样的,第三步也会依赖于第二步的计算结果。那么这样做就能够节省很多计算环节,类似于动态规划

后向算法

跟前向算法相反,我们知道总的概率肯定是1,那么B_t=1,也就是最后一个时刻的概率和为1,先计算前三天的各种可能的概率,再计算前两天、前一天的数据,跟前向算法相反的计算路径。

2. 第二个问题解法

维特比算法是一个特殊但应用最广的动态规划算法。利用动态规划,可以解决任何一个图中的最短路径问题。而维特比算法是针对一个特殊的图—篱笆网络(Lattice)的有向图最短路径问题而提出的。它之所以重要,是因为凡是使用隐含马尔可夫模型描述的问题都可以用它来解码,包括今天的数字通信、语音识别、机器翻译、拼音转汉字、分词等。

维特比算法一般用于模式识别,通过观测数据来反推出隐藏状态,下面一步步讲解这个算法。

因为是要根据观测数据来反推,所以这里要进行一个假设,假设这三天所做的行为分别是:散步、购物、打扫卫生,那么我们要求的是这三天的天气(路径)分别是什么。

  1. 初始计算第一天下雨和第一天晴天去散步的概率值:

    △1(R)\bigtriangleup_1(R)△1​(R)表示第一天下雨的概率

    πR\pi_RπR​表示中间的状态(下雨)s概率

    bR(O1=w)b_R(O_1=w)bR​(O1​=w)表示下雨并且散步的概率

    aR−Ra_{R-R}aR−R​表示下雨天到下雨天的概率

△1(R)=πR∗bR(O1=w)=0.6∗0.1=0.06\bigtriangleup_1(R)=\pi_R*b_R(O_1=w)=0.6*0.1=0.06△1​(R)=πR​∗bR​(O1​=w)=0.6∗0.1=0.06

△1(S)=πS∗bS(O1=w)=0.4∗0.6=0.24\bigtriangleup_1(S)=\pi_S*b_S(O_1=w)=0.4*0.6=0.24△1​(S)=πS​∗bS​(O1​=w)=0.4∗0.6=0.24

初始路径为:

​ ϕ1(R)=Rainy\phi_1(R)=Rainyϕ1​(R)=Rainy

​ ϕ1(S)=Sunny\phi_1(S)=Sunnyϕ1​(S)=Sunny

  1. 计算第二天下雨和第二天晴天去购物的概率值:

    对应路径为:

  2. 计算第三天下雨和第三天晴天去打扫卫生的概率值:

    对应路径为:

  3. 比较每一步中 △\bigtriangleup△ 的概率大小,选取最大值并找到对应的路径,依次类推就能找到最有可能的隐藏状态路径

    第一天的概率最大值为 △1S\bigtriangleup_1S△1​S,对应路径为Sunny,

    第二天的概率最大值为 △2S\bigtriangleup_2S△2​S,对应路径为Sunny,

    第三天的概率最大值为 △3R\bigtriangleup_3R△3​R,对应路径为Rainy。

  4. 合起来的路径就是Sunny->Sunny->Rainy,这就是我们所求。

3. 第三个问题解法

鲍姆-韦尔奇算法(Baum-Welch Algorithm) (约等于EM算法),详细讲解请见:监督学习方法与Baum-Welch算法

3. 马尔可夫随机场(MRF)

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

在马尔可夫随机场中,对于关系图中的一个子集,若任意两结点间都有边连接,则称该子集为一个团;若再加一个结点便不能形成团,则称该子集为极大团。MRF使用势函数来定义多个变量的概率分布函数,其中每个(极大)团对应一个势函数,一般团中的变量关系也体现在它所对应的极大团中,因此常常基于极大团来定义变量的联合概率分布函数。

3.1 MRF性质

对于条件独立性,马尔可夫随机场通过分离集来实现条件独立,若A结点集必须经过C结点集才能到达B结点集,则称C为分离集。基于分离集的概念,得到了MRF的三个性质:

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

3.2 势函数

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

4. 条件随机场(CRF)

如同马尔可夫随机场,条件随机场为具有无向的图模型,图中的顶点代表随机变量,顶点间的连线代表随机变量间的相依关系,在条件随机场中,随机变量Y 的分布为条件机率,给定的观察值则为随机变量 X。下图就是一个线性连条件随机场。

前面所讲到的隐马尔可夫模型和马尔可夫随机场都属于生成式模型,即对联合概率进行建模,条件随机场则是对条件分布进行建模。CRF试图在给定观测值序列后,对状态序列的概率分布进行建模,即P(y | x)。

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

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

5. 学习与推断

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

5.1 变量消去

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

假定推断目标是计算边际概率P(x5)P(x_5)P(x5​). 显然,为了完成此目标,只需通过加法消去变量[x1,x2,x3,x4][x_1, x_2, x_3, x_4][x1​,x2​,x3​,x4​], 即

不难发现,若采用[x1,x2,x4,x3][x_1, x_2, x_4, x_3][x1​,x2​,x4​,x3​]的顺序计算加法,则有

5.2 信念传播

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

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

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

6. LDA话题模型

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

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


其中,类似Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布。

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

从上图可以看出,LDA的三个表示层被三种颜色表示出来:

corpus-level(红色): α和β表示语料级别的参数,也就是每个文档都一样,因此生成过程只采样一次。
document-level(橙色): θ是文档级别的变量,每个文档对应一个θ。
word-level(绿色): z和w都是单词级别变量,z由θ生成,w由z和β共同生成,一个单词w对应一个主题z。

通过上面对LDA生成模型的讨论,可以知道LDA模型主要是想从给定的输入语料中学习训练出两个控制参数α和β,当学习出了这两个控制参数就确定了模型,便可以用来生成文档。其中α和β分别对应以下各个信息:

α:分布p(θ)需要一个向量参数,即Dirichlet分布的参数,用于生成一个主题θ向量;
β:各个主题对应的单词概率分布矩阵p(w|z)。

把w当做观察变量,θ和z当做隐藏变量,就可以通过EM算法学习出α和β,求解过程中遇到后验概率p(θ,z|w)无法直接求解,需要找一个似然函数下界来近似求解,原作者使用基于分解(factorization)假设的变分法(varialtional inference)进行计算,用到了EM算法。每次E-step输入α和β,计算似然函数,M-step最大化这个似然函数,算出α和β,不断迭代直到收敛。

7. 后记

7.1 EM算法、HMM、CRF的比较

  1. EM算法是用于含有隐变量模型的极大似然估计或者极大后验估计,有两步组成:E步,求期望(expectation);M步,求极大(maxmization)。本质上EM算法还是一个迭代算法,通过不断用上一代参数对隐变量的估计来对当前变量进行计算,直到收敛。注意:EM算法是对初值敏感的,而且EM是不断求解下界的极大化逼近求解对数似然函数的极大化的算法,也就是说EM算法不能保证找到全局最优值。对于EM的导出方法也应该掌握。

  2. 隐马尔可夫模型是用于标注问题的生成模型。有几个参数(π,A,B):初始状态概率向量π,状态转移矩阵A,观测概率矩阵B。称为马尔科夫模型的三要素。马尔科夫三个基本问题:

    概率计算问题:给定模型和观测序列,计算模型下观测序列输出的概率。–》前向后向算法

    学习问题:已知观测序列,估计模型参数,即用极大似然估计来估计参数。–》Baum-Welch(也就是EM算法)和极大似然估计。

    预测问题:已知模型和观测序列,求解对应的状态序列。–》近似算法(贪心算法)和维比特算法(动态规划求最优路径)

  3. 条件随机场CRF,给定一组输入随机变量的条件下另一组输出随机变量的条件概率分布密度。条件随机场假设输出变量构成马尔科夫随机场,而我们平时看到的大多是线性链条随机场,也就是由输入对输出进行预测的判别模型。求解方法为极大似然估计或正则化的极大似然估计。

  4. 之所以总把HMM和CRF进行比较,主要是因为CRF和HMM都利用了图的知识,但是CRF利用的是马尔科夫随机场(无向图),而HMM的基础是贝叶斯网络(有向图)。而且CRF也有:概率计算问题、学习问题和预测问题。大致计算方法和HMM类似,只不过不需要EM算法进行学习问题。

  5. HMM和CRF对比:其根本还是在于基本的理念不同,一个是生成模型,一个是判别模型,这也就导致了求解方式的不同。

【周志华机器学习】十四、概率图模型相关推荐

  1. 【周志华机器学习】四、决策树

    文章目录 参考资料 1. 基本概念 2. 决策树的构造 3. ID3算法(使用信息增益) 4. C4.5算法(使用增益率) 5. CART算法(使用基尼系数) 三种不同的决策树算法小结 6. 剪枝处理 ...

  2. 周志华-机器学习 (绪论、模型评估与选择)

  3. 周志华机器学习--模型评估与选择

    周志华机器学习–模型评估与选择 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 文章目录 周 ...

  4. 【读书笔记】周志华 机器学习 第二章 模型评估和选择

    第二章 模型评估和选择 1 欠拟合和过拟合 偏差和方差 1.1 欠拟合和过拟合 1.2 偏差和方差 2 评估方法 性能度量 2.1 评估方法 2.1.1 留出法 2.2.2 交叉验证法 2.2.3 自 ...

  5. 周志华机器学习--绪论

    周志华机器学习–绪论 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 文章目录 周志华机器学 ...

  6. 周志华机器学习(西瓜书)学习笔记(持续更新)

    <周志华机器学习>笔记 第1章 绪论 1.1 引言 1.2 基本术语 1.3 假设空间 1.4 归纳偏好 1.5 发展历程 1.6 应用现状 第2章 模型评估与选择 2.1 经验误差与过拟 ...

  7. 周志华机器学习-决策树

    周志华机器学习-决策树 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 文章目录 周志华机器 ...

  8. 周志华机器学习-支持向量机

    周志华机器学习-支持向量机 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 – 文章目录 周 ...

  9. 周志华机器学习(6):支持向量机

    周志华机器学习(6):支持向量机 6 支持向量机 6.1 间隔与支持向量 6.2 对偶问题(dual problem) 6.3 核函数 6.4 软间隔与正则化 基本是大段摘录西瓜书加上一些自己的解释补 ...

  10. 周志华-机器学习西瓜书-第三章习题3.3 编程实现对率回归

    本文为周志华机器学习西瓜书第三章课后习题3.3答案,编程实现对率回归,数据集为书本第89页的数据 使用tensorflow实现过程 # coding=utf-8 import tensorflow a ...

最新文章

  1. 数字图像处理2018-10-9
  2. 《机器学习》周志华-CH2 模型评估与选择
  3. 通过button返回一个action,跳转到一个view
  4. Cocos2d JS 之消灭星星(九) 处理星星类之——移动和消灭星星
  5. nginx日志配置指令详解
  6. ASP.NET Core 2.2+Quartz.Net 实现Web定时任务
  7. IE6,IE7 Firefox 兼容问题
  8. Java 解析Excel(xls、xlsx两种格式)
  9. ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
  10. 微软发布ASP.NET MVC 1.0正式版
  11. android键盘多线程bug,按键精灵多线程运用,检测卡死线程,短信api调用,通知功能...
  12. js中for循环的优化写法
  13. JasperReport 默认打印机打印/指定打印机打印
  14. 瑞吉外卖QQ邮箱登录
  15. 【共词聚类分析】基于CNKI和WOS的小样本稳健性检验
  16. 历史上的今天:大型计算机先驱和小型机之父诞生;中国雅虎邮箱成历史
  17. DIY 2U 服务器
  18. 京东智能云APP可用来做什么?
  19. 《Android Studio开发实战》学习(二)- 聊天室
  20. 《摄影测量学基础》光束法MATLAB程序

热门文章

  1. Google Sheet 学习笔记
  2. EXCEL(Power BI)获取天天基金网每日历史净值数据,我去,这也太简单了吧!
  3. 什么是docker,它与虚拟机有什么区别?
  4. 最新阿里云服务器和GPU服务器长期优惠活动价格表
  5. JAVA程序设计实战(1-9章)
  6. 纯css实现tooltip文字浮框
  7. 千万流量秒杀系统-过载保护:如何通过熔断和限流解决流量过载问题?
  8. seo优化notfallow有二种下拉菜单百度搜索引擎
  9. 嵌入式开发-服务器(一) MQTT服务器
  10. 【 js 基础 】【 源码学习 】 setTimeout(fn, 0) 的作用