ElemedexEnciclopedia de bolsillo de arquitecturas de IA

Glosario (MT) › Lenguaje y modelos de lenguaje

MT051

Codificación por pares de bytes (BPE)

También: BPE

En inglés: Byte-pair encoding (BPE)

Algoritmo de tokenización que parte de caracteres (o bytes) y fusiona una y otra vez el par adyacente más frecuente hasta alcanzar el tamaño de vocabulario deseado.

La codificación por pares de bytes nació como técnica de compresión de datos (Gage, 1994): reemplazar el par de bytes más frecuente por un byte nuevo, y repetir. Sennrich et al. (2016) la adaptaron a la segmentación de palabras para traducción automática: se empieza con un vocabulario de caracteres, se cuentan los pares de símbolos adyacentes en un corpus, se fusiona el más frecuente en un símbolo nuevo y se repite; la cantidad de fusiones es el único hiperparámetro (2016, p. 1717). Las fusiones aprendidas se aplican luego, en orden, a cualquier palabra, incluso a una nunca vista: la desconocida lower queda segmentada como low + er (2016, p. 1718).

Ejemplo mínimo. Corpus: canta ×4, cantan ×3, canto ×2, manta ×1. El par más frecuente es a n (13 veces), que se fusiona en «an»; luego an t (10) → «ant»; luego c ant (9) → «cant»; luego cant a (4) → «canta». Tras cuatro fusiones, canta es un solo token, cantan = cant + an, canto = cant + o y manta = m + ant + a.

El ejemplo muestra lo que le interesa al lingüista. cant|o coincide con un análisis morfológico; cant|an separa la raíz, pero funde la vocal temática con la desinencia; m|ant|a no tiene nada de morfológico. BPE no busca morfemas sino compresión, y encuentra morfemas solo cuando son frecuentes. Hay un parentesco lejano con los procedimientos distribucionales con que Harris (1955) proponía hallar fronteras de morfemas, pero aquí el criterio es puramente la frecuencia.

GPT-2 introdujo una variante a nivel de bytes: el vocabulario base tiene solo 256 símbolos, de modo que cualquier cadena Unicode es representable sin token «desconocido». Para evitar fusiones inútiles como dog., dog! y dog?, se prohibió fusionar a través de categorías de caracteres (Radford et al., 2019, sec. 2.2); el vocabulario final fue de 50.257 tokens (Alammar y Grootendorst, 2024, p. 49). GPT-4, Llama 2 y StarCoder2 también usan BPE (Alammar y Grootendorst, 2024, pp. 50–54); BERT usa WordPiece, un algoritmo emparentado (Alammar y Grootendorst, 2024, p. 43). Ver tokenización.

Fuentes

  • Alammar, J., & Grootendorst, M. (2024). Hands-on large language models: Language understanding and generation. O’Reilly Media. §
  • Gage, P. (1994). A new algorithm for data compression. The C Users Journal, 12(2), 23–38. §
  • Harris, Z. S. (1955). From phoneme to morpheme. Language, 31(2), 190–222. https://doi.org/10.2307/411036 §
  • Radford, A., Wu, J., Child, R., Luan, D., Amodei, D., & Sutskever, I. (2019). Language models are unsupervised multitask learners [Technical report]. OpenAI. https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf §
  • Sennrich, R., Haddow, B., & Birch, A. (2016). Neural machine translation of rare words with subword units. In Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) (pp. 1715–1725). Association for Computational Linguistics. https://doi.org/10.18653/v1/P16-1162 §