美文网首页Python机器学习
机器学习笔记 - 23. 隐马尔科夫模型HMM(讲师:邹博)

机器学习笔记 - 23. 隐马尔科夫模型HMM(讲师:邹博)

作者: blade_he | 来源:发表于2019-03-01 17:26 被阅读2次

    课前问答

    问:在主题模型中,PageRank,某个网页的重要度DP(i)是通过D(Pj)的重要度加权算出来的,那D(Pj)是如何计算的?
    答:D(Pj)的重要度是将所有的网页的重要度随机初始化,然后迭代,当能收敛的时候,就认为结束计算了。
    问:TextRank中的D(wj)是如何计算的?
    答:

    2019-02-20 14_50_37-机器学习第七期升级版.png
    我们想求取文本相似度的时候,需要求取单词的重要度,需要给定窗口。假定窗口长度为10,我们认为窗口中的词都是有链接的。如果一个词重复出现,则它们的链接会越来越多。用这个D(wi)的计算公式,就能计算词的重要度。有了词的重要度,就能够使用交集数目,计算两个句子之间的相似度。两个句子的相似度有了,可以利用加权,获取句子的重要程度。
    问:为什么感觉EM、LDA、HMM都有一个隐变量,这三个算法后面有什么暗中的联系或者共性么?为什么老师正好把这三个算法放在一块讲了?
    答:EM算法确实是带有隐变量的,这是一个通用求隐变量的模型。
    LDA,主题是我们观察不到的,也是隐变量。
    但是EM,LDA,HMM并不是刻意的课程安排在一起,不过EM之前的内容,都是x直接得到y的,比如:随机森林,决策树,GBDT,逻辑回归,都是给定样本建模的过程,带隐变量的部分,偏难一些,所以放在后面了。
    但是EM算法的一个实现版本:Baum-Welch算法,其实是对隐马尔科夫模型发展起到决定性的作用。 2019-02-20 17_13_37-机器学习第七期升级版.png
    即红框中的算法。
    而LDA也可以使用EM算法,进行参数学习。我们简单提了Gibbs采样,但是我们也提了变分EM算法,也是更快速的计算得来参数的。
    现在发展出了很多在线学习算法,能够遍历一遍,就能得到结果,如Gensim中的实现。
    这三个确实有一定联系,EM是算法基础,LDA和HMM都是两个贝叶斯网络,EM算法可以解决它们的求参问题。
    问:很多书或论文上都说数据进一步处理前要去趋势,去周期,这是必须的么?
    答:这要看时间序列,如果是的,确实需要做这个事情。

    主要内容

    2019-02-20 17_21_30-机器学习第七期升级版.png
    我们想象一下,比如做事情时,考虑Logistic回归,模型为:
    P(x|θ) = 1 / (1 + e-θ*x)得到的结果。这个是Logistic回归想解决的问题。
    于是会引出三个问题:
    1. 概率计算
      给定了某一个样本,X1,想计算X1属于哪一个类别,或者概率?
      在θ已知的前提,将X1代入公式即得到概率。
      2.参数估计
      我们得到(x1, y1), (x2, y2), ..., (xm, ym)共m对样本,希望通过这么多样本,计算参数θ?即参数的估计问题。
    2. 模型预测
      如果我们有一个估计的θ结果,对于新的样本,Xj,将其代入公式,即利用模型做预测,与概率计算差不多。
      所以说Logistic回归,也是根据概率计算,参数估计,模型预测去做的,而HMM也是这个套路,但会复杂一些。
      而且会花50%~60%的时间,用于说明概率计算。

    隐马尔科夫模型的用途

    中文分词,引申问题:实践问题应该如何建模?


    2019-02-20 17_40_43-机器学习第七期升级版.png 2019-02-21 14_21_40-机器学习第七期升级版.png

    先了解什么是马尔科夫模型

    以天气为例
    假定每天天气只有四种情况
    sunny
    windy
    rainy
    snow
    并且我们认为天气的情况是随机变量,如:
    x1, x2, x3, ..., xt
    我们认为第一天天气对第二天天气是有影响的;第二天天气对第三天天气也是有影响的,同理,构成一个链路
    x1 -> x2 -> x3 ... -> xt
    则,P(xi-1, xi+1|xi) = P(xi-1|xi) * P(xi+1|xi)
    这意味着,给定xi的时候,xi-1与xi+1是条件独立的。
    这其实是一种假设。
    根据这种模型,我们如果有足够多的数据,那么根据最后一天的情况,我们其实是可以预测之后的天气情况的。
    当然,这个模型有些简单。
    简单到了,这个模型拟合数据没那么多,我们希望将模型做复杂一些,做更细致的拟合。
    还是x有这四种可能天气,有第i天的天气状况,可能由某种隐含的因素λ决定的
    λi -> xi
    这些因素,比如气压,气温,含水量,云高等等。
    我们这里只考虑气压这种情况,气压包括:
    high
    medium
    low
    这三种情况,高气压大概率引起天晴,低气压大概率引起下雨,即气压与天气是有相关性的,并且我们认为第i-1天的气压会影响第i天的气压,而气压同时影响到同一天的天气状况。
    即气压之间存在着链路,而天气之间也存在着链路,形成下面的样子。

    2019-02-21 15_45_33-机器学习第七期升级版.png
    而λ,即气压这条链路,构成了马尔科夫模型,而马尔科夫模型隐藏在我们观测值:天气之内的。
    即我们能够观察到天气的情况,但是观察不到气压的情况。
    气压这条链路,所构成的马尔科夫模型,因为是隐藏的,所以又被称为隐马尔科夫模型,可以简写为"HMM"
    天气的观测随机序列以及对应隐藏的气压状态可能为:
    状态:H L H L H M M L L M H L L~~~~
    观测:S S R R W S S S S W W R R ~~~~~

    课题问答

    如果有多个隐变量,在EM算法这种处理隐变量的算法里是怎么处理的呢?
    答:一样可以求解。

    2019-02-21 15_55_35-机器学习第七期升级版.png
    我们可以观测到a也可以观测到v,我们想得到其他节点,其发生概率,或者条件概率或者估计参数,其实就是我们建立的贝叶斯网络,也可以使用EM算法,一点点求:先得到总体的趋势,总体的每一个节点集合上的值,再得到每个具体的值。这个并不是深度学习,因为每个节点只是随机变量,与神经网络每个节点是神经元不同。
    而贝叶斯网络很有可能与深度学习结合,因为贝叶斯网络是深度学习火爆之前,很重视的一个方向。
    问:有没有某种办法确定隐变量是否存在呢?而不是事先假定隐变量存在?
    答:这个没法确定,因为我们没有办法判定这种建模模式是否适合。只是因为处理过程中,发现第一好计算,第二有一定合理性,能够做一些预测,而且简单,就这么做了。其实到底是不是这样,很难讲。隐马尔科夫模型,是属于非常简单的贝叶斯网络了。
    问:明面上的样本分布模型和HMM有关么?
    答:如图,进行解释: 2019-02-21 16_04_43-机器学习第七期升级版.png
    z1是未知的,x1与z2其实是相关的,不独立,z2与x2显然不独立,x1与x2自然也不独立。即建模方式,x1, x2, ..., xn+1其实是结构化数据,并不是随机序列。
    所以说,凡是看到空间连续,时间连续的数据,就有可能尝试用隐马尔科夫模型做一些预测。
    所以HMM的使用场景与之前提到的不一样,包括LDA,因为LDA也是认为样本是独立的

    HMM的确定

    2019-02-21 16_09_15-机器学习第七期升级版.png

    依然以天气(预测)与气压(状态)作为场景:


    2019-02-21 16_12_57-机器学习第七期升级版.png

    任何给定一个天气,比如气压: H, M, L,三种情况,下图说明前一天与今天的气压概率分布,而这个气压概率分布就是状态转移概率矩阵,其实就是隐状态之间的相互转移概率矩阵。


    2019-02-21 18_00_19-机器学习第七期升级版.png
    之前所述的阶层之间的变化,就是马尔科夫模型,它想做的就是状态转移,形成的状态转移概率矩阵
    2019-02-22 16_54_27-机器学习第七期升级版.png

    然后看第二种,当今天知道气压的时候,第i天的天气状况是什么呢?

    相关文章

      网友评论

        本文标题:机器学习笔记 - 23. 隐马尔科夫模型HMM(讲师:邹博)

        本文链接:https://www.haomeiwen.com/subject/wigcyqtx.html