美文网首页
AI产品经理必修-揭开算法的面纱(隐含马尔可夫)

AI产品经理必修-揭开算法的面纱(隐含马尔可夫)

作者: rosy_dawn_f742 | 来源:发表于2020-05-23 17:59 被阅读0次

    相信只要是涉足人工智能领域,你都会听到这样一个神秘的名字-隐含马尔可夫模型。是的,看了一圈文章和资料后,除了知道马尔可夫是个聪明绝顶的人,其他的就啥也不知道了。

    正式开讲之前,先大概了解一下,这个算法有哪些主要的应用场景。

    一个词概括,进行预测。

    20世界80年代末李开复坚持采用隐马尔可夫模型的框架,成功的开发了世界上第一个大词汇量连续语音识别系统sphinx。接下来,隐马尔可夫模型陆续成功地应用于机器翻译、拼写纠错、手写体识别、图像处理、基因序列分析等领域。近20年来,它广泛应用于股票预测和投资。

    今天,我想抛弃那些眼花缭乱的数学公式,去看看隐含马尔可夫模型到底是什么?怎么用?

    一、隐含马尔可夫模型是什么?

    我们还是分成三个阶段来了解。

    【概念一】马尔可夫假设

    随机过程中各个状态st的概率分布,只与它前一个状态st-1有关

    举一个例子,我们可以把S1 , S2,S3...St...看做北京每天的最高气温,这里面的每个状态St都是随机的。理论上,任何一天的最高气温St取值都可能和这段时间以前的最高气温是相关的。

    马尔可夫这个大神为了简化问题,做出了如上图的简化的假设。回到上面的例子,第二天的最高气温只跟昨天有关而与其他日期没有任何关联。

    【概念二】马尔可夫链

    符合马尔可夫假设的随机过程称为马尔可夫过程,也称为马尔可夫链。

    在这个马尔可夫链中,四个圈表示四个状态,每条边表示一个可能的状态转换,边上的权值是转移概率。

    例如,某个时刻t的状态St是m2,则下一个时刻St+1=m3的概率是0.6,用数学符号表示是P(St+1=m3|St=m2)=0.6。

    把这个马尔可夫链想象成一台机器,它随机选择一个状态作为初始状态,然后按照上述规则随机选择后续状态。结果可能如下:

    S1=m1  S2=m2   S3=m3  S4=m4

    S1=m2  S2=m4    

    S1=m3  S2=m3   S3=m4  

    ...         ...        ...

    这样经过一段时间的运转,就会产生一个状态序列S1,S2,S3... St。我们可以数出mi出现的次数,以及mi转换到mj的转移概率。基于马尔可夫假设,每一个状态只与前一个状态相关,例如从m3转移到m4,不论在此之前是怎么进入m3,这个概率都是0.3。

    【概念三】隐含马尔可夫模型

    隐马尔可夫模型是上述马尔可夫链的一个扩展:任一时刻t的状态st是不可见的。所以观察者没法通过观察到一个状态序列s1,s2,s3,…sT-1来推测转移概率等参数。但是,隐马尔可夫在每个时刻t会输出一个符号ot,而且ot和st相关而且仅和st相关。这个被称为独立输出假设。隐马尔可夫模型结构如下:

    其中包含的状态s1,s2,s3,s4是一个典型的马尔可夫链。鲍姆把这种模型称为“隐含”马尔可夫模型。

    那么,问题来了,什么是隐患状态?从马尔可夫链中,我们看到的都是可见状态啊。这个问题真的困扰了我很久,我找了大量的资料,发现还是这样一个经典例子能够解释得清楚,请看:

    假设我手里有三个不同的骰子。第一个骰子是我们平常见的骰子(称这个骰子为D6),6个面,每个面(1,2,3,4,5,6)出现的概率是1/6。第二个骰子是个四面体(称这个骰子为D4),每个面(1,2,3,4)出现的概率是1/4。第三个骰子有八个面(称这个骰子为D8),每个面(1,2,3,4,5,6,7,8)出现的概率是1/8。

    现在,我们开始掷骰子,得到如下结果:

    看出来了吧?什么是隐含状态?掷出来的数字是可见的,但是每次取哪个骰子,我们是不是不知道?

    回到隐含马尔可夫模型,符号ot就是我们掷出来得数字(1,2,3,4,5,6,7,8),隐患状态st就是我们掷得骰子(D6,D4,D8)。


    【总结】

    现在,我们以掷骰子为例,来总结一下隐患马尔可夫模型得几个构成要素:

    1)可见状态集:D6的可见状态集(1,2,3,4,5,6),D4的可见状态集(1,2,3,4),D8的可见状态集(1,2,3,4,5,6,7,8)

    2)隐患状态集:上图中的隐含状态集为D6,D8,D8,D6,D4...

    3)初始(隐含)状态转移概率:比如,第一次拿到D6,D4和D8的概率分别是0.1,0.4,0.5。

    4)(隐含)状态转移概率:比如,我们可以这样定义,D6后面不能接D4,D6后面是D6的概率是9,是D8的概率是0.1。

    5)(隐含状态至可见状态的)输出概率:就我们的例子来说,六面骰(D6)产生1的输出概率是1/6。产生2,3,4,5,6的概率也都是1/6。我们同样可以对输出概率进行其他定义。比如,我有一个被赌场动过手脚的六面骰子,掷出来是1的概率更大,是1/2,掷出来是2,3,4,5,6的概率是1/10。

    二、隐含马尔可夫模型能解决什么问题?

    通用地讲,围绕HMM有三种类型的问题

    问题1:给定一个模型,如何计算某个特定的输出序列的概率。(概率计算问题)

    问题2:给定一个模型和某个特定的输出序列,如何找到最可能产生这个输出的状态序列。(解码,预测问题)

    问题3:给定足够的观测数据,如何估计隐马尔可夫模型的参数。(非监督学习方法)

    目前来说,第二种问题最常用,【中文分词】【语音识别】【新词发现】【词性标注】都有它的一席之地。

    隐含马尔可夫模型的应用

    讲到这,隐马尔可夫模型的理论定义和三个问题都介绍完毕,新问题又来了,这个模型到底有什么用?

    接下来请看一下典型的通信系统是什么样子的,想必“隐马尔可夫模型有什么用”这个问题便不攻自破了。

    1)发送者(人或者机器)发送信息时,需要采用一种能在媒体中(比如空气、电线)传播的信号,比如语音或者电话线的调制信号,这个过程就是广义上的编码

    2)然后通过媒体传播到接收方,这个过程是信道传输

    3)在接收方,接收者(人或者机器)根据事先约定好的方法,将这些信号还原成发送者的信息,这个过程是广义上的解码

    其中S1,S2,S3,…表示信息源发出的信号,比如手机发送的信号。O1,O2,O3,…是接收器(比如另一部手机)接收到的信号。通信中的解码就是根据接收到的信号O1,O2,O3,…,还原出发送的信号S1,S2,S3,…。

    这跟自然语言处理又有什么关系?不妨换个角度来考虑这个问题,所谓的语音识别,就是听者(机器)去猜测说话者要表达的意思。这就像通信系统中,接收端根据收到的信号去还原出发送端发出的信号。

    在通信中,如何根据接收端的观测信号O1,O2,O3,…来推测信号源发送的信息S1,S2,S3,…呢?只需要从所有的源信息中找到最可能产生出观测信号的那一个信息。

    同样,很多自然语言处理的应用也可以这样理解。在从汉语到英语的翻译中,说话者讲的是汉语,但是信道传播编码的方式是英语,如果利用计算机,根据接收到的英语信息,推测说话者的汉语意思,就是机器翻译。同样,如果根据带有拼写错误的语句推测说话者想表达的正确意思,那就是自动纠错。这样,几乎所有的自然语言处理问题都可以等价成通信的解码问题。 

    相关文章

      网友评论

          本文标题:AI产品经理必修-揭开算法的面纱(隐含马尔可夫)

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