En circuitos digitales y aprendizaje automático , un one-hot es un grupo de bits entre los cuales las combinaciones válidas de valores son solo aquellas con un único bit alto (1) y todos los demás bajos (0). [ 1 ] Una implementación similar en la que todos los bits son '1' excepto uno '0' se denomina a veces one-cold . [ 2 ] En estadística , las variables ficticias representan una técnica similar para representar datos categóricos .
Aplicaciones
Circuitos digitales
La codificación one-hot se utiliza a menudo para indicar el estado de una máquina de estados . Al usar código binario , se necesita un decodificador para determinar el estado. Sin embargo, una máquina de estados one-hot no necesita un decodificador, ya que se encuentra en el estado n si y solo si el bit n está en alto.
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 el segundo, y así sucesivamente hasta el decimoquinto flip-flop, que representa el último estado. Al reiniciarse la máquina de estados, todos los flip-flops se reinician a '0' excepto el primero de la cadena, que se establece en '1'. El siguiente flanco de reloj que llega a los flip-flops avanza el bit "hot" al segundo flip-flop. El bit "hot" avanza de esta manera hasta el decimoquinto estado, después del cual la máquina de estados regresa al primer estado.
Un decodificador de direcciones convierte de binario a representación one-hot. Un codificador de prioridad convierte de representación one-hot a binario.
Comparación con otros métodos de codificación
Ventajas
- Determinar el estado tiene un costo bajo y constante de acceso a un flip-flop.
- Cambiar el estado tiene el coste constante de acceder a dos flip-flops.
- Fácil de diseñar y modificar
- Fácil de detectar estados ilegales
- Aprovecha la abundancia de biestables de un FPGA.
- El uso de una implementación one-hot generalmente permite que una máquina de estados se ejecute a una velocidad de reloj más rápida que cualquier otra codificación de esa máquina de estados [ 3 ].
Desventajas
- Requiere más biestables que otras codificaciones, lo que lo hace poco práctico para dispositivos PAL.
- Muchos de los estados son ilegales [ 4 ]
Procesamiento del lenguaje natural
En el procesamiento del lenguaje natural , un vector one-hot es una matriz (vector) de 1 × N que se utiliza para distinguir cada palabra de un vocabulario de todas las demás. [ 5 ] El vector consta de ceros en todas las celdas, con la excepción de un único uno 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'.
Aprendizaje automático y estadística
En el aprendizaje automático, la codificación one-hot es un método frecuentemente utilizado para tratar datos categóricos. Dado que muchos modelos de aprendizaje automático requieren que sus variables de entrada sean numéricas, las variables categóricas deben transformarse en la etapa de preprocesamiento. [ 6 ]
Los datos categóricos pueden ser nominales u ordinales . [ 7 ] Los datos ordinales tienen un orden jerarquizado para sus valores y, por lo tanto, pueden convertirse en datos numéricos mediante codificación ordinal. [ 8 ] Un ejemplo de datos ordinales serían las calificaciones de una prueba que van de A a F, las cuales 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 una relación ordinal ficticia en los datos. [ 9 ] Por lo tanto, la codificación one-hot se aplica a menudo a las variables nominales para mejorar el rendimiento del algoritmo.
En este método, para cada valor único de la columna categórica original, se crea una nueva columna. 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 generar un problema de "gran p" (demasiados predictores) si la columna original contiene muchos valores únicos. Otra desventaja de la codificación one-hot es que provoca multicolinealidad entre las variables individuales, lo que puede reducir la precisión del modelo.
Además, si la variable categórica es una variable de salida, es posible que desee convertir los valores nuevamente a una forma categórica para presentarlos en su aplicación. [ 10 ]
En la práctica, esta transformación suele realizarse directamente mediante una función que toma datos categóricos como entrada y genera las variables ficticias correspondientes. Un ejemplo sería la función dummyVars de la biblioteca Caret en R. [ 11 ]
Véase también
- Código de peso constante : método para codificar datos en comunicaciones, donde se establece un número constante de bits.
- Código de dos de cinco : código de detección de errores para dígitos decimales, ampliamente utilizado en códigos de barras y en su momento en centrales telefónicas.
- Decimal codificado biquinario – Esquema de codificación numérica
- Código Gray : ordenación de valores binarios, utilizada para el posicionamiento y la corrección de errores.
- Delta de Kronecker : función matemática de dos variables; devuelve 1 si son iguales y 0 en caso contrario.
- Vector indicador
- Decimal serial
- Vector de entrada única : concepto en matemáticasPáginas que muestran breves descripciones de destinos de redireccionamiento
- Sistema numérico unario – Sistema numérico de base 1
- Cuantificación de la singularidad – Cuantificador lógico
- Puerta XOR – Puerta lógica
Referencias
- ^ Harris, David y Harris, Sarah (7 de agosto de 2012). Diseño digital y arquitectura de computadoras (2.ª ed.). San Francisco, California: Morgan Kaufmann. pág. 129. ISBN 978-0-12-394424-5.
{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ^ Harrag, Fouzi; Gueliani, Selmene (2020-08-11). "Extracción de eventos basada en aprendizaje profundo en textos árabes sobre peligros alimentarios". arXiv : 2008.05014 [ cs.SI ].
- ^ Xilinx. "Guía de diseño de síntesis HDL para FPGA" . Sección 3.13: "Máquinas de estados de codificación". Apéndice A: "Aceleración de macros FPGA con el enfoque One-Hot". 1995.
- ^ Cohen, Ben (2002). Diseño y verificación de chips reales mediante Verilog y VHDL . Palos Verdes Peninsula, CA, EE. UU.: VhdlCohen Publishing. pág. 48. ISBN 0-9705394-2-8.
- ^ Arnaud, Émilien; Elbattah, Mahmoud; Gignon, Maxime; Dequen, Gilles (agosto de 2021). Predicción de especialidades médicas en el ingreso hospitalario basada en PLN utilizando notas de triaje . 2021 IEEE 9th International Conference on Healthcare Informatics (ICHI). Victoria, Columbia Británica . págs. 548–553 . doi : 10.1109/ICHI52183.2021.00103 .
- ^ Brownlee, Jason. (2017). "¿Por qué codificar los datos con codificación one-hot en el aprendizaje automático?". Machinelearningmastery. https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/
- ^ Stevens, SS (1946). “Sobre la teoría de las escalas de medición”. Science, New Series, 103.2684, pp. 677–680. http://www.jstor.org/stable/1671815 .
- ^ Brownlee, Jason. (2020). "Codificaciones ordinales y one-hot para datos categóricos". Machinelearningmastery. https://machinelearningmastery.com/one-hot-encoding-for-categorical-data//
- ^ Brownlee, Jason. (2020). "Codificaciones ordinales y one-hot para datos categóricos". Machinelearningmastery. https://machinelearningmastery.com/one-hot-encoding-for-categorical-data//
- ^ Brownlee, Jason. (2017). "¿Por qué codificar los datos con codificación one-hot en el aprendizaje automático?". Machinelearningmastery. https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/
- ^ Kuhn, Max. “dummyVars”. RDocumentation. https://www.rdocumentation.org/packages/caret/versions/6.0-86/topics/dummyVars
- electrónica digital
- 1 (número)