线性链条件随机场-tutorial(一)

线性链条件随机场-tutorial(一)

何声欢何声欢

1. 导读

这是一篇面向有一定机器学习基础读者的教程,文中不会涉及太多概率图模型的内容。该教程主要介绍了条件随机场(Conditional random fields)的定义。

首先让我们从一张流传甚广的模型关系图开始,如下图中所示,隐马尔可夫模型与线性链条件随机场是一对 “生成-判别对”(generative-discriminative pair)。可以理解为它们是一对近亲,模型非常相似。但究竟是哪里相似,图中的“条件化”(conditional)又是何意?本篇教程将会为你解答。


这篇教程主要由以下几个部分组成:

  1. 首先简单介绍图模型(Graphic Model)的概念;
  2. 从隐马尔可夫模型(Hidden Markov Model)的图模型形式定义出发,通过引入假设并进行推导,最终得到线性链条件随机场(linear-chain CRF)的模型定义;
  3. 在得到模型定义的基础上,我们将介绍条件随机场的概率计算方法、学习算法和预测算法。

学习这份教程,你需要了解隐马尔可夫模型,并对特征函数的概念有一定的了解。当然,贝叶斯法则也是必不可少的。学习CRF的预测算法时,使用了经典的维特比算法(Viterbi algorithm),因此有一定的算法基础也会更易于理解。


2. 线性链条件随机场的定义

2.1 图模型

对于多变量概率分布,图模型拥有强大的表示和推导能力。通常有很多个变量的分布是难以直接统计刻画的,因为其十分耗费资源,例如n个二值变量的联合分布需要 O(2^n) 个浮点数空间。

而图模型建模方式的优点是:多变量分布通常可以表示为一些局部函数local functions)的乘积,而每个局部函数依赖于更小的变量子集。通过因子化(factorization)和条件独立性(conditional independence),使得复杂的多变量分布可以用少得多的参数进行刻画。

图模型一般分为无向图模型(undirected models)和有向图模型(directed models)。下面将分别简单介绍其定义。


这一部分的内容较为枯燥,但是带着这句话去理解两种图模型也许会有所帮助:

有向图模型是一系列概率的连乘形式,无向图模型则是一系列函数的连乘形式

这也是有向图模型一般用于表示生成式模型,而无向图模型一般表示判别式模型的原因之一。

而模型中的概率或函数是如何得到或定义的,则是非常有意思的地方,有时甚至也能通过巧妙的定义将有向图模型与无向图模型相互转换。


2.1.1 无向图模型

考虑一组随机变量Y的概率分布,为每个随机变量设置一个整数下标 s \in 1,2,\dots , |Y| ,每个变量 Y_s \in Y 的具体值取自集合 \mathcal{Y} ,可以是离散或连续值。通常 Y 的一组可能取值记为 \mathbf{y} ,对于其中某一个变量 Y_s\in Y ,记 y_s 是其在这个可能取值 \mathbf{y} 中的值。

假设概率分布 p(y) 可以表示成形为 \Psi_a(\mathbf{y}_a) 的因子的乘积,其中 1 \le a \le A 是一个用于标记因子的整数,每一个因子 \Psi_a(\mathbf{y}_a) 都只依赖于一个随机变量子集 Y_a \subseteq Y。使用因子化的方式让我们可以更高效地表示分布 p(\mathbf{y}) ,因为 Y_a 可能远远小于整个随机变量的集合 Y

举个例子,如上图所示,根据无向图模型的定义,有三个随机变量的分布可以写成:

p(y_1,y_2,y_3)=Z^{-1}\Psi_1(y_1,y_2)\Psi_2(y_2,y_3)\Psi_3(y_1,y_3)

其中 Z 是一个常数,可以看到分布变成了三个因子和一个常数的乘积。

因为无向图模型的基本形式为:给定一组子集 \{Y_a\}^A_{a=1} ,无向图模型可以写成如下形式:

p(\mathbf{y}) = \frac{1}{Z} \prod_{a=1}^A \Psi_a(\mathbf{y}_a) \tag{2.1}

Z = \sum_{\mathbf{y}} \prod_{a=1}^A\Psi_a(\mathbf{y}_a)\tag{2.2}

其中,常数 Z 被称为归一化因子;对于任意的因子集合 \mathcal{F} = \{\Psi_a\} 都要保证 \forall \mathbf{y}_a, \Psi_a(\mathbf{y}_a) \ge 0 。因子也被称为局部函数或兼容性函数。上述形式的无向图模型通常也被称为随机场(random field)。

