IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 条件随机场 (CRF) -> 正文阅读

[人工智能]条件随机场 (CRF)

背景

CRF和HMM是有相似性的,最后都是使用Verterbi算法来进行最优状态转移序列的确定。CRF主要用与序列的标注问题。
本质:通过1D卷机学习近邻信息,然后输入到CRF定义好的计算方式中

CRF原理理解

下图表示我们的序列连接与预测。
在这里插入图片描述
CRF是进行了假设,一共两个假设,如下:
在这里插入图片描述

在这里插入图片描述
在上述表示中 h ( y 1 ; x ) h(y_1;\bm{x}) h(y1?;x)的相邻位置为 g ( y 1 , y 2 ; x ) g(y_1,y_2;\bm{x}) g(y1?,y2?;x)
尽管已经做了大量简化,但一般来说,(3) 式所表示的概率模型还是过于复杂,难以求解。于是考虑到当前深度学习模型中,RNN 或者层叠 CNN 等模型已经能够比较充分捕捉各个 y 与输出 x 的联系,因此,我们不妨考虑函数 g 跟 x 无关,那么:
在这里插入图片描述

引入时间序列模型(RNN做卷积), x \bm{x} x y y y之间的关系直接用 y y y y y y去考虑。 这时候 g g g 实际上就是一个有限的、待训练的参数矩阵而已,而单标签的打分函数 h ( y i ; x ) 。 h(y_i;\bm{x})。 h(yi?;x) 我们可以通过 RNN 或者 CNN 来建模。因此,该模型是可以建立的,其中概率分布变为:
在这里插入图片描述

算法步骤

重点:相比于HMM,要进行模型训练。HMM直接打标签了,这里对每个句子中的词通过0,1,2,3,4打了标签。

具体步骤

卷积层:通过一维卷积得到邻域信息。
CRF层:训练概率转移矩阵 4 × 4 4\times4 4×4(B,M,E,S), 概率矩阵被初始化得到。之后通过与ground true的lable相乘计算得到。
预测层:计算概率转移矩阵 4 × 4 4\times4 4×4(B,M,E,S),总共16个值,这一步在代码分析中,是通过网路计算出来的, 在CRF自定义的网络层。
结果层:模型训练完成之后再通过verterbi算法找最优解。

代码理解

分子的计算
    def path_score(self, inputs, labels):
        """计算目标路径的相对概率(还没有归一化)
        要点:逐标签得分,加上转移概率得分。
        技巧:用“预测”点乘“目标”的方法抽取出目标路径的得分。
        """
        point_score = K.sum(K.sum(inputs * labels, 2), 1, keepdims=True)  # 逐标签得分
        labels1 = K.expand_dims(labels[:, :-1], 3)
        labels2 = K.expand_dims(labels[:, 1:], 2)
        labels = labels1 * labels2  # 两个错位labels,负责从转移矩阵中抽取目标转移得分
        trans = K.expand_dims(K.expand_dims(self.trans, 0), 0)
        trans_score = K.sum(K.sum(trans * labels, [2, 3]), 1, keepdims=True)
        return point_score + trans_score  # 两部分得分之和

这里计算的主要是公式一下部分,在这里插入图片描述
后边部分的k是包含在求和符号里面的,上半部分为下半部分中的大括号里里面的。 h ( ? ) h(\cdot) h(?)表示是前面的网络层。
在这里插入图片描述

分母的计算

在这里插入图片描述

outputs = K.logsumexp(states + trans, 1) 

这个包含了,公式的右半部分的两个元素的对应乘积。
在这里插入图片描述
在这里插入图片描述

这里注意一下,这两个指数的相乘在代码中, Z Z Z利用rnn的递归特性进行求解。

    def log_norm_step(self, inputs, states):
        """递归计算归一化因子
        要点:1、递归计算;2、用logsumexp避免溢出。
        技巧:通过expand_dims来对齐张量。
        inputs is predictive label, input is h
        init_states (128, 4)
        """
        #states[0] is (128,4)
        inputs, mask = inputs[:, :-1], inputs[:, -1:]
        #上边语句执行后 inputs shape is [128,4], mask shape is [128,1] 相当于每一个每一个句子中的第一个词
        states = K.expand_dims(states[0], 2)  # (batch_size, output_dim, 1) (128, 4, 1)
        #print("states shape:", states.shape)
        trans = K.expand_dims(self.trans, 0)  # (1, output_dim, output_dim) (1, 4, 4)
        # states+trans shape is (128,4,4), first exp, then sum, last to get log, 下面这一步表示了图转移
        outputs = K.logsumexp(states + trans, 1)  # (batch_size, output_dim)
        #outputs is [128,4]
        outputs = outputs + inputs
        #outputs is [128,4], states[:,:,0] is [128,4]
        outputs = mask * outputs + (1 - mask) * states[:, :, 0]
        print("states[:,:,0].shape",states[:,:,0].shape)
        return outputs, [outputs]

内容链接

https://www.cnblogs.com/gczr/p/10021249.html
https://www.jiqizhixin.com/articles/2018-05-23-3 (CRF实现附带链接)
https://blog.csdn.net/dianwei0041/article/details/101882673?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control(为什么要用CRF)
https://zhuanlan.zhihu.com/p/29989121

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:54:11  更:2022-05-10 11:57:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:45:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码