CRF以及BiLSTM+CRF

BiLSTM+CRF

现在比较流行的是bilstm+crf,即在bilstm后面接了crf层

  • 经过bilstm得到隐状态序列 ( h 1 , h 2 , . . . , h n ) R n m (h_1,h_2,...,h_n) \in R^{n*m}
  • 接入一个线性层,转换隐状态序列的维度,从 m m 维转换到 k k 维, k k 是标签数。我们可以理解这一步是由网络自动学习当前单词对应到每个标签的分数。
  • 接下来是CRF层,这一层需要学得的参数是 ( k + 2 ) ( k + 2 ) (k+2)*(k+2) 的矩阵T,此处考虑了start和end标签, T i j T_{ij} 表示从标签 i i 到标签 j j 的转移得分。可以看出通过添加CRF考虑了标签之间的关系

这里提到接上CRF层,和真正的CRF是不同的,不要混淆

资料:

CRF

生成式模型与判别式模型
1)生成式模型:直接对联合概率进行建模,比如:GMM, HMM,NB
2) 判别式模型:对条件概率进行建模,比如:CRF, MEMM

概率无向图模型

概率无向图模型又称马尔可夫随机场或马尔可夫网络,是一个可以由无向图表示的联合概率分布。该联合分布满足成对/局部/全局马尔可夫性。

概率有向图模型又称贝叶斯网络。
我们如何把贝叶斯网络转换为马尔可夫网络呢?
第一步:将节点的父节点两两进行连接
第二步:去掉箭头

如何计算联合概率:因子分解
概率无向图模型的联合概率为:图中所有最大团上的随机变量的函数的乘积,然后进行归一化
P ( Y ) = 1 Z C ψ C ( Y C ) P(Y) = \frac{1}{Z} \prod\limits_C \psi_C(Y_C)
其中 Z = Y C ψ C ( Y C ) Z = \sum\limits_Y \prod\limits_C \psi_C(Y_C) ,是归一化因子。 ψ C ( Y C ) \psi_C(Y_C) 是C上定义的严格正函数,被称作势函数。

线性链CRF
条件概率P(Y|X), X是句子,Y是标注序列。条件随机场是给定X条件下,Y满足马尔可夫性(Y是马尔可夫随机场)。
简单来说,有多个特征模板。每个特征模板都要滑过每个位置,相加起来,得到该特征模板对整个句子的一个打分。然后对多个特征模板加权求和。
参数化形式:
p ( y x ) = 1 Z ( x ) e x p ( i , k λ k t k ( x , i , y i 1 , y i ) + i , l μ l s l ( x , i , y i ) ) p(y|x) = \frac{1}{Z(x)}exp(\sum\limits_{i,k} \lambda_kt_k(x,i,y_{i-1},y_i) + \sum\limits_{i,l}\mu_ls_l(x,i,y_i))
从这个式子,我们可以看出,线性链CRF中有两类特征函数,边上的特征函数(转移特征)、点上的特征函数(状态特征)。

因此在有的地方,你可能会看到其他人并不是这样的参数化形式。他们做了一定了简化,即将这两类特征函数用一个形式表达了。你只需要记住有这两类特征函数就可以了,边和点。

还有一点需要注意,特征函数都是人为设计的,因此在线性链CRF中需要学习的参数是,每个特征函数对应的权重,即 λ k , μ l \lambda_k, \mu_l

学习过程中的有点混乱的笔记
在这里插入图片描述

感想:
CRF的资料看了很多,而且大部分都是捏来的李航老师的《统计机器学习》,不得不说自己一次次怀疑自己,怎么就看不懂呢?
坚持看下去之后,我认为理解CRF的三个问题关键在于:

  1. 对CRF的参数化形式要十分熟悉,而且要灵活变换。本质是不变的,但是应用的形式是可以变化的
  2. CRF同样具有HMM中的三个问题:概率估计问题、参数学习问题和预测问题。其中概率估计问题使用前向后向算法,预测问题使用维特比算法,这两个问题的思路和HMM是一样的,这就考察你的学习迁移能力啦

猜你喜欢

转载自blog.csdn.net/YQMind/article/details/83960095