条件随机场(三)

接上一篇文章,本篇讲述两种几率模型的图表示(Graphical Representation),为此,引入几率图模型的概念。html

几率图模型是几率分布的图形表示。图中每一个结点表示一个随机变量,结点之间的边表示两个结点之间的依赖性,即对应两个随机变量是直接相关的,若是结点之间没有边存在,则对应两个随机变量是条件独立的,好比随机变量a和b在随机变量c的条件下独立,则有$p(a,b|c)=p(a|c)p(b|c)$,即事件c发生后,事件a与事件b独立。node

条件独立能够将很复杂的几率模型分解成一个个连乘的因子,每一个因子中对应的随机变量是原来图中随机变量的子集,由于这些因子对应的随机变量子集之间条件独立,因此能够将联合几率写成因子的连乘,也称因子分解。假设几率图为G=(V,E),V表示全部结点,E表示全部边,根据前面条件随机场(一)的介绍,图G能够分解为各个最大团的组合,假设最大团对应结点结合S,V所表示的全部随机变量为$\vec v$,S所表示的全部随机变量为$\vec {v}_s$,最大团对应的因子设为$\Psi_s$,那么V的全部随机变量的联合几率分布为,dom

\begin{equation} p(\vec v) = \prod_{s} \Psi_s (\vec {v}_s) \end{equation}函数

 令几率图结点$V=X \bigcup Y$,其中X表示输入随机变量,Y表示输出随机变量。这里介绍一下几个核心的概念,几率图模型(probabilistic graphical model)能够分为两种:independency graph和factor graph。independency graph直接描述了变量的条件独立,而factor graph则是经过因子分解( factorization)的方式暗含变量的条件独立。factor graph图中圆圈点也表示随机变量,另外还多了一个实心小方块,表示因子结点(factor node),factor graph的边老是无向的,将随机变量与结点与因子结点链接起来。因子$\Psi_s$包含了那些与因子结点有边链接的结点所对应的随机变量,以下右图,因此factor graph是一种几率分布的因子分解的图形表示。3d

例如,假设联合几率分布$p(x_1,x_2,y)$能够因子分解为$p(\vec x,y)=p(x_1)p(x_2)p(y|x_1,x_2)$,其中各因子项为$\Psi_1 (x_1)=p(x_1), \quad \Psi_2 (x_2)=p(x_2), \quad \Psi_3 (y)=p(y|x_1,x_2)$,这里$x_1,x_2$相互独立。这个几率模型就对应上面两个几率图。htm

 有向图模型

联合几率分布$p(\vec v)$能够因子分解为条件分布的连乘,每一个因子表示结点$v_k$,其条件分布的条件是一系列的父结点$v_{k}^p$,blog

\begin{equation} p(\vec v) = p(v_1)p(v_2|v_1)...p(v_K|v_{K-1},v_{K-2},...,v_1) = \prod_{k=1}^K p(v_k | v_{k}^p) \end{equation}事件

以下图所示是一个贝叶斯模型,jsx

其中有三个输入(观测)变量,几率分布能够因子分解为$p(y,x_1,x_2,x_3)=p(y)p(x_1|y)p(x_2|y,x_1)p(x_3|y,x_1,x_2)=p(y)p(x_1|y)p(x_2)p(x_3|y)$,其中第二个等号的推导用到了朴素贝叶斯假设,即输入x 的份量在输出y 的条件下独立。对应于factor graph,则各因子项为$\Psi_1=p(y)$,$\Psi_2=p(x_1|y)$,$\Psi_3=p(x_2|y)$,$\Psi_4=p(x_3|y)$,怎么样,是否是跟图表示很吻合?get

相似地,再给出一个例子以下图,这是一个HMM分类器模型,输入(观测)序列为$x_1,x_2,x_3$,输出(分类)序列为$y_1,y_2,y_3$,

