Articulo de referencia

Codificación de pares de bytes

La codificación de pares de bytes [1] [2] (también conocida como codificación de digramas ) [3] es un algoritmo, descrito por primera vez en 1994 por Philip Gage, para codificar...

La codificación de pares de bytes [1] [2] (también conocida como codificación de digramas ) [3] es un algoritmo, descrito por primera vez en 1994 por Philip Gage, para codificar cadenas de texto en formato tabular para su uso en el modelado posterior. [4] Una versión ligeramente modificada del algoritmo se utiliza en tokenizadores de modelos de lenguaje grandes .

La versión original del algoritmo se centraba en la compresión. Reemplazaba el par de bytes de mayor frecuencia por un byte nuevo que no estaba incluido en el conjunto de datos inicial. Se requiere una tabla de búsqueda de los reemplazos para reconstruir el conjunto de datos inicial.

La versión modificada crea "tokens" (unidades de reconocimiento) que coinciden con cantidades variables de texto fuente, desde caracteres individuales (incluidos dígitos individuales o signos de puntuación individuales) hasta palabras completas (incluso palabras compuestas largas). [5] [6] [7] El algoritmo de tokenización modificado trata inicialmente el conjunto de caracteres únicos como n-gramas de 1 carácter de longitud (los tokens iniciales). Luego, sucesivamente, el par más frecuente de tokens adyacentes se fusiona en un nuevo n-grama más largo y todas las instancias del par se reemplazan por este nuevo token. Esto se repite hasta que se obtiene un vocabulario del tamaño prescrito. Tenga en cuenta que siempre se pueden construir nuevas palabras a partir de tokens de vocabulario final y caracteres del conjunto inicial. [8] Este enfoque algorítmico se ha extendido del lenguaje hablado al lenguaje de señas en los últimos años. [9]

Todos los tokens únicos encontrados en un corpus se enumeran en un vocabulario de tokens, cuyo tamaño, en el caso de GPT-3.5 y GPT-4 , es 100256.

El algoritmo modificado es eficaz para la tokenización porque tiene una baja sobrecarga computacional y sigue siendo consistente y confiable.

Algoritmo original

El algoritmo original funciona reemplazando iterativamente las secuencias contiguas de caracteres más comunes en un texto de destino con bytes "de reserva" no utilizados. La iteración finaliza cuando no se pueden encontrar secuencias, lo que deja el texto de destino efectivamente comprimido. La descompresión se puede realizar invirtiendo este proceso, consultando los términos de reserva conocidos contra su secuencia indicada correspondiente, utilizando una tabla de búsqueda. En el artículo original, esta tabla de búsqueda se codifica y se almacena junto con el texto comprimido.

Ejemplo

Supongamos que los datos a codificar son

aaabdaaabac

El par de bytes "aa" es el que aparece con más frecuencia, por lo que se reemplazará por un byte que no se utiliza en los datos, como "Z". Ahora tenemos la siguiente tabla de datos y reemplazos:

ZabdZabac
Z=aa

Luego se repite el proceso con el par de bytes "ab", reemplazándolo por "Y":

ZYdZYac
Y=ab
Z=aa

El único par de bytes literal que queda aparece solo una vez y la codificación podría detenerse aquí. Como alternativa, el proceso podría continuar con la codificación recursiva de pares de bytes, reemplazando "ZY" por "X":

XdXac
X=ZY
Y=ab
Z=aa

Estos datos no se pueden comprimir aún más mediante la codificación de pares de bytes porque no hay pares de bytes que aparezcan más de una vez.

Para descomprimir los datos, simplemente realice los reemplazos en el orden inverso.

Véase también

Referencias

  1. ^ Gage, Philip (1994). "Un nuevo algoritmo para la compresión de datos". The C User Journal .
  2. ^ "Un nuevo algoritmo para la compresión de datos". Dr. Dobb's Journal . 1 de febrero de 1994 . Consultado el 10 de agosto de 2020 .
  3. ^ Witten, Ian H.; Moffat, Alistair; Bell, Timothy C. (1994). Managing Gigabytes (Administración de gigabytes ). Nueva York: Van Nostrand Reinhold. ISBN. 978-0-442-01863-4.
  4. ^ "Codificación de pares de bytes". Archivado desde el original el 26 de marzo de 2016.
  5. ^ Sennrich, Rico; Birch, Alexandra; Haddow, Barry (31 de agosto de 2015). "Traducción automática neuronal de palabras raras con unidades de subpalabras". arXiv : 1508.07909 [cs.CL].
  6. ^ Brown, Tom B.; Mann, Benjamin; Ryder, Nick; Subbiah, Melanie; Kaplan, Jared; Dhariwal, Prafulla; Neelakantan, Arvind; Shyam, Pranav; Sastry, Girish; Askell, Amanda; Agarwal, Sandhini (4 de junio de 2020). "Los modelos de lenguaje son aprendices de pocas oportunidades". arXiv : 2005.14165 [cs.CL].
  7. ^ "google/sentencepiece". Google. 2021-03-02 . Consultado el 2021-03-02 .
  8. ^ Paaß, Gerhard; Giesselbach, Sven (2022). "Modelos de lenguaje preentrenados". Modelos básicos para el procesamiento del lenguaje natural . Inteligencia artificial: fundamentos, teoría y algoritmos. págs. 19–78. doi :10.1007/978-3-031-23190-2_2. ISBN 9783031231902. Recuperado el 3 de agosto de 2023 .
  9. ^ Taro Miyazaki, Sihan Tan, Tsubasa Uchida, Hiroyuki Kaneko (25 de mayo de 2024). "Traducción de lenguas de señas con codificación de pares de glosas" (PDF) . Actas del 11.º Taller sobre la representación y el procesamiento de las lenguas de señas .{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace )
Obtenido de "https://es.wikipedia.org/w/index.php?title=Codificación_de_par_de_bytes&oldid=1259220345"