条件随机场(CRF)的详细解释

人工智能76

条件随机场(CRF)由Lafferty等人于2001年提出,结合了最大熵模型和隐马尔可夫模型的特点,是一种无向图模型,常用于标注或分析序列资料,如自然语言文字或是生物序列。近年来在分词、词性标注和命名实体识别等序列标注任务中取得了很好的效果。

条件随机场是一类最适合预测任务的判别模型,其中相邻的上下文信息或状态会影响当前预测。CRF 在命名实体识别、词性标注、基因预测、降噪和对象检测问题等方面都有应用。

在本文中首先,将介绍与马尔可夫随机场相关的基本数学和术语,马尔可夫随机场是建立在 CRF 之上的抽象。然后,将详细介绍并解释一个简单的条件随机场模型,该模型将说明为什么它们非常适合顺序预测问题。之后,将在 CRF 模型的背景下讨论似然最大化问题和相关推导。最后,还有一个过对手写识别任务的训练和推理来演示 CRF 模型。
条件随机场(CRF)的详细解释

; 马尔可夫随机场

马尔可夫随机场(Markov Random Field)或马尔可夫网络( Markov Network)是一类在随机变量之间具有无向图的图形模型。该图的结构决定了随机变量之间的相关性或独立性。

条件随机场(CRF)的详细解释

马尔可夫网络由图 G = (V, E) 表示,其中顶点或节点表示随机变量,边表示这些变量之间的依赖关系。

该图可以分解为 J 个不同的团(小的集团 cliques )或因子(factors),每个由因子函数 φⱼ 支配,其范围是随机变量 Dⱼ 的子集。对于 dⱼ 的所有可能值,φⱼ (dⱼ) 应该严格为正。

对于要表示为因子或团的随机变量的子集,它们都应该在图中相互连接。所有团的范围的并集应该等于图中存在的所有节点。

变量的非归一化联合概率是所有因子函数的乘积,即 对于上面显示的 V = (A, B, C, D) 的 MRF,联合概率可以写为:

条件随机场(CRF)的详细解释

分母是每个变量可能取的所有可能的因子乘积的总和。它是一个常数表示,也称为配分函数,通常用Z。

Gibbs Notation

还可以通过对对数空间中的因子函数进行操作,将关节表示为Gibbs 分布。使用 β (dⱼ) = log (ϕ (dⱼ)),可以用 Gibbs 表示法表示共同的边,如下所示。X 是图中所有随机变量的集合。β 函数也称为factor potentials。

条件随机场(CRF)的详细解释

这个公式很重要,因为本文将在后面使用 Gibbs 符号来推导似然最大化问题。

; 条件随机场模型

让我们假设一个马尔可夫随机场并将其分为两组随机变量 Y 和 X。

条件随机场是马尔可夫随机场的一个特例,其中图满足以下属性:"当我们在 X 全局条件下,即 当X中随机变量的值固定或给定时,集合Y中的所有随机变量都遵循马尔可夫性质p(Yᵤ/X,Yᵥ,u≠v)=p(Yᵤ/X,Yₓ,Yᵤ~Yₓ ),其中 Yᵤ ~ Yₓ 表示 Yᵤ 和 Yₓ 是图中的邻居。" 变量的相邻节点或变量也称为该变量的马尔可夫毯(MarkovBlanket)。

满足上述属性的一个这样的图是下面共享的链结构图:

条件随机场(CRF)的详细解释

由于 CRF 是一个判别模型,即 它对条件概率 P (Y / X) 进行建模,即 X 总是给出或观察到。因此,该图最终简化为一条简单的链。

条件随机场(CRF)的详细解释

当我们以 X 为条件并试图为每个 Xᵢ 找到相应的 Yᵢ 时,X 和 Y 也分别称为证据变量和标签变量。

验证上面显示的"因子缩减"CRF模型符合下面为可变Y₂所示的马尔可夫属性。由此可见,给定所有其他变量的Y₂的条件概率最终只取决于相邻节点。

条件随机场(CRF)的详细解释

