HMM工具箱命令使用说明.docx
- 文档编号:11916924
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:25
- 大小:88.46KB
HMM工具箱命令使用说明.docx
《HMM工具箱命令使用说明.docx》由会员分享,可在线阅读,更多相关《HMM工具箱命令使用说明.docx(25页珍藏版)》请在冰点文库上搜索。
HMM工具箱命令使用说明
HOWTOUSETHEHMMTOOLBOX(MATLAB)
一、离散输出的隐马尔科夫模型(DHMM,HMMwithdiscreteoutputs)
最大似然参数估计EM(BaumWelch算法)
Thescriptdhmm_em_demo.mgivesanexampleofhowtolearnanHMMwithdiscreteoutputs.LettherebeQ=2statesandO=3outputsymbols.Wecreaterandomstochasticmatricesasfollows.
O=3;
Q=2;
prior0=normalise(rand(Q,1));
transmat0=mk_stochastic(rand(Q,Q));
obsmat0=mk_stochastic(rand(Q,O));
Nowwesamplenex=20sequencesoflengthT=10eachfromthismodel,touseastrainingdata.
T=10; %序列长度
nex=20; %样本序列数目
data=dhmm_sample(prior0,transmat0,obsmat0,nex,T);
Heredatais 20x10.Nowwemakearandomguessastowhattheparametersare,
prior1=normalise(rand(Q,1));%初始状态概率
transmat1=mk_stochastic(rand(Q,Q));%初始状态转移矩阵
obsmat1=mk_stochastic(rand(Q,O));%初始观测状态到隐藏状态间的概率转移矩阵
andimproveourguessusing5iterationsofEM...
[LL,prior2,transmat2,obsmat2]=dhmm_em(data,prior1,transmat1,obsmat1,'max_iter',5);
%prior2,transmat2,obsmat2为训练好后的初始概率,状态转移矩阵及混合状态概率转移矩阵
LL(t)isthelog-likelihoodafteriterationt,sowecanplotthelearningcurve.
序列分类
Toevaluatethelog-likelihoodofatrainedmodelgiventestdata,proceedasfollows:
loglik=dhmm_logprob(data,prior2,transmat2,obsmat2) %HMM测试
Note:
thediscretealphabetisassumedtobe{1,2,...,O},whereO=size(obsmat,2).Hencedatacannotcontainany0s.
Toclassifyasequenceintooneofkclasses,trainupkHMMs,oneperclass,andthencomputethelog-likelihoodthateachmodelgivestothetestsequence;ifthei'thmodelisthemostlikely,thendeclaretheclassofthesequencetobeclassi.
Computingthemostprobablesequence(Viterbi)
FirstyouneedtoevaluateB(i,t)=P(y_t|Q_t=i)forallt,i:
B=multinomial_prob(data,obsmat);
Thenyoucanuse
[path]=viterbi_path(prior,transmat,B)
二、具有高斯混合输出的隐马尔科夫模型(GHMM,HMMwithmixtureofGaussiansoutputs)
MaximumlikelihoodparameterestimationusingEM(BaumWelch)
Letusgeneratenex=50vector-valuedsequencesoflengthT=50;eachvectorhassizeO=2.
O=2;
T=50;
nex=50;
data=randn(O,T,nex);
NowletusefitamixtureofM=2GaussiansforeachoftheQ=2statesusingK-means.
M=2;
Q=2;
left_right=0;
prior0=normalise(rand(Q,1));
transmat0=mk_stochastic(rand(Q,Q));
[mu0,Sigma0]=mixgauss_init(Q*M,reshape(data,[OT*nex]),cov_type);
mu0=reshape(mu0,[OQM]);
Sigma0=reshape(Sigma0,[OOQM]);
mixmat0=mk_stochastic(rand(Q,M));
Finally,letusimprovetheseparameterestimatesusingEM.
[LL,prior1,transmat1,mu1,Sigma1,mixmat1]=...
mhmm_em(data,prior0,transmat0,mu0,Sigma0,mixmat0,'max_iter',2);
SinceEMonlyfindsalocaloptimum,goodinitialisationiscrucial. Theinitialisationprocedureillustratedaboveisverycrude,andisprobablynotadequateforrealapplications... Click here forareal-worldexampleofEMwithmixturesofGaussiansusingBNT.
Whattodoifthelog-likelihoodbecomespositive?
Itispossibleforp(x)>1ifp(x)isaprobabilitydensityfunction,suchasaGaussian.(Therequirementsforadensityarep(x)>0forallxandint_xp(x)=1.)Inpracticethisusuallymeansyourcovarianceisshrinkingtoapoint/deltafunction,soyoushouldincreasethewidthoftheprior(see below),orconstrainthematrixtobesphericalordiagonal,orclampittoalargefixedconstant(notlearnitatall).Itisalsoveryhelpfultoensurethecomponentsofthedatavectorshavesmallandcomparablemagnitudes(usee.g.,KPMstats/standardize).
Thisisawell-knownpathologyofmaximumlikelihoodestimationforGaussianmixtures:
theglobaloptimummayplaceonemixturecomponentonasingledatapoint,andgiveit0covariance,andhenceinfinitelikelihood.OneusuallyreliesonthefactthatEMcannotfindtheglobaloptimumtoavoidsuchpathologies.
Whattodoifthelog-likelihooddecreasesduringEM?
SinceIimplicitlyaddapriortoeverycovariancematrix(see below),whatincreasesisloglik+log(prior),butwhatIprintisjustloglik,whichmayoccasionallydecrease.Thissuggeststhatoneofyourmixturecomponentsisnotgettingenoughdata.Tryabetterinitializationorfewerclusters(states).
Whattodoifthecovariancematrixbecomessingular?
Estimatesofthecovariancematrixoftenbecomesingularifyouhavetoolittledata,oriftoofewpointsareassignedtoaclustercenterduetoabadinitializationofthemeans.Inthiscase,youshouldconstrainthecovariancetobesphericalordiagonal,oradjusttheprior(see below),ortryabetterinitialization.
HowdoIaddapriortothecovariancematrix?
BuriedinsideofKPMstats/mixgauss_Mstepyouwillseethatcov_priorisinitializedto0.01*I.ThisisaddedtothemaximumlikelihoodestimateaftereveryMstep.Tochangethis,youwillneedtomodifythemhmm_emfunctionsoitcallsmixgauss_Mstepwithadifferentvalue.
Sequenceclassification
Toclassifyasequence(e.g.,ofspeech)intooneofkclasses(e.g.,thedigits0-9),proceedasintheDHMMcaseabove,butusethefollowingproceduretocomputelikelihood:
loglik=mhmm_logprob(data,prior,transmat,mu,Sigma,mixmat);
Computingthemostprobablesequence(Viterbi)
FirstyouneedtoevaluateB(t,i)=P(y_t|Q_t=i)forallt,i:
B=mixgauss_prob(data(:
:
ex),mu,Sigma,mixmat);
wheredata(:
:
ex)isOxTwhereOisthesizeoftheobservationvector.Finally,use
[path]=viterbi_path(prior,transmat,B);
三、具有高斯输出的HMM
ThisisjustlikethemixtureofGaussianscase,exceptwehaveM=1,andhencethereisnomixingmatrix.
OnlineEMfordiscreteHMMs/POMDPs
Forsomeapplications(e.g.,reinforcementlearning/adaptivecontrol),itisnecessarytolearnamodelonline.Thescriptdhmm_em_online_demogivesanexampleofhowtodothis.
隐马尔科夫(HMM)实例分析
A和B是好朋友,但是他们离得比较远,每天都是通过电话了解对方那天作了什么.B仅仅对三种活动感兴趣:
公园散步,购物以及清理房间.他选择做什么事情只凭当天天气.A对于B所住的地方的天气情况并不了解,但是知道总的趋势.在B告诉A每天所做的事情基础上,A想要猜测B所在地的天气情况.
A认为天气的运行就像一个马尔可夫链.其有两个状态“雨”和”晴”,但是无法直接观察它们,也就是说,它们对于A是隐藏的.每天,B有一定的概率进行下列活动:
”散步”,“购物”,或“清理”.因为B会告诉A他的活动,所以这些活动就是A的观察数据.这整个系统就是一个隐马尔可夫模型HMM.
A知道这个地区的总的天气趋势,并且平时知道B会做的事情.也就是说这个隐马尔可夫模型的参数是已知的.下面是概率转移矩阵和两种天气下各种活动的概率:
雨天 晴天
雨天 0.7 0.3
晴天 0.4 0.6
散步 购物 清理
雨天 0.1 0.4 0.5
晴天 0.6 0.3 0.1
下面是一段程序来描述各个变量。
//状态数目,两个状态:
雨或晴
states=(‘Rainy’,‘Sunny’)
//每个状态下可能的观察值
observations=(‘walk’,‘shop’,‘clean’)
//初始状态空间的概率分布
start_probability={‘Rainy’:
0.6,‘Sunny’:
0.4}
//与时间无关的状态转移概率矩阵
transition_probability={
’Rainy’:
{‘Rainy’:
0.7,‘Sunny’:
0.3},
’Sunny’:
{‘Rainy’:
0.4,‘Sunny’:
0.6},
}
//给定状态下,观察值概率分布,发射概率
emission_probability={
’Rainy’:
{‘walk’:
0.1,‘shop’:
0.4,‘clean’:
0.5},
’Sunny’:
{‘walk’:
0.6,‘shop’:
0.3,‘clean’:
0.1},
}
在这些代码中,start_probability代表了A对于B第一次给她打电话时的天气情况的不确定性(A知道的只是那个地方平均起来下雨多些).在这里,这个特定的概率分布并非平衡的,平衡概率应该接近(在给定变迁概率的情况下){‘Rainy’:
0.571,‘Sunny’:
0.429}。
transition_probability表示马尔可夫链下的天气变迁情况,在这个例子中,如果今天下雨,那么明天天晴的概率只有30%.代码emission_probability表示了B每天作某件事的概率.如果下雨,有50%的概率他在清理房间;如果天晴,则有60%的概率他在外头散步。
A和B通了三天电话后发现第一天B去散步了,第二天他去购物了,第三天他清理房间了。
A现在有两个问题:
这个观察序列“散步、购物、清理”的总的概率是多少?
(注:
这个问题对应于HMM的基本问题之一:
已知HMM模型λ及观察序列O,如何计算P(O|λ)?
)最能解释这个观察序列的状态序列(晴/雨)又是什么?
(注:
这个问题对应HMM基本问题之二:
给定观察序列O=O1,O2,…OT以及模型λ,如何选择一个对应的状态序列S=q1,q2,…qT,使得S能够最为合理的解释观察序列O?
)
至于HMM的基本问题之三:
如何调整模型参数,使得P(O|λ)最大?
这个问题事实上就是给出很多个观察序列值,来训练以上几个参数的问题。
**************************
最大似然参数估计EM(BaumWelch算法)
Thescriptdhmm_em_demo.mgivesanexampleofhowtolearnanHMMwithdiscreteoutputs.LettherebeQ=2statesandO=3outputsymbols.Wecreaterandomstochasticmatricesasfollows.
O=3;
Q=2;
prior0=normalise(rand(Q,1));
transmat0=mk_stochastic(rand(Q,Q));
obsmat0=mk_stochastic(rand(Q,O));
Nowwesamplenex=20sequencesoflengthT=10eachfromthismodel,touseastrainingdata.
T=10; %序列长度
nex=20; %样本序列数目
data=dhmm_sample(prior0,transmat0,obsmat0,nex,T);
Heredatais 20x10.Nowwemakearandomguessastowhattheparametersare,
prior1=normalise(rand(Q,1));%初始状态概率
transmat1=mk_stochastic(rand(Q,Q));%初始状态转移矩阵
obsmat1=mk_stochastic(rand(Q,O));%初始观测状态到隐藏状态间的概率转移矩阵
andimproveourguessusing5iterationsofEM...
[LL,prior2,transmat2,obsmat2]=dhmm_em(data,prior1,transmat1,obsmat1,'max_iter',5);
%prior2,transmat2,obsmat2为训练好后的初始概率,状态转移矩阵及混合状态概率转移矩阵
LL(t)isthelog-likelihoodafteriterationt,sowecanplotthelearningcurve.
序列分类
Toevaluatethelog-likelihoodofatrainedmodelgiventestdata,proceedasfollows:
loglik=dhmm_logprob(data,prior2,transmat2,obsmat2) %HMM测试
Note:
thediscretealphabetisassumedtobe{1,2,...,O},whereO=size(obsmat,2).Hencedatacannotcontainany0s.
Toclassifyasequenceintooneofkclasses,trainupkHMMs,oneperclass,andthencomputethelog-likelihoodthateachmodelgivestothetestsequence;ifthei'thmodelisthemostlikely,thendeclaretheclassofthesequencetobeclassi.
Computingthemostprobablesequence(Viterbi)
FirstyouneedtoevaluateB(i,t)=P(y_t|Q_t=i)forallt,i:
B=multinomial_prob(data,obsmat);
Thenyoucanuse
[path]=viterbi_path(prior,transmat,B)
二、具有高斯混合输出的隐马尔科夫模型(GHMM,HMMwithmixtureofGaussiansoutputs)
MaximumlikelihoodparameterestimationusingEM(BaumWelch)
Letusgeneratenex=50vector-valuedsequencesoflengthT=50;eachvectorhassizeO=2.
O=2;
T=50;
nex=50;
data=randn(O,T,nex);
NowletusefitamixtureofM=2GaussiansforeachoftheQ=2statesusingK-means.
M=2;
Q=2;
left_right=0;
prior0=normalise(rand(Q,1));
transmat0=mk_stochastic(rand(Q,Q));
[mu0,Sigma0]=mixgauss_init(Q*M,reshape(data,[OT*ne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HMM 工具箱 命令 使用说明