Le dynamic time warping sert à vérifier les si­mi­li­tudes entre dif­fé­rentes longueurs de séquences de valeurs dans le cadre d’une com­pa­rai­son de modèles. À cet effet, l’al­go­rithme de dé­for­ma­tion tem­po­relle dynamique génère des chemins de dé­for­ma­tion qui per­met­tent, grâce au retour sur trace et aux mesures dif­fé­ren­tielles, de mettre en évidence des si­mi­li­tudes en faisant abs­trac­tion de la dé­for­ma­tion tem­po­relle ou des dif­fé­rences de vitesse. Ce concept est notamment utilisé dans le cadre de la re­con­nais­sance vocale, de la re­con­nais­sance numérique des sig­na­tures ou de l’analyse des marchés fi­nan­ciers.

Que signifie « dynamic time warping » ?

Le terme « dynamic time warping » se traduit, en français, par le concept de « dé­for­ma­tion tem­po­relle dynamique ». Si cette tech­no­lo­gie peut sembler tout droit sortie de Star Trek, il n’en est rien. En vérité, cet al­go­rithme sert sim­ple­ment à comparer dif­fé­rentes séquences de temps ou de valeurs. Pour ce faire, il les met en cor­res­pon­dance avant de les con­fron­ter les unes aux autres. Grâce au « warping » de ces séquences, terme qui a d’ailleurs donné son nom à l’al­go­rithme, il est possible de mettre en évidence des points communs et des cor­res­pon­dances entre les modèles des dif­fé­rentes séquences, même si leur longueur ou leur vitesse ne sont pas les mêmes.

Par exemple, si deux séquences dif­fé­rentes im­pli­quant de la marche doivent être analysées pour y re­cher­cher des con­cor­dances, l’al­go­rithme est capable de re­con­naître des modèles iden­tiques, et ce, même en cas de dif­fé­rences dans la vitesse de marche ou la distance parcourue. En ce qui concerne la com­pa­rai­son des sig­na­tures d’une même personne, il est également possible de mettre en lumière des points communs, même si la taille de l’écriture n’est pas la même.

Quel est le but du dynamic time warping ?

Il faut re­con­naître qu’à première vue, le DTW a tout d’un concept abstrait sans véritable utilité pratique. Et pourtant : le dynamic time warping remplit une fonction d’analyse im­por­tante dans de nombreux domaines d’ap­pli­ca­tion, notamment l’étude de séquences vidéo et audio et l’analyse sé­quen­tielle de gra­phiques ou de modèles sta­tis­tiques, c’est-à-dire de séquences pouvant être re­pro­duites et comparées de manière linéaire. En iden­ti­fiant les si­mi­li­tudes, le DTW permet le dé­clen­che­ment d’actions, de signaux ou de fonctions spé­ci­fiques.

En outre, la mesure et la re­con­nais­sance de modèles dans des séquences de valeurs per­met­tent d’étudier l’évolution de systèmes si­mi­laires, et ce, même sur dif­fé­rentes périodes. L’al­go­rithme de dynamic time warping s’utilise donc également avec des tech­no­lo­gies de pointe, telles que l’ap­pren­tis­sage au­to­ma­tique, l’ap­pren­tis­sage supervisé ou les réseaux de neurones ar­ti­fi­ciels pour entraîner les capacités d’analyse et de réaction des systèmes d’au­toap­pren­tis­sage et évaluer les ensembles de données de manière plus per­for­mante.

Comment fonc­tionne le dynamic time warping ?

Afin d’iden­ti­fier les modèles et les si­mi­la­ri­tés dans dif­fé­rentes séquences de valeurs, le DTW recherche des cor­res­pon­dances optimales, également appelées « optimal matches » en anglais. Les principes « One-to-many » ou « Many-to-one » peuvent ici s’avérer utiles. Diverses règles et con­di­tions s’ap­pli­quent alors :

  • Au sein d’une séquence, chaque valeur doit être comparée à une ou plusieurs valeurs de la deuxième séquence (et in­ver­se­ment).
  • La première valeur d’une séquence doit être comparée à la première valeur de la deuxième séquence.
  • La dernière valeur d’une séquence doit être comparée à la dernière valeur de la deuxième séquence.
  • Le mappage de la série de valeurs de la première séquence à la série de valeurs de la deuxième séquence doit augmenter de façon uniforme. Les positions des valeurs de début et de fin des séquences doivent cor­res­pondre, sans omission ni doublon.