满足马尔可夫性质的变量 Y₂,条件仅取决于相邻变量

CRF 理论和似然优化

让我们首先定义参数,然后使用 Gibbs 表示法建立联合(和条件)概率的方程。

  1. Label domain:假设集合 Y 中的随机变量有一个域:{m ϵ ℕ | 1≤m≤M}即前 M 个自然数。
  2. Evidence structure and domain:假设集合 X 中的随机变量是大小为 F 的实值向量,即∀ Xᵢ ϵ X, Xᵢ ϵ Rˢ。
  3. 设 CRF 链的长度为 L,即L 个标签和 L 个证据变量。
  4. 令 βᵢ (Yᵢ, Yⱼ) = Wcc '如果 Yᵢ = c, Yⱼ = c' 并且 j = i + 1, 否则为 0。
  5. 令 β'ᵢ (Yᵢ, Xᵢ) = W'c。Xᵢ,如果 Yᵢ = c,否则为 0,其中。表示点积,即W'c ε Rˢ。
  6. 请注意,参数的总数是 M x M + M x S,即每个标签转换有一个参数(M x M 个可能的标签转换)和每个标签(M 个可能的标签)的 S 个参数,这些参数将乘以该标签处的观察变量(大小为 S 的向量)。
  7. 令 D = {(xn, yn)} for n = 1 to N,为由 N 个示例组成的训练数据。

其中似然表达式可以表示如下:

条件随机场(CRF)的详细解释

所以训练问题归结为最大化所有模型参数 Wcc'和 W'cs 的对数似然。

关于 W'cs 的对数似然梯度推导如下:-

条件随机场(CRF)的详细解释

上面等式中的第二项表示y'ᵢ等于c的边际概率之和(在y'可以取的所有可能值上),由xnis加权。y'-i 这里表示除位置 i 之外每个位置的标签 / y 变量的集合。

可以为 dL / dWcc '计算出类似的推导,结果如下:

条件随机场(CRF)的详细解释

这就是标签-标签权重的似然导数

现在已经有了导数和对数似然的表达式,实际上就可以从头开始编写 CRF 模型。可以使用上面提到的方程进行编码,使用置信传播来计算边际并计算出导数,然后使用现成的优化算法(如 L-BFGS)优化。

但是为了简单起见,我们不会重新发明轮子,我们使用使用现有的 CRFSuite 库进行演示。

; 演示 - 手写识别

到目前为止,应该相当清楚 CRF 的结构为什么以及如何使它们成为捕获顺序关系的任务的理想选择,例如 POS 标记句子、命名实体识别等。在这个本文中将使用 CRF 进行笔迹检测任务。

为了准备这个演示的数据集,使用了斯坦福 OCR 数据集和Gutenberg项目存档的组合。

数据集准备

斯坦福 OCR 数据集总共包含 6877 个手写单词,分为 9 折。每个单词的第一个字符都不是小写字符。对于每个单词中的每个手写字符,数据集包含一个长度为 128 的二进制数组,可以将其转换为大小为 16x8 的图像。数据集中的一些单词可视化结果如下:-

条件随机场(CRF)的详细解释

经过分析,我发现整个数据集中的唯一词数量只有 24 个。

我们希望 CRF 模型能够学习标记观察值 (xᵢ),这些观察结果是同时出现的字符像素向量。尽管就字符像素向量而言,数据集中有 6,877 个独特的样本,对于 24 个单词组合来说数据量非常的小,可能无法以概率的方式捕捉一般英语中的字符共现和进行单词识别器。

为了解决这个问题,我决定使用所有字符向量表示来创建一个新的数据集。我为字典中的每个字符捕获了数据集中可用的所有不同字符像素向量变体。在完成后,导入了名著《白鲸记》中出现的所有单词,并过滤掉所有长度小于 3 或包含字母集以外的内容,然后将过滤后的标记转换为小写。这种方式总共提取了 18,859 个单词,然后按词长分成训练集和测试集,。

