码农知识堂 - 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. 条件随机场入门:有错别字
  • 相关阅读:
    Vue高级篇
    SQL 宽字节注入详解
    贪心算法--JavaScript实现
    un7.30:linux——如何在docker容器中安装MySQL?
    0基础学习VR全景平台篇第114篇:全景图优化和输出 - PTGui Pro教程
    C语言 数据在内存中的存储
    独立站“弃购率”太高,做好这几点帮你提高30%转化率
    2023 ICPC 网络赛 第二场 部分题解 (待完善)
    软件测试概念介绍 -- 小白入门必看
    Mybatis的特性详解——动态SQL
  • 原文地址:https://blog.csdn.net/PolarisRisingWar/article/details/127870718
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号