机器学习笔记:线性链条件随机场(CRF)

news2024/9/28 13:28:17

0 引入:以词性标注为例

  • 比如我们要对如下句子进行标注:
    • “小明一把把把把住了”
  • 那么我么可能有很多种词性标注的方法,中间四个“把”,可以是“名词+名词+动词+名词”,可以是“名词+动词+动词+名词”等多种形式。

那么,哪种标注序列最有可能是正确的呢?

  • 我们如果可以给每一个标注序列进行打分,打分越高的表示这个标注序列越靠谱,那么就会容易的多。打分最高的就是最可能的标注序列。

  • 对于标注序列问题,我们可以设计一组特征函数
    • (比如动词后面接动词,那么给他一个很负的分数;动词后面接名词,可以给0.8左右的分数之类)
    • 用这个特征函数集合来为一个标注序列打分,并据此选出最靠谱的标注序列
    • 也就是说,每一个特征函数都可以用来为一个标注序列评分
      • 把集合中所有特征函数对同一个标注序列的评分综合起来,就是这个标注序列最终的评分值

1 特征函数

  • 线性链CRF 中的特征函数接受四个参数:
    • 句子s(在前面的样例中是需要标注词性的句子)
    • i(句子s中第i个单词)
    • l_i(要评分的标注序列给第i个单词标注的词性)
    • l_{i-1}(要评分的标注序列给第i-1个单词标注的词性)

  • 定义好一组特征函数后,我们要给每个特征函数f_j赋予一个权重\lambda_j
    • 对于一个句子s,和一种可能的标注序列l
    • 我们利用特征函数集对其评分
      •  
  •  对这个分数进行指数化和标准化,我们就可以得到选择标注序列l的概率值p(l|s)
    • 类似于softmax

2 和HMM的对比

机器学习笔记&Python笔记:HMM(隐马尔科夫模型)_UQI-LIUWJ的博客-CSDN博客

HMM可以看成一种特殊的线性链CRF

  • 我们考虑一个HMM
    • 状态集合(隐藏状态):$S = {s_1, s_2, \ldots, s_N}$
    • 观测集合(可见观测):$O = {o_1, o_2, \ldots, o_M}$
    • 初始化概率:P(s_i),初始状态为s_i的概率
    • 状态转移概率:P(s_j | s_i)
    • 观测转移概率:$P(o_k | s_i)$
  • 定义HMM观测序列的联合概率为:
  • 线性链CRF的概率
      • Z(O)是归一化常数(softmax的分母)
      • \lambda_{ij},\mu_i 是模型的权重参数
      • \mathbf{1}(\cdot)是特征函数
        • 第一个式子相当于i*j个特征函数组成的集合
          • 每一个特征函数评价前一个隐藏状态是j,后一个隐藏状态是i的情况
        • 第二个式子相当于i个特征函数组成的集合
          • 当前时刻隐藏状态是i,观测状态是Ot的情况
  • 现在令
    • \lambda_{ij} = \log P(s_i | s_j)
      • 那么\lambda_{ij} \cdot \mathbf{1}(s_t=i,s_{t-1}=j)=\log P(s_i | s_j)\cdot \mathbf{1}(s_t=i,s_{t-1}=j)
        • 进而等于\log P(s_t=i | s_{t-1}=j) 【只有s_t=i,s_{t-1}=j时指示函数才为1,其余情况指示函数为0】
        • \sum_{i,j}\log P(s_t=i | s_{t-1}=j) =\log P(s_t|s_{t-1})
    • \mu_i = \log P(o_{\mathbf{O}_t} | s_i)
      • 那么\mu_i \cdot \mathbf{1} (s_t=i,o_{o_t})= \log P(o_{\mathbf{O}_t} | s_i) \cdot \mathbf{1} (s_t=i,o_{o_t})
        • 进而等价于\log P(o_{\mathbf{O}_t} | s_t=i)【只有s_t=i,且观测值为O_{o_t}时指示函数才为1,其余情况指示函数为0】
        • \sum_i \log P(o_{\mathbf{O}_t} | s_t=i)=\log P(o_{\mathbf{O}_t} | s_t)
    • 所以P(S|O)=\frac{1}{Z(O)} \exp (\sum_{t=1}^T \log P(s_t|s_{t-1})+\sum_{t=1}^T \log P(o_{\mathbf{O}_t} | s_t))
      • \frac{1}{Z(O)} \prod _{t=1}^T P(s_t|s_{t-1})\prod _{t=1}^T P(o_{\mathbf{O}_t} | s_t)
      • 这样也就把线性链CRF桥接到HMM中了
    • 所以HMM可以看成一种特殊情况的线性链CRF
      • CRF要比HMM更加强大
        • CRF可以定义数量更多,种类更丰富的特征函数
        • CRF可以使用任意的权重
          • 将对数HMM模型看做CRF时,特征函数的权重由于是log形式的概率,所以都是小于等于0的
          • 在CRF中,每个特征函数的权重可以是任意值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装chromedriver 115,对应chrome版本115(经检验,116也可以使用)

