Saltar al contenido

lección 10

Qué hace una convolución (y por qué las redes la aprenden solas)

Un filtro pequeño que se desliza sobre una imagen y detecta un patrón local, y por qué las redes que lo aprenden solo dominan las imágenes.

⏱ 50 min

Terminábamos la última lección con una frontera clara: en datos ordenados en tablas, una red neuronal corriente no le gana a un buen boosting y cuesta mucho más. Pero quedaba un territorio donde las redes no tienen rival serio: las imágenes, el sonido y el texto. Hoy toca entender por qué, al menos en el caso de las imágenes, y lo vas a hacer de la mejor manera posible: viéndolo con tus propios ojos. Porque la pieza que hace a esas redes tan buenas con imágenes, la convolución, no es ninguna caja negra. Es una operación concreta y visual que puedes ejecutar en tu navegador y ver qué hace, aunque la red completa que la usa quede fuera de tu alcance aquí.

Antes de nada, una pregunta que parece tonta pero es la raíz de todo: ¿por qué una red corriente, de las que ya conoces, lo pasa tan mal con una imagen? Una imagen pequeña, de cien por cien píxeles, son diez mil números. Si se los das en bruto a una red corriente, cada neurona de la primera capa tiene que mirar los diez mil a la vez, con un peso para cada uno, y multiplicado por muchas neuronas eso son millones de pesos solo en la primera capa. Peor aún: esa red trata el píxel de la esquina superior izquierda y el de al lado como dos cosas sin ninguna relación, cuando en una imagen los píxeles vecinos lo son todo. Un ojo no es un píxel suelto, es un patrón que ocupa una zona. Una red que mira píxeles sueltos sin tener en cuenta su vecindad está condenada a aprender fatal y a necesitar cantidades absurdas de datos.

## El filtro que se desliza y busca un patrón

La convolución resuelve ese problema con una idea elegante. En lugar de mirar la imagen entera de golpe, usa un filtro pequeño, una rejilla de pocos números (tres por tres, por ejemplo), y lo va deslizando por toda la imagen, posición a posición. En cada posición, el filtro se posa sobre un trocito de la imagen del mismo tamaño, multiplica cada número del filtro por el píxel que tiene debajo, suma todo y escribe ese único resultado en una imagen nueva. Luego se mueve un paso a la derecha y repite, y así recorre toda la imagen. El resultado es una imagen nueva, llamada mapa de respuesta, que dice en cada punto cómo de fuerte ha reaccionado el filtro en esa zona.

La magia está en lo que ese filtro, según los números que lleve dentro, es capaz de detectar. Hay un filtro clásico, llamado Sobel, cuyos números están dispuestos de modo que da un resultado grande cuando hay un cambio brusco de oscuro a claro de izquierda a derecha, y un resultado nulo cuando la zona es plana (todo igual). Dicho de otro modo: ese filtro se enciende justo en los bordes verticales de la imagen y se apaga en las zonas lisas. Deslízalo por una foto y el mapa de respuesta te dibuja los contornos verticales de lo que haya en ella. El filtro no sabe qué es la foto; solo reacciona a un patrón local muy concreto, un cambio de luz en una dirección, allá donde lo encuentre.

El filtro recorre la imagen y en cada posición escribe un número en el mapa de respuesta. Con el filtro Sobel, el mapa se enciende en los bordes y queda a cero en las zonas planas.

Fíjate en dos propiedades que hacen de este mecanismo algo mucho más listo que mirar píxeles sueltos. La primera: el filtro es pequeño y mira solo un trocito cada vez, así que respeta la vecindad de los píxeles, que es justo lo que una imagen tiene de información. La segunda, y es preciosa: el mismo filtro se usa en toda la imagen. Un borde es un borde esté en la esquina o en el centro, así que tiene todo el sentido usar el mismo detector por todas partes en lugar de aprender uno distinto para cada posición. Eso reduce muchísimo el número de números que hay que ajustar y hace que lo aprendido en una parte de la imagen valga para el resto. Esta idea de reutilizar el mismo filtro por toda la imagen es, en el fondo, lo que hace a estas redes eficientes.

Para que ese ahorro no te suene abstracto, conviene ponerle magnitud, porque la diferencia es brutal. Recuerda el problema del principio: una red corriente que mirase una imagen de cien por cien píxeles necesitaba un peso por cada píxel y por cada neurona, y eso se contaba en millones de números solo en la primera capa. Un filtro de convolución, en cambio, es una rejilla de tres por tres: nueve números, y los mismos nueve se usan en toda la imagen. Pasar de millones de pesos a unos puñados por filtro no es una mejora pequeña, es la diferencia entre un modelo que se puede entrenar y uno que no. Y como cada filtro tiene tan pocos números, puedes permitirte tener muchos filtros distintos sin que el conteo se dispare, que es justo lo que hace falta para detectar muchos patrones a la vez. El filtro deslizante no solo es más listo con la vecindad; es incomparablemente más económico.

