J'ai implémenté un HMM discret selon ce tutoriel http://cs229.stanford.edu/section/cs229-hmm.pdf
Ce tutoriel et d'autres parlent toujours de la formation d'un HMM à partir d'une séquence d'observation.
Que se passe-t-il lorsque j'ai plusieurs séquences d'entraînement? Dois-je simplement les exécuter séquentiellement, en entraînant le modèle après l'autre?
Une autre option consiste à concaténer les séquences en une seule et à m'entraîner dessus, mais alors j'aurai des transitions d'état de la fin d'une séquence au début de la suivante qui ne sont pas réelles.
hmmlearn
mise en œuvre de HMM a déjà pris en charge la formation HMM avec plusieurs séquences. Il suffit de voir la formation HMM avec plusieurs séquencesRéponses:
Ni concaténer ni exécuter chaque itération d'entraînement avec une séquence différente n'est pas la bonne chose à faire. L'approche correcte nécessite quelques explications:
On forme généralement un HMM en utilisant un algorithme EM. Cela consiste en plusieurs itérations. Chaque itération a une étape «estimation» et une étape «maximiser». Dans l'étape "maximiser", vous alignez chaque vecteur d'observation x avec un état s dans votre modèle afin que certaines mesures de vraisemblance soient maximisées. Dans l'étape "estimation", pour chaque état s, vous estimez (a) les paramètres d'un modèle statistique pour les vecteurs x alignés sur s et (b) les probabilités de transition d'état. Dans l'itération suivante, l'étape de maximisation s'exécute à nouveau avec les modèles statistiques mis à jour, etc. Le processus est répété un nombre défini de fois ou lorsque la mesure de vraisemblance cesse d'augmenter de manière significative (c'est-à-dire que le modèle converge vers une solution stable). Enfin, (au moins dans la reconnaissance vocale), un HMM aura généralement un "début" désigné
Donc, si vous avez plusieurs séquences d'apprentissage, lors de l'étape d'estimation, vous devez exécuter chaque séquence afin que son vecteur d'observation initial s'aligne sur l'état initial. De cette façon, les statistiques sur cet état initial sont collectées à partir des premières observations sur toutes vos séquences d'observation, et en général les vecteurs d'observation sont alignés sur les états les plus probables tout au long de chaque séquence. Vous ne feriez que l'étape de maximisation (et les itérations futures) après que toutes les séquences ont été fournies pour la formation. À la prochaine itération, vous feriez exactement la même chose.
En alignant le début de chaque séquence d'observation sur l'état initial, vous évitez le problème de concaténation des séquences où vous modéliseriez incorrectement les transitions entre la fin d'une séquence et le début de la suivante. Et en utilisant toutes les séquences à chaque itération, vous évitez de fournir des séquences différentes à chaque itération, ce qui, comme l'a noté le répondant, ne garantira pas la convergence.
la source
Lawrence Rabiner décrit une approche mathématique bien fondée dans ce tutoriel de l'IEEE 77 . Le tutoriel est également le 6ème chapitre du livre Fundamentals of Speech Recognition de Rabiner et Juang.
RIA Davis et. Al. fournit quelques suggestions supplémentaires dans ce document .
Je n'ai pas approfondi les mathématiques, mais pour moi, l'approche de Rabiner semble la plus prometteuse, tandis que l'approche de Davis semble manquer de fondement mathématique.
la source
Si vous suivez les mathématiques, l'ajout d'exemples de formation supplémentaires implique de recalculer la façon dont vous calculez la probabilité. Au lieu de résumer les dimensions, vous additionnez également les exemples de formation.
Si vous entraînez un modèle après l'autre, rien ne garantit que l'EM sera couvert pour chaque exemple de formation, et vous vous retrouverez avec de mauvaises estimations.
Voici un article qui fait cela pour le filtre de Kalman (qui est un HMM avec des probabilités gaussiennes), il peut vous donner un aperçu de la façon de modifier votre code afin que vous puissiez prendre en charge plus d'exemples.
http://ntp-0.cs.ucl.ac.uk/staff/S.Prince/4C75/WellingKalmanFilter.pdf
Il a également une conférence sur HMM, mais la logique est assez simple.
la source
Il s'agit plus d'un commentaire sur l'article de RIA Davis référencé par Bittenus (ci-dessus) . Je devrai être d'accord avec Bittenus, il n'y a pas beaucoup de soutien mathématique derrière les techniques proposées dans l'article - c'est plus une comparaison empirique.
Le papier considère seulement le cas où le HMM est d'une topologie restreinte (feed-forward). (dans mon cas, j'ai une topologie standard, et j'ai trouvé les résultats les plus cohérents en mettant en œuvre une moyenne non pondérée de tous les modèles formés avec Baum-Welch. Cette approche est mentionnée dans l'article mais uniquement citée avec des résultats marginaux).
Un autre type de formation sur la moyenne des modèles a été détaillé par RIA Davis dans un article de journal et utilise Vitterbi Training au lieu de Baum-Welch Comparing and Evaluating HMM Ensemble Training Algorithms Using Train and Test and Condition Number Criteria . Cependant, cet article explore uniquement les HMM avec la même topologie à action directe restreinte. (Je prévois d'explorer cette méthode et mettrai à jour ce post avec mes résultats.)
la source