| |
|
开发:
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(条件随机场) 学习总结 |
1. Why CRF(条件随机场)如果用softmax给序列中的每一帧都进行分类。并没有直接考虑输出的上下文关联CRF主要用于序列标注问题,可以简单理解为是给序列中的每一帧都进行分类,既然是分类,很自然想到将这个序列用CNN或者RNN进行编码后,接一个全连接层用softmax激活,如下图所示 ?条件随机场 然而,当我们设计标签时,比如用s、b、m、e的4个标签来做字标注法的分词,目标输出序列本身会带有一些上下文关联,比如s后面就不能接m和e,等等。逐标签softmax并没有考虑这种输出层面的上下文关联,所以它意味着把这些关联放到了编码层面,希望模型能自己学到这些内容,但有时候会“强模型所难”。 而CRF则更直接一点,它将输出层面的关联分离了出来,这使得模型在学习上更为“从容”: CRF在输出端显式地考虑了上下文关联 2. 什么是CRF当然,如果仅仅是引入输出的关联,还不仅仅是CRF的全部,CRF的真正精巧的地方,是它以路径为单位,考虑的是路径的概率。 2.1?模型概要 假如一个输入有nn帧,每一帧的标签有kk种可能性,那么理论上就有knkn种不同的输出。我们可以将它用如下的网络图进行简单的可视化。在下图中,每个点代表一个标签的可能性,点之间的连线表示标签之间的关联,而每一种标注结果,都对应着图上的一条完整的路径。 ?4tag分词模型中输出网络图 而在序列标注任务中,我们的正确答案是一般是唯一的。比如“今天天气不错”,如果对应的分词结果是“今天/天气/不/错”,那么目标输出序列就是bebess,除此之外别的路径都不符合要求。换言之,在序列标注任务中,我们的研究的基本单位应该是路径,我们要做的事情,是从knkn条路径选出正确的一条,那就意味着,如果将它视为一个分类问题,那么将是knkn类中选一类的分类问题! 这就是逐帧softmax和CRF的根本不同了:前者将序列标注看成是n个k分类问题,后者将序列标注看成是1个分类问题。 3.?序列标注模型中的两种标记模式3.1?SBME标记法
样例: 我爱使用小米手机玩王者荣耀? ?->?我<S>爱<S>使<B>用<E>小<B>米<M>手<M>机<E>玩<S>王<B>者<M>荣<M>耀<E> 3.2? CS标记法C 表示 当前的字char和后面字char是连续的,它们共同表示一个词,S 表示 当前字char和后面字char是两个不同的词 。 一般用数字这样表示: #-1,unkonwn # 0 -> 'C' # 1 -> 'S' 样例:???我爱使用小米手机玩王者荣耀? ->?我<S>爱<S>使<C>用<S>小<C>米<C>手<C>机<S>玩<S>王<C>者<C>荣<C>耀<S>? 4. 代码实现安装tensorflow-addons. 因为Tensorflow 1 的实现在contrib. tensorflow 2的实现在Tensorflow_addons里面
测试例子
输出
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/1 10:22:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |