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.
hidden-markov-model
Correu
fonte
fonte
hmmlearn
implementação do HMM já oferece suporte ao treinamento do HMM com várias seqüências. Basta ver HMM formação com várias seqüênciasRespostas:
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.
fonte
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.
fonte
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.
fonte
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.)
fonte