目录 1. 查看Chrome浏览器的版本2. 找到对应的chromedriver3. 安装ChromeDriver 1. 查看Chrome浏览器的版本 点进这个网站查看:chrome://settings/help (真是的,上一秒还是115版本,更新后就是116版本了,好在chromedi…

Python程序设计——列表

一、引言 关键点:一个列表可以存储任意大小的数据集合。 程序一般都需要存储大量的数值。假设,举个例子,需要读取100个数字,计算出它们的平均值,然后找出多少个数字是高于这个平均值的。程序首先读取100个数字并计算它…

基于 matplotlib module 的物理示意图绘制

基于 matplotlib module 的物理示意图绘制 # 创建画布和子图 fig, ax plt.subplots()# 去除 x 轴和 y 轴的边框线 ax.spines[bottom].set_visible(False) ax.spines[top].set_visible(False) ax.spines[left].set_visible(False) ax.spines[right].set_visible(False)# 隐藏 …

Azure如何调整虚拟机的大小

参考 https://blog.csdn.net/m0_48468018/article/details/132267096 创建虚拟机进入资源,点击大小选项,并对大小进行调整 点击如下图的cloud shell,进入Azure CLI,使用az vm resize 进行大小调整 命令中的g对应资源组,n对应虚拟机名称&am…

巧妙使用js IntersectionObserver实现dom懒加载

效果 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>IntersectionObserver</title></head><body style"text-align: center"><div id"container">…

数据库高性能架构模式

互联网业务兴起之后&#xff0c;海量用户加上海量数据的特点&#xff0c;单个数据库服务器已经难以满足业务需要&#xff0c;必须考虑数据库集群的方式来提升性能。高性能数据库集群的第一种方式是“读写分离”&#xff0c;第二种方式是“数据库分片”。 1、读写分离架构 **读…

Vue父子组件数据双向绑定

今天写一个功能时&#xff0c;遇到一些问题&#xff1a; 为什么子组件的contentList改变&#xff0c;也会将form中的trContentVOList的值改变&#xff1f; 吓的我立马去补充知识&#xff08;小白一枚&#xff09;,也借鉴了别的大佬的一些文章&#xff0c;这里自己整理一下&…

时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基于CNN-GRU卷积…

华为网络篇 RIP的默认路由-30

难度2复杂度2 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 使用RIP搭建内部网络后&#xff0c;我们还需要在边界路由器进行相应的配置&#xff0c;否则无法与Internet通信。默认情况&#xff0c;内部的RIP路由器是不知道Internet的路由条…

Linux驱动开发之点亮三盏小灯

头文件 #ifndef __HEAD_H__ #define __HEAD_H__//LED1和LED3的硬件地址 #define PHY_LED1_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED1_RCC 0x50000A28 //LED2的硬件地址 #define PHY_LED2_MODER 0x50007000 #define PHY_LED2_ODR 0x50007014 #define…

