[转] 条件随机场简介

原文网址:http://hi.baidu.com/hehehehello/blog/item/2bc871c66a45c9059d163d94.html

    CRF(Conditional Random Field) 条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析、命名实体识别、词性标注等。在我看来,CRF就像一个反向的隐马尔可夫模型(HMM),两者都是用了马尔科夫链作为隐含变量的概率转移模型,只不过HMM使用隐含变量生成可观测状态,其生成概率有标注集统计得到,是一个生成模型;而CRF反过来通过可观测状态判别隐含变量,其概率亦通过标注集统计得来,是一个判别模型。由于两者模型主干相同,其能够应用的领域往往是重叠的,但在命名实体、句法分析等领域CRF更胜一筹。当然你并不必须学习HMM才能读懂CRF,但通常来说如果做自然语言处理,这两个模型应该都有了解。

 

>>CRF详细的介绍和公式推导推荐这个PPT教程:http://wenku.baidu.com/view/f32a35d2240c844769eaee55.html

>>另外推荐一篇HMM应用于中文分词的一篇易读的入门教程,非常形象:http://blog.sina.com.cn/s/blog_68ffc7a40100uebv.html

 

    下文仅针对专门做自然语言处理的同学做一个快速形象的上手简介,并指出最重要的特征。这里假设你已经有基本的自然语言处理概念和马尔科夫链的基本知识。CRF本质上是隐含变量的马尔科夫链+可观测状态到隐含变量的条件概率。说隐含变量和可观测状态很抽象,我们以词性标注为例(如果你不知道什么是词性标注,请百度一下),在词性标注中词性标签就是隐含变量,具体的词语就是可观测状态,词性标注的目的是通过可观测到的一个个单词推断出来每个单词应该被赋予的词性标签。下文将用词性标签和词语代替上述两个名词。

    先说马尔科夫链,这里体现了CRF的随机场特征(准确的说是马尔科夫随机场)。这里CRF和HMM都假设词性标签是满足马尔科夫性的,即当前词性仅和上一个词性有概率转移关系而与其它位置的词性无关,比如形容词后面跟形容词的概率是0.5,跟修饰性“的”的概率为0.5,跟动词的概率为0。因此,通过在一个标注集上进行统计,我们很容易得到一个概率转移矩阵,即任意词性A后紧邻任意词性B的概率都可以被统计出来。对HMM来说这部分就结束了,对CRF来说,可以在二维条件转移矩阵基础上再增加一维词语特征,如“当AB相邻,A是动词且B单词长度超过3时,B是名词的概率是xx"。大家可能注意到了马尔科夫链的窗口为1,即它仅考虑上1个词,这不见得是最合理的。这其实是一个对特征稀疏问题的折中,可以想象仅对两个词性AB统计P(B|A)能够得到很多数据的反馈,而如果统计长度为6的窗口,如P(G | ABCDEF)就会遇到数据稀疏的问题,因为很可能序列ABCDEF根本就没有在数据集中出现过.数据稀疏对机器学习的影响是巨大的,因此马尔科夫链实际以损失一定全局信息的基础上换来了更饱满的数据,实验证明这笔交易在词性标注时是赚的。

    再说词性与词语直接的映射概率,这里体现了CRF的条件特征。如果是HMM,这里会直接统计词性-->单词的条件概率矩阵,比如 ”动词“ 生成 ”发射“ 的概率可能为1.5%,而生成”微软“ 的概率为0. 然后对于每一种可能的词性序列结合与条件概率相乘就能得到每一个候选序列的生成概率,然而取概率最高的作为标注结果即可。而CRF正好反过来,CRF通过发掘词语本身的特征(如长度,大小写,匹配特定词表等,也可以包括词语本身),把每个词语转化成为一个一维特征向量(vector),然后对于每个特征计算特征到词性的条件概率,这样每个词语对候选词性的条件概率即为所有特征条件概率的加和。比如我们假设特征向量只有两个,且P ( ”词语长度>3" --> 名词词性)的概率为0.9, P("词语位于句子末尾“ --> 名词词性)概率为0.4,且一个词恰好满足这两个特征,则其为名词的条件概率为 (0.9 + 0.4) / 2 = 0.65. 这样,CRF根据这个条件转移数值再结合词性的马尔科夫特性,就可以使用与HMM类似的方法寻找最优的词性标注序列了。

    为了装得更学术一点本想再贴一个公式搞了半天没贴成功还是算了不过在上面的PPT链接中大家可以找到所以就不写了。总的来说CRF优于HMM的地方在于,它可以引入更多的特征,包括词语本身特征和词语所在上下文的特征,而非单词本身。从某种角度讲,它结合了HMM和最大熵方法。本人也刚刚接触CRF,因此都是从最浅显的角度来介绍的,如果有什么说错的地方欢迎指正啊~ 写这么多不容易,有大牛路过的话请轻拍哈~

