Os seguintes problemas base do HMM têm de ser resolvidos:
Problema da descodificação: Dado um modelo e uma sucessão de observações, qual é a probabilidade dessas observações terem sido geradas pelo modelo? A solução para este problema pode ser encontrada através do algoritmo forward-backward [50] [53].
Problema da aprendizagem: Dado um modelo e uma sucessão de observações, quais deveriam ser os parâmetros do modelo, de modo a tornar máxima a probabilidade de gerar tal sucessão? A solução para este problema pode ser encontrada através do algoritmo de Baum-Welch [50] [53].
4.4.1 O problema da descodificação
O problema da descodificação pode também ser visto como um problema de “ajuste”. Ou seja, dada uma sequência de observações, pretende-se determinar o quanto a sequência se ajusta a determinado modelo [50]. Por exemplo, considerando o caso na qual se deve tentar escolher um modelo entre vários, a solução desse problema permite escolher o modelo que melhor corresponde às observações [48] [53].
A forma mais trivial de calcular a probabilidade de determinada sequência de observações ter sido gerada por um modelo (𝑃(𝑂|𝜆)), é através da verificação de todas as sequências de índices de tamanho 𝑇 possíveis. Posteriormente, determina-se a probabilidade de 𝑂 ter sido criada pelos respetivos índices dessas sequências 𝑄. Assim, a probabilidade da sequência 𝑂 ter sido gerada pelos índices da sequência 𝑄 no modelo 𝜆 é descrita pela equação 4.7 e 4.8 [51],
𝑃(𝑂|𝜆) = ∑ 𝑃(𝑂, 𝑄|𝜆) = ∑ 𝑃(𝑂|𝑄, 𝜆) ∗ 𝑃(𝑄, 𝜆) 𝑄 𝑄 (4.7) 𝑃(𝑂|𝜆) = ∑ 𝜋𝑞1𝑏𝑞1(𝑂1)𝑎𝑞1𝑞2𝑏𝑞2(𝑂2) … 𝑎𝑞𝑇−1𝑞𝑇𝑏𝑞𝑇(𝑂𝑇) 𝑞1,𝑞2,…𝑞𝑇 (4.8)
Sabe-se que cada produto da equação 4.8 realiza implicitamente 2𝑇 − 1 multiplicações para cada sequência de índices. Desta forma, para realizar o cálculo de 𝑃(𝑂|𝜆) através das equações anteriores são necessárias 𝑁𝑇(2𝑇 − 1) multiplicações e 𝑁𝑇-1 somas, tornando o processo
computacionalmente impraticável [51].
O problema soluciona-se de modo eficaz através de dois métodos independentes, forward (𝛼) e backward (𝛽). Estes utilizam a técnica de programação dinâmica para calcular eficientemente os valores que são necessários [48] [51] [53].
A variável forward 𝛼𝑡(𝑖) indica a probabilidade da sequência de observações parciais
𝑜1, 𝑜2, … , 𝑜𝑇, no tempo 𝑇 esteja no índice 𝑖, dado 𝜆 de acordo com a equação 4.9,
O algoritmo forward dedica-se à obtenção de 𝑃(𝑂|𝜆), sendo descrito por operações dadas pelas três equações 4.10, 4.11 e 4.12 [54]. Inicialização 𝛼1(𝑖) = 𝜋𝑖 ∗ 𝑏𝑖(𝑜1), 1 ≤ 𝑖 ≤ 𝑁 (4.10) Indução 𝛼𝑡+1(𝑗) = [∑ 𝛼𝑡(𝑖). 𝑎𝑖𝑗 𝑁 𝑖=1 ] 𝑏𝑗(𝑜𝑡+1), 1 ≤ 𝑡 ≤ 𝑇 − 1 𝑒 1 ≤ 𝑗 ≤ 𝑁 (4.11) Terminação 𝑃(𝑂|𝜆) = ∑ 𝛼𝑇(𝑖) 𝑁 𝑖=1 (4.12)
Em alternativa, outro modo de obtenção da probabilidade desejada, é através do procedimento backward, representado pela variável 𝛽 de acordo com a equação 4.13,
𝛽𝑡(𝑗) = 𝑃(𝑂𝑡+1𝑂𝑡+2… 𝑂𝑇|𝑞𝑡= 𝑆𝑗, 𝜆) (4.13)
O algoritmo backward, também dedica-se à obtenção de 𝑃(𝑂|𝜆), sendo descrita pelas três equações 4.14, 4.15 e 4.16 [54]. Inicialização 𝛽𝑇(𝑖) = 1, 1 ≤ 𝑖 ≤ 𝑁 (4.14) Indução 𝛽𝑡(𝑖) = ∑ 𝑎𝑖𝑗𝑏𝑗(𝑜𝑡+1)𝛽𝑡+1(𝑗) 𝑁 𝑗=1 , 𝑡 = 𝑇 − 1, 𝑇 − 2, . .1 𝑒 1 ≤ 𝑖 ≤ 𝑁 (4.15) Terminação 𝑃(𝑂|𝜆) = ∑ 𝜋𝑖𝑏𝑖(𝑜1). 𝛽1(𝑖) 𝑁 𝑖=1 (4.16)
Contudo, os procedimentos forward e backward são independentes e apenas uma das variáveis (𝛼 ou 𝛽) será necessária para solucionar a incógnita em avaliação [51].
4.4.2 O problema da aprendizagem
O problema mais difícil dos HMMs é determinar um método para ajustar os parâmetros do modelo 𝜆 = (𝐴, 𝐵, 𝜋) de modo a satisfazer um determinado critério de otimização. Não se conhece nenhum método analítico que permita uma maximização global, da probabilidade de ocorrência da sequência observável para todos os parâmetros do modelo [50]. No entanto, é possível escolher o modelo onde a sua probabilidade seja localmente maximizada através de um procedimento iterativo [51].
Esse procedimento é denominado Baum-Welch, baseado no algoritmo EM - Expectation- Maximization, aplicada aos modelos de Markov ocultos. Antes de se descrever o método para recalcular os parâmetros do HMM, é interessante a definição de variáveis que sejam utilizadas no algoritmo Baum-Welch. Define-se a variável 𝜉𝑡(𝑖, 𝑗) como sendo a probabilidade de estar no índice 𝑖 no tempo 𝑡 e transitar para o índice 𝑗 no tempo 𝑡 + 1, dado o modelo e a sequência de observações, resultando na equação 4.17 [48] [51] [53],
𝜉𝑡(𝑖, 𝑗) = 𝑃(𝑞𝑡= 𝑖, 𝑞𝑡+1= 𝑗 |𝑂, 𝜆) (4.17)
Recorrendo as definições das variáveis forward e backward, a equação 4.17 pode ser reescrita numa nova equação 4.18,
𝜉𝑡(𝑖, 𝑗) = 𝛼𝑡(𝑖). 𝑎𝑖𝑗. 𝑏𝑗(𝑜𝑡+1). 𝛽𝑡+1(𝑗) 𝑃(𝑂|𝜆) = 𝛼𝑡(𝑖). 𝑎𝑖𝑗. 𝑏𝑗(𝑜𝑡+1). 𝛽𝑡+1(𝑗) ∑𝑁𝑖=1∑𝑁𝑗=1𝛼𝑡(𝑖). 𝑎𝑖𝑗. 𝑏𝑗(𝑜𝑡+1). 𝛽𝑡+1(𝑗) (4.18)
Outra variável a ter em conta é 𝛾𝑡(𝑖), e define-se como sendo a probabilidade de estar no
índice 𝑖 no instante t de acordo com a equação 4.19.
𝛾𝑡(𝑖) = 𝑃(𝑞𝑡 = 𝑖 |𝑂, 𝜆) (4.19)
Como anteriormente a equação 4.19 também pode ser reescrita em função das variáveis
forward e backward, obtendo-se a equação 4.20,
𝛾𝑡(𝑖) =𝛼𝑡(𝑖). 𝛽𝑡(𝑖) 𝑃(𝑂|𝜆) =
𝛼𝑡(𝑖). 𝛽𝑡(𝑖)
∑𝑁𝑖=1𝛼𝑡(𝑖). 𝛽𝑡(𝑖)
Pode-se, ainda, relacionar as variáveis 𝜉 e 𝛾 obtendo-se a equação 4.21,
𝛾𝑡(𝑖) = ∑ 𝜉𝑡(𝑖, 𝑗)
𝑁
𝑗=1
(4.21)
Neste sentido, observa-se que a probabilidade de transição do índice 𝑖 para 𝑗 na sequência de observações é o somatório das probabilidades de estar em cada instante da observação no índice 𝑖 e transitar para o índice 𝑗, resultando na equação 4.22. A probabilidade de estar no índice 𝑖 e transitar para um índice qualquer é descrita pela equação 4.23 [51].
∑ 𝜉𝑡(𝑖, 𝑗) 𝑇−1 𝑡=1 (4.22) ∑ 𝛾𝑡(𝑖) 𝑇−1 𝑡=1 (4.23)
Com as variáveis definidas, os parâmetros 𝜋, 𝐴 e 𝐵 do HMM são recalculados pelas equações, 4.24, 4.25, 4.26 e 4.27.
𝜋̅ =probabilidade de estar no estado 𝑖 no instante 𝑡 = 1 𝑖
𝑎̅𝑖𝑗 = número de transições do estado i para o estado j
número de transições do estado i para qualquer estado
(4.24) 𝑎̅𝑖𝑗 =∑ 𝜉𝑡(𝑖, 𝑗) 𝑇−1 𝑡=1 ∑𝑇−1𝑡=1𝛾𝑡(𝑖) (4.25)
𝑏̅𝑖(𝑘) =número de vezes no estado i com o símbolo vk
número de vezes no estado i
(4.26) 𝑏̅𝑖(𝑘) = ∑𝑇𝑡=1 𝛾𝑡(𝑖) 𝑜𝑡=𝑣𝑘 ∑𝑇 𝛾𝑡(𝑖) 𝑡=1 (4.27)
Um HMM inicial é definido por 𝜆 = (𝐴, 𝐵, 𝜋) e seu modelo recalculado por 𝜆̅ = (𝐴̅, 𝐵̅, 𝜋̅). Baum provou que se o modelo inicial 𝜆 está no ponto crítico de função de probabilidade, neste caso 𝜆̅ = 𝜆. Caso o modelo 𝜆̅ é mais promissor que o modelo 𝜆, porque 𝑃(𝑂|𝜆̅) > 𝑃(𝑂|𝜆), então é encontrado um novo modelo 𝜆̅ na qual a sequência de observações é mais provável [53].
O algoritmo Baum-Welch realiza diversas iterações sobre a sequência de observações fornecidas, com o intuito de recalcular os parâmetros dos modelos de Markov ocultos com base nas variáveis iniciais. Para terminar ao recalcular, deve ser estabelecido um critério de paragem
para o algoritmo, como exemplo, a tolerância que os valores dos parâmetros de uma iteração para a outra [51].
Como o algoritmo Baum-Welch só encontra um valor máximo local e não global, um detalhe importante em sua utilização para a recalcular os parâmetros de 𝜆 é a configuração inicial do modelo, ou seja, o ponto de partida do algoritmo. Uma escolha inicial inadequada pode resultar num máximo local muito distante do máximo global e, consequentemente, um modelo incoerente [55].