人工智能驱动的视频分析技术:实时洞察与关键信息提供者

引言&#xff1a;人工智能在视频分析领域的应用为监控视频提供了更加智能化和高效的处理方式。通过实时分析监控视频&#xff0c;人工智能可以自动识别特定的对象、运动模式、区域异常等&#xff0c;并生成相关的报告和统计数据&#xff0c;为用户提供关键信息和洞察。本文将详…

时序预测 | MATLAB实现基于CNN-BiGRU卷积双向门控循环单元的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-BiGRU卷积双向门控循环单元的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-BiGRU卷积双向门控循环单元的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基于…

UVM学习知识点

UVM构建 include 和 import pkg区别.sv .svhhdl_top.sv和hvl_top.sv回顾uvm_config&#xff0c;以及自定义uvm_configverilog:parameter、defparam与 localparamtest_basebuild_phaseend_of_elaboration_phasefunction void configure_agentset_seqsend_of_elaboration_phaseuv…

NVIDIA Omniverse与GPT-4结合生成3D内容

全球各行业对 3D 世界和虚拟环境的需求呈指数级增长。3D 工作流程是工业数字化的核心&#xff0c;开发实时模拟来测试和验证自动驾驶车辆和机器人&#xff0c;操作数字孪生来优化工业制造&#xff0c;并为科学发现铺平新的道路。 如今&#xff0c;3D 设计和世界构建仍然是高度…

使用 wxPython和ECharts生成和保存HTML图表

使用wxPython和ECharts库来生成和保存HTML图表。wxPython是一个基于wxWidgets的Python GUI库&#xff0c;而ECharts是一个用于数据可视化的JavaScript库。 C:\pythoncode\blog\echartshow.py 参考网址&#xff1a;https://echarts.apache.org/v4/examples/zh/index.html 安装…

九宫格方式显示9个echarts效果

功能&#xff1a; 创建了一个简单的Web浏览器应用程序&#xff0c;使用wxPython库创建了一个主窗口&#xff0c;并在窗口中嵌入了九个Web浏览器面板。用户可以选择一个文件夹&#xff0c;并通过点击按钮打开多个网页&#xff0c;每个网页将在一个单独的Web浏览器面板中显示。这…

解决 adb install 错误INSTALL_FAILED_UPDATE_INCOMPATIBLE

最近给游戏出包&#xff0c;平台要求 v1 签名吧&#xff0c;AS 打包后&#xff0c;adb 执行安装到手机&#xff0c;我用的设备是google pixel6 , android 系统 13&#xff0c; 提示如下&#xff1a; adb install -r v5_android_202308161046.apk Performing Streamed Install a…

sql server 存储过程 set ansi_nulls set quoted_identifier,out 、output

SQL-92 标准要求在对空值(NULL) 进行等于 () 或不等于 (<>) 比较时取值为 FALSE。 当 SET ANSI_NULLS 为 ON 时&#xff0c;即使 column_name 中包含空值&#xff0c;使用 WHERE column_name NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值&#xff0c…

AI 绘画Stable Diffusion 研究(九)sd图生图功能详解-老照片高清修复放大

大家好&#xff0c;我是风雨无阻。 通过前面几篇文章的介绍&#xff0c;相信各位小伙伴&#xff0c;对 Stable Diffusion 这款强大的AI 绘图系统有了全新的认知。我们见识到了借助 Stable Diffusion的文生图功能&#xff0c;利用简单的几个单词&#xff0c;就可以生成完美的图片…

Java多线程实战

Java多线程实战 java多线程&#xff08;超详细&#xff09; java自定义线程池总结 Java创建线程方式 方法1&#xff0c;继承Thread类 方法2&#xff0c;实现Runable接口 方法2-2&#xff0c;匿名内部类形式lambda表达式 方法3&#xff0c;实现Callable接口&#xff0c;允许…