条件随机场(二)

前面介绍隐马尔可夫模型时,讲到其能够做为天然语言处理的一种方法,可是隐马尔可夫作了很强的假设:齐次马尔可夫性假设和观测独立性假设,这两个假设却也影响了分类的准确性。而本篇介绍的条件随机场能弥补这一不足,由于去掉了观测独立性假设。参考文献1,咱们简单介绍四个几率模型,并分析其之间的关系,最后再引出条件随机场,这样会显然天然些,也比较容易理解。html

几率模型

朴素贝叶斯模型是给定一个特征向量从而决定单个分类变量值。设输入为特征向量$x \in \cal X = \bf R^n$,输出为类标记$y \in \cal Y$,X是定义在输入空间$\cal X$上的随机变量,Y是定义在输出空间上的$\cal Y$上的随机变量,联合几率分布为P(X,Y),当输入为x时,预测其分类y。隐马尔可夫则是朴素贝叶斯模型的扩展,处理分类的序列而非单个分类,好比(x1,x2,...,xt),对应分类为(y1,y2,...,yt)。朴素贝叶斯模型和隐马尔可夫模型都是生成模型(Generative,即 X和Y的联合几率分布)。dom

联合几率分布的缺点是计算的复杂度很高。而相反地,最大熵模型基于条件几率p(y|x),与朴素贝叶斯模型相似,最大熵模型也是处理对应单个特征向量的单个分类值。隐马尔可夫模型对朴素贝叶斯模型扩展到输入序列上来,条件随机场能够理解为对最大熵模型扩展到输入序列上来,最大熵模型和条件随机场模型都是判别模型(Discriminative,即Y关于X的条件几率分布)。函数

它们的关系以下图学习

如上图所示,左边两个模型考虑联合几率分布,右边两个模型考虑条件几率分布,上面两个模型考虑单个分类判断,而下面两个模型考虑分类序列判断。优化

朴素贝叶斯模型

咱们使用条件几率分布来预测,条件几率为,htm

\begin{equation} p(y|\vec{x}) = \frac {p(y)p(\vec {x} |y)} {p(\vec x)} \end{equation}blog

给定一个输入向量$\vec x$后,计算(1)的条件几率,值最大时对应的那个分类y 就是最终预测的分类,那么,既然给定了$\vec x$,计算不一样的y所对应的条件几率,那么(1)式的分母就不重要了,由于都同样,可看做常数(这里变量是y),而(1)式分子就是联合几率$p(y)p(\vec {x} |y) = p(y, \vec x)$,而这个联合几率计算有些复杂,尤为在输入向量$\vec x$的份量不少时更加复杂。假设向量$\vec {x} = (x_1, x_2, ..., x_m)$,那么jsx

\begin{equation} \begin{aligned} p(x_1,x_2,...x_m) & = p(x_m|x_{m-1},...,x_1)p(x_{m-1},...x_1) \\ & = p(x_m|x_{m-1},...,x_1)p(x_{m-1}|x_{m-2},...x_1)p(x_{m-2},...,x_1) \\ & = p(x_m|x_{m-1},...,x_1)p(x_{m-1}|x_{m-2},...x_1) ... p(x_2|x_1)p(x_1) \\ & = p(x_1) \prod_{i=2}^m p(x_i|x_{i-1},...x_1) \end{aligned} \end{equation}get

结合(1)和(2),有it

\begin{equation} p(y,\vec{x})=p(y)p(x_1|y) \prod_{i=2}^m p(x_i|x_{i-1},...x_1,y) \end{equation}

实际中一般假设份量 $x_i$ 关于y 的条件独立于$\vec x$其余份量,这就是朴素贝叶斯假设。那么$p(x_i|y,x_j)=p(x_i|y)$,其中 $i \neq j$。因而朴素贝叶斯模型为

\begin{equation} p(y|\vec x) \propto p(y, \vec x) = p(y) \prod_{i=1}^m p(x_i|y) \end{equation}

显然,上式简单多了,可是朴素贝叶斯的条件独立性假设会使得实际上分类没那么准确。

隐马尔可夫模型

朴素贝叶斯模型中,咱们仅考虑单个分类预测。若是要考虑分类序列的预测,假设观测序列为$\vec x = (x_1,x_2,...,x_n)$,要预测的分类序列为$\vec y = (y_1, y_2,...,y_n)$,注意这里的下标对应序列中的下标,那么天然而然地,能够将序列看到一个个朴素贝叶斯模型,而后将它们连乘,就表示这个序列中各项同时发生。不考虑序列中各项的依赖性,而且与朴素贝叶斯稍有不一样的是,序列中每一项仅对应一个输入特征,即观测实体,那么根据(4)式有

\begin{equation} p(\vec {y},\vec {x}) = \prod_{i=1}^n p(y_i) p(x_i|y_i) \end{equation}

在对应位置上,每一个观测$x_i$只依赖于分类值$y_i$,因为这个独立性假设,此模型并未包含转移几率。然而实际中很难知足这个独立性假设,这也致使此模型的实用性受限。所以,能够假设在序列的连续位置上分类之间有必定的相关性,因而模型变为,

\begin{equation} p(\vec y, \vec x) = \prod_{i=1}^n p(y_i|y_{i-1})p(x_i|y_i) \end{equation}

其中因为没有第0位置观测,因此咱们为了上式书写的一致性,令$p(y_1|y_0)=p(y_1)$,因而能够获得观测序列出现的几率能够经过对全部分类序列求和,为

\begin{equation} P(\vec x) = \sum_{y \in \mathcal{Y} } \prod_{i=1}^n p(y_i|y_{i-1}) p(x_i|y_i) \end{equation}

其中,$\mathcal {Y}$表示全部的分类序列$\vec y$。

此模型考虑了分类序列$\vec y$中的各连续分类之间的依赖性,可是缺点是观测序列之间的条件独立性的假设,这使得模型不能很好的表征实际状况。后面咱们将看到,CRF能够解决这一问题。

最大熵模型

前两个模型是学习联合几率分布,而这里最大熵模型则是条件几率模型,因为其与咱们要讨论的CRF比较接近,CRF是最大熵模型从单个分类扩展到分类序列上的,因此能够着重讨论一下最大熵模型,然而也能够与前面几篇专门讲最大熵模型对比一下,加深最大熵模型的印象。

最大熵模型基于最大熵原理,表述以下:给定一个几率分布的不彻底信息,那么除了这个已知信息以外对于那些未知部分的几率分布,老是认为是均匀分布的。基于这个设定,从训练数据集中找到约束条件后,在这些约束条件下,使得熵达到最大的那个几率分布正是咱们所要的。

咱们知道对于随机变量X,其熵定义为

\begin{equation} H(P)=-\sum\limits_{x}P(x)logP(x)\end{equation}

那么,对于条件几率P(Y|X),其中Y表示输出随机变量,X表示输入随机变量,那么条件熵定义为,

\begin{equation} H(y|x) = - \sum_{(x,y) \in \mathcal{Z}} p(y,x) \log p(y|x) \end{equation}

其中,$\mathcal{Z}= X \times Y$表示全部可能的输入X与全部可能的输出Y的组合,注意这是指全部输入空间X的值和输出空间的Y的值的组合,而不只仅是存在于训练数据集中的样本点(x,y)。若是对上式还不那么容易看透的话,能够这么理解,

$$ H(P) = - \sum_{x}p(x)H(Y|X=x) = -\sum_{x}p(x) \sum_{y} p(y|x) \log p(y|x) = - \sum_{x} \sum_{y} p(x)p(y|x) \log p(y|x) = - \sum_{x,y} p(x,y) \log p(y|x) $$

最大熵模型就是要找到几率分布$p^{*}(y|x)$,使得条件熵值最大,因而目标函数为

\begin{equation} p^{*}(y|x) = arg \max_{p(y|x) \in P} H(y|x) \end{equation}

其中P是全部可能的几率模型,可是这些几率模型必需要与训练数据集一致没有冲突,好比说训练数据集有 m 个特征函数,为了简单,咱们假设特征函数为二值函数$f_{i}(x,y) \in \lbrace 0,1 \rbrace (1 \leq i \leq m)$,当输入x 和输出y 知足某一条件时,特征函数值为1,不然为0,须要注意的是对任意一个特征函数$f_{i}(x,y)$,都是针对全部输入x和全部输出y,而非某一个输入输出(x,y),这个要特别注意。

\begin{equation} f_{i}(x,y) = \begin{cases} 1 & \text {x与y知足某一事实} \\ 0 & \text {不然} \end{cases} \end{equation}

其中 ${(x,y)| (x,y) \in \mathcal{Z}}$

特征函数$f_i$的指望根据经验几率分布$\tilde{p}(x,y)$来估计,因而

\begin{equation} \tilde{E}(f_i) = \sum_{(x,y) \in \mathcal{Z}} \tilde{p}(x,y)f_{i}(x,y) \end{equation}

这里(x,y)属于整个输入空间和输出空间全部值的组合,然而若是某个(x,y)在训练数据集中并不存在对应的样本点,那么其经验几率$\tilde{p}(x,y) = 0$,因此能够去掉那些在训练数据集中不存在的(x,y),因而上式能够改写为

\begin{equation} \tilde{E}(f_i) = \frac 1 N \sum_{(x,y) \in \mathcal{T}} f_{i}(x,y) \end{equation}

其中 $N = |\mathcal T|$,$\mathcal T$表示训练数据集,$\mathcal T$可能存在重复的(x,y),因而上式能够理解为:训练数据集中知足某一特征函数值为1的样本点(x,y)的个数除以训练数据集的大小,就是这一个特征函数的经验指望。

而特征函数的指望为

\begin{equation} E(f_i) = \sum_{(x,y) \in \mathcal{Z}} p(x,y) f_{i}(x,y) \end{equation}

因为联合几率分布p(x,y)没法计算,由于输入空间和输出空间的值的组合(x,y)数量巨大,能够转为计算条件几率,因而上式能够写为

\begin{equation} E(f_i) = \sum_{(x,y) \in \mathcal{Z}} p(x) p(y|x) f_{i}(x,y) \end{equation}

上式中,可使用$\tilde{p}(x)$代替$p(x)$,因而有

\begin{equation} E(f_i) = \sum_{(x,y) \in \mathcal{Z}} \tilde{p}(x) p(y|x) f_{i}(x,y) \end{equation}

 类比上面(13)式,因为只有$\tilde{p}(x)$是经验几率,且$\tilde{p}(x) = \frac {N(x)} N$,N(x)表示输入x 在训练数据集中出现的次数,因此将x和y拆分两个独立的维度进行求和,y仍是对输出空间$\mathcal Y$的全部可能值求和,而x对训练数据集中出现的每个输入求和(包括重复出现的输入),因而上式变换为,

\begin{equation} E(f_i) = \sum_{(x,y) \in \mathcal{Z}} \frac {N(x)} N p(y|x) f_{i}(x,y) = \frac 1 N \sum_{x \in \mathcal{T}} \sum_{y \in \mathcal{Y}} p(y|x) f_{i}(x,y) \end{equation}

其中N表示训练数据集$\mathcal T$的大小,两重求和,内层求和是对全部输出空间的可能值y求和,而外层求和是对训练数据集中全部出现的输入x(x能够出现重复)求和,理解上式的变换须要注意求和符号Sigma下标的变化。

实际问题中,输出空间$\cal Y$每每可能的取值数量比较小,能够保证上式的计算量不会很大。

咱们要求$p^{*}(y|x)$与训练数据集中数据某些特征相一致,也就是说假设求得$p^{*}(x,y)$,那么代入(17)式计算获得特征函数的指望,应该与这个特征函数的经验指望((12)式)相等,因而有,

\begin{equation} E(f_i) = \tilde{E}(f_i) \end{equation}

另外还有一个限制,既然是求条件几率p(y|x),那么必须知足几率的基本性质,即

\begin{equation} p(y|x) \geq 0 \quad for \forall(x,y) \quad \quad \sum_{y \in \mathcal{Y}} p(y|x) = 1 \quad for \forall x \end{equation}

假设特征函数有m个,那么限制条件总共为m+1个,目标函数由(11)式给出,这是一个带约束条件的优化问题,因而采用拉格朗日乘子法,为每一个约束条件引入一个乘子$\lambda_i$,拉格朗日函数为

\begin{equation} L(p,\vec {\lambda}) = H(y|x) + \sum_{i=1}^m \lambda_{i} \left( E(f_i) - \tilde{E}(f_i) \right) + \lambda_{m+1} \left( \sum_{y \in \mathcal{Y}} p(y|x) - 1 \right) \end{equation}

下面作简单的推导,

 根据(9)式,相似地近似计算条件熵为

\begin{equation} H(y|x) = - \sum_{(x,y) \in \mathcal{Z}} \tilde{p}(x)p(y|x) \log p(y|x) \end{equation}

