CRF模型

目录

隐马尔可夫模型HMM(这里用一个HMM第三个问题来举例)

CRF条件随机场

 马尔可夫性:

概率无向图:

团和最大团:

概率无向图的因子分解:

CRF的应用

总结

3.1 随机场->马尔可夫随机场

3.2 马尔可夫随机场->条件随机场

3.3 条件随机场->线性链条件随机场注意在 CRF 的定义中,我们并没有要求 X 和 Y 有相同的结构。


隐马尔可夫模型HMM(这里用一个HMM第三个问题来举例)

简单来说第一天的初始状态未知,但是状态转移矩阵已知。当天伴随自变量的事件状态转移矩阵已知,同时知道一段时间的因变量的结果,求这段时间概率最大的自变量

 以上是一个生动的例子

要解决这个问题:需要使用viterbi算法

介绍viterbi算法就不用上面的例子了,换一个例子进行通俗讲解:

 这是一个取球不放回模型,pai是初始条件概率矩阵,A是状态转移矩阵,B是观测状态转移矩阵,由每日状态来决定,简单理解就是一个随当天自变量而生成的因变量。知道三次取球结果为红白红,试问三次取球分别从哪个箱子取出的概率最大。

初始条件概率矩阵已知,则根据观测状态转移矩阵计算出即首日观测红球概率矩阵。首次取球,从取到第一个箱子且红球概率为0.1,同理2红0.16,3红0.28,如果首次是这样的条件矩阵, 那么可以推算出第二次在各个箱子开出白球的概率(这里是在第一次开红球的基础上在各箱中开白球的概率)

 需要注意的是,因为第二次在第一个箱子里面开白球的概率是由第一次在三个箱子开红球这个事件共同决定,我们找出第一次在三个箱子中最有可能的哪一个,也就是在式子中的max函数,同理得到第二次每个箱子开白球所最有可能的第一次开红球的箱子都是3,可以大致觉得第一次就是由三这个箱子开出的红球;同理第三次开红球推测第二次由哪个箱子开白球的概率更大,前两个箱子中开红球认为由二箱子开白球概率大,第三箱子开红球认为由三箱子开白球概率大,这里取第三个箱子的观点是由于第三个箱子开出红球而且在取第三个箱子条件概率下大于前两个之和,所以认为第二次取的是第三个箱子,而第三次取的是什么箱子就是看第三次哪个取红球的概率大,这就构成了整条链的概率,比穷举法节约了时间复杂度。

CRF条件随机场

P(Y/X)  :X是输入变量,Y是输出变量,Y满足马尔可夫随机场。

条件概率

无向图--概率无向图模型:马尔可夫随机场

条件随机场:在X输入下Y输出满足马尔可夫条件

线性链的条件随机场:X是线性所产生的Y是马尔可夫随机场

概率图模型:(状态转移的图)

 马尔可夫性:

概率无向图:

概率无向图本质上就是具有马尔可夫性的一个无向图

下图是一个概率无向图,具有全局马尔可夫性(局部马尔可夫性,成对马尔可夫性自行脑补)

介绍重点是概率无向图可以进行因式分解,至于如何进行因式分解,就需要介绍团和最大团的概念

团和最大团:

概率无向图的因子分解:

CRF的应用

输入输出经过某个分布 P(Y|X),线性链条件随机场(Linear-CRF)公式如下
请添加图片描述

从上面那个例子,我们可以了解到,条件随机场的在 NLP 领域的作用就是:标注(或者,命名实体识别)

从公式中我们可以看到,当前的标注结果 y,还会参考上一个标注的结果 y_i-1。也就是说,CRF 在标记数据的时候,会考虑前一个数据的标记信息,这对于解析句子语法结构来说是得天独厚的优势(例如:动词后面不能跟动词)。而这一点,是普通的分类器难以做到的。
 

总结

3.1 随机场->马尔可夫随机场

首先,我们来看看什么是随机场。“随机场”的名字取的很玄乎,其实理解起来不难。随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。还是举词性标注的例子:假如有一个十个词形成的句子需要做词性标注。这十个词每个词的词性可以在已知的词性集合(名词,动词…)中去选择。当我们为每个词选择完词性后,这就形成了一个随机场。

