码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 条件随机场CRF(持续更新ing...)


    诸神缄默不语-个人CSDN博文目录

    本文是作者学习CRF后的笔记。

    条件随机场CRF是适宜于顺序预测任务的判别模型,可用于命名实体识别、词性标注等。

    文章目录

    • 1. linear-chain CRF
    • 2. CRF目标函数
    • 本文撰写过程中使用到的其他参考资料

    1. linear-chain CRF

    在序列预测任务中,用邻近(上下文)样本来辅助学习当前样本。

    以Part-of-Speech Tagging任务为例:
    任务示例:输入Bob drank coffee at Starbucks,标记为Bob (NOUN) drank (VERB) coffee (NOUN) at (PREPOSITION) Starbucks (NOUN)

    本节限制特征仅取决于当前和前一个标签,而非句中任一标签:

    特征函数feature function f i f_i fi​(需要一堆):

    • 输入:
      • 句子 s s s
      • 词语在句中的位置 i i i
      • 当前词的标签 l i l_i li​
      • 前一个词的标签 l i − 1 l_{i-1} li−1​
    • 输出:实数(如0/1)

    给每个feature function f j f_j fj​分配一个权重 λ j \lambda_j λj​
    给出一个句子 s s s,对labeling的打分方式是对所有单词的所有feature function求和:
    s c o r e ( l ∣ s ) = ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l i , l i − 1 ) score(l | s) = \sum_{j = 1}^m \sum_{i = 1}^n \lambda_j f_j(s, i, l_i, l_{i-1}) score(l∣s)=j=1∑m​i=1∑n​λj​fj​(s,i,li​,li−1​)
    将所有labeling的打分转换为概率(通过exponentiating and normalizing,即softmax):
    p ( l ∣ s ) = e x p [ s c o r e ( l ∣ s ) ] ∑ l ’ e x p [ s c o r e ( l ’ ∣ s ) ] = e x p [ ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l i , l i − 1 ) ] ∑ l ’ e x p [ ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l ’ i , l ’ i − 1 ) ] p(l | s) = \frac{exp[score(l|s)]}{\sum_{l’} exp[score(l’|s)]} = \frac{exp[\sum_{j = 1}^m \sum_{i = 1}^n \lambda_j f_j(s, i, l_i, l_{i-1})]}{\sum_{l’} exp[\sum_{j = 1}^m \sum_{i = 1}^n \lambda_j f_j(s, i, l’_i, l’_{i-1})]} p(l∣s)=∑l’​exp[score(l’∣s)]exp[score(l∣s)]​=∑l’​exp[∑j=1m​∑i=1n​λj​fj​(s,i,l’i​,l’i−1​)]exp[∑j=1m​∑i=1n​λj​fj​(s,i,li​,li−1​)]​

    Example Feature Functions:
    在这里插入图片描述

    CRF概率长得像逻辑回归→CRF就是逻辑回归的序列版:whereas logistic regression is a log-linear model for classification, CRFs are a log-linear model for sequential labels.

    CRF和HMM:
    在这里插入图片描述

    算出CRF模型后,应用在新的句子上:
    原始方法——算出所有 p ( l ∣ s ) p(l | s) p(l∣s)的值:太慢了
    (polynomial-time) dynamic programming algorithm(由于linear-chain CRFs满足 optimal substructure 特性)(类似HMM的维特比算法)

    2. CRF目标函数

    在第一节中我们得到了:
    p ( l ∣ s ) = e x p [ ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l i , l i − 1 ) ] ∑ l ’ e x p [ ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l ’ i , l ’ i − 1 ) ] p(l | s)= \frac{exp[\sum_{j = 1}^m \sum_{i = 1}^n \lambda_j f_j(s, i, l_i, l_{i-1})]}{\sum_{l’} exp[\sum_{j = 1}^m \sum_{i = 1}^n \lambda_j f_j(s, i, l’_i, l’_{i-1})]} p(l∣s)=∑l’​exp[∑j=1m​∑i=1n​λj​fj​(s,i,l’i​,l’i−1​)]exp[∑j=1m​∑i=1n​λj​fj​(s,i,li​,li−1​)]​

    在这里插入图片描述

    将 ∑ i = 1 n f j ( s , i , l ’ i , l ’ i − 1 ) ] \sum_{i = 1}^nf_j(s, i, l’_i, l’_{i-1})] ∑i=1n​fj​(s,i,l’i​,l’i−1​)]记为 f j ( x , y ) f_j(x,y) fj​(x,y)(s,l)

    CRF模型的定义式:
    P ( y ∣ x ) = 1 Z ( x ) exp ⁡ [ ∑ j λ j ( f j ( x , i ) ) ] P(y|x)=\frac{1}{Z(x)}\exp\Big[\sum_j\lambda_j\big(f_j(x,i)\big)\Big] P(y∣x)=Z(x)1​exp[j∑​λj​(fj​(x,i))]
    (其中 Z ( x ) = ∑ y [ ∑ j λ j ( f j ( x , i ) ) ] Z(x)=\sum_y\Big[\sum_j\lambda_j\big(f_j(x,i)\big)\Big] Z(x)=∑y​[∑j​λj​(fj​(x,i))],可以看作所有可能的隐状态序列的score值之和)

    我们的最终目标是找到能使得score值最大( P ( y ∣ x ) P(y|x) P(y∣x)最大)的隐状态序列。在定义好feature functions后,我们需要学习 λ \lambda λ

    用梯度学习优化feature function的权重:

    1. 有一组句子-POS标签,随机初始化CRF权重
    2. 梯度下降
      1. 对每个feature function f i f_i fi​,计算样本的 log ⁡ p \log p logp关于 λ i \lambda_i λi​的梯度: ∂ ∂ w j log ⁡ p ( l ∣ s ) = ∑ j = 1 m f i ( s , j , l j , l j − 1 ) − ∑ l ’ p ( l ’ ∣ s ) ∑ j = 1 m f i ( s , j , l ’ j , l ’ j − 1 ) \frac{\partial}{\partial w_j} \log p(l | s) = \sum_{j = 1}^m f_i(s, j, l_j, l_{j-1}) - \sum_{l’} p(l’ | s) \sum_{j = 1}^m f_i(s, j, l’_j, l’_{j-1}) ∂wj​∂​logp(l∣s)=∑j=1m​fi​(s,j,lj​,lj−1​)−∑l’​p(l’∣s)∑j=1m​fi​(s,j,l’j​,l’j−1​)
      2. 上式第一项是 f i f_i fi​在真实标签下的贡献,第二项是在当前模型下的。(我们希望模型学到的VS模型当前状态)(其实我有点没看懂这啥意思)
      3. λ i = λ i + α [ ∑ j = 1 m f i ( s , j , l j , l j − 1 ) − ∑ l ’ p ( l ’ ∣ s ) ∑ j = 1 m f i ( s , j , l ’ j , l ’ j − 1 ) ] \lambda_i = \lambda_i + \alpha [\sum_{j = 1}^m f_i(s, j, l_j, l_{j-1}) - \sum_{l’} p(l’ | s) \sum_{j = 1}^m f_i(s, j, l’_j, l’_{j-1})] λi​=λi​+α[∑j=1m​fi​(s,j,lj​,lj−1​)−∑l’​p(l’∣s)∑j=1m​fi​(s,j,l’j​,l’j−1​)]( α \alpha α是学习率)

    本文撰写过程中使用到的其他参考资料

    1. Introduction to Conditional Random Fields(一篇国内的翻译:如何轻松愉快地理解条件随机场(CRF)? - 知乎
    2. 看了一半:全网最详细的CRF算法讲解 - 知乎
    3. 还没看
      1. 概率图之马尔可夫随机场(Markov Random Field,MRF)_zxhohai的博客-CSDN博客_markov random field
      2. 读懂概率图模型:你需要从基本概念和参数估计开始
      3. CRF条件随机场的原理、例子、公式推导和应用 - 知乎
      4. 全方位理解条件随机场(CRF):原理、应用举例、CRF++实现 - 知乎
      5. 条件随机场的肤浅理解_Researcher-Du的博客-CSDN博客_densecrf论文
      6. PGM:概率图模型Graphical Model_-柚子皮-的博客-CSDN博客_graphical model
      7. 马尔可夫随机场 MRF_-柚子皮-的博客-CSDN博客
      8. 【PGM】factor graph,因子图,势函数potential function,Template models - Loull - 博客园
      9. CRF和HMM_baihaisheng的博客-CSDN博客_crf hmm
      10. CRF(条件随机场)_二叉树不是树_ZJY的博客-CSDN博客
      11. Linear-chain CRF的推导 - 简书
    4. 没看懂的
      1. 条件随机场(CRF)的详细解释_deephub的博客-CSDN博客_crf
    5. 排版有问题的
      1. 自然语言处理序列模型——CRF条件随机场-51CTO.COM:缺公式
      2. 条件随机场入门:有错别字
  • 相关阅读:
    rabbitMQ:绑定Exchange发送和接收消息(topic)
    火焰图:链路追踪分析的可视化利器
    【python游戏制作】僵尸来袭 ~ 快来一起创造植物叭~
    浅谈电力电容器技术的发展及选型
    seq2seq与引入注意力机制的seq2seq
    PS快捷键
    数据结构之栈和队列
    【深入浅出 Yarn 架构与实现】5-1 Yarn 资源调度器基本框架
    PHP中的会话管理是如何工作的?
    排序算法-冒泡排序
  • 原文地址:https://blog.csdn.net/PolarisRisingWar/article/details/127870718
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号