为了构成 CRF 模型的实际训练和测试集,我使用了我一开始创建的字符到像素数组矢量图。为了创建单词图像 / x,我使用统一采样从字典中为该字符挑选了一个像素数组向量变体。创建的数据集的结果如下:

条件随机场(CRF)的详细解释

训练和测试数据集准备好后,就可以训练模型并根据任务对其进行评估了。

模型训练与评估

这里只粘贴主要代码,全部代码请看最后:

def train_model(X, Y, max_iter_count,  model_store = "handwriting-reco.crfsuite"):
trainer = pycrfsuite.Trainer(verbose=False)

for xseq, yseq in zip(X, Y):
trainer.append(xseq, yseq)

trainer.set_params({
    'c1': 1.0,   # coefficient for L1 penalty
    'c2': 1e-3,  # coefficient for L2 penalty
    'max_iterations': max_iter_count,  # stop earlier

    # include transitions that are possible, but not observed
    'feature.possible_transitions': True
})

trainer.train(model_store)

print(trainer.logparser.last_iteration)

def get_preds(X, model_store = "handwriting-reco.crfsuite"):
tagger = pycrfsuite.Tagger()
tagger.open(model_store)
Y_pred = [tagger.tag(x) for x in X]

return Y_pred

def test_model(X_test, Y_test):
Y_test_pred = get_preds(X_test)

lb = LabelBinarizer()

y_test_combined = lb.fit_transform(list(chain.from_iterable(Y_test)))
y_pred_combined = lb.transform(list(chain.from_iterable(Y_test_pred)))

print "Test accuracy : {}".format(accuracy_score(y_test_combined, y_pred_combined))

使用上面的脚本,我在包含15088个单词的训练集上训练了一个CRF模型,在测试集上达到了接近85%的准确率,看样子还是很不错的。

CRF 与隐马尔可夫模型有何不同

机器学习模型有两个常见的分类,生成式和判别式。条件随机场是一种判别分类器,它对不同类之间的决策边界进行建模。而生成模型是建立数据如何生成的模型,在学习后可用于进行分类。举个简单的例子,朴素贝叶斯是一种非常简单且流行的概率分类器,是一种生成算法,而逻辑回归是一种基于最大似然估计的分类器,是一种判别模型,同理条件随机场也是。

CRF 与隐马尔可夫模型都用于对顺序数据进行建模,但它们是不同的算法。

隐马尔可夫模型是生成式的,它通过对联合概率分布建模来给出输出。而条件随机场具有判别性,对条件概率分布进行建模。CRF 不依赖独立性假设(即标签相互独立),并且避免标签偏差。隐马尔可夫模型是条件随机场的一个非常具体的例子,使用的转移概率是一个常数。hmm基于朴素贝叶斯(Naive Bayes),说朴素贝叶斯可以从逻辑回归(Logistic Regression)中导出,而逻辑回归是crf的衍生。

CRF 的应用

由于crf具有对顺序数据建模的能力,因此在自然语言处理中经常使用crf,并且在该领域有许多应用。例如词性标记,句子的词性依赖于先前的单词,通过使用利用这一点的特征函数,可以使用 CRF 来学习如何区分句子中的哪些词对应于哪个 POS。另一个类似的应用是命名实体识别,或从句子中提取专有名词。条件随机场可用于预测多个变量相互依赖的任何序列。其他应用包括图像中的部分识别和基因预测。

代码:
https://www.overfit.cn/post/921370f1880e4472814ace6a8ac850da

作者:Aditya Prasad & Ravish Chawla

Original: https://blog.csdn.net/m0_46510245/article/details/123348533
Author: deephub
Title: 条件随机场(CRF)的详细解释



相关阅读1

Title: 【cartographer ros】十: 延时和误差分析

上一节介绍了在cartographer进行建图和定位(在线和离线)。
本节将分析cartographer运行时的误差与延迟,主要是在线定位时的,并尝试优化解决。

基本可以通过地图构建过程中出现的漂移、鬼影等现象:

[En]

Drift, ghosting and other phenomena during the construction of the map can be basically passed:

确保雷达足够的频率和角度;

建图时移动速度均匀且不要过快;

