22. Introducción a redes neuronales para texto

22.1 Introducción

Después de estudiar representaciones clásicas como Bag of Words, TF-IDF y también la idea de modelos de lenguaje, llega el momento de entrar en una familia de métodos que transformó profundamente el NLP: las redes neuronales.

En este tema no estudiaremos todavía arquitecturas específicas como RNN, LSTM o Transformers. El objetivo aquí es comprender por qué las redes neuronales empezaron a usarse para texto, qué problema intentan resolver y cuál es la lógica general detrás de su funcionamiento.

22.2 ¿Por qué hacer NLP con redes neuronales?

Los enfoques clásicos funcionaron muy bien en muchos problemas, pero también mostraron límites claros. Representaciones como Bag of Words o TF-IDF son útiles, aunque tienden a ser dispersas, superficiales y poco sensibles al orden completo de las palabras.

Además, muchas veces requieren diseñar manualmente características o aceptar simplificaciones fuertes sobre el contexto. Las redes neuronales aparecieron como una forma de aprender representaciones y patrones directamente a partir de los datos.

La promesa central fue esta: en lugar de decirle al sistema qué rasgos mirar, permitir que aprenda internamente qué regularidades son relevantes.

22.3 De características manuales a representaciones aprendidas

En Machine Learning clásico, una parte importante del trabajo consistía en construir buenas variables de entrada. En texto, eso significaba decidir si usar unigramas, bigramas, TF-IDF, stemming, stopwords, conteos especiales y muchas otras opciones.

Con redes neuronales, una parte de ese esfuerzo se desplaza hacia el aprendizaje automático de representaciones. El modelo recibe datos y ajusta sus parámetros para encontrar una codificación interna útil para la tarea.

Esto no elimina la necesidad de criterio humano, pero cambia la naturaleza del problema: ahora importa mucho más el diseño de la arquitectura, los datos y el entrenamiento.

22.4 ¿Qué es una red neuronal, en términos simples?

Una red neuronal es una función parametrizada compuesta por varias transformaciones sucesivas. Cada capa toma una entrada numérica, la transforma y produce una salida que será procesada por la siguiente capa.

En términos intuitivos, puede pensarse como un sistema que va construyendo representaciones cada vez más útiles a medida que avanza por sus capas.

Para NLP esto significa que el texto debe convertirse primero en números, y luego esas representaciones numéricas pasan por distintas etapas de procesamiento hasta llegar a una predicción.

22.5 El texto debe volverse numérico

Las redes neuronales no trabajan directamente con palabras como cadenas de caracteres. Necesitan vectores, matrices y tensores. Por eso, el primer paso es transformar tokens en identificadores numéricos y luego en representaciones continuas.

Aquí reaparece una idea que ya vimos: todo sistema de NLP necesita convertir lenguaje en estructuras matemáticas manipulables por la computadora.

La diferencia es que ahora esas representaciones suelen ser densas y aprendidas, no solo conteos fijos sobre un vocabulario.

22.6 Embeddings como puerta de entrada

Uno de los componentes más importantes en NLP neuronal es la capa de embeddings. Su función es mapear cada token a un vector denso de dimensión relativamente pequeña.

Esto ofrece varias ventajas:

  • Reduce la dispersión extrema de representaciones tipo one-hot.
  • Permite que palabras parecidas tengan vectores parecidos.
  • Hace posible generalizar entre contextos relacionados.

Gracias a los embeddings, las redes neuronales pueden trabajar con una geometría semántica más rica que la de los enfoques puramente basados en conteos.

22.7 Capas, pesos y aprendizaje

Cada conexión dentro de una red neuronal tiene parámetros ajustables, llamados normalmente pesos. Durante el entrenamiento, esos pesos se modifican para que la salida de la red se acerque a la respuesta esperada.

Si el problema es clasificación de sentimiento, por ejemplo, la red ajusta sus parámetros para aumentar la probabilidad de la clase correcta. Si el problema es predicción del siguiente token, ajusta los pesos para asignar más probabilidad a continuaciones adecuadas.

El punto central es que la red no viene con conocimiento fijo. Aprende a partir de ejemplos.

22.8 Función de pérdida

