机器学习(10)隐马尔可夫模型

“多一条公式,少一半读者”--霍金
饮水不忘挖井人,感谢知乎上关于隐马尔可夫的回答。
这里分两部分,第一部分是隐马尔可夫模型“像”什么,第二部分是实际应用中,隐马尔可夫模型的三类问题。
第一部分:
有一款游戏,里面有个角色,职业是战士,战士有三种状态:正常状态,狂暴状态,防御状态。战士战斗只有两种动作:平A和格挡。
正常状态:平A出现暴击的概率为20%,格挡概率为10%
狂暴状态:平A出现暴击的概率为40%,格挡概率为7%
防御状态:平A出现暴击的概率为5%,格挡概率为25%
三种状态之间是随机切换,比如,在t1时间时,战士是正常状态,t2状态时,战士可以保持正常状态,也可以是狂暴状态或者防御状态,这里先假设三种状态转换的概率都为33.3%,也就是下一个时间段可能出现的状态的几率是一样的。
那么问题来了,一天,这个战士和boss肉山大魔王战斗,战士出现暴击或者成功闪避时都只有出现暴击字样或者闪避字样。战斗一开始,战士平A了大魔王3下,均为暴击,问:现在战士处于什么状态?过了一会,战士连续格挡掉大魔王的攻击,问:现在战士处于什么状态?
很大几率你们会回答,一开始战士处于狂暴状态,过一会,战士处于防御状态。
你看,你们已经知道隐马尔可夫模型“像”什么了。
隐马尔可夫有四个东西,状态(如上面的3种状态),状态转换概率(如上面的33.3%),行为(如上面的平A和格挡),每种状态对应不同行为的概率(如每个状态对应平A和格挡的概率都不一样)。
隐马尔可夫就是,给你看一堆行为(不断的平A和格挡),然后你去猜测,这个行为到底是哪个状态下的行为,不同状态行为下这个行为的概率是多少。
于是乎,就有了隐马尔可夫的三类问题。
第二部分:
问题1:已知状态类型,状态转换概率,每种状态对应行为的概率,给出行为序列去求行为对应的状态。这个问题就是上面场景中,玩家看战士出现暴击和格挡去猜战士那时候处于什么状态。该问题的解法是:Viterbi Algo算法,比如
战士第一个行为-暴击
然后你猜这个时候战士处于什么状态,正常状态暴击率为20%,狂暴状态暴击率为40%,防御状态暴击为5%,明显狂暴状态下暴击的概率比较高,那么第一发平A时,战士处于狂暴状态。
战士第二行为-格挡
防御状态出现格挡的概率比较高,所以我们确定战士第二行为处于防御状态
不是在战士第一行为时一定是狂暴状态,而是我们只是选出概率最大状态。
问题2:
已知状态类型,状态转换概率,每种状态对应行为的概率,给出行为序列去求行为对应的概率。有一天,战士继续去打大魔王,发现很少出暴击,于是玩家怀疑是不是自己没冲钱买装备,游戏产商故意把自己暴击率的数值改了。该问题的解法是:前向算法。
先算出正常情况下的暴击概率,再和现实对比。
1,算出3种状态下的暴击概率相加:33.3%×20%+33.3%×40%+33.3%×5%
2,每出现一个行为都用上面式子概率求和一次
...
最后与现实数据对比
问题3:
什么都不知道,只给你看行为,让你从暴击和闪避概率中反推出整个模型,第三类问题很复杂,我就不不谈了。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值