调整建图参数;足够多的迭代优化;

融合里程计+陀螺仪等方式解决。

这里的误差主要是指实时定位中的定位误差。

[En]

The error here mainly refers to the positioning error in real-time positioning.

a,硬件精度

显然,定位的准确性与原始数据的准确性密切相关。

[En]

It is obvious that the accuracy of positioning is closely related to the accuracy of the original data.

有条件的可以提高雷达、里程表、陀螺仪等硬件的精度,也可以优化初始数据处理,得到更准确的数据。

[En]

Conditional can improve the accuracy of radar, odometer, gyroscope and other hardware, but also can optimize the initial data processing to get more accurate data.

b,初值敏感

cartographer的定位过程,十分依赖初始定位坐标,如果初始位置定位就出错,后续很难修正。
可以通过在容易识别的地方重新定位或初始定位来解决,并确保初始定位在正确位置后再继续。

[En]

It can be solved by repositioning or initial positioning in a place that is easy to identify, and ensure that the initial positioning is in the correct position before continuing.

c,计算量大

全局优化的大量约束计算和迭代计算会造成明显的延迟误差。

[En]

A large number of constraint calculations and iterative calculations of global optimization cause obvious delay errors.

由于时延基本上是由计算量大引起的,所以时延优化的核心是减少计算量。

[En]

Because the delay is basically caused by the large amount of computation, the core of delay optimization is to reduce the calculation.

当然,也有硬件传感器数据延迟或网络延迟造成的,但不涉及算法,这里不做讨论。

[En]

Of course, it is also caused by hardware sensor data delay or network delay, but it does not involve the algorithm and will not be discussed here.

在实际应用中,可以通过调整以下参数来减少计算量。

[En]

In practical use, the amount of calculation can be reduced by adjusting the following parameters.

本地:

--当IMU和Odom足够信赖时,可以关闭CSM,只使用位姿预估.

TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = false 
TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians 增大
TRAJECTORY_BUILDER_2D.motion_filter.max_distance_meters 增大

全局:

MAP_BUILDER.pose_graph.constraint_builder.min_score 降低
MAP_BUILDER.pose_graph.constraint_builder.max_constraint_distance 降低
MAP_BUILDER.pose_graph.constraint_builder.sampling_ratio 降低

减少重复子图:

MAP_BUILDER.pose_graph.overlapping_submaps_trimmer_2d = {
     fresh_submaps_count = 1,
     min_covered_area = 2,
     min_added_submaps_count = 5,
   }

到这里为止,已经介绍了,cartographer在ros系统下的安装,发布数据,参数调整,建图定位以及延时误差分析等,cartographer_ros篇章就告一段落了。

通过这一系列的文章,希望可以帮助大家快速的上手,并在实际应用中使用cartographer。有什么错误或者不足之处,也希望大家不吝赐教。

后续还将进行深入的代码解读和算法优化,欢迎有兴趣、想继续学习的朋友一起交流探讨。

[En]

In the follow-up, there will be in-depth code interpretation and algorithm optimization, and friends who are interested and want to continue to study are welcome to communicate and discuss together.

Original: https://www.cnblogs.com/CloudFlame/p/16531300.html
Author: CloudFlame
Title: 【cartographer ros】十: 延时和误差分析

相关阅读2

Title: Python智能机器人实现(语音回复)

大家好我是陈宇童

看了许多大佬的博客,感觉做一个人工智能机器人其实不难。

废话,不多说下面开始。

里面那个免费的Api是用的 川川菜鸟。的

Pyhton做一个机器人,就像小爱同学 可以回复一些简单的问题。

开始输入文字打印内容音频播放内容没有了就是这么简单😂

1 .三个必要的 模块!!!!!!!!!!!!!!!!!

coding = utf-8
必须添加的模块和包!!!!!!!!!!!!
import requests
import json
import pyttsx3

非常建议直接复制粘贴。

导入requests、json模块。。。。。。。
模块pyttsx3,S它会将文字转为语音播放

2 这里就是要获取api。 然后这里你会有两个选择