### 使用马尔可夫随机场进行图像分割的 MATLAB 实现 #### 马尔可夫随机场简介 马尔可夫随机场(MRF)是一种用于建模空间依赖关系的概率图模型,在计算机视觉领域广泛应用,特别是在图像分割任务中。通过定义像素之间的邻域关系以及先验概率分布,可以有效地捕捉图像中的局部结构特征。 #### 图像分割原理 在基于 MRF 的图像分割方法中,通常假设每个像素属于某个类别,并且相邻像素之间存在一定的关联性。具体来说,给定一幅输入图像 \(I\) 和其对应的标签场 \(\textbf{L}\),目标是最优化如下能量函数: \[ E(\textbf{L})=\sum_{i} V(I_i,L_i)+\lambda \sum_{(i,j)\in N} W(L_i,L_j) \] 其中: - 第一项表示数据项,衡量单个像素与其所属类别的匹配程度; - 第二项为平滑项,用来惩罚不同类别间的换;\(N\) 表示邻居集合; - 参数 \(\lambda\) 控制两者间相对重要性的权衡[^3]。 #### MATLAB 实现流程 1. **初始化参数** 定义必要的变量和超参数,如最大迭代次数、温度系数等。 2. **构建邻接矩阵** 创建描述像素间连接强度的权重矩阵 `W` ,这可以通过高斯核或其他方式计算得到。 3. **设定初始状态** 对于每一个像素赋予随机或预估的起始分类标记向量 `label` 。 4. **循环更新过程** 进行多次扫描整个图像的过程,在每次扫描期间按照吉布斯采样算法逐一调整各位置处的最佳分配方案直至收敛为止。 下面给出一段简单的伪代码来展示上述思路的具体操作步骤: ```matlab function labels = mrf_segmentation(image, beta, maxIter) % 初始化参数设置 [nrows, ncols] = size(image); labels = randi([1, K], nrows, ncols); % 假设有K种类别 energyHistory = zeros(maxIter, 1); for iter = 1:maxIter newLabels = labels; for row = 1:nrows for col = 1:ncols currentLabel = labels(row,col); neighbors = getNeighbors(labels, row, col); neighborCounts = histcounts(neighbors(:), 'BinEdges', linspace(0,K+1)); potentialEnergy = computePotentialEnergy(image(row,col,:), ... repmat(currentLabel,[size(image)]), beta); transitionProbabilities = exp(-potentialEnergy ./ temperature(iter)) .*... (neighborCounts / sum(neighborCounts)); [~, bestClassIdx] = min(potentialEnergy - log(transitionProbabilities + eps())); newLabels(row,col) = bestClassIdx; end end energyChange = calculateTotalEnergy(newLabels, image, beta) - ... calculateTotalEnergy(labels, image, beta); if abs(energyChange) < tolerance || all(isnan(energyChange)) break; else labels = newLabels; energyHistory(iter) = calculateTotalEnergy(labels, image, beta); end end plot(energyHistory,'LineWidth',2); xlabel('Iteration'); ylabel('Energy Value'); end ``` 此段程序仅作为概念验证用途,实际应用时还需要考虑更多细节问题并加入适当的边界条件处理机制以提高鲁棒性和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值