LSTM+CRF 解析(原理篇)
超级详细手把手讲解BiLSTM+CRF完成命名实体识别(一)
超级详细手把手讲解BiLSTM+CRF完成命名实体识别(二)
超级详细手把手讲解BiLSTM+CRF完成命名实体识别(三)
转载自作者bobobe

本篇文章假设你已有lstm和crf的基础。

  • BiLSTM+softmax
    lstm也可以做序列标注问题。如下图所示:

    双向lstm后接一个softmax层,输出各个label的概率。那为何还要加一个crf层呢?
    我的理解是softmax层的输出是相互独立的,即虽然BiLSTM学习到了上下文的信息,但是输出相互之间并没有影响,它只是在每一步挑选一个最大概率值的label输出。这样就会导致如B-person后再接一个B-person的问题。而crf中有转移特征,即它会考虑输出label之间的顺序性,所以考虑用crf去做BiLSTM的输出层。

  • BiLSTM+crf的基本思想
    BiLSTM+crf的结构如图所示:

对于每一个输入我们得到一个预测label序列定义这个预测的得分为:
其中Pi,yi为第i个位置softmax输出为yi的概率,Ayi,yi+1为从yi到yi+1的转移概率,当tag(B-person,B-location。。。。)个数为n的时候,转移概率矩阵为(n+2)*(n+2),因为额外增加了一个开始位置和结束位置。这个得分函数S就很好地弥补了传统BiLSTM的不足,因为我们当一个预测序列得分很高时,并不是各个位置都是softmax输出最大概率值对应的label,还要考虑前面转移概率相加最大,即还要符合输出规则(B后面不能再跟B),比如假设BiLSTM输出的最有可能序列为BBIBIOOO,那么因为我们的转移概率矩阵中B->B的概率很小甚至为负,那么根据s得分,这种序列不会得到最高的分数,即就不是我们想要的序列。

  • BiLSTM+crf的训练
    训练思想很巧妙。
    首先我们需要训练的参数为:
    1.BiLSTM中的参数
    2.转移概率矩阵A
    对于每个训练样本X,求出所有可能的标注序列y的得分S(X,y)(注意这里应该不用遍历所有可能的y,维特比算法应该用得上),对所有得分进行归一化:

    这里分子上的y是正确标注序列(因为我们是一个有监督学习)
    下面引出损失函数(虽然我感觉这不应该称为“损失”),对真实标记序列y的概率取log:

    那么我们的目标就是最大化上式(即真实标记应该对应最大概率值),因为叫损失函数,所以我们也可以对上式取负然后最小化之,这样我们就可以使用梯度下降等优化方法来求解参数。在这个过程中,我们要最大化真实标记序列的概率,也就训练了转移概率矩阵A和BiLSTM中的参数。

  • BiLSTM+crf的预测
    当模型训练完毕后,就可以去测试了。
    预测的时候,根据训练好的参数求出所有可能的y序列对应的s得分*(这里应该也可以利用维特比算法)*,然后取:
    做为预测结果输出。

文章中图片来自:https://createmomo.github.io/2017/09/12/CRF_Layer_on_the_Top_of_BiLSTM_1/
参考文章:
1.https://createmomo.github.io/2017/09/12/CRF_Layer_on_the_Top_of_BiLSTM_1/(特别感谢这篇文章的精彩阐述,本文的大多想法来自于此)
2.https://arxiv.org/pdf/1603.01360.pdf(Neural Architectures for Named Entity Recognition)


http://www.taodudu.cc/news/show-5088291.html

相关文章:

  • NLP15:使用BiLSTM、BiLSTM-CRF、BiLSTM-Attention、Bert-BiLSTM-CRF进行命名实体识别
  • BiLSTM之二:工程应用须知
  • BiLSTM+CRF
  • 详解BiLSTM
  • BilSTM 实体识别_BiLSTM-CRF
  • 学习BiLSTM
  • BiLSTM维度详解
  • BiLSTM介绍
  • 双向长短期记忆网络(Bi-LSTM)
  • 一幅图真正理解LSTM、BiLSTM
  • 0基础学软件测试必看,2022最详细软件测试流程
  • 语音识别快速添加字幕,字幕助手,字幕通
  • 有好用文字转语音的软件吗?
  • 什么是语音聊天软件源码,语音直播间礼物如何开发
  • 音频特效实践
  • webrtc 语音流java_Web语音处理 - Web Audio API WebRTC
  • 语音识别专用云软件
  • 一秒语音是哪个软件_一秒语音包软件下载-一秒语音包app安卓版下载_天尚网
  • 兰州市5G产业竞争分析及投资策略研究咨询报告2021~2027年
  • 全面解读5G产业链及未来趋势
  • 2018-2019 中国5G产业全景图谱及发展趋势分析
  • 5G建设应用产业链全视图!
  • 报告下载 | 科创板系列- 5G产业链全景图
  • 2019中国5G产业市场研究报告
  • 37页PPT,全面解读5G产业链及未来趋势!
  • 视频云技术系列 - 5G 700MHz建设方案及产业链
  • 5G MEC分流方案探讨
  • 加快5G产业发展,湖南出台21条政策措施
  • 数据中心定义分类与产业链分析
  • 5G调研分析

bilstm-crf相关推荐

  1. 零基础入门--中文命名实体识别(BiLSTM+CRF模型,含代码)

    https://github.com/mali19064/LSTM-CRF-pytorch-faster 中文分词 说到命名实体抽取,先要了解一下基于字标注的中文分词. 比如一句话 "我爱北 ...

  2. Pytorch Bi-LSTM + CRF 代码详解

    久闻LSTM + CRF的效果强大,最近在看Pytorch官网文档的时候,看到了这段代码,前前后后查了很多资料,终于把代码弄懂了.我希望在后来人看这段代码的时候,直接就看我的博客就能完全弄懂这段代码. ...

  3. pytorch BiLSTM+CRF代码详解 重点

    一. BILSTM + CRF介绍 https://www.jianshu.com/p/97cb3b6db573 1.介绍 基于神经网络的方法,在命名实体识别任务中非常流行和普遍. 如果你不知道Bi- ...

  4. 高级教程: 作出动态决策和 Bi-LSTM CRF 重点

    https://www.zhihu.com/question/35866596 条件随机场 CRF(条件随机场)与Viterbi(维特比)算法原理详解 https://blog.csdn.net/qq ...

  5. pytorch实现BiLSTM+CRF用于NER(命名实体识别)

    pytorch实现BiLSTM+CRF用于NER(命名实体识别) 在写这篇博客之前,我看了网上关于pytorch,BiLstm+CRF的实现,都是一个版本(对pytorch教程的翻译), 翻译得一点质 ...

  6. PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词

    20210607 https://blog.csdn.net/u011828281/article/details/81171066 前言:译者实测 PyTorch 代码非常简洁易懂,只需要将中文分词 ...

  7. 源码阅读笔记 BiLSTM+CRF做NER任务 流程图

    源码阅读笔记 BiLSTM+CRF做NER任务(二) 源码地址:https://github.com/ZhixiuYe/NER-pytorch 本篇正式进入源码的阅读,按照流程顺序,一一解剖. 一.流 ...

  8. BiLSTM+CRF的损失由发射矩阵和转移矩阵计算而得 BiLSTM+CRF命名实体识别:达观杯败走记(下篇

    如果是训练,那么直接用发射矩阵和真实标签去计算Loss,用于更新梯度. 这需要用到CRF中的forward函数. 如果是预测,那么就用发射矩阵去进行维特比解码,得到最优路径(预测的标签). 这需要用到 ...

  9. bert+crf可以做NER,那么为什么还有bert+bi-lstm+crf ?

    我在自己人工标注的一份特定领域的数据集上跑过,加上bert确实会比只用固定的词向量要好一些,即使只用BERT加一个softmax层都比不用bert的bilstm+crf强.而bert+bilstm+c ...

  10. 代码实现中文命名实体识别(包括多种模型:HMM,CRF,BiLSTM,BiLSTM+CRF)

    作者 | 忆臻 地址 | https://zhuanlan.zhihu.com/p/100969186 专栏 | 机器学习算法与自然语言处理 代码实现中文命名实体识别(包括多种模型:HMM,CRF,B ...

最新文章

  1. 在伦敦工作生活—随笔-1
  2. 在网页中显示数字时钟
  3. matlab 小括号
  4. mysql数据库备份方式,跳槽大厂必看!
  5. html 报表插件,轻量级图形报表插件JSCharts
  6. 前端累加nan怎么解决_前端面试,你有必要知道的一些JavaScript 面试题(上)
  7. 无显示器u盘安装centos_无光驱情况下,U盘启动安装CentOS (实测 笔记)
  8. 判断一个字符串出现次数最多的字符,并返回这个字符和次数
  9. Linux 中文文件名乱码解决 FTP文件名乱码
  10. java开发常用网站有哪些类型_可以在线编程的学习类网站有哪些?
  11. 天龙八部科举答题问题和答案(全1/8)
  12. 在ensp中配置交换机interface GigabitEthernet 1/0/1报错
  13. java华氏温度与摄氏度的互相转换
  14. react钩子_了解用户的React钩子
  15. 简析XDP的重定向机制
  16. a commit git 参数是什么意思_Git中的git reset的三种参数的区别
  17. 人工智能全面战胜人类?下一步是取代人类?
  18. SEO高质量的伪原创怎么写?
  19. 【Open3d报错】 无法使用open3d显示图像
  20. HANA服务器配额设置disk quota exceed(如何查看和取消配额)

热门文章

  1. 阿里云物联网ACP认证模拟测试题
  2. 为人低调的北漂工程师小飞哥:做技术切忌闭门造车
  3. 获取(今日、本周、本月、本年)的方式
  4. vb.net的windows窗体实现dos命令
  5. 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C
  6. golang常用库之-uuid相关库(satori/go.uuid、google/uuid)
  7. unity3d鼠标控制物体 移动 旋转 缩放
  8. 新手入门该学什么编程语言?
  9. 教你用msconfig命令设置开机启动项
  10. 相约科技盛宴 | 极客天成在云栖大会等你