机器学习读书笔记: 概率图模型
文章目录几种模型隐马尔可夫模型马尔科夫随机场条件随机场(CRF:Conditional Random Field)模型推断几种模型机器学习的重要任务,是根据 一些已观察到的证据(训练样本)来对感兴趣的未知变量(分类,回归的值)进行估计和推测。之前也提到了两种不同的模型:生成式模型(观察与未知变量的联合模型);判别式模型(位置变量的后验概率模型)。概率图模型则是一类用图来表达变量相关关系的概率模
几种模型
机器学习的重要任务,是根据 一些已观察到的证据(训练样本)来对感兴趣的未知变量(分类,回归的值)进行估计和推测。之前也提到了两种不同的模型:生成式模型(观察与未知变量的联合模型);判别式模型(位置变量的后验概率模型)。
概率图模型则是一类用图来表达变量相关关系的概率模型。
讲线面几个马尔科夫模型之前,先提一下几个概念(都是自己的理解,不怎么严谨)。
马尔科夫过程:它指的是一个随机变量序列按时间先后关系依次排开的时候,第N+1时刻的分布特性,与N时刻以前的随机变量的取值无关。拿天气来打个比方。如果我们假定天气是马尔可夫的,其意思就是我们假设今天的天气仅仅与昨天的天气存在概率上的关联,而与前天及前天以前的天气没有关系。其它如传染病和谣言的传播规律,就是马尔可夫的。我个人对这个东西的理解就是,一个变量只跟某个或者某些变量相关,这个过程就成为马尔科夫过程,把过程中的每个环节用一个节点来表示,这个依赖的链条就叫做马尔科夫链。
如果某种过程模型可以用这个过程来描述,那么就说这个过程或者系统有马尔科夫性质。
而下面提到的两种模型,一个使用有向图来描述变量之间马尔科夫过程,一个是用无向图来描述。
隐马尔可夫模型
隐马尔可夫模型是一种用于时序数据的建模工具,在语音识别、自然语言处理(都是有先后顺序的)领域非常有用。好像有时也去掉第一个字,就叫马尔科夫模型。
隐马尔可夫模型参照下面这张图:
其中有两部分变量:
-
状态变量 { y 1 , y 2 … y n } \lbrace y_1,y_2\dots y_n\rbrace {y1,y2…yn},在模型中,某个状态变量 y i y_i yi是一个有N个状态的变量: { s 1 , s 2 … s N } \lbrace s_1,s_2\dots s_N\rbrace {s1,s2…sN},状态 y i y_i yi可以在这N个状态之间切换。在某个时间点 t t t是一个确定的状态。
-
观测变量 { x 1 , x 2 … x n } \lbrace x_1,x_2\dots x_n\rbrace {x1,x2…xn},在模型中,某个观测变量 x i x_i xi是一个有M个状态的变量: { o 1 , o 2 … o M } \lbrace o_1,o_2\dots o_M\rbrace {o1,o2…oM},状态 x i x_i xi可以在这M个状态之间切换。
-
图中的箭头表示依赖关系。可以看出,某个时间点 t t t的观察变量是依赖于状态变量的,因为有什么样的状态,你才能有什么样的观测值。
-
另外的一个依赖关系就是 t + 1 t+1 t+1时刻的状态只依赖于 t t t时刻的状态值,和其他的变量均无关,这种依赖关系也被称为马尔科夫链。
-
因为状态值 y y y是不可见的,只能通过观测值 x x x去进行估计和推断,索引被称为隐变量,模型也就称为隐马尔科夫模型。
-
根据上面的模型,所有状态的联合分布为:
P ( x 1 , y 1 … , x n , y n ) = P ( y 1 ) P ( x 1 ∣ y 1 ) ∏ i = 2 n P ( y i ∣ y i − 1 ) P ( x i ∣ y i ) P(x_1,y_1\dots,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)} P(x1,y1…,xn,yn)=P(y1)P(x1∣y1)i=2∏nP(yi∣yi−1)P(xi∣yi)
一个马尔科夫模型还需要确认下面几个信息,才能计算出上面的概率:
-
状态转移概率,也就是状态 y y y从 s i s_i si转移到 s j s_j sj的概率,这肯定是一个 N ∗ N N*N N∗N(N为状态的数目)的矩阵,记为:
A = [ a i j ] N ∗ N a i j = P ( y t + 1 = s j ∣ y t = s i ) A=[a_{ij}]_{N*N} \\ a_{ij}=P(y_{t+1}=s_j|y_t=s_i) A=[aij]N∗Naij=P(yt+1=sj∣yt=si) -
输出观测概率,也就是状态值确定,该状态值对应的各种观测值出现的概率,为一个 N ∗ M N*M N∗M的矩阵,记为:
B = [ b i j ] N ∗ M b i j = P ( x t = o j ∣ y t = s i ) B=[b_{ij}]_{N*M} \\ b_{ij}=P(x_t=o_j|y_t=s_i) B=[bij]N∗Mbij=P(xt=oj∣yt=si) -
初始状态概率,也就是最初每个状态出现的概率,为一个 1 ∗ N 1*N 1∗N的向量,记为;
π i = P ( y 1 = s i ) \pi_i=P(y_1=si) πi=P(y1=si) -
上面三个参数行程一个三元组: λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π]就可以唯一确定一个隐马尔可夫模型。
在实际应用中,隐马尔可夫模型用于下面三个领域:
- 给定模型 λ \lambda λ,如何产生最符合模型的观测变量 { x 1 , x 2 … x n } \lbrace x_1,x_2\dots x_n\rbrace {x1,x2…xn},一般是用来预测,预测下一个观测变脸 x n x_n xn
- 给定模型 λ \lambda λ,有一组观测变量 { x 1 , x 2 … x n } \lbrace x_1,x_2\dots x_n\rbrace {x1,x2…xn},去推测隐变量 y y y。在语音识别中,讲语音作为观测变量,文字作为隐藏变量。用模型去推断隐藏变量。
- 有一组观测变量 { x 1 , x 2 … x n } \lbrace x_1,x_2\dots x_n\rbrace {x1,x2…xn},学习到一个模型 λ \lambda λ去描述这组变量,目标就是让这组变量出现的概率最大。 λ \lambda λ模型一般都无法直接给定,都需要根据一些观测变量和隐藏变量去学习一个模型,这时候就是这种情况。
马尔科夫随机场
上面的图是一个有向无环图,而马尔科夫随机场是用无向图来描述随机变量。比如:
这个无向图中的每个节点是一个变量,以前讲贝叶斯网的时候提到过,当时是每个变量都是一个属性。而这个随机场中的变量可以代表其他的意思,统称为变量,可以是一个属性,可以是一个样本等等。在这个随机场模型中,有几个概念:
-
团。如果图的子集中,任意的两个节点都有边连接,就称这个子集为一个“团”。任意的两个节点,只有一条表相连,就是一个团。上图中的 { x 2 , x 5 , x 6 } \lbrace x_2,x_5,x_6\rbrace {x2,x5,x6}为一个团。而 { x 1 , x 2 , x 3 , x 5 } \lbrace x_1,x_2,x_3,x_5\rbrace {x1,x2,x3,x5}则不是团,因为 x 2 , x 3 x_2,x_3 x2,x3之间没有边相连。
-
极大团。如果一个团,从图中任意拿一个节点过来增加到团中,都让这个团不再是团了,那么这个团就是极大团。有点绕,仔细看看。
-
在马尔科夫随机场模型中,多个变量的联合概率分布能基于团分解为多个因子的乘积,每个因子仅与一个团有关。首先定义几个参数:
- 模型中的团用Q表示,这个团中包含的变量为 x Q x_Q xQ
- 模型中团的集合用C表示。
- 上面说到的基于一个团的因子计算为 ψ Q ( x Q ) \psi_Q(x_Q) ψQ(xQ),其中 ψ Q \psi_Q ψQ称为势函数。
- 那么这个随机场模型的联合概率计算公式就为:
P ( x ) = 1 Z ∏ Q ∈ C ψ Q ( x Q ) P(x)=\frac{1}{Z}\prod_{Q\in C}\psi_Q(x_Q) P(x)=Z1Q∈C∏ψQ(xQ)
- Z为规范化因子: Z = ∑ x ∏ Q ∈ C ψ Q ( x Q ) Z=\sum_x{\prod_{Q\in C}\psi_Q(x_Q)} Z=∑x∏Q∈CψQ(xQ)
-
在变量比较多的时候,团的数量会比较多,而团一般都被包含在一个极大团中,所以这个公式可以被改成:
P ( x ) = 1 Z ∗ ∏ Q ∈ C ∗ ψ Q ( x Q ) P(x)=\frac{1}{Z^*}\prod_{Q\in C^*}\psi_Q(x_Q) P(x)=Z∗1Q∈C∗∏ψQ(xQ)
Z = ∑ x ∏ Q ∈ C ∗ ψ Q ( x Q ) Z=\sum_x{\prod_{Q\in C^*}\psi_Q(x_Q)} Z=∑x∏Q∈C∗ψQ(xQ)也就是说需要为每个极大团定义一个势函数。
势函数用于描述团中间的变量的关系,如果团是一个只有两个变量。那么书中提到的例子:
其中团 ( x A , x B ) (x_A,x_B) (xA,xB)的势函数定义为:
ψ A C ( x A , x B ) = { 1.5 , i f x A = x B 0.1 , o t h e r w i s e \psi_{AC}(x_A,x_B)=\begin{cases} 1.5, if\quad x_A=x_B \\ 0.1, otherwise \end{cases} ψAC(xA,xB)={1.5,ifxA=xB0.1,otherwise
团 ( x B , x C ) (x_B,x_C) (xB,xC)的势函数定义为:
ψ B C ( x B , x C ) = { 0.2 , i f x B = x C 1.3 , o t h e r w i s e \psi_{BC}(x_B,x_C)=\begin{cases} 0.2, if\quad x_B=x_C \\ 1.3, otherwise \end{cases} ψBC(xB,xC)={0.2,ifxB=xC1.3,otherwise
那么说明,这个模型偏好A和B相同,而B和C不同,会使得整个模型的联合分布概率比较高。
更一般地,定义团中的势函数是使用下面的方式:
ψ Q ( x Q ) = e − H Q ( x Q ) H Q ( x Q ) = ∑ u , v ∈ Q , u ≠ v α u v x u x v + ∑ v ∈ Q β v x v \psi_Q(x_Q) = e^{-H_Q(x_Q)} \\ H_Q(x_Q)=\sum_{u,v\in Q, u\neq v}{\alpha_{uv}x_ux_v}+\sum_{v\in Q}\beta_v{x_v} ψQ(xQ)=e−HQ(xQ)HQ(xQ)=u,v∈Q,u=v∑αuvxuxv+v∈Q∑βvxv
- 用无向图怎么来描述马尔科夫链呢,书中提到的是用分离集的概念,参考下图。
- 图中的一个顶点 v v v通过他的邻接顶点集 n ( v ) n(v) n(v)与图中的其他顶点相对独立。
- 两个非邻接变量条件独立。
- 我自己的理解是想将极大团形成一个马尔科夫链。
条件随机场(CRF:Conditional Random Field)
上面两种都是计算所有变量的联合分布概率,为生成式的模型。条件随机场是计算后验概率,为判别式模型。也就是说是计算条件概率 P ( y ∣ x ) P(y|x) P(y∣x)。
书上提出的条件随机场必须满足条件:
P ( y v ∣ x , y V / v ) = P ( y v ∣ x , y n ( v ) ) P(y_v|x,y_{V/{v}}) = P(y_v|x,y_{n(v)}) P(yv∣x,yV/v)=P(yv∣x,yn(v))
其中 n ( v ) n(v) n(v)表示节点v的邻接点。我理解这个东西和上面的马尔科夫随机场是一个意思,都是满足马尔科夫性,也就是每个点的标记 y y y只和邻接点有关。只是一个通过这个模型使用上面的计算联合概率,条件随机场是计算条件概率。
然后就是给出了条件概率的计算方式:
P ( y ∣ x ) = 1 Z ( ∑ j ∑ i = 1 n − 1 λ j t j ( y i + 1 , y i , x , i ) + ∑ k ∑ i = 1 n μ k s k ( y i , x , i ) P(y|x)=\frac{1}{Z}(\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) P(y∣x)=Z1(j∑i=1∑n−1λjtj(yi+1,yi,x,i)+k∑i=1∑nμksk(yi,x,i)
- t j ( y i + 1 , y i , x , i ) t_j(y_{i+1},y_i,x,i) tj(yi+1,yi,x,i)表示相邻两个节点的转移特征函数,在语义识别的场景里就是两个挨着的单词的概率,我自己理解就是某个单词(第i个单词)后面接另外单词的概率。
- s k ( y i , x , i ) s_k(y_i,x,i) sk(yi,x,i)为特征函数,用于描述观测变量对标记变量的影响,我理解就是观测到某个值,这个值属于某种标记y的概率,也就是马尔科夫模型里的 B B B。
- λ \lambda λ和 μ \mu μ为参数。
书中给出了一个例子:
t j ( y i + 1 , y i , x , i ) = { 1 , i f y i + 1 = [ P ] , y i = [ V ] a n d x i = " k n o c k " 0 , o t h e r w i s e t_j(y_{i+1},y_i,x,i) = \begin{cases} 1, if\quad y_{i+1}=[P],y_i=[V]\quad and \quad x_i="knock" \\ 0, otherwise \end{cases} tj(yi+1,yi,x,i)={1,ifyi+1=[P],yi=[V]andxi="knock"0,otherwise
也就是说,如果第 i i i个单词为knock且为动词,下一个单词为P:代词的概率为1。其他的概率为0.
s k ( y i , x , i ) = { 1 , i f y i = [ V ] a n d x i = " k n o c k " 0 , o t h e r w i s e s_k(y_i,x,i)=\begin{cases} 1, if\quad y_i=[V] \quad and \quad x_i="knock" \\ 0, otherwise \end{cases} sk(yi,x,i)={1,ifyi=[V]andxi="knock"0,otherwise
是说knock观测值为动词的概率为1,为其他的词性概率为0.
模型推断
书中后面提到了用概率图模型去进行推断的一些基本知识,因为本人主要是想做图像相关的算法,这块估计用的少,再加上实在是看不动了,就先不管了,后续有需要再说吧。
更多推荐
所有评论(0)