Día 23 del “Calendario de Adviento” de aprendizaje automático: CNN en Excel

se introdujeron por primera vez para imágenes y, en el caso de las imágenes, suelen ser fáciles de entender.

Un filtro se desliza sobre los píxeles y detecta bordes, formas o texturas. Puede leer este artículo que escribí anteriormente para comprender cómo funcionan las CNN para imágenes con Excel.

Para el texto, la idea es la misma.

En lugar de píxeles, deslizamos filtros sobre palabras.

En lugar de patrones visuales, detectamos patrones lingüísticos.

Y muchos patrones importantes en el texto son muy locales. Tomemos estos ejemplos muy simples:

“bueno” es positivo “malo” es negativo “no es bueno” es negativo “no es malo” suele ser positivo

En mi artículo anterior, vimos cómo representar palabras como números mediante incrustaciones.

También vimos una limitación clave: cuando utilizamos un promedio global, el orden de las palabras se ignoraba por completo.

Desde el punto de vista del modelo, “no bueno” y “bueno no” parecían exactamente iguales.

Entonces, el próximo desafío es claro: queremos que el modelo tenga en cuenta el orden de las palabras.

Una red neuronal convolucional 1D es una herramienta natural para esto, porque escanea una oración con pequeñas ventanas deslizantes y reacciona cuando reconoce patrones locales familiares.

1. Comprensión de una CNN 1D para texto: arquitectura y profundidad

1.1. Construyendo una CNN 1D para texto en Excel

En este artículo, construimos una arquitectura CNN 1D en Excel con los siguientes componentes:

Diccionario de incrustación
Usamos una incrustación bidimensional. Porque una dimensión no es suficiente para esta tarea.
Una dimensión codifica el sentimiento y la segunda dimensión codifica la negación. Capa conv1D
Este es el componente central de una arquitectura CNN.
Consta de filtros que se deslizan por la oración con una ventana de 2 palabras de longitud. Elegimos 2 palabras para que sean simples. ReLU y agrupación máxima global
Estos pasos mantienen solo las coincidencias más fuertes detectadas por los filtros.
También discutiremos el hecho de que ReLU es opcional. Regresión logística
Esta es la capa de clasificación final, que combina los patrones detectados en una probabilidad.

CNN 1D en Excel: todas las imágenes del autor

Esta canalización corresponde a un clasificador de texto CNN estándar.
La única diferencia aquí es que escribimos y visualizamos explícitamente el pase hacia adelante en Excel.

1.2. Qué significa “aprendizaje profundo” en esta arquitectura

Antes de continuar, demos un paso atrás.
Sí, lo sé, hago esto a menudo, pero tener una visión global de los modelos realmente ayuda a comprenderlos.

La definición de aprendizaje profundo suele ser confusa.
Para muchas personas, el aprendizaje profundo significa simplemente “muchas capas”.

Aquí adoptaré un punto de vista ligeramente diferente.

Lo que realmente caracteriza al aprendizaje profundo no es el número de capas, sino la profundidad de la transformación aplicada a los datos de entrada.

Con esta definición:

Incluso un modelo con una única capa convolucional puede considerarse aprendizaje profundo, porque la entrada se transforma en una representación más estructurada y abstracta.

Por otro lado, tomar datos de entrada sin procesar, aplicar codificación one-hot y apilar muchas capas completamente conectadas no necesariamente hace que un modelo sea profundo en un sentido significativo.
En teoría, si no tenemos ninguna transformación, una capa es suficiente.

En las CNN, la presencia de múltiples capas tiene una motivación muy concreta.

Considere una oración como:

Esta película no es muy buena.

Con una única capa de convolución y una ventana pequeña, podemos detectar patrones locales simples como: “muy + bueno”

Pero todavía no podemos detectar patrones de nivel superior como: “no + (muy bueno)”

Esta es la razón por la que las CNN suelen estar apiladas:

la primera capa detecta patrones locales simples, la segunda capa los combina en otros más complejos.

En este artículo, nos centramos deliberadamente en una capa de convolución.
Esto hace que cada paso sea visible y fácil de entender en Excel, manteniendo la lógica idéntica a las arquitecturas CNN más profundas.

