Uno-caliente - One-hot

Binario Código gris Uno caliente
000 000 00000001
001 001 00000010
010 011 00000100
011 010 00001000
100 110 00010000
101 111 00100000
110 101 01000000
111 100 10000000

En circuitos digitales y aprendizaje automático , un one-hot es un grupo de bits entre los cuales las combinaciones legales de valores son solo aquellas con un solo bit alto (1) y todos los demás bajos (0). Una implementación similar en la que todos los bits son '1' excepto un '0' a veces se denomina one-cold . En estadística , las variables ficticias representan una técnica similar para representar datos categóricos .

Aplicaciones

Circuito digital

La codificación one-hot se utiliza a menudo para indicar el estado de una máquina de estado . Cuando se usa código binario o Gray , se necesita un decodificador para determinar el estado. Una máquina de estado de una sola caliente, sin embargo, no necesita un decodificador como la máquina de estado está en el n º estado si y sólo si el n ésimo bit es alta.

Un contador de anillo con 15 estados ordenados secuencialmente es un ejemplo de máquina de estados. Una implementación 'one-hot' tendría 15 flip flops encadenados en serie con la salida Q de cada flip flop conectada a la entrada D del siguiente y la entrada D del primer flip flop conectada a la salida Q del decimoquinto flip flop . El primer flip flop de la cadena representa el primer estado, el segundo representa el segundo estado y así sucesivamente hasta el decimoquinto flip flop que representa el último estado. Al reiniciar la máquina de estado, todos los flip flops se reinician a '0' excepto el primero de la cadena que se establece en '1'. El siguiente borde del reloj que llega a los flip flops avanza el bit "caliente" al segundo flip flop. El bit "caliente" avanza de esta manera hasta el estado 15, después de lo cual la máquina de estado vuelve al primer estado.

Un decodificador de direcciones convierte de código binario o Gray a representación one-hot. Un codificador de prioridad convierte de representación one-hot a código binario o Gray.

Comparación con otros métodos de codificación

Ventajas
  • Determinar el estado tiene un costo bajo y constante de acceder a un flip-flop
  • Cambiar el estado tiene el costo constante de acceder a dos chanclas
  • Fácil de diseñar y modificar
  • Fácil de detectar estados ilegales
  • Aprovecha las abundantes chanclas de una FPGA

El uso de una implementación one-hot normalmente permite que una máquina de estado se ejecute a una velocidad de reloj más rápida que cualquier otra codificación de esa máquina de estado.

Desventajas
  • Requiere más flip-flops que otras codificaciones, lo que lo hace poco práctico para dispositivos PAL
  • Muchos de los estados son ilegales

Procesamiento natural del lenguaje

En el procesamiento del lenguaje natural , un vector one-hot es una matriz (vector) 1 ×  N que se usa para distinguir cada palabra en un vocabulario de cualquier otra palabra en el vocabulario. El vector consta de ceros en todas las celdas con la excepción de un solo 1 en una celda que se utiliza de forma única para identificar la palabra. La codificación one-hot garantiza que el aprendizaje automático no asuma que los números más altos son más importantes. Por ejemplo, el valor '8' es mayor que el valor '1', pero eso no hace que '8' sea más importante que '1'. Lo mismo ocurre con las palabras: el valor "risa" no es más importante que "reír".

Estadísticas y aprendizaje automático

En el aprendizaje automático, la codificación one-hot es un método de uso frecuente para tratar con datos categóricos. Debido a que muchos modelos de aprendizaje automático necesitan que sus variables de entrada sean numéricas, las variables categóricas deben transformarse en la parte de preprocesamiento.

Codificación de etiquetas
Nombre de la comida Categórico # Calorías
manzana 1 95
Pollo 2 231
Brócoli 3 50
Una codificación en caliente
manzana Pollo Brócoli Calorías
1 0 0 95
0 1 0 231
0 0 1 50

Los datos categóricos pueden ser nominales u ordinales. Los datos ordinales tienen un orden de clasificación para sus valores y, por lo tanto, se pueden convertir en datos numéricos mediante la codificación ordinal. Un ejemplo de datos ordinales serían las calificaciones en una prueba que van de la A a la F, que podrían clasificarse usando números del 6 al 1. Dado que no existe una relación cuantitativa entre los valores individuales de las variables nominales, el uso de la codificación ordinal puede potencialmente crear un valor ficticio. relación ordinal en los datos. Por lo tanto, la codificación one-hot se aplica a menudo a variables nominales para mejorar el rendimiento del algoritmo.

Para cada valor único en la columna categórica original, se crea una nueva columna en este método. Estas variables ficticias se rellenan con ceros y unos (1 significa VERDADERO, 0 significa FALSO).

Debido a que este proceso crea múltiples variables nuevas, es propenso a crear un gran problema p (demasiados predictores) si hay muchos valores únicos en la columna original. Otra desventaja de la codificación one-hot es que provoca multicolinealidad entre las variables individuales, lo que potencialmente reduce la precisión del modelo.

Además, si la variable categórica es una variable de salida, es posible que desee volver a convertir los valores en una forma categórica para presentarlos en su aplicación.

En el uso práctico, esta transformación a menudo la realiza directamente una función que toma datos categóricos como entrada y genera las correspondientes variables ficticias. Un ejemplo sería la función dummyVars de la biblioteca Caret en R.


Ver también

Referencias