三、隐藏模式(Hidden Patterns)

1、马尔科夫过程的局限性
  在某些情况下,我们希望找到的模式用马尔科夫过程描述还显得不充分。回顾一下天气那个例子,一个隐士也许不能够直接获取到天气的观察情况,但是他有一些水藻。民间传说告诉我们水藻的状态与天气状态有一定的概率关系——天气和水藻的状态是紧密相关的。在这个例子中我们有两组状态,观察的状态(水藻的状态)和隐藏的状态(天气的状态)。我们希望为隐士设计一种算法,在不能够直接观察天气的情况下,通过水藻和马尔科夫假设来预测天气。
  一个更实际的问题是语音识别,我们听到的声音是来自于声带、喉咙大小、舌头位置以及其他一些东西的组合结果。所有这些因素相互作用产生一个单词的声音,一套语音识别系统检测的声音就是来自于个人发音时身体内部物理变化所引起的不断改变的声音。
  一些语音识别装置工作的原理是将内部的语音产出看作是隐藏的状态,而将声音结果作为一系列观察的状态,这些由语音过程生成并且最好的近似了实际(隐藏)的状态。在这两个例子中,需要着重指出的是,隐藏状态的数目与观察状态的数目可以是不同的。一个包含三个状态的天气系统(晴天、多云、雨天)中,可以观察到4个等级的海藻湿润情况(干、稍干、潮湿、湿润);纯粹的语音可以由80个音素描述,而身体的发音系统会产生出不同数目的声音,或者比80多,或者比80少。
  在这种情况下,观察到的状态序列与隐藏过程有一定的概率关系。我们使用隐马尔科夫模型对这样的过程建模,这个模型包含了一个底层隐藏的随时间改变的马尔科夫过程,以及一个与隐藏状态某种程度相关的可观察到的状态集合。

2、隐马尔科夫模型(Hidden Markov Models)
  下图显示的是天气例子中的隐藏状态和观察状态。假设隐藏状态(实际的天气)由一个简单的一阶马尔科夫过程描述,那么它们之间都相互连接。
  hidden-weather-example
  隐藏状态和观察状态之间的连接表示:在给定的马尔科夫过程中,一个特定的隐藏状态生成特定的观察状态的概率。这很清晰的表示了‘进入’一个观察状态的所有概率之和为1,在上面这个例子中就是Pr(Obs|Sun),Pr(Obs|Cloud) 及 Pr(Obs|Rain)之和。这里再引用一下读者jiuren的注解:

这里作者是把obs作为参数来用,是说Sum_{Obs=Dry,Dryish,Damp,Soggy}(Obs|Sun) = 1;
Sum_{Obs=Dry,Dryish,Damp,Soggy}(Obs|Cloud) = 1;
Sum_{Obs=Dry,Dryish,Damp,Soggy}(Obs|Rain) = 1;

  除了定义了马尔科夫过程的概率关系,我们还有另一个矩阵,定义为混淆矩阵(confusion matrix),它包含了给定一个隐藏状态后得到的观察状态的概率。对于天气例子,混淆矩阵是:
  weather-b-matrix
  注意矩阵的每一行之和是1。

3、总结(Summary)
  我们已经看到在一些过程中一个观察序列与一个底层马尔科夫过程是概率相关的。在这些例子中,观察状态的数目可以和隐藏状态的数码不同。
  我们使用一个隐马尔科夫模型(HMM)对这些例子建模。这个模型包含两组状态集合和三组概率集合:
  * 隐藏状态:一个系统的(真实)状态,可以由一个马尔科夫过程进行描述(例如,天气)。
  * 观察状态:在这个过程中‘可视’的状态(例如,海藻的湿度)。
  * pi向量:包含了(隐)模型在时间t=1时一个特殊的隐藏状态的概率(初始概率)。
  * 状态转移矩阵:包含了一个隐藏状态到另一个隐藏状态的概率
  * 混淆矩阵:包含了给定隐马尔科夫模型的某一个特殊的隐藏状态,观察到的某个观察状态的概率。
  因此一个隐马尔科夫模型是在一个标准的马尔科夫过程中引入一组观察状态,以及其与隐藏状态间的一些概率关系。

未完待续:隐马尔科夫模型

本文翻译自:http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/main.html
部分翻译参考:隐马尔科夫模型HMM自学

转载请注明出处“我爱自然语言处理”:www.52nlp.cn

本文链接地址:https://www.52nlp.cn/hmm-learn-best-practices-three-hidden-patterns

作者 52nlp