从上图(a)中能够发现,输入变量x 之间在给定输出y的条件下独立,而输出变量y则仅依赖前一个输出,因而咱们能够直接写出几率分布为$p(x_1,x_2,x_3,y_1,y_2,y_3)=p(y_1)p(x_1|y_1)p(y_2|y_1)p(x_2|y_2)p(y_3|y_2)p(x_3|y_3)$,各因子项为$\Psi_1=p(y_1), \Psi_2=p(x_1|y_1), \Psi_3=p(x_2|y_2), \Psi_4=p(x_3|y_3), \Psi_5=p(y_2|y_1), \Psi_6=p(y_3|y_2)$。

无向图模型

几率分布也可使用无向图表示,即几率图G上的全部最大团C上的非负函数连乘,这部份内容能够参考前面讲的条件随机场(一),能够这么作的主要缘由是最大团之间的条件独立性,即全局马尔可夫性,因而几率分布为

\begin{equation} p(\vec v) = \frac 1 Z \prod_{C \in \mathcal C} \Psi_C (\vec {v}_C) \end{equation}

其中$\Psi_C \geq 0$,称为势函数(potential function),对应于随机变量组$\vec {v}_C$,$C \in \mathcal C$是无向图G上最大团。

对比有向图中则是联合几率分布因子分解成条件几率的连乘,无向图则是最大团的势函数的连乘,势函数能够不是几率函数(对随机变量求和或积分能够不为1),因此须要势函数的连乘须要归一化,也就是上式中的归一化因子Z,

\begin{equation} Z= \sum_{\vec v} \prod_{C \in \mathcal C} \Psi_C (\vec {v}_C) \end{equation}

其中对向量$\vec v$的求和,$\vec v$的取值为全部可能的随机变量组的值。

在条件随机场(二)中,咱们讲到最大熵模型的几率分布能够写为非负势函数的连乘,以下,

\begin{equation} p_{\vec{\lambda}}(y|x)= \frac 1 {Z_{\vec{\lambda}}(x)} \prod_{i=1}^m \exp (\lambda_i f_i (x,y)) \end{equation}

上式这个对数线性模型中,势函数为权值特征($\lambda_i$为特征函数f_i(x,y)的权重)的指数函数。一般就是采用这种形式的势函数,由于它知足势函数严格正(strict positivity)的要求。下图所示为最大熵模型的两种图表示,观测变量x 只有一个,如(a)图,

与朴素贝叶斯模型不一样,最大熵模型从总体来建模,“保留尽量多的不肯定性,在没有更多的信息时,不擅自作假设”,特征函数则可看做是人为赋给模型的信息,表示特征 x 与 y 的某种相关性,好比上图中,x与y之间有三个特征函数。有向图没法表示这种相关性,则采用无向图表示最大熵模型。

有向图和无向图区别在于如何将原始的几率分布进行因子分解。有向图因子分解成条件几率的连乘,无向图采用势函数的连乘,且须要归一化,没有明确指定随机变量之间的关联性,而是经过加权特征函数来参与计算。

条件随机场

根据前面的介绍,咱们知道隐马尔可夫是朴素贝叶斯的序列扩展(单个分类扩展到分类序列),一样地,条件随机场能够理解为最大熵模型的单个分类扩展到分类序列。条件随机场与HMM同样都是判别模型(计算$p(\vec y| \vec x)$而非$p(y|x)$)。然而,条件随机场不必定是HMM那样的对数线性结构,而能够是任意结构(虽然最后仍是会着重讨论线性链条件随机场)。

给定输入$\vec x = (x_1,...,x_n)$,条件随机场模型计算输出$\vec y = (y_1,...,yn)$的条件几率$p(\vec y | \vec x)$,注意这里向量$\vec x, \vec y$表示序列,其中输入序列也称观测序列。条件随机场模型的通常形式与无向图的几率分布同样,见上文,

\begin{equation} p(\vec v) = \frac 1 Z \prod_{C \in \mathcal C} \Psi_C (\vec {v}_C) \end{equation}

因而条件几率可写为,

