J'utilise actuellement la formation Viterbi pour un problème de segmentation d'image. Je voulais savoir quels sont les avantages / inconvénients de l'utilisation de l'algorithme Baum-Welch au lieu de la formation Viterbi.
J'utilise actuellement la formation Viterbi pour un problème de segmentation d'image. Je voulais savoir quels sont les avantages / inconvénients de l'utilisation de l'algorithme Baum-Welch au lieu de la formation Viterbi.
Réponses:
L'algorithme de Baum-Welch et l'algorithme de Viterbi calculent différentes choses.
Si vous connaissez les probabilités de transition pour la partie cachée de votre modèle et les probabilités d'émission pour les sorties visibles de votre modèle, l'algorithme de Viterbi vous donne la séquence complète des états cachés la plus probable conditionnelle à la fois à vos sorties et à la spécification de votre modèle.
L'algorithme de Baum-Welch vous donne à la fois les probabilités de transition cachées les plus probables ainsi que l'ensemble de probabilités d'émission le plus probable étant donné uniquement les états observés du modèle (et, généralement, une limite supérieure du nombre d'états cachés). Vous obtenez également les points de probabilité les plus élevés "point par point" dans les états cachés, ce qui est souvent légèrement différent de la séquence cachée unique qui est globalement la plus probable.
Si vous connaissez votre modèle et que vous voulez simplement les états latents, il n'y a aucune raison d'utiliser l'algorithme Baum-Welch. Si vous ne connaissez pas votre modèle, vous ne pouvez pas utiliser l'algorithme de Viterbi.
Modifié pour ajouter: Voir le commentaire de Peter Smit; il y a un certain chevauchement / imprécision dans la nomenclature. Quelques fouilles m'ont amené à un chapitre de Luis Javier Rodrıguez et Ines Torres dans "Pattern Recognition and Image Analysis" (ISBN 978-3-540-40217-6, pp 845-857) qui discute des compromis vitesse / précision de les deux algorithmes.
En bref, l'algorithme Baum-Welch est essentiellement l'algorithme Expectation-Maximization (EM) appliqué à un HMM; en tant qu'algorithme strict de type EM, vous êtes assuré de converger vers au moins un maximum local, et donc pour les problèmes unimodaux, trouvez le MLE. Cependant, cela nécessite deux passes sur vos données pour chaque étape, et la complexité devient très grande dans la longueur des données et le nombre d'échantillons d'apprentissage. Cependant, vous vous retrouvez avec la probabilité conditionnelle complète pour vos paramètres cachés.
L'algorithme d'apprentissage de Viterbi (par opposition à "l'algorithme de Viterbi") se rapproche du MLE pour obtenir un gain de vitesse au détriment de la précision. Il segmente les données et applique ensuite l'algorithme de Viterbi (tel que je l'ai compris) pour obtenir la séquence d'état la plus probable dans le segment, puis utilise cette séquence d'état la plus probable pour réestimer les paramètres cachés. Contrairement à l'algorithme Baum-Welch, cela ne donne pas la probabilité conditionnelle complète des paramètres cachés, et finit donc par réduire la précision tout en économisant un temps de calcul important (le chapitre rapporte 1 à 2 ordres de grandeur).
Avant-arrière est utilisé lorsque vous souhaitez compter les «choses invisibles». Par exemple, lorsque vous utilisez EM pour améliorer un modèle via des données non supervisées. Je pense que le document de Petrov en est un exemple. Dans la technique à laquelle je pense, vous entraînez d'abord un modèle avec des données annotées avec des annotations assez grossières (par exemple une balise pour 'Verb'). Ensuite, vous divisez arbitrairement la masse de probabilité pour cet état en deux quantités légèrement inégales, et vous réentraînez, en allant de l'avant vers l'arrière pour maximiser la probabilité en redistribuant la masse entre les deux états.