机器学习方法原理及编程实现--07.隐马尔科夫及其在卡尔曼滤波中的应用

文章列表
1.机器学习方法原理及编程实现–01.K近邻法(实现MNIST数据分类).
2.机器学习方法原理及编程实现–02.决策树.
3.机器学习方法原理及编程实现–03.朴素贝叶斯分类器(实现MNIST数据分类) .
4.机器学习方法原理及编程实现–04.支持向量机 .
5.机器学习方法原理及编程实现–05提升方法..
6.机器学习方法原理及编程实现–06.EM方法.
7.[机器学习方法原理及编程实现–07.隐马尔科夫及其在卡尔曼滤波中的应用][7].

隐马尔科夫是一个特别有用的概念,在目标跟踪或滤波中广泛使用的卡尔曼滤波就是一个隐马尔科夫的应用,还有好多好多别的应用。马尔科夫(有时又称为可视马尔科夫,VMM)与隐马尔科夫(HMM)都是用来描述时序概率问题的,用当前及过去的信息来预测未来信息。那么VMM与HMM有什么区别呢,VMM中的状态序列是可观测的,HMM中的状态序列是不可观测的,而可观测到的事件是一个状态序列的一个概率事件,即HMM是一个双重随机过程,其中的状态转移是隐藏的,所以称为隐马尔科夫。

7.1 隐马尔科夫模型

7.1.1 定义

隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列(称为状态序列),再由状态随机序列生成观测随机序列的过程(称为观测序列)。
隐马尔科夫模型有初始概率分布、状态转移概率分布以及观测概率分布确定。隐马尔科夫模型的定义如下:设Q={ q1, q2, q3, …, qN}是所有可能的状态的集合,其中N是可能的状态数,V={ v1, v2, v3, …,v1}是所有可能的观测的集合,其中M是可能的观测数。

这里写图片描述

7.1.2 观测序列的生成过程

这里写图片描述

7.1.3 3个基本问题

隐马尔可夫模型有3个基本问题:
1. 概率计算问题。给定模型和观测序列,计算在现有模型下给定观测序列出现的概率
2. 学习问题。已知观测序列,用极大似然函数估计模型参数,使得在该模型下观测序列概率最大。
3. 预测问题,也称为解码问题。给定模型参数和观测序列,求最优可能出现的状态序列。
【详细过程可以参考李航老师的统计学习原理】

7.4 隐马尔可夫模型—卡尔曼滤波的应用

首先理解一下卡尔曼滤波:假设你有两个传感器,测的是同一个信号。可是它们每次的读数都不太一样,怎么办?
取平均。
再假设你知道其中贵的那个传感器应该准一些,便宜的那个应该差一些。那有比取平均更好的办法吗?
加权平均。
怎么加权?假设两个传感器的误差都符合正态分布,假设你知道这两个正态分布的方差,用这两个方差值,(此处省略若干数学公式),你可以得到一个“最优”的权重。
接下来,重点来了:假设你只有一个传感器,但是你还有一个数学模型。模型可以帮你算出一个值,但也不是那么准。怎么办?
把模型算出来的值,和传感器测出的值,(就像两个传感器那样),取加权平均。
OK,最后一点说明:你的模型其实只是一个步长的,也就是说,知道x(k),我可以求x(k+1)。问题是x(k)是多少呢?答案:x(k)就是你上一步卡尔曼滤波得到的、所谓加权平均之后的那个、对x在k时刻的最佳估计值。
于是迭代也有了。
这就是卡尔曼滤波。【以上通俗解释转自知乎】
那么隐马尔可夫模型是如何应用于卡尔曼滤波的呢?我们知道,在贝叶斯框架下,滤波问题就是求解感兴趣参数的后验概率密度,目标动态方差决定概率转移密度、观测方程决定似然函数,通过动态参数的先验概率密度和观测似然函数来求解估计问题。

7.4.1 运动学问题的最优贝叶斯滤波

这里写图片描述

7.4.2 卡尔曼滤波

这里写图片描述
这里写图片描述

代码路径:【待上传】

猜你喜欢

转载自blog.csdn.net/drilistbox/article/details/79886714
今日推荐