2. Convertir palabras en incrustaciones

Comencemos con algunas palabras simples. Intentaremos detectar la negación, por eso usaremos estos términos, con otras palabras (que no modelaremos)

“bueno” “malo” “no bueno” “no malo”

Mantenemos la representación intencionalmente pequeña para que cada paso sea visible.

Sólo utilizaremos un diccionario de tres palabras: bueno, malo y no.

Todas las demás palabras tendrán 0 como incrustaciones.

2.1 Por qué una dimensión no es suficiente

En un artículo anterior sobre detección de sentimientos, utilizamos una única dimensión.
Eso funcionó para lo “bueno” versus lo “malo”.

Pero ahora queremos manejar la negación.

Una dimensión sólo puede representar bien un concepto.
Entonces necesitamos dos dimensiones:

senti: polaridad del sentimiento neg: marcador de negación

2.2 El diccionario de incrustación

Cada palabra se convierte en un vector 2D:

bueno → (senti = +1, neg = 0) malo → (senti = -1, neg = 0) no → (senti = 0, neg = +1) cualquier otra palabra → (0, 0)

Las incrustaciones reales no se ven así. Las incrustaciones reales son aprendidas, de alta dimensión y no directamente interpretables.

Pero para comprender cómo funciona Conv1D, la incorporación de este juguete es perfecta.

En Excel, esto es sólo una tabla de búsqueda.
En una red neuronal real, esta matriz de incorporación sería entrenable.

3. Filtros Conv1D como detectores de patrones deslizantes

Ahora llegamos a la idea central de una CNN 1D.

Un filtro Conv1D no es nada misterioso. Es sólo un pequeño conjunto de pesos más un sesgo que se desliza sobre la oración.

Porque:

cada palabra incrustada tiene 2 valores (senti, neg) nuestra ventana contiene 2 palabras

cada filtro tiene:

4 pesos (2 dimensiones × 2 posiciones) 1 sesgo

Eso es todo.

Puedes imaginar que un filtro hace repetidamente la misma pregunta en cada posición:

“¿Estas dos palabras vecinas coinciden con un patrón que me interesa?”

3.1 Ventanas deslizantes: cómo Conv1D ve una frase

Considere esta oración:

no esta nada mal

Elegimos un tamaño de ventana de 2 palabras.

Eso significa que el modelo mira cada par adyacente:

(es, es) (es, no) (no, malo) (malo, en) (en, todos)

Punto importante:
Los filtros se deslizan por todas partes, incluso cuando ambas palabras son neutras (todas ceros).

3.2 Cuatro filtros intuitivos

Para que el comportamiento sea fácil de entender, utilizamos cuatro filtros.

Filtro 1 – “Veo BIEN”

Este filtro analiza únicamente el sentimiento de la palabra actual.

Ecuación en texto plano para una ventana:

z = senti(palabra_actual)

Si la palabra es “buena”, z = 1
Si la palabra es “mala”, z = -1
Si la palabra es neutra, z = 0

Después de ReLU, los valores negativos se vuelven 0. Pero es opcional.

Filtro 2 – “Veo MALO”

Éste es simétrico.

z = -senti(palabra_actual)

Entonces:

“malo” → z = 1 “bueno” → z = -1 → ReLU → 0

Filtro 3 – “No veo BIEN”

Este filtro analiza dos cosas al mismo tiempo:

neg(palabra_anterior) senti(palabra_actual)

Ecuación:

z = neg(palabra_anterior) + senti(palabra_actual) – 1

¿Por qué el “-1”?
Actúa como un umbral para que ambas condiciones deban ser ciertas.

Resultados:

“no es bueno” → 1 + 1 – 1 = 1 → activado “es bueno” → 0 + 1 – 1 = 0 → no activado “no está mal” → 1 – 1 – 1 = -1 → ReLU → 0

Filtro 4 – “No veo MAL”

Misma idea, signo ligeramente diferente:

z = neg(palabra_anterior) + (-senti(palabra_actual)) – 1