Pour une cor­res­pon­dance optimale, toutes les spé­ci­fi­ca­tions et les con­di­tions doivent être remplies. Pour ce faire, il est possible d’utiliser une fonction de coût. Celle-ci permet de créer une mesure de dif­fé­rence entre les valeurs des séquences. Pour obtenir une cor­res­pon­dance optimale, la fonction de coût doit être aussi faible que possible.

Par ailleurs, l’al­go­rithme crée un chemin de dé­for­ma­tion qui est en mesure d’iden­ti­fier les cor­res­pon­dances optimales dans des séquences de longueurs dif­fé­rentes. Le retour de trace permet de créer ce chemin de dé­for­ma­tion, dans lequel l’al­go­rithme met en cor­res­pon­dance une ou plusieurs valeurs d’une séquence avec des points de la deuxième séquence. Malgré cette dé­for­ma­tion tem­po­relle, ou plutôt grâce à elle, il est alors possible de mettre en lumière des con­cor­dances, même lorsque les séquences n’ont pas la même longueur.

Quels sont les domaines d’ap­pli­ca­tion du dynamic time warping ?

Il est possible d’utiliser le dynamic time warping dans tous les domaines où des ensembles de données peuvent être re­pré­sen­tés et comparés sous forme de séquences linéaires. Le DTW est donc souvent utilisé comme une étude préalable ou ul­té­rieure dans le cadre de l’analyse des données. Il peut s’agir de données audio, vidéo et al­pha­nu­mé­riques, ou encore d’ensembles de données fondés sur le Big Data.

Les exemples suivants comptent également parmi les domaines d’ap­pli­ca­tion du DTW :

  • La re­con­nais­sance de modèles dans des séquences audio : la re­con­nais­sance vocale constitue un cas d’ap­pli­ca­tion de grande im­por­tance pour le DTW. Dans ce cas par­ti­cu­lier, des modèles lin­guis­tiques en­re­gis­trés et sau­ve­gar­dés sont comparés entre eux grâce au DTW. Pour les séquences audio n’ayant pas la même longueur ou la même vitesse, le DTW utilise la dé­for­ma­tion tem­po­relle dite « adap­ta­tive » pour créer un chemin de dé­for­ma­tion. Ce procédé permet d’iden­ti­fier des con­cor­dances au niveau des voyelles et des consonnes, même si elles ne sont pas pro­non­cées à la même vitesse ou si leur longueur est dif­fé­rente.
  • La re­con­nais­sance de modèles dans des séquences vidéo : pour ce qui est de la re­con­nais­sance des gestes et de la détection des mou­ve­ments, le DTW peut mapper des séquences vidéo, notamment des séquences de mou­ve­ments, les unes sur les autres. Cela permet ainsi de comparer ces séquences de mou­ve­ments et d’y re­con­naître certains modèles, même lorsque leur longueur ou leur vitesse est dif­fé­rente.
  • La re­con­nais­sance de modèles dans des données fi­nan­cières : les marchés fi­nan­ciers et les finances des en­tre­prises cons­ti­tuent également d’im­por­tants domaines d’ap­pli­ca­tion. En utilisant le DTW, il est possible d’établir des pré­vi­sions con­cer­nant les cycles fi­nan­ciers, les courbes de chiffres d’affaires ou les tendances de la bourse. Le DTW permet, sur dif­fé­rentes périodes, d’iden­ti­fier et de vi­sua­li­ser certains cycles et certaines tendances si­mi­laires ou iden­tiques dans les données relatives au marché et aux en­tre­prises. Cette forme d’étude s’applique aussi bien à des pré­vi­sions qu’à des données com­mer­ciales et fi­nan­cières re­cueil­lies.

Quels outils ap­pli­quent le dynamic time warping ?

