Atualmente, estou usando o treinamento Viterbi para um problema de segmentação de imagem. Eu queria saber quais são as vantagens / desvantagens de usar o algoritmo Baum-Welch em vez do treinamento em Viterbi.
Atualmente, estou usando o treinamento Viterbi para um problema de segmentação de imagem. Eu queria saber quais são as vantagens / desvantagens de usar o algoritmo Baum-Welch em vez do treinamento em Viterbi.
Respostas:
O algoritmo de Baum-Welch e o algoritmo de Viterbi calculam coisas diferentes.
Se você conhece as probabilidades de transição para a parte oculta do seu modelo e as probabilidades de emissão para as saídas visíveis do seu modelo, o algoritmo Viterbi fornece a sequência completa mais provável de estados ocultos condicionais para ambas as saídas e a especificação do modelo.
O algoritmo Baum-Welch fornece as probabilidades de transição ocultas mais prováveis e o conjunto de probabilidades de emissão mais provável, considerando apenas os estados observados do modelo (e, geralmente, um limite superior para o número de estados ocultos). Você também obtém os pontos de maior probabilidade "pointwise" nos estados ocultos, que geralmente são ligeiramente diferentes da sequência oculta única que é geralmente mais provável.
Se você conhece seu modelo e deseja apenas os estados latentes, não há razão para usar o algoritmo Baum-Welch. Se você não conhece seu modelo, não pode usar o algoritmo Viterbi.
Editado para adicionar: Veja o comentário de Peter Smit; há alguma sobreposição / imprecisão na nomenclatura. Alguns bisbilhoteiros me levaram a um capítulo de Luis Javier Rodrıguez e Ines Torres em "Reconhecimento de padrões e análise de imagens" (ISBN 978-3-540-40217-6, pp 845-857) que discute as compensações de velocidade versus precisão de os dois algoritmos.
Resumidamente, o algoritmo Baum-Welch é essencialmente o algoritmo Expectation-Maximization (EM) aplicado a um HMM; como um algoritmo estrito do tipo EM, você garante convergir para pelo menos um máximo local e, portanto, para problemas não -odais, encontre o MLE. Porém, são necessárias duas passagens sobre seus dados para cada etapa, e a complexidade aumenta muito no tamanho dos dados e no número de amostras de treinamento. No entanto, você acaba com a probabilidade condicional completa de seus parâmetros ocultos.
O algoritmo de treinamento Viterbi (em oposição ao "algoritmo Viterbi") aproxima o MLE para obter um ganho de velocidade com o custo de precisão. Ele segmenta os dados e, em seguida, aplica o algoritmo Viterbi (como eu o entendi) para obter a sequência de estado mais provável no segmento e, em seguida, usa essa sequência de estado mais provável para reestimar os parâmetros ocultos. Isso, diferentemente do algoritmo Baum-Welch, não fornece a probabilidade condicional completa dos parâmetros ocultos e, portanto, acaba reduzindo a precisão, economizando tempo computacional significativo (o capítulo relata 1 a 2 ordens de magnitude).
Avançar para trás é usado quando você deseja contar 'coisas invisíveis'. Por exemplo, ao usar o EM para melhorar um modelo por meio de dados não supervisionados. Eu acho que o artigo de Petrov é um exemplo. Na técnica em que estou pensando, você primeiro treina um modelo com dados anotados com anotações bastante grosseiras (por exemplo, uma tag para 'Verbo'). Em seguida, você divide arbitrariamente a massa de probabilidade para esse estado em duas quantidades ligeiramente desiguais e treina novamente, avançando para trás para maximizar a probabilidade redistribuindo a massa entre os dois estados.