互联网 · 机器学习 · 产品分析
关注SeekJoy觅乐一网打尽
笔记为个人理解后的思想,避免过于专业的术语,如果需要详细的定义请点击这里或者参考李航老师的《统计机器学习》。
1.隐马的基本概念
隐马模型是一个的。
主要包含两个序列:和。中的每一个“状态”对应一个中的一个“观测”。(注意前面提到过,这个序列是关于时序的,所以是严格按照时间先后顺序的)。
“状态”这玩意我们是看不到的(即隐藏的),我们只能看到由其生成的“观测”结果。所以我们希望从“观测”去研究这个隐藏的“状态”,所以一般问题中的已知条件中只有
O
O
,希望用
O
O
来研究
I
I
。
· 各种可能的我们用集合
Q
Q
表示,各种可能的我们用集合
V
V
来表示。
· 从一个状态转换到另一个状态,也是以一定的概率进行转换的,这就是,用
A
A
表示。在不同状态下所对应的观测概率,叫做,用
B
B
表示。第一天的观测结果来自各个状态的概率(即状态概率初始化向量)用
π
π
表示。
· 用I来表示,其对应的用
O
O
表示。
2.举个栗子
有点抽象了吧?这里举个稍微通俗的例子,讲给没有基础的朋友听,都说能听懂。
状态转移矩阵
A
A
我举个例子:有一个精神分裂患者,他有三个状态:‘精神正常’、‘精神异常’、‘半正常半异常’。
如果他今天精神正常,那么第二天精神状况会怎样呢?假设他今天正常,第二天正常、异常、半正常的概率假设是[0.5, 0.2, 0.3];如果他今天精神就异常了,那么第二天正常、异常、半正常的概率假设是[0.1, 0.7, 0.2];如果今天半正常,第二天正常、异常、半正常的概率假设是[0.5, 0, 0.5]。
这种从一个“状态”转移到另一个“状态”的概率叫做“状态转移概率”。
我们可以写成矩阵的形式,这个就是:
状态转移矩阵
观测概率矩阵
B
B
假设这个人每天都要给自己做饭:精神正常时他做饭的概率是0.9(不做饭的概率是0.1,比如万一他有其他急事耽误做饭了呢);而在精神异常的状况下,他做饭的概率是0.1(不做饭的概率0.9,毕竟发疯的时候哪还知道做饭这回事);精神半正常半异常时做不做饭的概率对等都为0.5。
直观理解就是:在不同的状态下,做同样事的概率是不同的。做饭这件事就是可以直观看到的(“观测”是可见的),而精神状态我们很难用肉眼来判断(“状态”是隐藏的)。
把不同“状态”下的各种“观测”出现的概率携程矩阵的形式,这个就是:
观测概率矩阵
初始概率向量
π
π
我们希望初始化第一天,在这个例子中就是第一天他精神状况的概率,假设是
π=
0.3,0.3,0.4
π=0.3,0.3,0.4
即在观测的第一天当天,他精神有30%的可能是正常和不正常的,40%的可能是半正常。
当然这些数据都是我随便编的,假设的而已,真实的实际数据需要根据统计得到(这里不讨论,就假装是我统计得到的已知条件)。
A
A
、
B
B
、
π
π
是HMM的三要素
A
A
、
B
B
、
π
π
被称为”隐马尔科夫模型的三要素“!
即可用
λ=
A,B,π
λ=A,B,π
来描述一个HMM模型,这三者是构成HMM的必要元素!后续问题也是针对这三个要素展开。
3. HMM的三类基本问题
到现在,我们已知的信息有:
π
π
假设有一天他的家人“观测”了他三天的做饭情况分别是(这就是,是可以直接看到的)。但是状态序列是隐藏的,我们也不知道状态序列
I
I
到底是怎样的组合,即无法得知这个人这三天的精神状况分别是怎样。
这时候提出HMM主要的三类基本问题:
问题1:概率计算问题
给定了
λ=
A,B,π
λ=A,B,π
和观测序列
O
O
之后,想要计算针对这个人(即在
λ=
A,B,π
λ=A,B,π
的情况下),观测序列
O
O
出现的概率是多少?
在这个精神病的例子中,观测任意三天结果是
O
O
=[做饭,不做饭,做饭]的概率是多少?即[第一天做饭,第二天没有做饭,第三天又开始做饭]这个事件的概率
P={O
λ}
P={Oλ}
是多少。概率计算的方法主要有“前向算法”和“后向算法”。
问题2:学习问题
给定一个观测序列
O
O
,估计这个模型
λ=
A,B,π
λ=A,B,π
参数。
在这个例子中,给定一个观测到的序列
O
O
=[做饭,不做饭,做饭],我们来反推这个精神病人的
A
A
、
B
B
、
π
π
分别最可能是多少的。这也就是极大似然估计,并且这个地方会用到机器学习十分重要的算法——“EM算法”。
问题3:预测问题
给定了
λ=
A,B,π
λ=A,B,π
和观测序列
O
O
之后,这个
O
O
对应的状态序列
I
I
最可能是什么(即概率最大的I)。
预测问题也是我们比较关心的问题,即知道病人的观测序列是
O
O
=[做饭,不做饭,做饭],想知道他这三天每天最可能的精神状态(即隐藏的状态序列
I
I
)是什么,总不可能随便乱猜他每天正常不正常吧。解决这个问题经典算法是“维比特算法”。
领取专属 10元无门槛券
私享最新 技术干货