L’al­go­rithme de DTW est présent dans les bi­blio­thèques de plusieurs logiciels open source. En voici quelques exemples :

  • DTW Suite, qui propose des pro­gi­ciels de pro­gram­ma­tion pour Python et R ;
  • FastDTW, qui propose une im­plé­men­ta­tion Java pour les al­go­rithmes de DTW ;
  • MatchBox, qui propose d’im­plé­men­ter le DTW à des signaux audio ;
  • mlpy et pydtw, qui proposent également des fonctions de DTW en leur qualité de bi­blio­thèques Python pour l’ap­pren­tis­sage au­to­ma­tique ;
  • Gesture Re­cog­ni­tion, qui propose des al­go­rithmes de DTW pour la re­con­nais­sance des gestes en temps réel.

Pour utiliser le DTW de la manière la plus per­for­mante qui soit, il est également possible de recourir aux tech­niques de calcul rapide suivantes :

  • PruneDTW
  • SparseDTW
  • FastDTW
  • Mul­tis­ca­leDTW

Exemple : l’al­go­rithme de dynamic time warping dans Python

Pour illustrer la com­plexité du dynamic time warping, nous vous proposons ci-dessous un exemple d’al­go­rithme de DTW en code Python :

def dtw(s, t, window):
    n, m = len(s), len(t)
    w = np.max([window, abs(n-m)])
    dtw_matrix = np.zeros((n+1, m+1))
    
    for i in range(n+1):
        for j in range(m+1):
            dtw_matrix[i, j] = np.inf
    dtw_matrix[0, 0] = 0
    
    for i in range(1, n+1):
        for j in range(np.max([1, i-w]), np.min([m, i+w])+1):
            dtw_matrix[i, j] = 0
    
    for i in range(1, n+1):
        for j in range(np.max([1, i-w]), np.min([m, i+w])+1):
            cost = abs(s[i-1] - t[j-1])
            # take last min from a square box
            last_min = np.min([dtw_matrix[i-1, j], dtw_matrix[i, j-1], dtw_matrix[i-1, j-1]])
            dtw_matrix[i, j] = cost + last_min
    return dtw_matrix
Python

Trois pa­ra­mètres sont d’abord ren­seig­nés dans la fonction présentée dans l’exemple de code : en premier lieu, les deux signaux qui doivent être analysés sont ren­seig­nés dans les pa­ra­mètres « s » et « t ». En règle générale, les signaux cor­res­pon­dant à des tableaux ou des vecteurs. Le paramètre « window » sert à préciser le nombre d’autres éléments avec lesquels une cor­res­pon­dance est possible.

Dans la fonction, une matrice est d’abord créée, puis ini­tia­li­sée à l’infini avec la valeur cor­res­pon­dante. L’étape centrale du DTW se déroule dans les deux dernières boucles for im­bri­quées : la valeur en­re­gis­trée dans la variable « last_min » est ajoutée aux coûts pré­cé­dents, en­re­gis­trés dans la variable « costs », qui résultent de la distance entre les deux valeurs d’entrée à l’index cor­res­pon­dant.

Cette valeur résulte de valeurs déjà calculées, compte tenu de la pro­gram­ma­tion dynamique. La plus faible des valeurs voisines déjà calculées au préalable est sé­lec­tion­née, puis ajoutée au coût lui aussi calculé pré­cé­dem­ment. Lors de cette étape, il s’agit de trancher entre la mise en cor­res­pon­dance directe de deux éléments, l’ajout d’un élément ou la sup­pres­sion d’un élément.

Une fois la fonction exécutée, elle produit une matrice de distance à partir de laquelle le chemin de dé­for­ma­tion peut être lu.

Solutions de subs­ti­tu­tion au dynamic time warping

Outre le DTW, d’autres solutions de re­con­nais­sance de modèles dans des séquences de valeurs et de temps peuvent être utilisées, notamment :

  • le concept de « cor­re­la­tion optimized warping » (COW, dé­for­ma­tion optimisée par cor­ré­la­tion) ;
  • l’analyse fonc­tion­nelle des données ;
  • le modèle de Markov caché ;
  • l’al­go­rithme de Viterbi.
Aller au menu principal