Mise à l'échelle de la variable arrière dans HMM Baum-Welch

10

J'essaie simplement de mettre en œuvre l'algorithme Baum-Welch mis à l'échelle et j'ai rencontré un problème où mes variables en arrière, après la mise à l'échelle, dépassent la valeur 1. Est-ce normal? Après tout, les probabilités ne devraient pas dépasser 1.

J'utilise le facteur d'échelle que j'ai obtenu à partir des variables directes:

ct=1/sSαt(s)
où c_t est le facteur d'échelle pour l'instant t, alpha est la variable directe, s sont les états dans le hmm.

Pour l'algorithme rétrograde, je l'ai implémenté en java ci-dessous:

public double[][] backwardAlgo(){
        int time = eSequence.size();
        double beta[][] = new double[2][time];

        // Intialize beta for current time
        for(int i = 0; i < 2; i++){
            beta[i][time-1] = scaler[time-1];
        }

        // Use recursive method to calculate beta
        double tempBeta = 0;
        for(int t = time-2; t >= 0; t--){
            for(int i = 0; i < 2; i++){
                for(int j = 0; j < 2; j++){
                    tempBeta = tempBeta + (stateTransitionMatrix[i][j] * emissionMatrix[j][eSequence.get(t+1)] * beta[j][t+1]);
                }
                beta[i][t] = tempBeta;
                beta[i][t] = scaler[t] * beta[i][t];
                tempBeta = 0;
            }
        }
        return beta;
    }

Les balances sont stockées dans le tableau appelé scaler. Il y a 2 états dans ce hmm. Je dois également noter que les facteurs d'échelle que j'obtiens sont également supérieurs à 1.

itzjustricky
la source

Réponses:

0

Je ne sais pas cela en soi indique un problème. est la probabilité que la séquence de sortie observée à est . Ainsi, c'est bien que soit supérieur à un. De plus, par exemple pour , c'est , qui peut très bien être supérieur à un.sSαt(s)tt0,t1,, eSequence.get(t)ctβtime1sSβtime1(s)=|S|ct1

sandris
la source
0

J'ai une autre idée, car l'échelle représente queβ

βt(s)=p(xt+1,...,xN|st=s)p(xt+1,...,xN|x1,...,xt)

donc, je pense que peut être supérieur à 1.β

référence cette note (page 8)

Aube. W
la source