对p(y|x)求偏导,这里须要注意的是,实际上是对$p(x_i,y_i)$求偏导,此时其余全部$p(x_j,y_j), (j \neq i)$能够看做常数(另外,$\tilde{p}(x)$也是常数),也就是说,求得的偏导不仅一个式子,而是一系列的偏导式子,理论上共有$|\mathcal Z|$个,

\begin{equation} \frac {\partial H(y|x)} {\partial p(y|x)} = -\tilde{p}(x) \left(\log p(y|x) + \frac {p(y|x)}{p(y|x)} \right) = -\tilde{p}(x)(logp(y|x)+1) \end{equation}

对拉格朗日函数中关于m个特征函数的那一项求p(y|x)的偏导,由于$E(f_i)$中的变量包括p(y|x),因此能够对其求偏导,以下

\begin{equation} \begin{aligned} \frac {\partial} {\partial p(y|x)} \sum_{i=1}^m \lambda_i \left( E(f_i) - \tilde{E}(f_i) \right) & = \frac {\partial} {\partial p(y|x)} \sum_{i=1}^m \lambda_i \left(\sum_{(x,y) \in \mathcal{Z}} \tilde{p}(x) p(y|x) f_{i}(x,y) - \sum_{(x,y) \in \mathcal{Z}} \tilde{p}(x,y)f_{i}(x,y)\right) \\ & = \sum_{i=1}^m \lambda_i \tilde{p}(x) f_i (x,y) \end{aligned} \end{equation}

上式中,$\tilde{p}(x), f_i(x,y), \tilde{p}(x,y)$均为常数,此外,与H(y|x)的偏导相似,这里一样是获得一系列的偏导式子。

因而拉格朗日函数对p(y|x)的偏导为,

\begin{equation} \frac { \partial L(p, \vec \lambda)} {\partial p(y|x)} = -\tilde{p}(x)(logp(y|x)+1)+\sum_{i=1}^m \lambda_i \tilde{p}(x) f_i (x,y)+ \lambda_{m+1} \end{equation}

令其等于0,即

\begin{equation} -\tilde{p}(x)(logp(y|x)+1)+\sum_{i=1}^m \lambda_i \tilde{p}(x) f_i (x,y)+ \lambda_{m+1} = 0 \end{equation}

求解上式,得

\begin{equation} p(y|x) = \exp \left( \sum_{i=1}^m \lambda_i f_i (x,y) \right) exp(\frac {\lambda_{m+1}}{\tilde{p}(x)} - 1) \end{equation}

由上面(19)式的第二个限制条件,几率分布的求和为1,因此对上式求和

$$ \sum_{y \in \mathcal{Y}} \exp \left( \sum_{i=1}^m \lambda_i f_i (x,y) \right) exp(\frac {\lambda_{m+1}}{\tilde{p}(x)} - 1) = 1 $$

注意到上式第二个指数项与y无关,能够提到求和符号的左边,即

$$ exp(\frac {\lambda_{m+1}}{\tilde{p}(x)} - 1) \sum_{y \in \mathcal{Y}} \exp \left( \sum_{i=1}^m \lambda_i f_i (x,y) \right) = 1$$

将上式代入(26)式,解得

$$ p(y|x) = \exp \left( \sum_{i=1}^m \lambda_i f_i (x,y) \right) \frac 1 {\sum_{y \in \mathcal{Y}} \exp \left( \sum_{i=1}^m \lambda_i f_i (x,y) \right)} $$

注意上式适用任何(x,y)。因而,知足限制条件的最大熵模型求解出来了,即(10)式的解,整理以下

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

其中

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

上面这个条件几率分布是一个对数线性模型。固然了上面式子中还存在参数$\lambda_i$,要计算最终的条件几率分布,须要将上式代入拉格朗日函数,而后对$\lambda_i$求极大值,具体是求偏导并令其等于0,求得$\lambda_i$再代入上式解得最终的条件几率分布,具体可参考前面专门讲的最大熵模型

虽说本篇标题是条件随机场,可是为了引出条件随机场,又复习了一遍其余三个几率模型,这也是没办法,一切都是为了更好的理解透彻条件随机场,下一篇将讲述两种几率模型(生成模型和判别模型)的图表示。

ref

Classical Probabilistic Models and Conditional Random Fields

相关文章
相关标签/搜索