IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Hidden Markov Model pour détection d'actions


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Par défaut Hidden Markov Model pour détection d'actions
    Bonjour,

    Je cherche actuellement a utiliser les Hidden Markov Models pour détecter des actions simples. D’après ce que j'ai compris, il faut d'abord créer un alphabet (genre A=avance, B=recule) qui représente les observation qu'on donne au HMM. Le problème c'est que j'ai du mal a voir comment gérer le fait que je veux utiliser plusieurs types d'observations en même temps (par exemple la position, mais aussi la vitesse ou l'angle). Dois-je créer des symboles représentants des combinaisons (X=avance+accélère+tourne, Y=recule+tourne) ou simplement envoyer les observations par paquet ?

    Tout ça est particulièrement flou pour moi, et je trouve la littérature sur le sujet particulièrement imbuvable (toujours très théorique et mathématique, et rarement pratique ou concrete).

    Merci de m’éclairer quelque peu sur le sujet.

  2. #2
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Les modèles de markov, tu as des triplets (etat, action, etat) associés à une fonction de retour R.

    Par exemple
    ("être à la position (x,y), orienté nord", "avancer", "être à la position (x,y+1), orienté nord) et ceci est associé à un nombre réel positif, négatif ou nul qui t'indique si ton action a été ou non productive.

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par math_lab Voir le message
    Le problème c'est que j'ai du mal a voir comment gérer le fait que je veux utiliser plusieurs types d'observations en même temps (par exemple la position, mais aussi la vitesse ou l'angle). Dois-je créer des symboles représentants des combinaisons (X=avance+accélère+tourne, Y=recule+tourne) ou simplement envoyer les observations par paquet ?
    Les 2 approches sont possibles, tout dépend du système que tu veux modéliser.

    D'après ce que tu sembles décrire, tu m'a l'air d'avoir un seul type d'observation, chaque observation étant consituée de "plusieurs" valeurs (Observation multivaluée).

    Donc pour un état caché X(t), tu as une observation Y(t)= {position, vitesse, angle}.

    Tout ça est particulièrement flou pour moi, et je trouve la littérature sur le sujet particulièrement imbuvable (toujours très théorique et mathématique, et rarement pratique ou concrete).
    A Revealing Introduction to Hidden Markov Models
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Les 2 approches sont possibles, tout dépend du système que tu veux modéliser.

    D'après ce que tu sembles décrire, tu m'a l'air d'avoir un seul type d'observation, chaque observation étant consituée de "plusieurs" valeurs (Observation multivaluée).

    Donc pour un état caché X(t), tu as une observation Y(t)= {position, vitesse, angle}.
    Oui, c'est exactement ça, j'ai juste du mal a comprendre comment le HMM gère les tuples.

    Pour le moment, plus je lis, moins je comprend... Je pense qu'il faudrait que je m'y remette a tête reposée. De ce que j'ai compris de ton lien, mon type de problème nécessite deux phases: dans la première on essaie de trouver un modèle qui colle a une séquence (ou plutôt plusieurs, je suppose) représentant une action (c'est la qu'on utilise le Baum & Welch ?). Une fois qu'on a des HMM pour nos actions, on les évalues tous sur l'action observée (en utilisant le forward algorithm?).


    En tout cas, merci pour vos réponses, et je reposerai mes questions une fois que j'aurai une meilleur vue d'ensemble de tout ce bazar...

    EDIT (après un peu de relecture)
    De ce que j'ai pu lire, avoir plusieurs données (vitesse, position, angle, etc.) ne change pas grand chose puisqu'on va de toutes façon créer un dictionnaire (avec K-Means par exemple) et que chaque mot se rapport a un tuple précis (genre "avancer+tourner+ accélérer"). Et donc, si je comprend bien, on a deux phases d'apprentissage distinctes: la création du vocabulaire, et ensuite seulement le HMM. J'ai bon, jusque la ?

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par math_lab Voir le message
    EDIT (après un peu de relecture)
    De ce que j'ai pu lire, avoir plusieurs données (vitesse, position, angle, etc.) ne change pas grand chose puisqu'on va de toutes façon créer un dictionnaire (avec K-Means par exemple) et que chaque mot se rapport a un tuple précis (genre "avancer+tourner+ accélérer").
    Oui, on peut effectivement créer un "mot" pour chaque observation.

    Je suppose que le K-Means c'est pour classifier tes mesures et avoir un nombre de "mot" assez réduit par rapport à la taille de ton espace de mesure. Tout comme dans le document ils ont créé 3 classes S/M/L pour classifier les tailles des cernes du bois.

    Et donc, si je comprend bien, on a deux phases d'apprentissage distinctes: la création du vocabulaire, et ensuite seulement le HMM. J'ai bon, jusque la ?
    Dans ce cas là oui.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Oui, on peut effectivement créer un "mot" pour chaque observation.
    Mais donc pas nécessairement ? Ma confusion vient du fait que j'ai jeté un coup d'œil un a implementation des HMM (HMM Lib 1.0.2) et que la séquence observée est définie par une liste d'entiers. Et dans ce cas la, je vois pas d'autre solution que de créer un vocabulaire en regroupant toutes mes observations.

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par math_lab Voir le message
    Mais donc pas nécessairement ? Ma confusion vient du fait que j'ai jeté un coup d'œil un a implementation des HMM (HMM Lib 1.0.2) et que la séquence observée est définie par une liste d'entiers. Et dans ce cas la, je vois pas d'autre solution que de créer un vocabulaire en regroupant toutes mes observations.
    Non, ce n'est pas obligatoire. Tout ce qu'il faut c'est avoir la probabilité d'une observation pour un état donné.

    P(o,s) = Probabilité de l'observation "o" dans l'état "s"

    Avoir réduit le nombre des observations via la création de "mot", ca permet de stocker ces probabilités sous forme de matrice (notée "B" dans le document).

    P(o,s) = B[i][j]

    avec i l'index du "mot" correspondant à l'observation "o"
    et j l'index du "mot" correspondant à l'état "s"
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. [Débutant] hidden markov model
    Par kamber dans le forum Signal
    Réponses: 2
    Dernier message: 17/02/2013, 10h05
  2. Hidden Markov Model
    Par Dralex dans le forum C++
    Réponses: 1
    Dernier message: 15/05/2009, 14h41
  3. Réponses: 6
    Dernier message: 06/10/2004, 10h41
  4. utiliser "if" pour faire deux actions differente
    Par vampyer972 dans le forum C
    Réponses: 2
    Dernier message: 09/05/2004, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo