BaumWelchLearner.java :
public <O extends Observation> Hmm<O>
learn(Hmm<O> initialHmm, List<? extends List<? extends O>> sequences)
{
Hmm<O> hmm = initialHmm;
for (int i = 0; i < nbIterations; i++)
hmm = iterate(hmm, sequences);
return hmm;
}
실제로 각 반복에서 반복해서 제공된 관측 시퀀스를 사용한다. 모델은 때로는 천천히 로컬 최대 값으로 수렴하기 때문에 반복이 필요합니다. 각 반복 후에 모델을 보려면 다음과 같은 프로그램을 작성하십시오.
BaumWelchLearner bwl = new BaumWelchLearner();
for (int i=0; i<=bwl.getNbIterations(); i++) {
Hmm iteration = bwl.iterate(yourHmm, learningSequences);
System.out.println("\nIteration " + i + ":\n" + iteration.toString());
yourHmm = iteration;
}