了解了随机场,我们再来看看马尔科夫随机场。马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,和与其不相邻的位置的赋值无关。继续举十个词的句子词性标注的例子: 如果我们假设所有词的词性只和它相邻的词的词性有关时,这个随机场就特化成一个马尔科夫随机场。比如第三个词的词性除了与自己本身的位置有关外,只与第二个词和第四个词的词性有关。通常一个概率无向图模型,又称为马尔可夫随机场。

3.2 马尔可夫随机场->条件随机场

CRF 是马尔可夫随机场的特例,它假设马尔科夫随机场中只有 X 和 Y 两种变量, X 一般是给定的,而Y 一般是在给定 X 的条件下的输出。这样马尔科夫随机场就特化成了条件随机场。在我们十个词的句子词性标注的例子中,X是词,Y是词性。因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个 CRF。

对于 CRF,给出准确的数学语言描述:设 X 与 Y 是随机变量,P(Y|X) 是给定 X 时 Y 的条件概率分布,若随机变量 Y 构成的是一个马尔科夫随机场,则称条件概率分布 P(Y|X) 是条件随机场。

3.3 条件随机场->线性链条件随机场
注意在 CRF 的定义中,我们并没有要求 X 和 Y 有相同的结构。

而实现中,我们一般都假设X和Y有相同的结构,即:

请添加图片描述

X和Y有相同的结构的CRF就构成了线性链条件随机场(Linear chain Conditional Random Fields,简称 Linear-CRF)
 

### Bert-BiLSTM-CRF 模型架构概述 Bert-BiLSTM-CRF 是一种结合了预训练语言模型 BERT 和序列标注的经典结构 BiLSTM 及条件随机场 CRF 的混合模型。这种组合能够有效提升命名实体识别 (NER) 或其他序列标注任务的效果。 #### 架构组成 1. **BERT 层** 输入文本通过 BERT 编码器获取上下文表示向量,这些向量包含了丰富的语义信息[^1]。 2. **BiLSTM 层** 接收来自 BERT 输出的特征向量作为输入,并利用双向 LSTM 结构捕捉前后依赖关系,进一步增强局部特征表达能力[^2]。 3. **CRF 层** 位于顶层用于优化标签预测路径的概率分布,确保整个句子级别的最优解而不是简单地逐词分类。 #### 示意性架构图描述 虽然无法直接提供图片形式的架构图,以下是基于文字说明构建的一个简化版 Bert-BiLSTM-CRF 模型架构的文字示意: ``` +-------------------+ | Input Layer | +--------+----------+ | +--------v----------+ | BERT Layer | <- 预训练好的BERT模型负责提取深度语义特征 +--------+----------+ | +--------v----------+ | BiLSTM Layer | <- 处理时间序列数据,加强字符间关联性的建模 +--------+----------+ | +--------v----------+ | CRF Layer | <- 序列级别上的全局约束,提高标注准确性 +-------------------+ ``` 对于更详细的可视化展示,建议查阅相关论文或技术博客中的图形资料来获得直观的理解。 ```python import torch.nn as nn class BertBiLstmCrf(nn.Module): def __init__(self, bert_model, lstm_hidden_size, num_tags): super(BertBiLstmCrf, self).__init__() # 加载预训练的BERT模型 self.bert = bert_model # 定义BiLSTM层 self.lstm = nn.LSTM(input_size=bert_model.config.hidden_size, hidden_size=lstm_hidden_size, bidirectional=True, batch_first=True) # 定义线性变换映射到标记空间 self.linear = nn.Linear(lstm_hidden_size * 2, num_tags) # 初始化CRF层 from transformers import ConditionalRandomField self.crf = ConditionalRandomField(num_tags=num_tags) def forward(self, input_ids, attention_mask=None, labels=None): outputs = self.bert(input_ids=input_ids, attention_mask=attention_mask)[0] sequence_output, _ = self.lstm(outputs) emissions = self.linear(sequence_output) if labels is not None: loss = -self.crf(emissions, tags=labels, mask=attention_mask.byte(), reduction='mean') return loss else: prediction = self.crf.decode(emissions, mask=attention_mask.byte()) return prediction ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值