welch算法
① em算法就是baum-welch 算法吗
baum-welch算法是一种对hmm模型做参数估计的方法,是EM算法的一个特例。
前向后向算法是已知模型和序列求概率的算法,也是用于训练的Baum-Welch算法的循环中的一个步骤。
② 从马尔可夫模型到隐马尔可夫模型
马尔可夫模型个人认为这个概念应该是从 随机过程 里面提出来的,由马尔可夫过程过来的概念。实际上掌握了随机过程里面对马尔可夫过程的特殊情况:离散参数离散状态的马尔可夫链的数学运算的话。就能够很好解决马尔可夫模型上面的计算问题,包括隐马尔科夫模型。讲马尔可夫模型以及过程重点在于其满足的性质-马尔可夫性。
随机过程:
现实中时常出现,某个事物满足一定的随机分布,但是其随机分布会随着时间的变化而变化。我们假设其在时刻 符合随机分布 并且用随机变量 来表示。假设 。但是在时间 的时候就符合随机分布 并且用随机变量 来表示。假设 。也就是说某个事物的某个特征会随着时间的变化其对应的分布也会发生变化。这样一个总体的过程,称之为 随机过程。
具体例子:
灯泡寿命问题,灯泡其实在每个时间点上都有一定的可能性会损坏,在这个时间点上损坏的可能性符合一个具体的正态分布(其 是确定的),而随着时间的久远,灯泡损坏的可能性就变大了。所以在之后的某个时间点上灯泡损坏的可能性可能就符合另外一个具体的正态分布(其 就和先前不一样了,会有变坏的趋势)。灯泡损坏在传统的概率论中也是一个经典例子,可能传统的概率论会认为灯泡的寿命长短符合一个随机分布,并且用一个随机变量来表示,我们研究这个分布的特征。这里和传统的概率论中不一样,可以发现的是,引入了随机过程,可以对随机现象更加深入彻底地描述和研究。
定义随机过程中的一些量。
参数:也就是上述的时间,如果是和时间有关,往往叫做时间序列。但是很多的现象研究不是和时间相关的。
状态:也就是上述的随着时间变化的随机变量。
马尔可夫过程:满足马尔科夫性的随机过程。
以后再解释
马尔可夫性:
马尔可夫链:
马尔可夫模型和上述的关系。
具体讲一下 隐马尔可夫模型。
和普通的马尔可夫不一样,马尔可夫模型是可以确定状态序列的。也就是说序列上的每个项的分布是怎么样的是已知的。而隐马尔可夫模型是连序列上的每个项的是什么分布都不能够知道,都是随机的。
对于这样的一个随机模型。
经常要解决三个基本问题:
1). 给定 和 ,求解 。 又叫作 计算问题。
2). 给定 和 ,求解一个状态转换序列 ,使得最优可能产生上面的序列。又叫做估计问题。
3). 在模型参数(A或者B)未知或者参数不准确的情况下,由 来调整参数。又叫做训练问题。
状态一定是按着产生了部分观察序列来的。考虑前缀。 表示处理到了n,观察序列到n为止都是答案的概率。但是不好转移,转移的时候要枚举前后隐藏状态,考虑把隐藏状态也表示出来。 表示处理到了n,并且第n个状态为j的概率。
范围:
结果:
初始化:
转移:
知道 和 ,求Q,状态序列,使得产生 的可能性最大。
定义:
这个函数的含义是:
模型在时刻t处于状态i,观察到 的最佳状态转换序列的概率。
从而有了转移方程:
而 就是
因此 的转移过程构成了一个图,而Q就是上面的最优路径。
利用 观察数据进行对模型参数 或者 或者 进行预测和修正,训练问题,又可以叫做预测问题。
并且这个问题其实是带有隐变量的最大似乎估计,也就是EM算法。
直接讲EM,用数学角度来引入 或者 用递归式来求解含有隐变量的参数估计 都是可以的,后者会比较清楚。
但是课上老师给出了另外一种比较好的解释:
考虑第三个问题,实际上应该分两种情况。
1:带指导的参数学习。
给出的数据是这样的:
状态/观察数据。
硬币中的例子就是
H/1 H/1 T/1 T/2 H/3 T/3 T/2 H/1 T/2 H/3 H/3 H/1
其实当拥有了数据 状态/观察数据 是可以直接对参数进行估计的。
假设是齐次的(一般也是齐次的,概率只和状态有关,和时间关系不大,放在词句中就是词语所在的句子的部位关系不是很大,而是上下文内容关系比较大。),
考虑aij 指的是在状态i和状态j的转移概率。
可以直接对上面2个2个统计进行参数估计。
考虑bi(o_j)也就是状态为i输出为o_j的。
一个一个枚举来即可。
考虑pi_i。也就是初始状态。
一个一个枚举状态即可。
带有指导的是有缺点的:
数据上不可行,状态这样的数据其实都是人工标注的。
数据量要求比较大。
但是在NLP中这个方法是很重要的。因为效果比较好。
2:不带指导的参数学习
数据上只给出了 观察序列,没有状态序列。
实际上1中就出了答案。没有状态序列,我们就枚举状态序列。
比如上述。如果观察出来了
1 2 2
那么我们就考虑以下
1 2 2
HHH
HHT
HTH
HTT
THH
THT
TTH
TTT
所有情况。
所以就产生了
H/1 H/2 H/2
H/1 H/2 T/2
....
然后分组进行统计参数估计即可。
但是这里有两个问题:
1:状态太多了。N^T。
2:给每个状态的权重是一样的。不是很科学。(实际上还行,如果使用熵最大原理。)
那么怎么办?解决2考虑给不同状态加权重,那么要有一个先验的的知识:
咱们先给出先验的 模型参数。
那么就可以计算P(Q|O,人)P(Q,O|人)这样的东西了。
明显可以用P(Q|O,人)作为一个路径序列的权重。
但是这样计算的时候,路径序列很长。并且转移路径还是N^T条。
不可行。
避开对路径的考虑。考虑参数abt最多只有涉及两个时间点的。
我们如果只关注两个时间点之间的状态。那么就可以变成二维的。
使Q不是一个路径的。而是只是两个时间点之间的状态。
q_t = i q_t+1 = j 。把这个概率计算出来的话。就能直接对aij这样的进行估计了。
(实际上只是换了一种计数方式,就减少了问题规模,因为咱们关注的也只是路径上两个点两个点之间的。)
由此引出Baum_Welch算法:
定义以下:
这样就能对参数们进行评估了。有以下:
这样只要挑一个满足条件的初始值,然后迭代求解即可。
③ png gif jpg 格式图片各有什么优缺点。什么情况下用哪种图片最合适。
1、Portable
Network
Graphic(便携网络图形),或者简称为
PNG,是最为适合的网络图形格式。然而,在没有插件的情况下,并不是所有的网络浏览器都能够充分利用
PNG
格式的特性的。因此他还不是一种网络种普及的格式。PNG
格式可以支持高达
32-bit
的颜色,可以包含透明度或者
alpha
通道,也可以进行渐变处理。
PNG
格式的压缩不造成文件任何的损失,即使在高彩的情况下也如此。他跨越像素行和栏进行压缩。对于高彩图像,JPEG
产生的质量较高。PNG
允许
32-bit
色图像包含透明度,但是产生的图像尺寸较大。
PNG
格式是创建复杂的即时透明,高彩图形,和良好的低色压缩图形的最佳格式。
PNG
是
Fireworks
本身的文件格式。可是,Fireworks
的
PNG
文件中包含有一些当你导出用于网络的
PNG
图形时并不保存的额外的源文件信息。
2、GIF是图形交换格式(Graphics
Interchange
Format)的英文缩写,是由CompuServe公司于80年代推出的一种高压缩比的彩色图象文件格式。GIF采用无损数据压缩方法中压缩效率较高的LZW(Lempel-Ziv
&
Welch)算法,针对的是8位颜色图形。GIF是唯一为所有图形浏览器所支持的图形格式。
④ 怎么将baum-welch算法运用于室内定位csdn
怎么将baum-welch算法运用于室内定位csdn
这是一段程序中的代码:
int randomNumber=(int)(Math.random()*8)+1;
所给出的注释是:得到一个1到8之间的随机整数。开始的时候不是很懂,于是翻书、上网找资料,但是得到的结果都是一样的。Math.random()的作用是得到0-1之间的随机数。那么是如何实现的呢?
仔细想一想其实并不是很复杂:Math.random()的取值应该是0-1(事实上取不到0和1)之间的随机小数,乘以8之后应该是0-8之间的随机小数,也就是0.****到7.****之间的小数(大于0而小于8),经过int类型转换之后,应该是0-7之间的随机整数,所以"+1"之后就会得到1-8之间的
⑤ 怎么判断 baum-welch算法收敛
1:先判断是否收敛。 2:如果收敛,且为交错级数,则绝对收敛。 其实就是交错级数如果加绝对值收敛则为条件收敛,如果交错级数不加绝对值也收敛,则为绝对收敛。
⑥ 犹太人十大发明
1918年,马克斯·戈德堡在底特律开设了第一家商业停车场;1910年,路易斯·布劳斯坦和他的儿子开设了“第一家”加油站,最终创建了阿莫科石油公司;埃米尔·柏林发明了现代留声机;Louis B. Mayer(米高梅)创造了奥斯卡这个奖项。
1901年至2015年间,犹太人一共获得了194项诺贝尔奖,占诺贝尔奖总数的22%。
⑦ 隐马尔可夫模型的基本问题
1. 评估问题。
给定观测序列 O=O1O2O3…Ot和模型参数λ=(A,B,π),怎样有效计算某一观测序列的概率,进而可对该HMM做出相关评估。例如,已有一些模型参数各异的HMM,给定观测序列O=O1O2O3…Ot,我们想知道哪个HMM模型最可能生成该观测序列。通常我们利用forward算法分别计算每个HMM产生给定观测序列O的概率,然后从中选出最优的HMM模型。
这类评估的问题的一个经典例子是语音识别。在描述语言识别的隐马尔科夫模型中,每个单词生成一个对应的HMM,每个观测序列由一个单词的语音构成,单词的识别是通过评估进而选出最有可能产生观测序列所代表的读音的HMM而实现的。
2.解码问题
给定观测序列 O=O1O2O3…Ot 和模型参数λ=(A,B,π),怎样寻找某种意义上最优的隐状态序列。在这类问题中,我们感兴趣的是马尔科夫模型中隐含状态,这些状态不能直接观测但却更具有价值,通常利用Viterbi算法来寻找。
这类问题的一个实际例子是中文分词,即把一个句子如何划分其构成才合适。例如,句子“发展中国家”是划分成“发展-中-国家”,还是“发展-中国-家”。这个问题可以用隐马尔科夫模型来解决。句子的分词方法可以看成是隐含状态,而句子则可以看成是给定的可观测状态,从而通过建HMM来寻找出最可能正确的分词方法。
3. 学习问题。
即HMM的模型参数λ=(A,B,π)未知,如何调整这些参数以使观测序列O=O1O2O3…Ot的概率尽可能的大。通常使用Baum-Welch算法以及Reversed Viterbi算法解决。
怎样调整模型参数λ=(A,B,π),使观测序列 O=O1O2O3…Ot的概率最大?
⑧ 马尔可夫算法不正确的是
马尔可夫算法不正确的是参考如下:
前向、后向算法解决的是一个评估问题,即给定一个模型,求某特定观测序列的概率,用于评估该序列最匹配的模型。
Baum-Welch算法解决的是一个模型训练问题,即参数估计,是一种无监督的训练方法,主要通过EM迭代实现;
维特比算法解决的是给定 一个模型和某个特定的输出序列,求最可能产生这个输出的状态序列。如通过海藻变化(输出序列)来观测天气(状态序列),是预测问题,通信中的解码问题。
HMM模型一共有三个经典的问题,含三种算法:
1 、评估问题: 前向算法
评估观察序列概率。即给定模型λ=(A,B,Π)λ=(A,B,Π)和观测序列O={o1,o2,...oT}O={o1,o2,...oT},计算在模型λλ下观测序列OO出现的概率P(O|λ)P(O|λ)。这个问题的求解需要用到前向后向算法,我们在这个系列的第二篇会详细讲解。这个问题是HMM模型三个问题中最简单的。
2 、学习问题: Baum-Welch算法(向前向后算法)
模型参数学习问题。即给定观测序列O={o1,o2,...oT}O={o1,o2,...oT},估计模型λ=(A,B,Π)λ=(A,B,Π)的参数,使该模型下观测序列的条件概率P(O|λ)P(O|λ)最大。这个问题的求解需要用到基于EM算法的鲍姆-韦尔奇算法,这个问题是HMM模型三个问题中最复杂的。
3 、解码问题: Viterbi算法
预测问题,也称为解码问题。即给定模型λ=(A,B,Π)λ=(A,B,Π)和观测序列O={o1,o2,...oT}O={o1,o2,...oT},求给定观测序列条件下,最可能出现的对应的状态序列,这个问题的求解需要用到基于动态规划的维特比算法。
⑨ 02 隐马尔可夫模型 - HMM的三个问题 - 概率计算问题
01 隐马尔可夫模型 - 马尔可夫链、HMM参数和性质
假设有三个盒子,编号为1,2,3;每个盒子都装有黑白两种颜色的小球,球的比例。如下:
按照下列规则的方式进行有放回的抽取小球,得到球颜色的观测序列:
1、按照π的概率选择一个盒子,从盒子中随机抽取出一个球,记录颜色后放回盒子中;
2、按照某种条件概率选择新的盒子,重复该操作;
3、最终得到观测序列:“白黑白白黑”
例如: 每次抽盒子按一定的概率来抽,也可以理解成随机抽。
第1次抽了1号盒子①,第2次抽了3号盒子③,第3次抽了2号盒子②.... ; 最终如下:
①→③→②→②→③ 状态值
白→黑→白→白→黑 观测值
1、 状态集合: S={盒子1,盒子2,盒子3}
2、 观测集合: O={白,黑}
3、 状态序列和观测序列的长度 T=5 (我抽了5次)
4、 初始概率分布: π 表示初次抽时,抽到1盒子的概率是0.2,抽到2盒子的概率是0.5,抽到3盒子的概率是0.3。
5、 状态转移概率矩阵 A:a11=0.5 表示当前我抽到1盒子,下次还抽到1盒子的概率是0.5;
6、 观测概率矩阵 - 混淆矩阵 - 为了不和之前的混淆矩阵概念冲突,可以称之为发射矩阵,即从一个状态发射到另一个状态: B:如最初的图,b11=第一个盒子抽到白球概率0.4,b12=第一个盒子抽到黑球概率0.6;
在给定参数π、A、B的时候,得到观测序列为“白黑白白黑”的概率是多少?
这个时候,我们不知道隐含条件,即不知道状态值:①→③→②→②→③ ;
我们如何根据π、A、B求出测序列为“白黑白白黑”的概率?
下面给出解决方案。
前向-后向算法 给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},计算模型λ下观测到序列Q出现的概率P(Q|λ);
回顾上面的案例 ,λ=(A,B,π)已知。观测到序列 Q=白→黑→白→白→黑,但我们不知道 状态序列 I=①→③→②→②→③;我们要求解 P(Q|λ) ,即Q=白→黑→白→白→黑 这个观测序列发生的概率。 可以用前向-后向算法来实现 。
Baum-Welch算法(状态未知) 已知观测序列Q={q1,q2,...,qT},估计模型λ=(A,B,π)的参数,使得在该模型下观测序列P(Q|λ)最大。
Baum-Welch算法是EM算法的一个特例,专门用来 求解 隐马尔科夫中隐状态参数 λ=(A,B,π) 。即:根据已知的 观测到序列 Q=白→黑→白→白→黑,去寻找整个模型的一组隐状态参数λ=(A,B,π),使得在模型中 观测序列 发生的可能性P(Q|λ)最大。
Viterbi算法 给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},求给定观测序列条件概率P(I|Q,λ)最大的状态序列I。
已知 观测到序列 Q=白→黑→白→白→黑,当我们得到λ=(A,B,π)后,我们用 Viterbi算法 求出在哪一种 状态序列 发生的可能性最大,即,求出 状态序列 I=①→③→②→②→③;即,抽取什么样的盒子顺序,更可能得到白→黑→白→白→黑这种结果。
1、直接计算法(暴力算法)
2、前向算法
3、后向算法
类似KNN计算最近邻时候的算法。《 01 KNN算法 - 概述 》
也就是说, 暴力算法 需要一个个遍历所有的状态去计算当前状态发生的概率。
按照概率公式,列举所有可能的长度为T的状态序列I={i1,i2,...,iT},求各个状态序列I与观测序列Q={q1,q2,...,qT}的联合概率P(Q,I;λ),然后对所有可能的状态序列求和,从而得到最终的概率P(Q;λ);
分析: 先思考这样一个问题:生成“白-黑-白-白-黑”这样的结果,是不是会有很多种盒子组合的序列来抽取,都会生成这样一个结果?我把这些可能出现“白-黑-白-白-黑”结果的盒子序列的联合概率求出来-P(Q,I;λ),即∑P(Q,I) = P(Q) ,P(Q) 是我们观测到“白-黑-白-白-黑”结果时,符合这个结果的所有状态序列I出现的概率。
公式运用:
设状态序列 I=③→②→①→①→②; T=5;
P(I;λ) = π 3 a 32 a 21 a 11 a 12
因为: 在给定状态序列I后,Q中的每个观测值都独立。(贝叶斯网络原理) 贝叶斯网络
所以: P(Q|I;λ)可以用联乘的方式表示 (独立可以使用联合概率)
I = ③→②→①→①→②
Q=白→黑→白→白→黑
P(Q|I;λ) = b 3白 b 2黑 b 1白 b 1白 b 2黑
P(Q,I;λ) = P(Q|I;λ) × P(I;λ)
= b 3白 b 2黑 b 1白 b 1白 b 2黑 × π 3 a 32 a 21 a 11 a 12
若:
I 1 = ③→②→①→①→②
I 2 = ①→②→③→①→②
...
I T = ②→②→①→③→②
都能得出:
Q = 白→黑→白→白→黑
因为我所有的盒子都能取出黑球和白球,所以T的值=3 5 ;
∑P(Q,I;λ) 计算的是 I 1 ~ I T 这些状态序列情况下,求出的P(Q,I;λ)的和。
前向 和 后向 算法是运用某种递归(递推)的方式,帮助我们尽快得求解最终结果。
解析: 如果 t 这一时刻观察到的状态是 q t = 雨天;其中y={干,湿,湿... 湿}共t个状态。
先不考虑λ。
α t 是 1时刻~t时刻 所有观测值y1,y2,...yt ,qt 出现的联合概率。
β t 是 t+1时刻~T时刻 所有观测值y t+1 ,y t+2 ,...y T 出现的联合概率。
前向概率-后向概率 指的其实是在一个观测序列中,时刻t对应的状态为si的概率值转换过来的信息。
分析2~3步的推导: 因为q 1 ~ q t 这些条件对 q t+1 ~ q T 的产生没有影响 (理由:贝叶斯网络),所以这些条件可以去掉。
定义:给定λ,定义到时刻t部分观测序列为q1,q2,...,qt且状态为si的概率为 前向概率 。
记做:
在给定参数π、A、B的时候,得到观测序列为“白黑白白黑”的概率是多少?
定义:给定λ,定义到时刻t状态为si的前提下,从t+1到T部分观测序列为qt+1,qt+2,...,qT的概率为 后向概率 。
记做:
分析上面的公式:
如果一共只有t个时间点,t+1的时刻不存在。那么t+1以后发生的是必然事件。
所以 β t (i) = P(q t+1 ,q t+2 ,...,q T ) = 1;
如果实在不理解也没关系,我们姑且认为认为定义了一个初始值,即 β T (i) = 1 ;
从T-1时刻,倒推到1时刻。
首先,β t+1 (j)是什么?是t+1时刻,在状态sj的前提下,下图中圈起来这部分的联合概率。
β t (j)是什么?是t时刻,在状态sj的前提下,下图中圈起来这部分的联合概率。
求给定模型λ和观测序列Q的情况下,在时刻t处于状态si的概率,记做:
单个状态概率的意义主要是用于判断在每个时刻最可能存在的状态,从而可以得到一个状态序列作为最终的预测结果。
求给定模型λ和观测序列Q的情况下,在时刻t处于状态si并时刻t+1处于状态sj概率,记做:
03 隐马尔可夫模型 - HMM的三个问题 - 学习问题
⑩ 数据压缩
数据压缩技术主要研究数据的表示、传输和转换方法,目的是减少数据所占据的存储空间和缩短数据传输时所需要的时间。
衡量数据压缩的3个主要指标:一是压缩前后所需的信息存储量之比要大;二是实现压缩的算法要简单,压缩、解压缩速度快,要尽可能做到实时压缩和解压缩;三是恢复效果要好,要尽可能完全恢复原始数据。
数据压缩主要应用于两个方面。一是传输:通过压缩发送端的原始数据,并在接收端进行解压恢复,可以有效地减少传输时间和增加信道带宽。二是存储:在存储时压缩原始数据,在使用时进行解压,可大大提高存储介质的存储量。
数据压缩按照压缩的失真度分成两种类型:一种叫作无损压缩,另一种叫作有损压缩。
无损压缩是指使用压缩后的数据进行重构(或者叫作还原、解压缩),重构后的数据与原来的数据完全相同;无损压缩用于要求重构的信号与原始信号完全一致的场合。一个很常见的例子是磁盘文件的压缩。根据目前的技术水平,无损压缩算法一般可以把普通文件的数据压缩到原来的1/4~1/2。一些常用的无损压缩算法有霍夫曼(Huffman)算法、算术算法、游程算法和LZW(Lenpel-Ziv & Welch)压缩算法。
1)霍夫曼算法属于统计式压缩方法,其原理是根据原始数据符号发生的概率进行编码。在原始数据中出现概率越高的符合,相应的码长越短,出现概率越少的符合,其码长越长。从而达到用尽可能少的符号来表示原始数据,实现对数据的压缩。
2)算术算法是基于统计原理,无损压缩效率最高的算法。即将整段要压缩的数据映射到一段实数半封闭的范围[0,1)内的某一区段。该区段的范围或宽度等于该段信息概率。即是所有使用在该信息内的符号出现概率全部相乘后的概率值。当要被编码的信息越来越长时,用来代表该信息的区段就会越来越窄,用来表示这个区段的位就会增加。
3)游程算法是针对一些文本数据特点所设计的压缩方法。主要是去除文本中的冗余字符或字节中的冗余位,从而达到减少数据文件所占的存储空间。压缩处理流程类似于空白压缩,区别是在压缩指示字符之后加上一个字符,用于表明压缩对象,随后是该字符的重复次数。本算法具有局限性,很少单独使用,多与其他算法配合使用。
4)LZW算法的原理是用字典词条的编码代替在压缩数据中的字符串。因此字典中的词条越多,压缩率越高,加大字典的容量可以提高压缩率。字典的容量受计算机的内存限制。
有损压缩是指使用压缩后的数据进行重构,重构后的数据与原来的数据有所不同,但不影响人对原始资料表达的信息造成误解。有损压缩适用于重构信号不一定非要和原始信号完全相同的场合。例如,图像和声音的压缩就可以采用有损压缩,因为其中包含的数据往往多于我们的视觉系统和听觉系统所能接收的信息,丢掉一些数据而不至于对声音或者图像所表达的意思产生误解,但可大大提高压缩比。