Esa economía tiene además una consecuencia elegante que a veces se pasa por alto. Como el mismo filtro recorre toda la imagen, si la red aprende a detectar un ojo, lo detecta esté el ojo donde esté: arriba, abajo, en una esquina. No tiene que volver a aprender qué es un ojo para cada posición posible, porque el detector es el mismo que se desliza por todas partes. A esa cualidad se le llama, con un nombre técnico que no necesitas memorizar, invariancia a la posición, y es justo lo que quieres en una imagen: un gato es un gato lo pongas donde lo pongas en la foto. Una red que mirase píxeles sueltos tendría que aprender el gato de nuevo en cada rincón de la imagen; la convolución lo aprende una vez y lo reconoce en todas partes. De nuevo, el mismo filtro reutilizado es la clave.

## Cada filtro detecta un patrón, y solo ese

Hay un matiz que conviene ver con claridad, porque explica por qué una red necesita muchos filtros y no uno solo. Un filtro detecta un patrón concreto y es ciego a los demás. El filtro Sobel que resalta bordes verticales no reacciona ante un borde horizontal: para ese cambio de luz, que ocurre de arriba abajo y no de izquierda a derecha, su respuesta es cero. Si quieres detectar también los bordes horizontales, necesitas otro filtro, con sus números dispuestos para esa otra dirección. Cada filtro es un especialista en una cosa, igual que las neuronas de una capa eran especialistas en distintos aspectos de la misma entrada. Una red de verdad lleva muchos filtros en paralelo, cada uno cazando un patrón distinto, y combina sus respuestas en las capas siguientes.

Y aquí está el salto que lo convierte todo en aprendizaje y no en artesanía. Hasta ahora he hablado de filtros con números fijos, como el Sobel, que alguien diseñó a mano hace décadas para detectar bordes. Durante mucho tiempo, el reconocimiento de imágenes consistía justo en eso: expertos diseñando a mano filtros para cada cosa que querían detectar, un trabajo lento y limitado. La idea que lo cambió todo fue dejar de diseñar los filtros y hacer que la red los aprenda ella sola. Una red convolucional arranca con filtros de números al azar y, durante el entrenamiento, va ajustando esos números igual que una red corriente ajusta sus pesos, hasta que los filtros acaban detectando los patrones que de verdad sirven para la tarea. Nadie le dice que detecte bordes: ella descubre sola que detectar bordes ayuda, y aprende los números que lo consiguen.

La idea que cambió el reconocimiento de imágenes: en vez de que un experto diseñe los filtros a mano, la red arranca con filtros al azar y aprende sola qué números le sirven para la tarea.

Vale la pena insistir en lo que supuso ese cambio de diseñar los filtros a aprenderlos, porque es un patrón que verás repetirse en muchos sitios. Durante décadas, mejorar un sistema de visión por ordenador consistía en que un experto, a base de intuición y ensayo, inventara mejores filtros para la tarea concreta que tenía entre manos. Era un trabajo artesanal, lento, y que no se transfería: los filtros buenos para reconocer caras no servían para reconocer coches, y había que empezar de cero. Al dejar que la red aprenda sus propios filtros, ese cuello de botella desaparece: le das muchas imágenes etiquetadas y ella descubre qué filtros le convienen para esa tarea, sean los que sean, sin que nadie tenga que imaginarlos. Es el mismo salto que ya viste con la ingeniería de variables, llevado al extremo: en vez de fabricar a mano las características útiles, se deja que el modelo las fabrique solo. Donde eso es posible y hay datos de sobra, cambia las reglas del juego.

Esto conecta directamente con una idea de las redes de neuronas: las capas de una red construyen representaciones cada vez más abstractas. En una red convolucional eso se ve con una claridad preciosa. Los filtros de la primera capa aprenden a detectar bordes y manchas de color, los patrones más simples. La capa siguiente combina esas respuestas de bordes para detectar formas, una esquina, una curva. La siguiente combina formas en partes, un ojo, una rueda. Y las últimas combinan partes en objetos enteros. Es la misma idea de abstracción creciente, pero ahora entiendes de qué están hechos esos ladrillos del primer nivel: convoluciones, filtros que se deslizan buscando patrones locales.

## Lo que ves aquí, y lo que no

Antes de hablar de lo que no cabe aquí, vale la pena que veas hasta dónde ha llegado esta idea tan sencilla, porque es espectacular. Esos filtros deslizantes que has visto encender un borde son la base de prácticamente toda la visión por ordenador que te rodea: el desbloqueo facial de un teléfono, los coches que leen las señales de tráfico, los sistemas que ayudan a un radiólogo a detectar un tumor en una radiografía, las cámaras que cuentan personas en un andén o reconocen una matrícula. Todos ellos, por dentro, apilan convoluciones que empiezan detectando bordes y manchas y acaban reconociendo caras, señales o lesiones. Que un mecanismo tan modesto (una rejilla de nueve números que se desliza y suma) escale hasta eso es una de las historias más bonitas del campo, y es un recordatorio de que las ideas potentes no tienen por qué ser complicadas. Lo que las hace potentes es apilarlas y dejar que el entrenamiento afine los números.

