• 《统计学习方法》 第十一章 条件随机场(原理+代码)


    条件随机场

    概率无向图模型是由无向图表示的联合概率分布

    无向图上的结点之间的连接关系表示了联合分布的随机变量集合之间的条件独立性,即马尔可夫性

    因此,概率无向图模型也称为马尔可夫随机场。

    概率无向图模型或马尔可夫随机场的联合概率分布可以分解为无向图最大团上的正值函数的乘积的形式。


    条件随机场是给定输入随机变量 X X X条件下,输出随机变量 Y Y Y的条件概率分布模型, 其形式为参数化的对数线性模型

    条件随机场的最大特点是假设输出变量之间的联合概率分布构成概率无向图模型,即马尔可夫随机场

    条件随机场是判别模型


    线性链条件随机场是定义在观测序列与标记序列上的条件随机场

    线性链条件随机场一般表示为给定观测序列条件下的标记序列的条件概率分布,由参数化的对数线性模型表示

    模型包含特征及相应的权值,特征是定义在线性链的边与结点上的。线性链条件随机场的数学表达式是
    P ( y ∣ x ) = 1 Z ( x ) exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) P(y | x)=\frac{1}{Z(x)} \exp \left(\sum_{i, k} \lambda_{k} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i, l} \mu_{l} s_{l}\left(y_{i}, x, i\right)\right) P(yx)=Z(x)1expi,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i)

    其中,
    Z ( x ) = ∑ y exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) Z(x)=\sum_{y} \exp \left(\sum_{i, k} \lambda_{k} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i, l} \mu_{l} s_{l}\left(y_{i}, x, i\right)\right) Z(x)=yexpi,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i)


    线性链条件随机场的概率计算通常利用前向-后向算法。


    条件随机场的学习方法通常是极大似然估计方法或正则化的极大似然估计

    即在给定训练数据下,通过极大化训练数据的对数似然函数以估计模型参数

    具体的算法有改进的迭代尺度算法、梯度下降法、拟牛顿法等


    线性链条件随机场的一个重要应用是标注

    维特比算法是给定观测序列求条件概率最大的标记序列的方法


    实践

    假设随机矩阵 M 1 ( x ) , M 2 ( x ) , M 3 ( x ) , M 4 ( x ) M_1(x),M_2(x),M_3(x),M_4(x) M1(x),M2(x),M3(x),M4(x)分别是
    M 1 ( x ) = [ 0 0 0.5 0.5 ] , M 2 ( x ) = [ 0.3 0.7 0.7 0.3 ] M_1(x)=

    [000.50.5]" role="presentation">[000.50.5]
    , M_2(x)=
    [0.30.70.70.3]" role="presentation">[0.30.70.70.3]
    M1(x)=[00.500.5],M2(x)=[0.30.70.70.3]
    M 3 ( x ) = [ 0.5 0.5 0.6 0.4 ] , M 4 ( x ) = [ 0 1 0 1 ] M_3(x)=
    [0.50.50.60.4]" role="presentation">[0.50.50.60.4]
    , M_4(x)=
    [0101]" role="presentation">[0101]
    M3(x)=[0.50.60.50.4],M4(x)=[0011]

    求以 s t a r t = 2 start=2 start=2为起点 s t o p = 2 stop=2 stop=2为终点的所有路径的状态序列 y y y的概率及概率最大的状态序列。

    import numpy as np
    
    # 创建随机矩阵
    M1 = [[0, 0], [0.5, 0.5]]
    M2 = [[0.3, 0.7], [0.7, 0.3]]
    M3 = [[0.5, 0.5], [0.6, 0.4]]
    M4 = [[0, 1], [0, 1]]
    M = [M1, M2, M3, M4]
    
    # 生成路径
    path = [2]
    for i in range(1, 4):
        paths = []
        for _, r in enumerate(path):
            temp = np.transpose(r)
            paths.append(np.append(temp, 1))
            paths.append(np.append(temp, 2))
        path = paths.copy()
    
    path = [np.append(r, 2) for _, r in enumerate(path)]
    
    # 计算概率
    pr = []
    for _, row in enumerate(path):
        p = 1
        for i in range(len(row) - 1):
            a = row[i]
            b = row[i + 1]
            p *= M[i][a - 1][b - 1]
        pr.append((row.tolist(), p))
    pr = sorted(pr, key=lambda x: x[1], reverse=True)
    
    # 打印结果
    print("以start=2为起点stop=2为终点的所有路径的状态序列y的概率为:")
    for path, p in pr:
        print("    路径为:" + "->".join([str(x) for x in path]), end=" ")
        print("概率为:" + str(p))
    print("概率[" + str(pr[0][1]) + "]最大的状态序列为:",
          "->".join([str(x) for x in pr[0][0]]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    运行结果

    以start=2为起点stop=2为终点的所有路径的状态序列y的概率为:
        路径为:2->1->2->1->2 概率为:0.21
        路径为:2->2->1->1->2 概率为:0.175
        路径为:2->2->1->2->2 概率为:0.175
        路径为:2->1->2->2->2 概率为:0.13999999999999999
        路径为:2->2->2->1->2 概率为:0.09
        路径为:2->1->1->1->2 概率为:0.075
        路径为:2->1->1->2->2 概率为:0.075
        路径为:2->2->2->2->2 概率为:0.06
    概率[0.21]最大的状态序列为: 2->1->2->1->2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    手撕双链表
    脑神经网络构建过程视频,神经网络的构建过程
    网络安全深入学习第七课——热门框架漏洞(RCE— Fastjson反序列化漏洞)
    为什么我写的z-index不生效?
    安卓手机获取root权限---修补面具root步骤解析
    浅谈RabbitMQ的延迟队列
    R语言统计学DOE实验设计:用平衡不完全区组设计(BIBD)分析纸飞机飞行时间实验数据...
    Linux nload显示当前的网络使用情况
    ITIL 4Foundation课本概念常考点
    Head First设计模式(阅读笔记)-04.工厂模式
  • 原文地址:https://blog.csdn.net/qq_38973721/article/details/128067388