传说中的Markov"不过如此”

  因为看一篇题为 Passive Measurement of Interference in WiFi Network with Application in Misbehavior Detection的文章,学习了马尔科夫模型。之前一直主观觉得马尔科夫模型太难,看过之后其实不过如此,恰恰相反,这个模型本身还简化了原本复杂的概率网络。《模式识别》对马尔科夫和隐马尔可夫介绍得非常详尽易懂。马尔科夫模型是一个非常useful的工具。

 

几个重要概念:

马尔可夫假设:在一个随着时间观测到的对象序列中,T时刻观测到某对象的概率只和T-1时观测到的对象有关系。

马尔科夫模型的表示:

  S:状态转换图中的状态集合

  A:状态转移概率矩阵,aij表示从状态i迁移到状态j的概率

  B:bij表示在状态i上观测到对象vj的概率

  p:初始状态上观测到各值的概率,是一个向量

马尔科夫的三个核心问题:

  估值问题(evaluation): 已知markov模型,和序列V,求观测到该序列的概率

  解码问题(decoding):已知模型和t时刻观测到的Vt,求最可能观测到的序列

  学习问题(Learning):已知状态集合S和观测序列V,求模型的各参数A,B,p

 

下面是evaluation代码(解码过程类似),前向算法

 

%% HMM model: A, B, initialstate, finalstate, 
%state transition propability
A=[1    0   0   0; 
   0.2  0.3 0.1 0.4;
   0.2  0.5 0.2 0.1;
   0.8  0.1 0.0 0.1
   ];
%b_jkv(t): v(t)'s occupation probability when the current state is w_j in time t
B=[1    0   0   0   0;
   0    0.3 0.4 0.1 0.2;
   0    0.1 0.1 0.7 0.1;
   0    0.5 0.2 0.1 0.2
    ];

final_state=1; %the final state
init_state=2; %the initial state


%% observed sequence
V=[2,4,3,1]; %visable sequence, v1 is the empty visable symbol.
% # of states
c=size(A);
% # of time slots
T=length(V);

%% HMM forward algorithm : for evaluation problem of HMM: give a HMM model, calculate P(V)
a=zeros(c, T);
for t=1:T
        for j=1:c
            if t==1
                a(j, t)=1*A(init_state, j)*B(j, V(t));
            else
                sum=0;
                for i=1:c
                    sum=sum+a(i, t-1)*A(i, j);
                end
                a(j, t) = B(j, V(t))*sum;
            end
        end
end
a(1, T)

学习问题:在MATLAB中集成了hmmestimate等函数,可以完成各种问题的解决。

 

summary: markov其实大致分为两部分,一部分是理解状态图中的概率迁移,以及markov假设;一部分是具体实现,由于markov问题的高复杂度,才出现了前向、后向算法,而那些算法的目的只是在多项式复杂度内进行求解。

 

 

posted @ 2013-10-23 15:39  chng  阅读(383)  评论(0编辑  收藏  举报
BackToTop