Toca ser honesto sobre el alcance, porque la claridad sobre lo que una herramienta puede y no puede hacer es parte del oficio. En tu navegador puedes ver la convolución funcionar: coger una imagen pequeña, pasarle un filtro Sobel y comprobar que efectivamente se enciende en los bordes. Eso corre perfectamente, y es lo que vas a hacer en los ejercicios. Lo que no puedes hacer aquí es entrenar una red convolucional de verdad, una que aprenda sus propios filtros sobre miles de imágenes. Eso exige una potencia de cálculo (tarjetas gráficas) y unas herramientas especializadas que no viven en el navegador, y de esa frontera honesta conviene hablar aparte. Así que aquí te quedas con lo esencial y verificable: entender qué hace una convolución, verla detectar bordes con tus propios ojos, y saber que una red aprende esos filtros sola en lugar de que se los des tú.

## De bordes a objetos: la escalera de abstracción

Detengámonos en esa idea de la abstracción creciente, porque es la que explica cómo se pasa de detectar un simple borde a reconocer una cara, y es de las cosas más bonitas de todo el campo. Piensa en lo que puede construir cada nivel a partir del anterior. La primera capa, con sus filtros, detecta bordes y manchas de color: lo más elemental que hay en una imagen. Pero un borde no es muy informativo por sí solo. La capa siguiente no mira ya la imagen en bruto, sino el mapa de respuestas de la primera, y en él busca combinaciones de bordes: dos bordes que se encuentran forman una esquina, un borde que se curva forma un arco. Ha subido un peldaño: de bordes a formas simples.

La capa que viene detrás repite la jugada sobre las formas: combina esquinas y arcos en partes reconocibles, un ojo (que es un arco sobre otro con una mancha en medio), una rueda (un círculo dentro de otro). Y la última capa combina partes en objetos enteros: dos ojos, una nariz y una boca en las posiciones adecuadas son una cara; cuatro ruedas y una carrocería son un coche. En ningún momento le dijiste a la red qué es un ojo ni qué es una cara. Ella fue construyendo esa escalera sola, de lo concreto a lo abstracto, porque descubrió durante el entrenamiento que combinar así los patrones del nivel de abajo le servía para acertar. Esa es la razón profunda de que las redes profundas dominen las imágenes: no aprenden una regla plana, construyen una jerarquía de ideas cada vez más ricas.

La jerarquía que construye una red convolucional: bordes, luego formas, luego partes, luego objetos. Nadie le da la idea de cara; la red aprende sola qué combinar en cada peldaño.

Un último detalle de mecánica que redondea la intuición y que viste salir en el ejercicio sin nombrarlo. Cuando el filtro recorre la imagen, el mapa de respuesta que produce es un poco más pequeño que la imagen de partida, porque el filtro necesita caber entero sobre la imagen y no puede posarse justo en el borde del todo. Es un detalle menor, pero explica por qué, al encadenar muchas convoluciones, la representación se va haciendo más pequeña y más concentrada a medida que avanza por la red: cada capa resume un poco más. De lo ancho y literal (todos los píxeles) a lo pequeño y abstracto (hay una cara aquí). Esa reducción progresiva, de la mano de la abstracción creciente, es la forma de la red convolucional, y ahora la entiendes de arriba abajo.

Cuando oigas hablar de redes convolucionales o de visión por ordenador, recuerda que todo arranca de esta pieza sencilla que hoy ejecutas: un filtro pequeño que se desliza buscando un patrón local. La red no hace nada mágico; apila muchas de estas detecciones y aprende los filtros ella sola. Entender la convolución a este nivel te quita de encima la mística y te deja ver la ingeniería que hay debajo.

Ya sabes qué es una convolución, la has visto encender un borde, y entiendes por qué las redes que las usan dominan las imágenes: respetan la vecindad de los píxeles, reutilizan el mismo filtro por toda la imagen y aprenden solas qué patrones detectar. Con esto tienes el mapa completo de las redes: la pieza (la neurona), la organización (capas y red), el entrenamiento, y la pieza especial para imágenes (la convolución). Lo que falta es la pregunta más importante de todas, la que separa a quien colecciona herramientas de quien sabe cuándo usar cada una: ante un problema concreto, ¿de verdad quiero una red, o hay algo más sencillo que lo resuelve mejor? Esa es la lección que cierra el módulo.

Regístrate para guardar tu progreso.