Treinando um modelo Markov oculto, várias instâncias de treinamento

18

Eu implementei um HMM discreto de acordo com este tutorial http://cs229.stanford.edu/section/cs229-hmm.pdf

Este tutorial e outros sempre falam em treinar um HMM, dada uma sequência de observação.

O que acontece quando tenho várias sequências de treinamento? Devo executá-los seqüencialmente, treinando o modelo após o outro?

Outra opção é concatenar as sequências para uma e treinar nela, mas então terei transições de estado do final de uma sequência para o início da próxima que não são reais.

Correu
fonte
Veja este papel pdfs.semanticscholar.org/4000/... Mesmo que eles estendem as idéias para um cenário de observações não-indep, foi muito útil para mim para entender o caso simples onde indep é assumido
Marc Torrellas
a hmmlearnimplementação do HMM já oferece suporte ao treinamento do HMM com várias seqüências. Basta ver HMM formação com várias seqüências
Wenmin Wu

Respostas:

16

Nem concatenar nem executar cada iteração de treinamento com uma sequência diferente é a coisa certa a fazer. A abordagem correta requer alguma explicação:

Geralmente se treina um HMM usando um algoritmo EM. Isso consiste em várias iterações. Cada iteração possui uma etapa de "estimativa" e uma de "maximização". Na etapa "maximizar", você alinha cada vetor de observação x com um estado s no seu modelo para que alguma medida de probabilidade seja maximizada. Na etapa "estimativa", para cada estado s, você estima (a) os parâmetros de um modelo estatístico para os vetores x alinhados com s e (b) as probabilidades de transição de estado. Na iteração a seguir, a etapa de maximização é executada novamente com os modelos estatísticos atualizados etc. O processo é repetido um número definido de vezes ou quando a medida de probabilidade deixa de aumentar significativamente (ou seja, o modelo converge para uma solução estável). Finalmente, (pelo menos no reconhecimento de fala), um HMM normalmente terá um "início" designado

Portanto, se você tiver várias sequências de treinamento, na etapa de estimativa, execute cada sequência para que seu vetor de observação inicial se alinhe ao estado inicial. Dessa forma, as estatísticas desse estado inicial são coletadas das primeiras observações em todas as suas seqüências de observação e, em geral, os vetores de observação são alinhados aos estados mais prováveis ​​ao longo de cada sequência. Você executaria apenas a etapa de maximização (e futuras iterações) após todas as seqüências terem sido fornecidas para treinamento. Na próxima iteração, você faria exatamente a mesma coisa.

Ao alinhar o início de cada sequência de observação com o estado inicial, você evita o problema de concatenar sequências nas quais modelaria incorretamente as transições entre o final de uma sequência e o início da próxima. E, ao usar todas as seqüências de cada iteração, você evita fornecer sequências diferentes a cada iteração, o que, como observou o respondente, não garantirá a convergência.

JeffM
fonte
Este método requer que cada sequência de treinamento tenha o mesmo comprimento?
Nate
2
Não, não faz. Geralmente se projeta um HMM para permitir auto-loops (o mesmo estado usado várias vezes consecutivas) e para permitir vários estados para os quais fazer a transição. Esses recursos permitem que um HMM pontue seqüências de diferentes comprimentos.
precisa saber é
4

Lawrence Rabiner descreve uma abordagem matematicamente bem fundamentada neste tutorial do IEEE 77 . O tutorial também é o sexto capítulo do livro Fundamentos do reconhecimento de fala de Rabiner e Juang.

RIA Davis et. al. fornece algumas sugestões adicionais neste documento .

Eu não passei por toda a matemática, mas para mim a abordagem de Rabiner parece a mais promissora, enquanto a abordagem de Davis parece não ter o fundamento matemático.

Bittenus
fonte
2

Se você seguir a matemática, adicionar exemplos extras de treinamento implica em recalcular a maneira como você calcula a probabilidade. Em vez de somar dimensões, você também soma exemplos de treinamento.

Se você treinar um modelo após o outro, não há garantia de que o EM vai cobrir todos os exemplos de treinamento e você terá más estimativas.

Aqui está um artigo que faz isso para o Kalman Filter (que é um HMM com probabilidades gaussianas), que pode lhe dar uma amostra de como modificar seu código para dar suporte a mais exemplos.

http://ntp-0.cs.ucl.ac.uk/staff/S.Prince/4C75/WellingKalmanFilter.pdf

Ele também fez uma palestra sobre o HMM, mas a lógica é bastante direta.

Leon palafox
fonte
1
Eu realmente não vi o que você está se referindo. Você pode apontar meu na direção certa? Obrigado.
Ran
0

Este é mais um comentário ao artigo de RIA Davis referenciado por Bittenus (acima) . Vou ter que concordar com Bittenus, não há muito apoio matemático por trás das técnicas propostas no artigo - é mais uma comparação empírica.

O artigo considera apenas o caso em que o HMM possui uma topologia restrita (feed-forward). (no meu caso, tenho uma topologia padrão e encontrei os resultados mais consistentes implementando uma média não ponderada de todos os modelos treinados com Baum-Welch. Essa abordagem é mencionada no artigo, mas é citada apenas com resultados marginais).

Outro tipo de treinamento de média de modelo foi detalhado por RIA Davis em um artigo de jornal e usa o Vitterbi Training em vez de Baum-Welch Comparando e avaliando algoritmos de treinamento do HMM Ensemble usando critérios de número de condição e teste de trem e teste . No entanto, este documento explora apenas os HMMs com a mesma topologia de feed-forward restrita. (Pretendo explorar esse método e atualizarei esta postagem com minhas descobertas.)

kgierach
fonte