第一个是用网上免费的

在这里我分享几个

http://i.itpk.cn/api.php?question= 这个地方是文字&api_key=3d9a40ca29949e64c84aea4db1d2b8bd&api_secret=0vnpovb3wkqn

然后这个就是全部 代码 复制粘贴安装模块直接运行😂

coding=gbk
import requests
import pyttsx3

print(' 你的问题:')
while True:
    a = input()
    url = 'http://i.itpk.cn/api.php?question=%s&api_key=3d9a40ca29949e64c84aea4db1d2b8bd&api_secret=0vnpovb3wkqn'%a
    te = requests.get(url).text
    print(te)
    ini = pyttsx3.init()
    shuo = ini.say(te)
    ini.runAndWait()

第二个就是花钱买 图灵机器人的(20元)

http://www.turingapi.com/

下面直接上图片

1。 点开链接。

条件随机场(CRF)的详细解释

2 点击登录注册。

条件随机场(CRF)的详细解释

3 注册过的直接登录。没注册过的注册一个。

条件随机场(CRF)的详细解释

4。 进入主页面,点击创建机器人

条件随机场(CRF)的详细解释

5。 这一步会让你非常痛苦。 因为你要忍痛割爱20块钱😭(一顿早饭钱又没了)

条件随机场(CRF)的详细解释

6。 支付完之后回到主页面 点击设置条件随机场(CRF)的详细解释

7。 这是最后一步了 进入设置,查看自己的密钥(apikey)

条件随机场(CRF)的详细解释

替换下面代码中的 id 运行即可。。。

coding = utf-8
必须添加的模块和包。
import requests
import json
import pyttsx3

id = "这里填自己的"# 这里填写自己的密钥
url = 'http://www.tuling123.com/openapi/api?key=' + id + '&info='

while True:

    info = input("我:")

    page = requests.get(url + info)

    json_dic = json.loads(page.text)

    qw=json_dic['text']

    print(('机器人: ' + json_dic['text']))

    ini = pyttsx3.init()

    shuo = ini.say(qw)

    ini.runAndWait()

拜拜

