2012-04-21 1 views
0

Я использую скрытую марковскую модель для классификации, реализацию jahmm.Почему мы итерации при обучении скрытой марковской модели

При обучении модели я использую кластер kMeans для начальной модели. Затем я использую произвольные итерационные раунды для оптимизации модели. Я был удивлен, случалось, в этой итерации.

Мои мужества говорят мне, что секвенции генерируются на основе исходной модели, которая, в свою очередь, используется для обучения модели снова и так далее.

Это правда или есть что-то еще, что происходит?

Спасибо!

ответ

0

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; 
}