zoukankan      html  css  js  c++  java
  • 隐马尔可夫模型和隐含马尔可夫模型的训练

    概率论的发展从相对静态的随机变量到相对动态的随机过程。

    所谓随机过程,就是随着时间的变化状态转移的过程。

    也就是说每一个时刻都对应着一个状态。(这个时刻的)状态到(下一个时刻的)状态的改变的过程,就是过程。

    所谓随机是指,某一个时刻的状态是不能够确切的知道的(动态的,随机的)所以说是随机的。

    马尔可夫链(马尔可夫)就是根据随机过程提出的一种假设

    那么他是怎么假设的呢?

    该过程中,在给定当前知识或信息的情况下,过去(即当前以前的历史状态)对于预测将来(即当前以后的未来状态)是无关的

     
    隐含马尔可夫模型(HMM)

     

    根据输出的m1,m2,m3....来找到最合适的s1,s2,s3.....(这个过程也称为解码)

    (s1,s2,代表“1”时刻的状态,“2”时刻的状态,这是个概括,具体时刻的状态是什么,有个能是m1,m2,m3,m4。。的其中一个

    举个例子,比如有好多个袋子,袋子里有许多不同颜色球,并且每个袋子里球的颜色的概率分布是不同的。

    现在随意选择一个袋子,初始状态概率,从袋子里选择一个球,记录颜色,这个颜色就是表现出来的(m1,m2,m3,m4)状态,所选择的袋子就相当于的s1(si)

    比如,红色m1,黄色m2,蓝色m3,绿色m4,第一次选择的是红色m1,那么p(m1|s1)  就是发射概率(生成概率)p(mi|si).

    下一次又随意选择了一个袋子s2,从中任意摸出一个球m2,p(s2|s1)就是状态转移概率p(si|si-1

    这两个参数就是马尔可夫模型的参数,估计和计算这两个参数的过程称之为模型的训练,挺可爱的名字吧~

    我又想了下HMM和马尔可夫的区别(马尔可夫也称可视马尔可夫,和隐含是反义词)

    见文思意,可视马尔可夫指的是,状态转移的过程是可视的,可以知道的,上面的例子就是说从一个袋子到下一个袋子,选择哪一个袋子是知道的。官方一点,状态转移序列,状态转移过程是知道的。

    而HMM是不知道选择的是哪一个袋子,HMM知道的只是,具体什么颜色m1,m2,m3,m4..

    我们只能通过看到球的颜色来推测S1,S2,S3....选择了哪一个袋子(解码,前面那个图片倒着推)

    换一句话说,我们只能通过看到球的颜色来推测,状态转移概率p(si|si-1),发射概率(生成概率)p(mi|si),初始状态概率

    为了表示方便用A表示转移概率p(si|si-1) B:发射概率(生成概率)p(mi|si)  c初始概率。

    重申一下,A,B被称为HMM的参数,估计和计算这两个参数的过程称之为模型的训练

    先说一下,围绕HMM模型有3个基本问题

    1,求观察序列(给定一个模型(A,B,C),求特定的输出序列(m1,m2...))

    2,给定(A,B,C)和1观察序列,求S1,S2,S3...

    3,估计HMM参数(模型的训练

    1,用Forward-BarkWard算法可以解决

    2,用 维特比算法可以解决

    3,用鲍牧-韦尔奇算法

    我们这次讨论3,3,用鲍牧-韦尔奇算法

    鲍牧-韦尔奇算法,

    首先找到一租能够产生输出序列O的模型参数,称为M0,(显然是存在这个模型的,因为转移概率和输出概率是均匀分布的,模型可以产生任何输出O)

    接着我们要找一个更好的模型M1,假设解决了

    1,求观察序列(给定一个模型(A,B,C),求特定的输出序列(m1,m2...))

    2,给定(A,B,C)和1观察序列,求S1,S2,S3...

    不但可以算出这个模型产生O的概率P(O|M0),而且可以根据这个模型产生O的所有可能的路径(记录了每个状态经过多少次si,到达了哪些状态si+1,输出了哪些符号O),以及这些路径的概率,由此就可以知道发射概率和转移概率了,这两个参数构成了另一个称为新的模型M1。

    可以证明P(O|M1)>P(O|M0)

    接着从M1,出发找到一个更好的模型M2,一直找到模型的质量不再提高为止,这个算法每一次都是不断的估计,使得输出概率最大化,这个过程称为期望最大化EM。

    哎,,,,就说这么多,剩下的下次再说(EM,维特比,和Forward-BarkWard)。

    这些都是自己想的,不知道对不对,希望指正。

  • 相关阅读:
    后端开发应该掌握的 Redis 基础
    Code Review有什么好处?
    对不起,你那不叫努力,叫重复劳动
    老鸟程序员才知道的40个小技巧
    单例模式基础笔记
    最受IT公司欢迎的50款开源软件
    硬件:关于路由器、交换机、宽带猫的几个问题
    硬件:宽带猫(光猫)的基础知识
    python selenium模块使用出错解决,Message: ‘geckodriver’ executable needs to be in PATH
    python+selenium如何定位页面的元素,的几种定位元素的方法。
  • 原文地址:https://www.cnblogs.com/ldphoebe/p/4853809.html
Copyright © 2011-2022 走看看