故事版隐式马尔科夫模型

上课时突然想到一个非常有趣的故事

如果能帮到你,我会非常的开心
这里只写了一个decoding方法 ,其他方法都可以用这个故事转化
如果有错漏 欢迎指正

故事开始

想象你领居家有个小孩,他非常顽皮。你是刚搬到这里的,你不怎么了解小孩,也不怎么了解这家邻居。
这天你下班听见隔壁的小孩在哭喊“我再也不敢了,555555555”,你的家人说隔壁的大哥又打他们家小孩了,这都连着打了第三天了。这个时候你会不会好奇小孩是因为什么被打的。
现在开始分析,首先观察转态序列为 [挨打,挨打,挨打] 这就是隐式马尔科夫中的观察序列的 O 1 , O 2 , O 3 O_{1},O_{2},O_{3} O1,O2,O3
那么我们现在推断这个小孩这三天有没有干坏事 因为我们忙着上班所以当然不知道小孩这三天有没有干坏事了,这里先用 S 1 , S 2 , S 3 S_{1},S_{2},S_{3} S1,S2,S3来表示。
如果小孩的父亲是个非常好的人,小孩不干坏事就不会打他,那么我们可以将这个信息用一个表存起来 记作矩阵B

B没打
干坏事100%0%
没干坏事0100%

这个时候很容易推断这几天小孩干没干坏事对吧, S 1 , S 2 , S 3 S_{1},S_{2},S_{3} S1,S2,S3=干坏事,干坏事,干坏事 也就是我们100%确定这小孩每天都干坏事了。

但是真实情况往往并不是这样的,他的父亲也可能是个酒鬼,那么这个表格就变成了这样

B没打
干坏事100%0%
没干坏事50%50%

也就是说他干坏事了他的父亲一定打他,没干坏事时有可能打他也可能不打他
这个情况下我们就不能100%肯定小孩这三天有没有干坏事了

假设情况1
小孩三天的坏事记录为 否否否
这种情况的概率很好算 0.5 * 0.5 * 0.5 = 0.125 = 12.5%
也就是第一天没干坏事挨打的概率,乘以第二天没干坏事挨打的概率乘以第三天的

假设情况2
小孩三天的坏事记录为 是否否
概率为 1 * 0.5 * 0.5 = 0.25 = 25%

假设情况略
······

那么我们只要算出所有情况的概率,最高概率的假设就是我们的推测值。

我们这里只考虑了,父亲的情况,却没有考虑小孩,如果我们了解小孩是否聪明,例如聪明的小孩在干完坏事时会短暂的做个乖孩子 即今天做坏事后,明天接着做坏事的概率很低。有了更多的信息我们就能做出更好更准确的判断了
我们将小孩干坏事后是否会接着干存在一个表格里 对应一个矩阵A

A干坏事没干坏事
干坏事30%70%
没干坏事5050%

矩阵A的第一行代表了前一天干坏事时,后一天接着干坏事的概率为30%,后一天不干坏事的概率为70%(这娃还不算太傻)
第二行代表他前一天没干坏事时,后一天做不做坏事的概率都是50%

再引入一个关于小孩的信息 π 代表了随机某一天一天小孩干坏事的概率是多少
假设小孩很调皮,那么他对应的π为
π 干坏事 = 0.7 , π 不干坏事 = 0.3 π_{干坏事}=0.7 ,π_{不干坏事}=0.3 π干坏事=0.7,π不干坏事=0.3

这个时候我们有的信息就非常多了,我们可以更准确的判断小孩三天有没有干坏事了

B没打
干坏事100%0%
没干坏事50%50%

需要的信息汇总一下
小孩是否乖巧π (随机某天小孩干坏事的概率)
小孩是否聪明的矩阵A(小孩干坏事后会不会当乖小孩)
小孩的父亲是否是个好爸爸的矩阵B(小孩干坏事和不干坏事时是否动粗的概率)

以及我们已经知道的小孩挨了三天打的观察序列O [挨打,挨打,挨打]

跟上面的流程一样
假设情况1
小孩三天的坏事记录为 否否否

首先第一天没干坏事 对应于π中的概率 π 不干坏事 = 0.3 π_{不干坏事}=0.3 π不干坏事=0.3
然后要乘以他第一天没干坏事时,他爸打他的概率0.5,所以他第一天没干坏事还挨打的概率为0.5 * 0.3 = 0.15 = 15%

第二天小孩没干坏事的概率对应于A中的 A 2 , 2 = 0.5 A_{2,2} = 0.5 A2,2=0.5,他没干坏事爸爸打他的概率0.5
所以第二天没干坏事挨打的概率为0.5 * 0.5 = 0.25 = 25%

第三天同理为0.25
将三个概率累乘就得到了假设1的概率为 0.15 * 0.25 * 0.25 = 0.009375 = 0.93%

可以看出虽然他爸爸不是那么好,但连续三天冤枉坏小孩的概率都不到百分之一

假设情况2
这次我们换个更复杂的
小孩三天的坏事记录为 是否是

首先第一天干坏事 对应于π中的概率 π 干坏事 = 0.7 π_{干坏事}=0.7 π干坏事=0.7 再乘以该坏事父亲打的概率100%
第一天的概率0.7

第二天没干坏事 对应于A中的 A 1 , 2 = 0.7 A_{1,2} = 0.7 A1,2=0.7 再乘以没干坏事被父亲打的概率50%
第二天的概率0.35

第三天干坏事 对应A中的 A 1 , 2 = 0.5 A_{1,2} = 0.5 A1,2=0.5 再乘以干坏事被父亲打的概率100%
第三天的概率0.5

假设情况2 出现的可能性为 0.7 * 0.35 * 0.5 = 0.1225 = 12.25%

假设情况略
···············

所以我们可以算出每一种假设的概率,找出最高的那一个就是我们的推测结果

而这个完整的推测过程就是马尔科夫链的decoding过程

这个故事中有几个点需要注意
1.现实生活中的问题,ABπ这三个概率很可能并不独立,即父亲的好坏很可能决定这小孩干坏事的概率,也跟小孩是否连续犯错有关,又或者有的小孩会非常叛逆,挨打后会更可能犯错,而我们作为外人对他们进行观察时,是无法知道这之中的微妙关系的。所以更好的办法是不要去关心更多的细枝末节,而是通过能获得的数据做出推断。

2.你都学这么深奥的知识了,要是还是只能用武力屈服小孩,那你也就太low了,别学了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值