🧮 Computational Mathematics

Inicio · Parte 13 — Teoría de la información, señales y series

271 — Convolución

avanzado clase 11 de 20 4 horas demostración convolution

Convolucionar es deslizar un núcleo y sumar productos: filtrar y detectar son lo mismo.

Fórmulas

(f * g)[n] = Σₖ f[k]·g[n−k]
media móvil: núcleo [1/3, 1/3, 1/3]
detector de bordes: núcleo [−1, 0, 1]

Desarrollo

La convolución desliza un núcleo sobre una señal y en cada posición calcula una suma ponderada de los valores vecinos. Es la operación fundamental del procesamiento de señales y, desde 2012, la operación fundamental de la visión por computador.

Lo notable es cuánto cambia el comportamiento con el núcleo, siendo la operación idéntica. Un núcleo de valores iguales y positivos promedia y por tanto suaviza, eliminando ruido de alta frecuencia. Un núcleo antisimétrico como [−1, 0, 1] resta vecinos y por tanto detecta cambios: es una derivada discreta y responde a los bordes.

La diferencia entre convolución y correlación cruzada es que la primera invierte el núcleo antes de deslizarlo. Esa inversión importa en teoría de sistemas, donde garantiza propiedades como la conmutatividad. En aprendizaje profundo no importa: como el núcleo se aprende, aprender el invertido es equivalente, y por eso lo que las bibliotecas llaman convolución es técnicamente correlación cruzada.

La razón de que las CNN funcionen está en dos propiedades de la convolución. Los parámetros se comparten: el mismo núcleo se aplica en toda la señal, así que un detector de bordes aprendido sirve en cualquier posición. Y la conectividad es local: cada salida depende solo de un vecindario. Ambas cosas reducen drásticamente el número de parámetros e incorporan la invariancia a traslaciones como sesgo inductivo.

Ejemplo trabajado

Dos núcleos sobre la misma señal triangular.

señal: [0, 1, 2, 3, 2, 1, 0]

núcleo media móvil [1/3, 1/3, 1/3]:
  resultado: [1,0 ; 2,0 ; 2,333 ; 2,0 ; 1,0]
  la señal se suaviza, los picos se rebajan

núcleo detector de bordes [−1, 0, 1]:
  resultado: [−2, −2, 0, 2, 2]
  responde donde la señal cambia, y cero en el pico

longitud de salida en modo válido: 7 − 3 + 1 = 5

Misma operación, comportamientos opuestos:
todo depende de los coeficientes del núcleo.

Qué calcula el laboratorio

Convolución discreta: el operador de las CNN.

python classes/part-13-teoria-de-la-informacion-senales-y-series/271-convolucion/lab.py
compmath run 271

Salidas del laboratorio (9)

Muestra de la ejecución real

{
  "señal": [
    0.0,
    1.0,
    2.0,
    3.0,
    2.0,
    1.0,
    0.0
  ],
  "kernel_media_movil": [
    0.3333,
    0.3333,
    0.3333
  ],
  "suavizada": [
    1.0,
    2.0,
    2.333333,
    2.0,
    1.0
  ],
  "kernel_detector_de_bordes": [
    -1.0,
    0.0,
    1.0
  ],
  "bordes": [
    -2.0,
    -2.0,
    0.0,
    2.0,
    2.0
  ],
  "longitud_valida": 5
}

Errores comunes

Dónde se usa

Redes convolucionales, filtrado de imágenes, procesamiento de audio, suavizado de series y detección de patrones.

Idea rectora de la parte

La entropía es el límite inferior de compresión sin pérdida.

Error a evitar

Comparar entropías calculadas en bases logarítmicas distintas.

Conexión con IA

La función de pérdida de casi todo clasificador es entropía cruzada; el VAE optimiza un ELBO con un término KL; las CNN son convoluciones aprendidas.

Bibliografía de la clase

Archivos de la clase