\begin{equation} \begin{aligned} p(\vec {y} | \vec {x}) & = \frac {p(\vec {x} , \vec {y})} {p(\vec {x})} \\ & = \frac {p(\vec {x} , \vec {y})} {\sum_{{\vec {y}}^{'}} p({\vec {y}}^{'}, \vec x)} \\ & = \frac {\frac 1 Z \prod_{C \in \mathcal C} \Psi_C (\vec{x}_C, \vec{y}_C)} {\frac 1 Z \sum_{{\vec{y}}^{'}} \prod_{C \in \mathcal C} \Psi_C (\vec{x}_C, {\vec{y}_{C}}^{'})} \end{aligned} \end{equation}

因而CRF的通常形式为,

\begin{equation}  p(\vec {y} | \vec {x}) = \frac 1 {Z(\vec x)} \prod_{C \in \mathcal {C}} \Psi_C (\vec{x}_C, \vec{y}_C) \end{equation}

其中,

\begin{equation} Z(\vec x) = \sum_{{\vec y}^{'}} \prod_{C \in \mathcal C} \Psi_C (\vec{x}_C, {\vec{y}_{C}}^{'}) \end{equation}

如上文所述,$\Psi_C$是最大团上的函数。

下图是一个线性链CRF的例子,每一个因子对应一个势函数,势函数将不一样的特征函数结合起来,而特征函数则体现了相应的观测和输出之间的关联。

线性链CRF

线性链CRF是CRF的特殊形式,其无向图是线性链结构,输出变量为一个序列,以下图所示,

根据上面(8)式和图(b),可知线性链CRF几率分布可写为

\begin{equation} p(\vec y | \vec x) = \frac 1 {Z(\vec x)} \prod_{j=1}^n \Psi_j (\vec x, \vec y) \end{equation}

 其中,

\begin{equation} Z(\vec x) = \sum_{{\vec y}^{'}} \prod_{j=1}^n \Psi_j (\vec x, {\vec y}^{'}) \end{equation}

为了防止遗忘前面的推导细节,这里再备注一下:上式对${\vec y}'$的求和是对$\mathcal Y$空间上全部向量取值求和。理解(11)式其实并不难,根据(8)式咱们知道几率分布为各个最大团上的函数连乘,根据上图,咱们知道这里最大团就是$(\vec x, y_{i-1}, y_i)$,其中包含了三个结点,因而再根据(3)式和(5)式,最大团上的函数为

\begin{equation} \Psi_j (\vec x, \vec y) = \exp (\sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}

(其实,这里最大团$(\vec x, y_{i-1}, y_i)$上的函数$\Psi_j (\vec x, \vec y)$中的指数部分是一个m个特征函数值的求和,m个特征函数包含两部分:1. 转移特征;2.状态特征)

上式中 m 表示总共有 m 个特征函数。假设观测序列长度为 n + 1(注意指的是 y 的长度,拿中文分词来讲,这里模型要解决的问题就是已知输入x 为状态,求输出 y 序列出现的条件几率),那么就有 n 个最大团,因而将上式代入(11)式,得

\begin{equation} p_{\vec {\lambda}}(\vec y | \vec x) = \frac 1 {Z_{\vec {\lambda}} (\vec x)} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}

且有

\begin{equation} Z_{\vec {\lambda}}(\vec x) =  \sum_{y \in \mathcal Y} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}

$Z_{\vec {\lambda}}(\vec x)$中的对$\vec y$的求和是针对 $\mathcal Y$中全部可能的序列。

上两式计算中,咱们假设了$\vec y = (y_0, y_1,...,y_n)$,特征函数的参数包含了下标 j,由于与最大熵模型不一样,这里输出是一个序列。特征函数的权重$\lambda_i$与下标 j 是无关的。

 在(13)式中,将对 j 求和移到指数的左边,根据指数的特性,求和则转为连乘,因而有

