HMM學習最佳範例七 前向 後向演算法5

2021-06-22 06:48:06 字數 1225 閱讀 8249

七、前向-後向演算法(forward-backward algorithm)

上一節我們定義了兩個變數及相應的期望值,本節我們利用這兩個變數及其期望值來重新估計隱馬爾科夫模型(hmm)的引數pi,a及b:

前向-後向演算法程式示例如下(在baum.c中):

void baumwelch(hmm *phmm, int t, int *o, double **alpha, double **beta, double **gamma, int *pniter, double *plogprobinit, double *plogprobfinal)

denominatorb = denominatora + gamma[t][i];

for (k = 1; k <= phmm->m; k++)

phmm->b[i][k] = .001 +

.999*numeratorb/denominatorb;}}

forwardwithscale(phmm, t, o, alpha, scale, &logprobf);

backwardwithscale(phmm, t, o, beta, scale, &logprobb);

computegamma(phmm, t, alpha, beta, gamma);

computexi(phmm, t, o, alpha, beta, xi);

/* compute difference between log probability of

two iterations */

delta = logprobf - logprobprev;

logprobprev = logprobf;

l++;

}  while (delta > delta); /* if log probability does not

change much, exit */

*pniter = l;

*plogprobfinal = logprobf; /* log p(o|estimated model) */

freexi(xi, t, phmm->n);

free_dvector(scale, 1, t);

}

前向-後向演算法就到此為止了。

未完待續:總結

HMM學習最佳範例七 前向 後向演算法3

七 前向 後向演算法 forward backward algorithm 前向 後向演算法是baum於1972年提出來的,又稱之為baum welch演算法,雖然它是em expectation maximization 演算法的乙個特例,但em演算法卻是於1977年提出的。那麼為什麼說前向 後向...

HMM學習最佳範例五 前向演算法3

五 前向演算法 forward algorithm 前向演算法定義 forward algorithm definition 我們使用前向演算法計算t長觀察序列的概率 其中y的每乙個是觀察集合之一。區域性 中間 概率 s 是遞迴計算的,首先通過計算t 1時刻所有狀態的區域性概率 也就是當前狀態相應的...

HMM學習最佳範例一 介紹

一 介紹 introduction 我們通常都習慣尋找乙個事物在一段時間裡的變化模式 規律 這些模式發生在很多領域,比如計算機中的指令序列,句子中的詞語順序和口語單詞中的音素序列等等,事實上任何領域中的一系列事件都有可能產生有用的模式。考慮乙個簡單的例子,有人試圖通過一片海藻推斷天氣 民間傳說告訴我...