0.概率图
在明白crf之前,首先我们来看看概率图。概率图是用图来表示变量概率依赖关系,是概率论和图论的结合。从概率图衍生而来的算法有很多,包括朴素贝叶斯、最大熵、hmm、条件随机场、主题模型等。
概率图分为有向概率图,又叫贝叶斯网络,其中的有向代表的是单边依赖关系;无向概率图,又叫马尔科夫网络,其中的无向代表的是双边依赖关系。
- 贝叶斯网络
贝叶斯网络又叫信念网络,是一个有向无环图的网络,其中节点表示的是随机变量,可以是观测变量、隐性变量或者参数等。如果两个变量之间用单向箭头连接,则说明两个变量之间存在因果关系,会产生一个条件概率。
贝叶斯网络
这里有一个需要注意的是,对于联合概率分布可以通过概率相乘的形式推出,就是先求k-1至1发生时候k发生情况下k发生概率,依此类推相乘。
联合概率公式
关于贝叶斯网络我们有几种不同的模式,分别为head-to-head、 tail-to-tail、 head-to-tail,这里不细讲了,大家自己可以百度一下。根据head-to-hail我们可以推出马尔科夫性,即:当前状态只跟上一状态有关,跟上上或上上之前的状态无关。 -
马尔科夫网络
马尔科夫网络是无向有环图,节点表示随机变量,边表示节点之间存在某种相互依赖的关系。马尔科夫图上的变量都满足马尔科夫性,即不相邻的变量之间条件独立,马尔科夫随机场的成对、局部、全局马尔科夫性都是在描述这一个性质。
马尔科夫网络
1.马尔科夫性
上面已经说了马尔科夫就是说当前状态只跟上一状态有关,而跟其他状态无关。
-
成对马尔科夫性
u和v是图中没有边相连的两个节点,分别对应两个变量Yu和Yv,假设其他所有的节点为o,对应变量集合为Yo,成对马尔科夫性指的是给定Yo的情况下,Yu和Yv是条件独立的。
成对马尔科夫性 -
局部马尔科夫性
假设v是网络中任意节点,W是与v相连的节点集合,O为网络中的其他节点,对应的变量集合分别为Yv、Yw、Yo,局部马尔科夫性指的是在给定变量组Yw的情况下,Yv与Yw条件独立。
局部马尔科夫性 -
全局马尔科夫性
假设节点集合A和B是网络中任意被节点集合C分开的节点集合,对应的节点集合仍然为YA、YB、YC,全局马尔科夫性指的是给定变量组YC,YA和YB条件独立。
全局马尔科夫性
个人认为马尔科夫性没有什么特殊的意义,大家只记得马尔科夫性就可以了,即条件独立,当前状态只和前一状态有关。
2.条件随机场模型解释
2.1 定义
设X与Y是随机变量,P(Y∣X)是在给定X的条件下Y的条件概率分布。若随机变量Y构成一个由无向图G=(V,E)表示的马尔可夫随机场,即
条件随机场的成立条件
对任意结点v成立,则称条件概率分布P(Y∣X)为条件随机场。其中w~v表示与v相连的节点w≠v表示除v外的所有节点,这就是条件独立的概念。
实际上,我们通常考虑线性链的情况,并且X和Y具有相同的结构,这个可以理解为隐藏状态和观察状态,X就是我们能观察到的,但是Y我们观察不到:
线行链条件随机场
用数学公式表示就是:
线性链条件随机场公式
2.2 参数化表达
条件随机场最终求的都是一个联合概率,根据马尔科夫性,我们可以把联合概率表示成相邻节点的函数。
条件向量场的参数化表达
Z(x)就是exp那一坨的求和,tk和sl是特征函数,这个我们可以自己定义,剩下的是权重。
这样一来相乘的问题我们化简成相加的问题了。
这样写不太好理解和推导,需要化简,于是我们假设有K1个转义特征和K2个状态特征,定义一个分段函数:
分段函数
然后对各个位置求和:
求和
然后定义一个分段的权重:
分段权重
最后得到概率分布的公式:
化简后的概率公式
然后根据向量相乘的定义,可以写成向量积的形式:
向量化表示
2.3 矩阵形式
矩阵是最容易计算的了,因此进一步表示为矩阵形式。首先定义一个m阶矩阵,这个好理解,就是m个y可能的取值。
M阶矩阵定义过程
这个式子呢,从后往前看,最下面那个是不是眼熟,就是条件随机场向量化表达公式的前半部分,然后取exp以后就可以得到m阶矩阵了,这个懒得解释自己想一下就行了。提示一下m阶的意思是呢,yi-1有m种表达,yi有m种表达,最后综合起来就是m阶了。
最终矩阵相乘就表示一个概率的可能性,然后规范化以后就可以得到概率分布。
规范化矩阵
至于为什么除各个矩阵的第一个元素,还有待考虑。
3.条件随机场模型求解过程
要时刻记得这事一个判别式模型,是要直接计算P(x|y)的。
3.1 定义特征函数
我们都知道条件随机场有一个转移特征和状态特征,这些都可以事先定义好。我们定义好特征函数后,从模型表达式上来看就剩一个wk序列的参数需要计算了。参数求解方法有很多,牛顿法、拟牛顿法等等,这些都是运筹里的优化算法,需要了解的话我会单独的写一个专题出来。这里不展开了。
3.2 概率计算
其实就是两个递推公式,具体不展开了,不太好理解:
标记yi概率
标记yi-1和标记yi概率
3.3 训练模型
目标函数,参考极大似然估计,跟逻辑回归类似,取下边这个:
目标函数
然后采用拟牛顿法求解,太难了,不说了,知道怎么回事就行。
3.4 预测过程
预测过程简而言之就是找到概率最大的那个状态序列,采用维特比算法,用到了动态规划,可以减少计算量。具体也不多说,因为这篇文章偏向于让大家都懂计算流程,不太考虑细节,可以参考下边这个文章。https://www.cnblogs.com/zhibei/p/9391014.html
4.结语
基本上碎碎念的就这么多,大家一般用crf都是用在Bilstm之后,巧的是tensorflow已经封装好crf层,同志们直接用好了。
网友评论