Para aprender, el sistema necesita una forma de medir qué tan mal lo está haciendo. Esa medida se expresa mediante una función de pérdida.

La pérdida resume la distancia entre lo que el modelo predijo y lo que debería haber predicho. Cuanto mayor es la pérdida, peor fue la predicción. El entrenamiento intenta reducirla ajustando los parámetros de la red.

Aunque este concepto pertenece al aprendizaje automático en general, es esencial para entender cómo una red neuronal mejora con la experiencia.

22.9 Entrenamiento y retropropagación

El aprendizaje en redes neuronales suele apoyarse en un procedimiento llamado retropropagación combinado con métodos de optimización como descenso por gradiente.

No necesitamos entrar aquí en todos los detalles matemáticos. Lo importante es la idea: la red realiza una predicción, calcula el error y luego ajusta sus parámetros para cometer menos errores en ejemplos futuros.

En una red neuronal, aprender significa modificar millones de parámetros para que la transformación del texto produzca salidas cada vez más útiles para la tarea.

22.10 Diferencia con el NLP clásico

La diferencia no está solo en usar otra técnica de clasificación. Cambia también la filosofía de representación.

  • En enfoques clásicos, las características suelen definirse explícitamente.
  • En enfoques neuronales, muchas representaciones internas son aprendidas.
  • En enfoques clásicos, el contexto puede quedar reducido a conteos locales.
  • En enfoques neuronales, el modelo puede aprender relaciones más complejas entre tokens.

Esto explica por qué Deep Learning abrió nuevas posibilidades para tareas difíciles del lenguaje.

22.11 ¿Todas las redes sirven igual para texto?

No. El texto es un tipo de dato secuencial, y eso plantea exigencias específicas. Una arquitectura pensada para vectores fijos o para imágenes no siempre captura bien dependencias temporales, orden o contexto textual.

Por eso, a lo largo de la evolución del NLP neuronal aparecieron arquitecturas especializadas para manejar secuencias, como las redes recurrentes, y más adelante mecanismos de atención y Transformers.

Este tema es solo la base conceptual antes de entrar en esas variantes.

22.12 Entrada, salida y tarea objetivo

Una red neuronal para texto puede tener objetivos muy distintos según la tarea:

  • Clasificar un documento.
  • Asignar una etiqueta a cada palabra.
  • Predecir el siguiente token.
  • Generar una secuencia completa.
  • Comparar dos textos entre sí.

La estructura precisa del modelo dependerá de cómo sea la entrada, qué salida se espera y qué tipo de relación debe aprender entre ambas.

22.13 El problema del orden

Una de las dificultades más importantes en NLP es que el orden de las palabras importa. Las frases "el perro mordió al niño" y "el niño mordió al perro" contienen las mismas palabras, pero no significan lo mismo.

Esto muestra por qué una simple bolsa de palabras puede ser insuficiente. Una red neuronal para texto debe, de algún modo, incorporar información secuencial o estructural.

22.14 Longitud variable de las secuencias

Otro desafío es que los textos no tienen todos la misma longitud. Un mensaje puede tener tres palabras y otro puede tener cientos o miles de tokens.

Las arquitecturas neuronales para NLP deben manejar esta variabilidad sin perder información importante. Algunas lo hacen recorriendo la secuencia paso a paso. Otras lo hacen procesando todos los tokens en paralelo con mecanismos más sofisticados.

22.15 Generalización semántica

Una gran ventaja de las redes neuronales es su capacidad para generalizar mejor entre expresiones diferentes pero relacionadas. Si el sistema aprende que "excelente", "muy bueno" y "fantástico" suelen aparecer en contextos parecidos, podrá aprovechar esa similitud.

Esto contrasta con representaciones muy rígidas donde cada palabra es una dimensión aislada sin relación natural con las demás.

22.16 Datos y costo computacional

Las redes neuronales suelen requerir más datos y más recursos computacionales que muchos enfoques clásicos. Esto no significa que siempre sean la mejor opción en cualquier problema.

Si el conjunto de datos es pequeño, el problema es simple o se necesita mucha interpretabilidad, un baseline clásico puede seguir siendo una decisión excelente. La elección tecnológica debe responder al problema real, no a una moda.

