Cómo los LLMs procesan texto: tokenización, vectorización y embeddings

Clase 3 de 19Curso de Fundamentos de LLMs

Resumen

Los LLMs (Large Language Models) traducen nuestras palabras e ideas al lenguaje matemático mediante tres procesos clave: tokenización, vectorización y embeddings. Entender estos pasos te permitirá comprender cómo funcionan herramientas como ChatGPT y diversos modelos basados en transformers.

¿Qué es la tokenización y cómo funciona?

La tokenización es el primer paso en el que dividimos un texto en fragmentos llamados tokens. Una manera simple es dividir por palabras, como en "hola, ¿cómo estás?", que tendría tres tokens: hola, cómo, estás. Existen otros métodos avanzados, como la división por subpalabras usadas por el modelo BERT. Este proceso simplifica la interpretación que tendrá un modelo sobre nuestro lenguaje.

¿Cómo se realiza la vectorización de palabras?

Luego viene la vectorización, donde asignamos a cada palabra un vector numérico, inicialmente aleatorio. Por ejemplo:

  • Hola: vector [1, 2].
  • Cómo: vector [1, 3].
  • Estás: vector [3, 4].

Cada vector representa espacialmente su token en un plano bidimensional para este ejemplo simplificado. Estos vectores permiten operaciones matemáticas que indican semejanzas o diferencias entre palabras.

¿Qué son y cómo funcionan los embeddings?

El embedding es el proceso final donde entrenamos modelos más pequeños para colocar palabras similares cerca unas de otras en el espacio. Con embeddings, palabras relacionadas quedan agrupadas espacialmente; por ejemplo, conceptos como "hola" o "qué tal" aparecen juntos por ser saludos.

Ejemplo de operaciones entre embeddings

Supongamos tres conceptos vectores: rey, hombre y reina. Si realizamos una operación como "rey menos hombre" obtenemos matemáticamente algo cercano al vector de reina. Esto es posible porque:

  • Cada palabra posee un embedding que permite operaciones algebraicas.
  • Facilita cálculos matemáticos para llevar a cabo relaciones y asociaciones.

¿Cómo aplicar estos conceptos en código Python?

Utilizando la librería Transformers de Hugging Face, se puede tokenizar, vectorizar y generar embeddings fácilmente:

from transformers import BertTokenizer, BertModel
import torch

# Instalar tokenizer y hacer tokenización
model_name = 'bert-base-uncased'
tokenizer = BertTokenizer.from_pretrained(model_name)
tokens = tokenizer.tokenize("hola, ¿cómo estás?")

# Ejemplo de generación de embeddings
model = BertModel.from_pretrained(model_name)
king_embedding = model.embeddings.word_embeddings(torch.tensor([tokenizer.convert_tokens_to_ids("king")]))

Finalmente, con librerías como PyTorch puedes calcular similitudes vectoriales usando funciones como cosine similarity, obteniendo resultados numéricos sobre la cercanía conceptual entre palabras.

¿Cómo experimentar con los conceptos mostrados?

Te invitamos a probar estos conceptos con herramientas como Colab, intercambiando diferentes palabras y analizando similitudes vectoriales entre conceptos variados. Por ejemplo, prueba qué animales son similares al gato o explora la estructura jerárquica de los animales utilizando únicamente cambios simples de palabras.

¡Comparte tu experiencia en los comentarios y continúa aprendiendo explorando las capacidades y herramientas que brindan los LLMs!