Original: https://blog.csdn.net/qq_53431677/article/details/119941390
Author: 陈宇童૧(●´৺`●)૭
Title: Python智能机器人实现(语音回复)

相关阅读3

Title: “冰墩墩”太火了,会Python工资有多高,看到工资条吓一跳

最近身边很多人都在喊,钱不够花,工资涨得少,自己又没有什么一技之长。

特别理解这种无力感:很多人也不想就这样满足现状,天天琢磨着怎么升职加薪,增加点额外收入,但却找不到方向。

最近正好遇到个妹子,她的赚钱能力着实让我受到了一万点暴击。

分享一下她的赚钱技能,给你一点启发。

年薪从15万到70万,她做对了什么?

妹子18年本科毕业后,去了北京一家商业查询平台做产品。3年时间,她从 年薪15万,到现在薪酬 一年过70万

我很诧异,这样一个没有背景不能拼爹的普通年轻人,凭什么能在毕业3年后就达到这样的薪资水平?

(为了满足我的好奇心,姑娘还给我看了她的工资卡截图。)

条件随机场(CRF)的详细解释

跟她聊完以后,发现她的 学习路径、做事方式确实厉害,尤其是 数据方面的思维和洞察力,果然配得上这个薪资。

妹子说她刚毕业的时候,负责产品调优模块,经常要统计数据,去给研发提调优建议。

因为实习时候经常帮师傅做表,在其他应届生还在拼粘数据,研究Excel公式时,她已经能非常高效地做出这样漂亮的图表了。

条件随机场(CRF)的详细解释

这成了她工作成果的 第一张名片,在同批的新员工中迅速脱颖而出,被领导调进了项目组。

进了项目组后,又专门研究了" 可视化图表",并且借鉴了顶尖咨询公司的分析报告,她做出的图表是这样的。

条件随机场(CRF)的详细解释

这样美观又专业的图表,一下子提升了自己在公司的知名度,领导大为赞赏。

但没高兴多久,她就发现给自己挖了个坑。因为图表做的好,部门什么乱七八糟的报告都交给她做。

而不会分析数据,每个报告的重点和结论,都要领导来亲自提炼,她发现自己慢慢沦为了一个 专门美化图表的"工具人"

意识到这一点,她一边学习数据分析的系统课程,一边了解业务相关指标。2个多月后,她已经可以熟练地 从数据中提取信息,去提升业务,优化流程。

由于表现出色,不到半年,她被业务部门老大看中,调到身边重点培养,这让她对业务应用更加成熟,在数据实践方面的成长突飞猛进。

现在的她,年纪轻轻已经是公司战略层面的 商业分析人才,不仅收入可观,未来的职业发展也是一片光明。

条件随机场(CRF)的详细解释

从她的经历中不难看出,掌握数据分析技能,除了会做炫酷的可视化图表,更重要的是,能 结合具体业务,从 数据背后定位原因、得出解决方案

这样的人才在职场上,不仅可以在短时间内快速获得 差异化竞争力,还能持续拓宽职业发展的边界,让自己 持续保值、不断增值

; 数据能力是当下职场竞争中的"黑武器"

现在随便打开一个招聘网站,无论互联网大厂,还是传统企业,都在寻找数据分析人才,更有大量岗位在招聘条件中统统要求需要" 具备数据思维"。

条件随机场(CRF)的详细解释

《赛迪智库》数据显示,2018年底,商业数据分析人才缺口为 60万,而到2025年,这种懂商业、懂数据的复合型人才,缺口将达到 230多万

一方面,数据化人才缺口日益增加,而另一方面,高校数据类专业设置滞后市场需求,数据相关专业的毕业生,数量少且实战经验有限。所以,很多企业即使愿意支付 20%-30%的岗位溢价,仍然找不到合适的人才。

很多人觉得,我并不想成为数据分析师,我学这项技能有什么用呢?"

数据分析的本质是 通过数据辅助业务决策,驱动业务增长,所以,它几乎是适用于各行各业的"万金油"。

举个例子:

如果你是产品经理:前期需要用数据来分析用户行为,挖掘用户需求;产品诞生后,要用数据监测用户行为、测试产品功能,促进产品迭代。

如果你是运营:活动上线前,需要做A/B测试,通过数据反馈结果,验证活动是否符合预期;活动上线后,还要分析实时数据,调整推广节奏和推广动作。

如果你是市场:需要用投入产出比(ROI)去判断各个渠道的流量效果,从中找出最优渠道。

就算你只是个传统行业里最普通的文员,也许背后勤勤恳恳工作的心血领导看不到,但如果你在汇报工作时,用一个 可视化的数据分析图表,那绝对是能超越领导预期,让他眼前一亮的。

条件随机场(CRF)的详细解释

总体来说,懂数据分析的人,要比别人 更容易洞察业务本质,获得领导青睐,掌握这样一个宝藏技能,想不升职加薪都难。

数据分析难学吗?

看到这里,你很可能会觉得:"这数据分析也太厉害了,是不是特别难学?我一看到那些代码啥的就脑壳疼。"

这个误会还真是闹大了!

数据分析是 为了解决工作中的问题,所以学的是 思维和方法,并不是复杂的代码,一般对业务有点理解的人都能掌握。

学好 数据分析 不论是就业还是做副业赚钱都不错,但要学会 数据分析 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

条件随机场(CRF)的详细解释

; 二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

条件随机场(CRF)的详细解释

; 三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

条件随机场(CRF)的详细解释

; 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

条件随机场(CRF)的详细解释

; 五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

条件随机场(CRF)的详细解释
条件随机场(CRF)的详细解释

; 这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【 保证100%免费

条件随机场(CRF)的详细解释

Python资料、技术、课程、解答、咨询也可以直接点击下面名片, 添加官方客服斯琪 ↓

Original: https://blog.csdn.net/JAVAmonster12/article/details/122828468
Author: Python妙脆角
Title: “冰墩墩”太火了,会Python工资有多高,看到工资条吓一跳