Un chaud - One-hot

Binaire Code gris Un chaud
000 000 00000001
001 001 00000010
010 011 00000100
011 010 00001000
100 110 00010000
101 111 00100000
110 101 01000000
111 100 10 000 000

Dans les circuits numériques et l'apprentissage automatique , un one-hot est un groupe de bits parmi lesquels les combinaisons légales de valeurs sont uniquement celles avec un seul bit haut (1) et tous les autres bas (0). Une implémentation similaire dans laquelle tous les bits sont '1' sauf un '0' est parfois appelée one-cold . En statistique , les variables fictives représentent une technique similaire pour représenter des données catégorielles .

Applications

Circuit numérique

Le codage à chaud est souvent utilisé pour indiquer l'état d'une machine à états . Lors de l'utilisation du code binaire ou Gray , un décodeur est nécessaire pour déterminer l'état. Une machine à états à un seul état, cependant, n'a pas besoin d'un décodeur car la machine à états est dans le n ème état si et seulement si le n ème bit est haut.

Un compteur en anneau avec 15 états ordonnés séquentiellement est un exemple de machine à états. Une mise en œuvre `` one-hot '' aurait 15 bascules enchaînées en série avec la sortie Q de chaque bascule connectée à l'entrée D de la suivante et l'entrée D de la première bascule connectée à la sortie Q de la 15e bascule . La première bascule de la chaîne représente le premier état, la seconde le deuxième état, et ainsi de suite jusqu'à la 15e bascule qui représente le dernier état. Lors de la réinitialisation de la machine à états, toutes les bascules sont réinitialisées à «0» à l'exception du premier de la chaîne qui est mis à «1». Le front d'horloge suivant arrivant aux bascules avance le bit «chaud» vers la deuxième bascule. Le bit «chaud» avance de cette manière jusqu'au 15ème état, après quoi la machine à états revient au premier état.

Un décodeur d'adresse convertit du code binaire ou Gray en une représentation unique. Un codeur de priorité convertit d'une représentation à un seul élément en code binaire ou Gray.

Comparaison avec d'autres méthodes d'encodage

Avantages
  • La détermination de l'état a un coût faible et constant pour accéder à une bascule
  • Changer d'état a le coût constant d'accéder à deux bascules
  • Facile à concevoir et à modifier
  • Détection facile des états illégaux
  • Profite des nombreuses bascules d'un FPGA

L'utilisation d'une implémentation one-hot permet généralement à une machine à états de s'exécuter à une fréquence d'horloge plus rapide que tout autre encodage de cette machine à états.

Désavantages
  • Nécessite plus de bascules que les autres encodages, ce qui le rend peu pratique pour les appareils PAL
  • De nombreux États sont illégaux

Traitement du langage naturel

Dans le traitement du langage naturel , un vecteur one-hot est une matrice 1 ×  N (vecteur) utilisée pour distinguer chaque mot d'un vocabulaire de tous les autres mots du vocabulaire. Le vecteur se compose de 0 dans toutes les cellules à l'exception d'un seul 1 dans une cellule utilisé uniquement pour identifier le mot. Le codage à chaud garantit que l'apprentissage automatique ne suppose pas que des nombres plus élevés sont plus importants. Par exemple, la valeur «8» est plus grande que la valeur «1», mais cela ne rend pas «8» plus important que «1». Il en va de même pour les mots: la valeur «rire» n'est pas plus importante que «rire».

Apprentissage automatique et statistiques

Dans l'apprentissage automatique, le codage à chaud est une méthode fréquemment utilisée pour traiter les données catégorielles. Étant donné que de nombreux modèles d'apprentissage automatique ont besoin que leurs variables d'entrée soient numériques, les variables catégorielles doivent être transformées dans la partie de prétraitement.

Encodage d'étiquettes
Nom de l'aliment # Catégorique Calories
Pomme 1 95
Poulet 2 231
Brocoli 3 50
Un encodage à chaud
Pomme Poulet Brocoli Calories
1 0 0 95
0 1 0 231
0 0 1 50

Les données catégorielles peuvent être nominales ou ordinales. Les données ordinales ont un ordre de classement pour leurs valeurs et peuvent donc être converties en données numériques via un codage ordinal. Un exemple de données ordinales serait les notes d'un test allant de A à F, qui pourraient être classées en utilisant des nombres de 6 à 1. Puisqu'il n'y a pas de relation quantitative entre les valeurs individuelles des variables nominales, l'utilisation du codage ordinal peut potentiellement créer un relation ordinale dans les données. Par conséquent, le codage à chaud est souvent appliqué aux variables nominales, afin d'améliorer les performances de l'algorithme.

Pour chaque valeur unique de la colonne catégorielle d'origine, une nouvelle colonne est créée dans cette méthode. Ces variables factices sont ensuite remplies de zéros et de uns (1 signifiant VRAI, 0 signifiant FAUX).

Étant donné que ce processus crée plusieurs nouvelles variables, il est susceptible de créer un gros problème p (trop de prédicteurs) s'il existe de nombreuses valeurs uniques dans la colonne d'origine. Un autre inconvénient du codage one-hot est qu'il provoque une multicolinéarité entre les variables individuelles, ce qui réduit potentiellement la précision du modèle.

De plus, si la variable catégorielle est une variable de sortie, vous souhaiterez peut-être reconvertir les valeurs sous une forme catégorielle afin de les présenter dans votre application.

Dans la pratique, cette transformation est souvent effectuée directement par une fonction qui prend des données catégorielles comme entrée et produit les variables fictives correspondantes. Un exemple serait la fonction dummyVars de la bibliothèque Caret dans R.


Voir également

Les références