22.17 Sobreajuste y regularización

Como las redes neuronales pueden tener una enorme cantidad de parámetros, también corren riesgo de sobreajuste. Es decir, pueden aprender demasiado bien los ejemplos de entrenamiento y fallar al generalizar a textos nuevos.

Por eso son importantes conceptos como validación, dropout, tamaño del modelo, cantidad de datos y control del entrenamiento.

22.18 Inferencia

Una vez entrenada, la red puede usarse para procesar nuevos textos. A este uso sobre datos no vistos se lo llama inferencia.

En inferencia, el modelo ya no ajusta parámetros. Solo aplica lo aprendido para producir una salida: una clase, una secuencia, una probabilidad o una representación.

22.19 Ejemplos de uso en NLP

Las redes neuronales se aplican a muchas tareas del lenguaje:

  • Clasificación de sentimiento.
  • Detección de intención.
  • Etiquetado gramatical.
  • Reconocimiento de entidades.
  • Traducción automática.
  • Resumen y generación de texto.

La arquitectura concreta cambia según la tarea, pero la idea general de aprender representaciones y transformaciones a partir de datos permanece.

22.20 Comparación general

Aspecto Enfoque clásico Enfoque neuronal
Representación Manual o basada en conteos. Aprendida y densa.
Contexto Más limitado o superficial. Puede capturar relaciones más complejas.
Datos necesarios Moderados en muchos casos. Suelen requerirse más datos.
Interpretabilidad Generalmente mayor. Generalmente menor.
Costo computacional Más bajo. Más alto.

22.21 Ejemplo en Python: clasificador neuronal mínimo con PyTorch

Este ejemplo muestra un modelo neuronal muy pequeño para clasificar frases. Usa embeddings y promedio de tokens, sin RNN ni atención todavía. Es una buena forma de ver cómo las ideas del tema se traducen a un modelo real.

import torch
import torch.nn as nn

vocabulario = {"excelente": 0, "malo": 1, "servicio": 2, "rapido": 3, "lento": 4}
entradas = torch.tensor([
    [0, 2, 3],  # excelente servicio rapido
    [1, 2, 4],  # malo servicio lento
], dtype=torch.long)
etiquetas = torch.tensor([1, 0], dtype=torch.long)

class ClasificadorTexto(nn.Module):
    def __init__(self, vocab_size, emb_dim, num_classes):
        super().__init__()
        self.embedding = nn.Embedding(vocab_size, emb_dim)
        self.linear = nn.Linear(emb_dim, num_classes)

    def forward(self, x):
        emb = self.embedding(x)          # (batch, seq, emb_dim)
        pooled = emb.mean(dim=1)         # promedio de la secuencia
        return self.linear(pooled)

modelo = ClasificadorTexto(vocab_size=len(vocabulario), emb_dim=8, num_classes=2)
salida = modelo(entradas)
print(salida.shape)  # torch.Size([2, 2])

Este tipo de arquitectura es simple, pero ya muestra el cambio de paradigma: el sistema aprende embeddings y parámetros internos en lugar de depender solo de rasgos manuales definidos por nosotros.

22.22 Qué debes recordar de este tema

  • Las redes neuronales para texto surgieron para superar límites de representaciones clásicas más rígidas.
  • Aprenden representaciones internas a partir de los datos, en lugar de depender solo de características manuales.
  • El texto debe convertirse en números, normalmente mediante índices y embeddings.
  • El entrenamiento ajusta parámetros para minimizar una función de pérdida.
  • El orden, el contexto y la longitud variable hacen que NLP requiera arquitecturas especializadas.
  • Las redes neuronales son potentes, pero también más costosas y menos interpretables.

22.23 Conclusión

La introducción de redes neuronales en NLP marcó un cambio profundo: el paso desde representaciones manuales y modelos más rígidos hacia sistemas que aprenden directamente a partir de grandes cantidades de texto.

Sin embargo, no todas las arquitecturas neuronales manejan bien el lenguaje secuencial. Por eso, el siguiente paso histórico y conceptual fue el desarrollo de las redes recurrentes, diseñadas específicamente para procesar secuencias de texto.

En el próximo tema estudiaremos precisamente las RNN para NLP.