《HMM学习最佳范例三:隐藏模式》有27条评论
  1. 这很清晰的表示了‘进入’一个观察状态的所有概率之和为1,在上面这个例子中就是Pr(Obs|Sun), Pr(Obs|Cloud) 及 Pr(Obs|Rain)之和。(对这句话我有点疑惑?)

    这个地方是不是用先验概率去求后验概率。Pr(Obs|Sun)是先验概率,而我们要求的是Pr(Sun|Obs)和Pr(Cloud|Obs)等的概率

    [回复]

    吴国兵 回复:

    应该是作者弄错了。
    因为他后面还说了一句
    Notice that the sum of each matrix row is 1.

    [回复]

    jinjiao 回复:

    还不错

    [回复]

  2. 不好意思,这句话可能当时没说清我的疑惑在什么地方:
    我觉得“进入”一个观察状态的所有概率之和的并不一定等于1,譬如对于上面的那个例子,进入观察状态Dry的概率之和为Pr(Dry|Sun)+Pr(Dry|Cloud)+Pr(Dry|Rain)=0.9,即混淆矩阵的每一列之和并不一定等于1。

    原文如下:
    It should thus be clear that all probabilities `entering' an observable state will sum to 1, since in the above case it would be the sum of Pr(Obs|Sun), Pr(Obs|Cloud) and Pr(Obs|Rain).
    不知道是不是我的翻译和理解有误?

    [回复]

    guest 回复:

    我觉得,不应该用混淆矩阵中的概率来计算Pr(Dry|Sun)+Pr(Dry|Cloud)+Pr(Dry|Rain)

    [回复]

    guest 回复:

    混淆矩阵中的概率表示的是,在隐藏状态下出现观测值的概率,而不是在观察值条件下的出现隐藏状态的概率。

    [回复]

    林文 回复:

    这个理解并没有错误,我的理解:原文的意思应该是:Pr(Obs|Sun) , Pr(Obs|Cloud), Pr(Obs|Rain) 这三个都等于1.
    也就是每行的四个Observation之于某种天气的概率相加。

    [回复]

    52nlp 回复:

    仔细看了一下原文,确实是这个意思,文中已修改,谢谢。

  3. 前面说的是给定隐藏状态,那么条件概率应该是Pr(state|Sun)之和为一吧(把给定的天气指定为晴天)。原作者会不会搞错了???

    [回复]

    admin 回复:

    有这种可能性,估计作者想说的是给定隐藏状态后所有观察状态概率之和为一,也就是混淆矩阵的行之和为一;事实上他给的前向算法例子演示似乎也有点问题。不过当时自己不太敢肯定,所有写了有点疑惑,非常感谢!

    [回复]

    wen73 回复:

    是的,我觉得也是这样 作者弄反了。

    [回复]

  4. 这很清晰的表示了‘进入’一个观察状态的所有概率之和为1,在上面这个例子中就是Pr(Obs|Sun), Pr(Obs|Cloud) 及 Pr(Obs|Rain)之和。(对这句话我有点疑惑?)

    这里作者是把obs作为参数来用的吧,是说Sum_{Obs=Dry,Dryish,Damp,Soggy}(Obs|Sun) = 1;
    Sum_{Obs=Dry,Dryish,Damp,Soggy}(Obs|Cloud) = 1;
    Sum_{Obs=Dry,Dryish,Damp,Soggy}(Obs|Rain) = 1;

    博主的这个博客非常好阿,给了我很多帮助,以后多交流!

    [回复]

    52nlp 回复:

    非常感谢,欢迎多来这里交流!

    [回复]

    52nlp 回复:

    已引用,感谢注解。

    [回复]

  5. jiuren的计算式结果是对的,但是作者本身的意思我认为应该是:
    P( Dry|Sun)+P( Dry|Cloud)+P( Dry|Rain)=1
    P( Dryish|Sun)+P( Dryish|Cloud)+P( Dryish|Rain)=1
    P( Damp|Sun)+P( Damp|Cloud)+P( Damp|Rain)=1
    P( Soggy|Sun)+P( Soggy|Cloud)+P( Soggy|Rain)=1
    这样才更符合“‘进入’一个观察状态的所有概率之和为1”的说法。
    HMM学习中..... 🙂

    [回复]

    52nlp 回复:

    谢谢!

    [回复]

    DonYang 回复:

    同意simon的说法
    jiuren的结果也是1,不过应该不是作者的本意。这里面为什么作者只提条件概率产生的1这个结果而不提jiuren这种情况,有可能是接下来为贝叶斯规则埋伏笔吧,还没看完全文,猜测

    [回复]

    52nlp 回复:

    Thanks!

    [回复]

    蕾蕾 回复:

    如果你仔细看的话,在分母变成一样之后的一步,你会发现楼下的证明是错误的哦。我想作者应该弄错了。作者想让我们直接从图中看出概率和为1,其实概率学上的道理就是(例如)P( Sun|Dry) + P( Cloud|Dry) + P( Rain|Dry)=1.他说连线是隐藏状态生成观察状态,即箭头从底层指向观察层,也就是底层每一个状态发出的四条线概率和为1;同样从观察层每个状态发出的三条线所代表的概率和也为1.这的确是可以从图上直观看出来的。
    而若按照作者所说,Pr(Obs|Sun), Pr(Obs|Cloud) 及 Pr(Obs|Rain)在图上所代表的是底层的三个不同状态指向观察层同一状态的概率和,图中是看不出来为1的。根据先验后延定理也不会为1.
    作者会出错,大概是因为他没有在中间的连线标上方向吧,所以搞混了。从上往下指和从上往下指的概率可不一样哦。但是你注意他底层的图是有标注方向以区别的。
    另外检查矩阵的列之和也可以发现作者这样说不对呢。
    哈哈,欢迎大家指正。

  6. P( Dry|Sun)+P( Dry|Cloud)+P( Dry|Rain)=1的证明
    由贝叶斯公式得P( Dry|Sun) = P( Sun|Dry)*P(Dry)/P(Sun)
    P( Dry|Cloud) = P( Cloud|Dry)*P(Dry)/P(Cloud)
    P( Dry|Rain) = P( Rain|Dry)*P(Dry)/P(Rain)
    原来公式的左边等于
    P( Sun|Dry)*P(Dry)/P(Sun) + P( Cloud|Dry)*P(Dry)/P(Cloud) + P( Rain|Dry)*P(Dry)/P(Rain)
    把分母变成P(Sun)*P(Cloud)*P(Rain),可以看出上式变成
    P( Sun|Dry)*P(Sun)*P(Cloud)*P(Rain)/(P(Sun)*P(Cloud)*P(Rain))
    +P( Cloud|Dry)*P(Sun)*P(Cloud)*P(Rain)/(P(Sun)*P(Cloud)*P(Rain))
    +P( Rain|Dry)*P(Sun)*P(Cloud)*P(Rain)/(P(Sun)*P(Cloud)*P(Rain))
    分子上可以提出工因式P(Sun)*P(Cloud)*P(Rain),可以看出分子变成如下形式:
    P(Sun)*P(Cloud)*P(Rain)*(P( Sun|Dry) + P( Cloud|Dry) + P( Rain|Dry))
    =P(Sun)*P(Cloud)*P(Rain)
    所以分母、分子相同,综上所述证明了
    P( Dry|Sun)+P( Dry|Cloud)+P( Dry|Rain)=1

    [回复]

  7. ls的
    把分母变成P(Sun)*P(Cloud)*P(Rain),可以看出上式变成
    P( Sun|Dry)*P(Sun)*P(Cloud)*P(Rain)/(P(Sun)*P(Cloud)*P(Rain))
    +P( Cloud|Dry)*P(Sun)*P(Cloud)*P(Rain)/(P(Sun)*P(Cloud)*P(Rain))
    +P( Rain|Dry)*P(Sun)*P(Cloud)*P(Rain)/(P(Sun)*P(Cloud)*P(Rain))

    这是错的

    [回复]

  8. 同意jiuren。Obs就是观察值,Pr(Obs|Sun) = Pr(Obs|Cloud) = Pr(Obs|Rain) =1,可以参考duda的pattern classification 中HMM。

    [回复]

  9.  隐藏状态和观察状态之间的连接表示:在给定的马尔科夫过程中,一个特定的隐藏状态生成特定的观察状态的概率。这很清晰的表示了‘进入’一个观察状态的所有概率之和为1,在上面这个例子中就是Pr(Obs|Sun), Pr(Obs|Cloud) 及 Pr(Obs|Rain)之和。(对这句话我有点疑惑?)

    原文:
    The connections between the hidden states and the observable states represent the probability of generating a particular observed state given that the Markov process is in a particular hidden state. It should thus be clear that all probabilities `entering' an observable state will sum to 1, since in the above case it would be the sum of Pr(Obs|Sun), Pr(Obs|Cloud) and Pr(Obs|Rain).

    按照原文以及上下文, 我觉得作者的意思其实是 sum of Pr(Obs|Sun)=1 , Pr(Obs|Cloud)=1 and Pr(Obs|Rain)=1, 是个并列关系.
    还是同意 jiuren 的说法.

    [回复]

  10. "It should thus be clear that all probabilities `entering’ an observable state will sum to 1, since in the above case it would be the sum of Pr(Obs|Sun), Pr(Obs|Cloud) and Pr(Obs|Rain)."

    应该就是原作者搞错了吧~

    [回复]

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注