Resultados:

“no está mal” → 1 + 1 – 1 = 1 “no está bien” → 1 – 1 – 1 = -1 → 0

Esta es una intuición muy importante:

Un filtro CNN puede comportarse como una regla lógica local, aprendida de los datos.

3.3 Resultado final de ventanas correderas

Aquí tenéis los resultados finales de estos 4 filtros.

4. ReLU y agrupación máxima: de local a global

4.1 ReLU

Después de calcular z para cada ventana, aplicamos ReLU:

ReLU(z) = máx(0, z)

Significado:

Se ignora la evidencia negativa. Se mantiene la evidencia positiva.

Cada filtro se convierte en un detector de presencia.

Por cierto, es una función de activación en la red neuronal. Entonces, una red neuronal no es tan difícil después de todo.

4.2 Agrupación máxima global

Luego viene la agrupación máxima global.

Para cada filtro, mantenemos solo:

activación máxima en todas las ventanas

Interpretación:
“No me importa dónde aparece el patrón, sólo si aparece con fuerza en alguna parte”.

Llegados a este punto, toda la frase se resume en 4 números:

señal “buena” más fuerte señal “mala” más fuerte señal “no buena” más fuerte señal “no mala” más fuerte

4.3 ¿Qué pasa si eliminamos ReLU?

Sin ReLU:

los valores negativos permanecen negativos. La agrupación máxima puede seleccionar valores negativos.

Esto mezcla dos ideas:

ausencia de un patrón opuesto a un patrón

El filtro deja de ser un detector limpio y pasa a ser una partitura firmada.

El modelo aún podría funcionar matemáticamente, pero la interpretación se vuelve más difícil.

5. La capa final es la regresión logística.

Ahora combinamos estas señales.

Calculamos una puntuación usando una combinación lineal:

puntuación = 2 × F_bueno – 2 × F_malo – 3 × F_no_bueno – 3 × F_no_malo – sesgo

Luego convertimos la puntuación en una probabilidad:

probabilidad = 1 / (1 + exp(-score))

Eso es exactamente regresión logística.

Entonces si:

la CNN extrae características: este paso puede considerarse como ingeniería de características, ¿verdad? La regresión logística toma las decisiones finales, es un modelo clásico de aprendizaje automático que conocemos bien.

6. Ejemplos completos con filtros deslizantes

Ejemplo 1

“es malo, entonces no es nada bueno”

La frase contiene:

Después de la agrupación máxima:

F_bueno = 1 (porque “bueno” existe) F_malo = 1 F_no_bueno = 1 F_no_malo = 0

La puntuación final se vuelve fuertemente negativa.
Predicción: sentimiento negativo.

Ejemplo 2

“Es bueno. Sí, no está mal”.

La frase contiene:

Después de la agrupación máxima:

F_good = 1 F_bad = 1 (porque aparece la palabra “malo”) F_not_good = 0 F_not_bad = 1

La capa lineal final aprende que “no está mal” debe prevalecer sobre “malo”.

Predicción: sentimiento positivo.

Esto también muestra algo importante: la agrupación máxima mantiene todas las señales fuertes.
La capa final decide cómo combinarlos.

Ejemplo 3 con una limitación que explica por qué las CNN se vuelven más profundas

Prueba esta frase:

“no es muy malo”

Con una ventana de tamaño 2, el modelo ve:

Nunca ve (no está mal), por lo que el filtro “no está mal” nunca se activa.

Explica por qué los modelos reales utilizan:

ventanas más grandes, múltiples capas de convolución u otras arquitecturas para dependencias más largas

Conclusión

El punto fuerte de Excel es la visibilidad.

Puedes ver:

el diccionario de incrustación todos los pesos y sesgos de los filtros cada ventana deslizante cada activación de ReLU el resultado de agrupación máximo los parámetros de regresión logística

La capacitación es simplemente el proceso de ajustar estos números.

Una vez que ves eso, las CNN dejan de ser misteriosas.

Se convierten en lo que realmente son: detectores de patrones estructurados y entrenables que se deslizan sobre los datos.