隐式马尔科夫模型中的Baum-Welch算法详解

2023-10-14 07:50

本文主要是介绍隐式马尔科夫模型中的Baum-Welch算法详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、Baum-Welch算法流程
  • 二、EM算法公式推导
    • 1)EM算法基础概念
    • 2)E步骤
    • 3)M步骤
  • 三、前置内容
    • a)条件概率和联合概率
    • b)拉格朗日乘子法的理解
    • c)隐数据
    • d)完全数据
  • 四、引用


前言

本篇分别从Baum-Welch算法流程和EM算法中所涉及公式的推导这两个方面来介绍Baum-Welch算法,旨在读者能理解如何使用Baum-Welch算法,以及掌握算法步骤中公式的来龙去脉。
为了保证阅读效率,一些前置知识点会被安排在文章末尾。
有任何的建议欢迎在评论区留言,随时看随时修改哦~谢谢大家【鞠躬


一、Baum-Welch算法流程

  1. 输入训练观测数据O=(o1,o2,…,oT). 同时初始化模型参数,从n=0开始,选取a0,b0,π0,得到模型λ0

  2. 递推n,n=1,2,…,n
    在这里插入图片描述
    接着用观测数据O和λn开始计算
    图中公式的γ和ζ将在EM公式推导中介绍。
    3)得到模型参数λ(n+1)
    根据第二步中即将展现的推导可知,在n+1时可以获得极大值。
    在这里插入图片描述
    第四步需要我们自己设置2个阈值,用来停止迭代。

二、EM算法公式推导

1)EM算法基础概念

首先,假设我们有许多组模型参数,λ1~λn,求每一个模型和O匹配的可能性(概率)P(O|λ),那么可能性最大的那个就最有可能成为隐式马尔科夫模型的参数。
O是观测序列,I是状态序列,λ是参数,λ中有3个子参数,分别是
在这里插入图片描述
同时隐式马尔科夫模型公式在EM算法中的意义为:
在这里插入图片描述
EM算法,最大似然估计,简单的说就是根据结果找出最有可能的条件。
隐式马尔科夫模型可以通过EM算法实现其参数学习。EM算法在隐式马尔科夫模型学习中的具体体现就是Baum-Welch 算法。
EM算法可以分成两个步骤,1:E步骤;2:M步骤。

2)E步骤

1)首先先进行初始化。
观测数据O=(o1,o2,…,oT), 所有隐数据写成I=(i1,i2,…,iT),确定完全数据【观测和状态在一起就是完全数据,借用完全数据的公式求这里的不完全数据(I是隐数据)】(O,I)=(o1,o2,…,oT,i1,i2,…,iT).的对数似然函数logP(O,I|λ)
在这里我们引入一个函数
在这里插入图片描述

第一个λ是表示要极大化的参数,第二个横线λ是参数当前的估计值,每一次的迭代都是在求Q函数及其极大值。
定义:完全数据的对数似然函数,在给定观测数据O,和当前参数横线λ下,隐数据I的可能性的期望称为Q函数。
Q函数在E步骤中就是求到函数内两个λ。9.11是Q函数之前的样子,E是求和符号,Z是I θ是λ,Y是O 展开就变成10.33了
在这里插入图片描述
【极大似然估计值】也就是【最大可能性的条件】。对数似然函数(9.12)和下面这一行很像(10.32)。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后用琴声不等式得到下界,E(φ(x))≥ φ(E(x)),琴声不等式得到的下界会更加松【这是官方说法】更加靠下,所以在迭代上升时,上升空间更多。在优化尺度迭代中同样用到了琴生不等式,
在这里插入图片描述
此时只要等式右边【下界】变大左边一定变大,如果右边是极大值了,左边也一定是极大值了。
在这里插入图片描述
对于一个θi找到最大的θ,也就是最符合θi的参数,将其作为θ(i+1)放入下次迭代。所以对于θi来说,θ(i+1)总是极大的。
在这里插入图片描述
上图中9.17的第二行,是由第一行L(θi)展开以后log加法转乘法与第二项分母相消得来。
至此,Q函数的公式推完了,让我们继续来看E步骤的后续。
在这里插入图片描述
这个公式要注意几点不一样的,对数只取前面一部分。
在这里插入图片描述要放在log的外面。
第二,在这里插入图片描述是一个确定的值,在0到1之间,根据横线λ算出。根据9.17的公式,10.33就是在对隐函数I求期望值。
在这里插入图片描述
这里πi1是初始点,bi1观测概率,o1是当前观测,ai1i2是状态转移概率。把这个代入Q再展开
在这里插入图片描述
λ被展开成三个参数【λ参数的调用就是用到哪个调哪个,但是存放是一起存放的】,log可以吧乘转为加法。

3)M步骤

EM算法的M步,就是分别计算刚刚3项,然后对各项分别极大化,这里统一使用拉格朗日乘子法。
使用拉格朗日乘子法的原因是,拉格朗日乘子法可以对有约束等式求极值,具体在前置内容的b点中。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
上面三个公式最后的结果分别是
在这里插入图片描述
这时我们引入2个变量:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在ζ中使用的前后项的递推计算,所以我们使用
在这里插入图片描述
最后对γ和ζ的期望值进行归纳
在这里插入图片描述
随后我们将γ和ξ代入三个拉格朗日之后的参数公式
在这里插入图片描述
接着得到
在这里插入图片描述
10.39、10.40、10.41便是BW算法流程中的三个公式形式。

三、前置内容

a)条件概率和联合概率

先讲一个知识点,条件概率和联合概率
P(A|B)是在B发生的情况下,A发生的概率
P(A,B)是A,B同时发生的概率
乍一看是一样的。
举个例子
52张扑克牌。我们要找出红色4,红色四分为桃心和方片,所以有两张
P(4|红) 是先分出红黑,再找出4,
在这里插入图片描述
所以P(4|红)=1/13
P(4,红)是在全部牌中分出红色4
P(4,红)= 1/26
因为总池子不一样,条件概率的池子由条件的个数决定,联合概率的池子是不带条件的全体。
但是在不知道准确个数,没法通过比例的方法求解时,条件概率必须通过朴素贝叶斯才能求得,
否则简单相乘求的就是联合概率。

b)拉格朗日乘子法的理解

在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法。在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。
一般情况下,最优化问题通常是指对于给定的函数f(x),求其在指定作用域上【作用域即约束】的全局最小值(最小值与最大值很容易转化,所以都一样,比如两边求倒数)
具体推导不展开,但是拉格朗日乘子法可以将带有约束的等式转化为无约束等式,这就是在等式约束时使用拉格朗日乘子法的原因。

c)隐数据

上文中E步骤中的隐数据为HMM模型本身自带,因为HMM模型本身就有未知条件和未知参数。

d)完全数据

上文说过完全数据必须要观测和状态同时存在且显式,所以HMM模型是不完全数据,但是如果我们需要确定选用什么样的概率模型,就必须要先假设数据形态为完全数据。举个例子,在上文中完全数据的形态是对数似然函数,所以我们选用对数似然函数作为不完全数据的概率模型。

四、引用

1)李航 (2011). 《统计学习方法》

这篇关于隐式马尔科夫模型中的Baum-Welch算法详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209133

相关文章

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3