这时,我们可以给出无向图模型的定义:

给定一个因子图 G = \{ V, F, E \} ,其中结点集 V = \{1,2,\dots, |Y|\} 是随机变量的标记集, F = \{1,2,\dots, A \} 是因子的集合,而图中的边则代表着不同的局部函数。令 N(a) 表示图中标记为 a 的局部函数边上连接的结点,则无向图的定义为:

定义2.1 如果存在一组局部函数 \Psi_a ,分布 p(\mathbf{y}) 根据因子图G进行因子化,则 p(\mathbf{y}) 可以写成:

p(\mathbf{y}) = Z^{-1} \prod_{a \in F}\Psi_a(\mathbf{y}_{N(a)})\tag{2.3}

因子图的含义,其实就是图中的任意一个变量结点 Y_s(s \in V) 都与一个局部函数结点 \Psi_a(a \in F) 相连,且 Y_s 作为的一个参数。于是因子图可以直观地描述一个分布如何被分解成一组局部函数的积。

(上面的部分其实可以不用阅读,至式(2.2)应该已经大概了解无向图模型的基本形式。)


2.1.2 有向图模型

在无向图模型中,局部函数看起来并不是概率,也没有直观的概率解释,整个图模型更像是一顿函数计算后的结果。而有向图模型却是描述了一个分布是如何被因子化为局部条件分布local conditional distributions)的。

G 为一个有向不循环图(directed acyclic graph),\pi(s)Y_s 在图中的父结点,则有向图模型是一系列具有如下形式的分布:

p(\mathbf{y})=\prod_{s=1}^Sp(y_s|\mathbf{y}_{\pi(s)})\tag{2.4}

我们称分布 p(y_s|\mathbf{y}_{\pi(s)}) 为局部条件分布。注意,对于那些没有父结点的变量 \pi(s) 可能为空,这时应该理解成 p(y_s)

有向图常被用来表示生成式模型。


2.1.3 有输入输出的图模型

机器学习问题中,数据常常有输入变量 X 和输出变量 Y 两个部分。假设 X 已知,我们要做的是对 Y 进行预测,例如 \mathbf{x} 可能表示句子中出现的每个词而组成的变量序列,而 \mathbf{y} 则是每个词对应的词性标注。

如果我们想要对 X \cup Y 的分布进行建模,可以对之前的定义进行扩展,例如一个 XY 上的无向图模型可以写作:

p(\mathbf{x},\mathbf{y})=\frac{1}{Z} \prod_{a=1}^A\Psi_a(\mathbf{x}_a, \mathbf{y}_a)\tag{2.5}

此时,局部特征函数 \Psi_a 依赖于两个子集, X_a \subseteq XY_a \subseteq Y 。归一化常数也变为了:

Z = \sum_{\mathbf{x,y}}\prod_{a\in F}\Psi_a(\mathbf{x}_a, \mathbf{y}_a)\tag{2.6}

这时,该无向图模型就是对联合分布进行建模的模型了。


2.2 序列模型

一般的分类器只能对单变量进行预测,而图模型真正强大的能力是其可以对互相依赖的多个变量进行建模。序列模型(Sequence Model)可能是变量间依赖最简单的模型了,模型的输出变量成一个序列排列。举一个最常见的例子,应用于命名实体识别(NER)的模型就是一种序列模型。

命名实体识别是将文本中的名字性的实体识别出来的任务,常见的实体包括人名、地名、机构名。通常给定一个句子,NER的目的是分割出句子中的实体,并判断其属于哪一类实体。

2.2.1 隐马尔可夫模型

隐马尔可夫模型(HMM)是一种常见的用于进行NER的模型,模型对可观测序列 X=\{x_t\}_{t=1}^T 和其对应的隐含状态序列 Y=\{y_t\}_{t=1}^T 建模。假设 S 为有限的隐含状态集, O 为有限的观测状态集。HMM对联合概率 p(\mathbf{y},\mathbf{x}) 进行建模,并且假设当前时刻的隐含状态 y_t 仅依赖于前一个时刻的隐含状态 y_{t-1} ,而与其他任意时刻的隐含状态无关。于是,HMM可以写成:

p(\mathbf{y},\mathbf{x}) = \prod_{t=1}^T p(y_t|y_{t-1})p(x_t|y_t)\tag{2.7}

概率计算由两部分组成,分别是转移概率 p(y_t|y_{t-1}) 和发射概率 p(x_t|y_t) 。式(2.7)其实就是一个有向图模型,可以画成如下形式的有向图:

借鉴无向图模型定义,让我们将HMM改写成无向图模型:

p(\mathbf{y},\mathbf{x}) = \frac{1}{Z} \prod_{t=1}^T \exp \left\{ \sum_{i,j \in S}\theta_{ij}\mathbf{1}_{\{y_t=i\}}\mathbf{1}_{\{y_{t-1}=j\}} + \sum_{i \in S} \sum_{o\in O}\mu_{oi}\mathbf{1}_{\{y_t=i\}}\mathbf{1}_{\{x_t=o\}} \right\}\tag{2.8}

其中,

\begin{align*} \theta_{ij} &= \log p(y'=i|y=j) \\ \mu_{oi} &= \log p(x=o|y=i) \\ Z &= 1 \end{align*}

通过巧妙地定义局部函数,式(2.8)就成为了HMM的无向图模型定义。


2.2.2 线性链条件随机场

导读中,我们给出了下图,指出了HMM和线性链条件随机场之间的成对关系。但如何通过HMM得到一个线性链条件随机场呢?


首先为了使HMM模型的表示更加简洁,引入特征函数(feature function)来进一步改写式(2.8)。 第一步,令 \theta = \{\theta_{ij}, \mu_{oi}\} 表示参数,定义特征函数形式如 f_k(y_t, y_{t-1}, x_t) 。显然,为了完全复现式(2.8)的功能,我们需要两种特征函数,分别为:

  1. 转移特征: f_{ij}(y,y',x)=\mathbf{1}_{\{y=i\}}\mathbf{1}_{\{y'=j\}}
  2. 状态特征: f_{oi}(y,y',x) = \mathbf{1}_{\{y=i\}}\mathbf{1}_{\{x=o\}}

我们将上诉两种特征函数统一记为 f_k ,包含了所有的转移特征和发射特征。于是,HMM可以拥有如下形式:

p(\mathbf{y},\mathbf{x}) = \frac{1}{Z} \prod_{t=1}^T \exp \left\{ \sum_{k = 1}^K\theta_k f_k(y_t,y_{t-1},x_t)\right\}\tag{2.9}

接着,根据式(2.9),我们可以写出条件分布的定义:

\begin{align*} p(\mathbf{y}|\mathbf{x}) &= \frac{p(\mathbf{y},\mathbf{x})}{\sum_{\mathbf{y'}} p(\mathbf{y'},\mathbf{x})} \\ &= \frac{ \prod_{t=1}^T \exp \left\{ \sum_{k = 1}^K\theta_k f_k(y_t,y_{t-1},x_t)\right\}}{\sum_{\mathbf{y'}} \prod_{t=1}^T \exp \left\{ \sum_{k = 1}^K\theta_k f_k(y_t,y_{t-1},x_t)\right\}} \end{align*}\tag{2.10}

式(2.10)就是一种特别的线性链条件随机场,特征函数仅使用当前词作为参数,称为类HMM线性链条件随机场(HMM-like linear chain CRF)。但是其他许多类型的线性链条件随机场在输入上有丰富的特征,例如词的前缀、后缀、周围词等等。这些扩展需要对特征函数进行适当的改动,以获得更丰富的特征。

下面我们给出更一般的线性链条件随机场的定义:

定义 2.2Y, X 为随机变量, \theta = \{ \theta_k\} \in \mathbb{R}^K 为参数向量, \mathcal{F}=\{f_k(y,y',\mathbf{x})\}^K_{k=1} 是一组实值特征函数。线性链条件随机场即为如下形式的条件分布:

p(\mathbf{y}|\mathbf{x}) = \frac{1}{Z(\mathbf{x})} \prod_{t=1}^T \exp \left\{ \sum_{k = 1}^K\theta_k f_k(y_t,y_{t-1},\mathbf{x},t)\right\}\tag{2.11}

其中, Z(\mathbf{x}) 是和输入相关的归一化函数:

Z(\mathbf{x}) = \sum_{\mathbf{y}}\prod_{t=1}^T \exp \left\{ \sum_{k = 1}^K\theta_k f_k(y_t,y_{t-1},\mathbf{x},t)\right\}\tag{2.12}

根据上述定义,我们不难画出一般线性链条件随机场的无向图:

但实际上,根据特征函数的不同,线性链条件随机场往往有各式各样的图结构。

上图是典型的类HMM线性链条件随机场模型的图结构。

上图是当前 y_t 依赖于 x_{t-1} 的线性链条件随机场。

「开着玩玩儿哈」
还没有人赞赏,快来当第一个赞赏的人吧!
文章被以下专栏收录
还没有评论
推荐阅读