\begin{equation} p_{\vec {\lambda}}(\vec y | \vec x) = \frac 1 {Z_{\vec {\lambda}} (\vec x)} \prod_{j=1}^n exp( \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}

固然,将(13)式中对 i 求和移到指数的左边则为

\begin{equation} p_{\vec {\lambda}}(\vec y | \vec x) = \frac 1 {Z_{\vec {\lambda}} (\vec x)} \prod_{i=1}^m exp( \sum_{j=1}^n \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}

因而根据上式,变成对特征上的函数项连乘,函数项表达式为

$$\Psi_i = exp(\sum_{j=1}^n \lambda_i f_i (y_{j-1},y_j, \vec x, j))$$

以下图能够帮助理解上式。

甚至还能够这样转换(13)式,

\begin{equation} p_{\vec {\lambda}}(\vec y | \vec x) = \frac 1 {Z_{\vec {\lambda}} (\vec x)} \prod_{i=1}^m \prod_{j=1}^n exp(\lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}

基于最大团上的函数连乘((15)式所示)是线性链CRF一般所采用的表示方法。下文的讲述就是基于此种表示方法。

上面线性链CRF的最大团只有一个团模板(clique template) $C \in \mathcal C$,每一个最大团的形式均为 $C=\lbrace \Psi_j (y_j, y_{j-1}, \vec x) | \forall j \in \lbrace1,2,...,n\rbrace \rbrace$,正由于有这样的线性链结构,咱们能够用随机有限状态自动机(SFSA)来表示线性链CRF,这种状态自动机与隐马尔可夫模型相似,而且容易实现。其中,转移几率依赖于输入序列$\vec x$,好比上面那个线性链CRF的图,输入为向量$\vec x$,输出序列为$(y_1,y_2,...,y_n), y_i \in S$,其中S 表示状态集合。以下图是一个三状态$\lbrace S_1,S_2,S_3 \rbrace$自动机,

创建线性链CRF模型的策略总结以下:

  1. 基于全部状态的集合S,以及转移矩阵$T=(s, \acute{s}) \in S^2)$,构造一个随机有限状态自动机SFSA $\mathcal S = (S, T)$,这个自动机能够彻底链接,每一个状态之间均有(有向)边链接,也能够根据实际状况禁止有些状态之间的链接(好比中文分词的B,M,E,S四个状态,B只与M和E有链接,与B和S没有链接等等)。
  2. 对输入序列,指定特征模板集合$F={g_1 (\vec x, j),...,g_h (\vec x, j)}$,这些特征目标用于生成特征函数$f_i$。
  3. 生成特征函数集合 $\mathcal {F} = \lbrace \forall s,  \acute{s} \in S. \forall g_o \in F : f_i (s, \acute{s}, g_o) \rbrace$

上面这个线性链CRF模型是一阶的。若是要定义高阶的线性链CRF,则特征函数的形式为,

$$f_i (\vec y, \vec x, j) = f_i(h_j (\vec y), \vec y, j) $$

$$ h_j (\vec y) = (y_{j-k}, ...,y_j) $$

其中k为阶数,对于高阶(k>1),能够一样使用状态自动机,与上图不一样的是,高阶状况的当前状态依赖于前面多个状态。

对这种特殊的线性链CRF,训练和预测的方法与HMM相似,即如下两个问题:

  • 给定观测序列$\vec x$和CRF模型$\mathcal M$,如何发现最可能的分类序列$\vec y$?
  • 给定分类序列集合$\mathcal Y$和观测 序列集合$\mathcal X$,如何进行CRF模型$\mathcal M$的参数估计,以使得对某一观测序列$\vec x$,其分类序列为$\vec y$的几率$p(\vec y | \vec x, \mathcal M)$最大?

问题1)是条件随机场常见的应用场景,即给观测序列进行分类获得分类序列。问题2)是关于训练的。关于这两个问题,咱们下篇文章再详述。

ref

Classical Probabilistic Models and Conditional Random Fields

相关文章
相关标签/搜索