隐马尔可夫模型(六)——隐马尔可夫模型的评估问题(前向后向相结合算法)

简介:

重新回顾:

    前向变量αt(i):在时刻t,在已知模型μ=(A,B,π)的条件下,状态处于si,输出序列为O102...Ot,前向变量为αt(i)

    后向变量βt(i):在时刻t,在已知模型μ=(A,B,π)和状态处于si的条件下,输出序列为Ot+1Ot+2...OT,后向变量为βt(i)

公式推导:

    P(O,qt=si|μ) = P(O1O2...OT, qt=si|μ)

                         =P(O1O2...Ot, qt=si,Ot+1Ot+2...OT|μ)

                         =P(O1O2...Ot, qt=si|μ) * P(Ot+1Ot+2...OT|O1O2...Ot, qt=si,μ)

                         =P(O1O2...Ot, qt=si|μ) * P(Ot+1Ot+2...OT|qt=si,μ)

                         =αt(i) *  βt(i)

     P(O|μ)=

案例分析:

    

      分析:

        P(q4=s3|O,M) =  P(q4=s3, O|M)/P(O|M)

                            = P(O,q4=s3|M)/P(O|M)

                            = α4(3) *  β4(3)/  

     程序:

 

复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
        float a[3][3] = {{0.5,0.2,0.3},{0.3,0.5,0.2},{0.2,0.3,0.5}};
        float b[3][2] = {{0.5,0.5},{0.4,0.6},{0.7,0.3}};
        float result_b[8][3];
        float result_f[8][3];
        float result, result_t;
        int list[8] = {0,1,0,0,1,0,1,1};
        result_b[7][0] = 1;
        result_b[7][1] = 1;
        result_b[7][2] = 1;
        result_f[0][0] = 0.2 * 0.5;
        result_f[0][1] = 0.4 * 0.4;
        result_f[0][2] = 0.4 * 0.7;
        //Backward
        int i,j,k, count = 7;
        for (i=6; i>=0; i--)
        {
            for(j=0; j<=2; j++)
            {
                result_b[i][j] = 0;
                for(k=0; k<=2; k++)
                {
                   result_b[i][j] += result_b[i+1][k] * a[j][k] * b[k][list[count]];
                }
            }
            count -= 1;
        }
       for (i=0; i<=7; i++)
        {
            for(j=0; j<=2; j++)
            {
                printf("b[%d][%d]= %f\n",i+1,j+1, result_b[i][j]);

            }
        }
        printf("Backward:%f\n", result_b[0][0]*0.2*0.5+result_b[0][1]*0.4*0.4+result_b[0][2]*0.4*0.7);
        //Forward
        count = 1;
        for (i=1; i<=7; i++)
        {
            for(j=0; j<=2; j++)
            {
                result_f[i][j] = 0;
                for(k=0; k<=2; k++)
                {
                    result_f[i][j] += result_f[i-1][k] * a[k][j] * b[j][list[count]];
                }
            }
            count += 1;
        }
        for (i=0; i<=7; i++)
        {
            for(j=0; j<=2; j++)
            {
                printf("a[%d][%d]= %f\n", i+1, j+1, result_f[i][j]);
            }
        }
        result = result_f[7][0] + result_f[7][1] + result_f[7][2];
        printf("Forward: %f\n", result);
        
        result_t = 0;
        for (i=0; i<=2; i++)
        {
            result_t += result_f[3][i] * result_b[3][i];
        }
        printf("Result:%f\n", result_f[3][2]*result_b[3][2]/result_t);

        return 0;
}
复制代码

        运行结果 

                                  

 

 

 

 

                        

   

 


本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/archive/2012/12/05/2803182.html,如需转载请自行联系原作者


相关文章
|
4月前
|
人工智能 自然语言处理 算法
算法及模型合规:刻不容缓的企业行动指南
随着AI技术迅猛发展,算法与模型成为企业数字化转型的核心。然而,国家密集出台多项法规,如《人工智能生成合成内容标识办法》等,并开展“清朗·整治AI技术滥用”专项行动,标志着AI监管进入严格阶段。算法备案从“可选项”变为“必选项”,未合规可能面临罚款甚至刑事责任。同时,多地提供备案奖励政策,合规既是规避风险的需要,也是把握政策红利和市场信任的机遇。企业需系统规划合规工作,从被动应对转向主动引领,以适应AI时代的挑战与机遇。
|
5月前
|
机器学习/深度学习 存储 算法
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。
572 10
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
202 6
|
6月前
|
算法 数据挖掘 数据安全/隐私保护
基于CS模型和CV模型的多目标协同滤波跟踪算法matlab仿真
本项目基于CS模型和CV模型的多目标协同滤波跟踪算法,旨在提高复杂场景下多个移动目标的跟踪精度和鲁棒性。通过融合目标间的关系和数据关联性,优化跟踪结果。程序在MATLAB2022A上运行,展示了真实轨迹与滤波轨迹的对比、位置及速度误差均值和均方误差等关键指标。核心代码包括对目标轨迹、速度及误差的详细绘图分析,验证了算法的有效性。该算法结合CS模型的初步聚类和CV模型的投票机制,增强了目标状态估计的准确性,尤其适用于遮挡、重叠和快速运动等复杂场景。
|
7月前
|
机器学习/深度学习 算法
扩散模型=进化算法!生物学大佬用数学揭示本质
在机器学习与生物学交叉领域,Tufts和Harvard大学研究人员揭示了扩散模型与进化算法的深刻联系。研究表明,扩散模型本质上是一种进化算法,通过逐步去噪生成数据点,类似于进化中的变异和选择机制。这一发现不仅在理论上具有重要意义,还提出了扩散进化方法,能够高效识别多解、处理高维复杂参数空间,并显著减少计算步骤,为图像生成、视频合成及神经网络优化等应用带来广泛潜力。论文地址:https://arxiv.org/pdf/2410.02543。
187 21
|
7月前
|
人工智能 算法 搜索推荐
单纯接入第三方模型就无需算法备案了么?
随着人工智能的发展,企业接入第三方模型提升业务能力的现象日益普遍,但算法备案问题引发诸多讨论。根据相关法规,无论使用自研或第三方模型,只要涉及向中国境内公众提供算法推荐服务,企业均需履行备案义务。这不仅因为服务性质未变,风险依然存在,也符合监管要求。备案内容涵盖模型基本信息、算法优化目标等,且需动态管理。未备案可能面临法律和运营风险。建议企业提前规划、合规管理和积极沟通,确保合法合规运营。
|
8月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
1338 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
9月前
|
算法
基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真
本项目基于MATLAB2022a,采用模糊PI控制算法结合龙格-库塔方法,对CSTR模型进行Simulink建模与仿真。通过模糊控制处理误差及变化率,实现精确控制。核心在于将模糊逻辑与经典数值方法融合,提升系统性能。
|
9月前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
10月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
369 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型

热门文章

最新文章