Cómo funciona una CNN
La lección anterior terminó con una pregunta: ¿qué hacer con datos como las fotos, donde a una persona le cuesta elegir una por una las pistas? Una foto está hecha de decenas de miles de puntos diminutos, a menudo de millones. Si los ponemos en una sola fila y se los damos a una red neuronal común, hay demasiadas conexiones que aprender; además, el mismo gato movido un poco hacia un lado se convierte en una entrada completamente distinta. Por eso se creó una red que recorre la imagen por trozos pequeños, como hacen nuestros ojos, en busca de características. Es la red neuronal convolucional, o CNN.
Una foto es una cuadrícula de números
Para nosotros es una imagen, pero para dársela a una computadora hay que convertirla en números. Si miras una foto muy de cerca, verás puntos diminutos llamados píxeles, ordenados como los cuadros de una hoja cuadriculada. En una foto en blanco y negro, cada punto guarda su brillo en un número: un punto claro tiene un número grande y uno oscuro, uno pequeño.
Una foto en color guarda tres números por punto, la intensidad del rojo, el verde y el azul. En cualquier caso, una foto es una cuadrícula con un número en cada casilla.
Pulsa el botón de acercar. Lo que parecía un dígito escrito a mano se convierte, de cerca, en un número de brillo en cada casilla, y la foto se revela como una cuadrícula de números.
Al acercarnos, cada casilla mostró un número. Tú reconoces el dígito de un vistazo, pero la computadora solo recibe una tabla repleta de números. ¿Cómo encontrar en ese montón características como bordes o curvas?
Es demasiado para verlo todo de una vez, así que se empieza por trozos pequeños y se revisan uno por uno.
Buscar una característica con un filtro pequeño
La herramienta para encontrar una característica se llama filtro. Un filtro es un pequeño panel de números, mucho menor que la imagen, y usarlo se parece a poner una lupa sobre un punto. Un filtro de bordes verticales, por ejemplo, reacciona a un patrón oscuro a la izquierda y claro a la derecha.
Se coloca el filtro sobre una zona de la imagen y se calcula una puntuación según cuánto se parecen los números de esa zona al patrón del filtro. En este widget, la puntuación es el brillo de las dos casillas de la derecha menos el de las dos de la izquierda. Si el patrón encaja bien, la puntuación es alta; si no, es baja.
Elige un lugar de la cuadrícula para poner el filtro. Donde la zona es oscura a la izquierda y clara a la derecha, como el filtro, la puntuación es alta: por ahí pasa un borde vertical.
Cada lugar dio una puntuación distinta. Las más altas salieron donde las casillas oscuras tocan las claras, y ahí está justamente el borde vertical. Donde el brillo era parejo, la puntuación se quedó cerca de cero.
Hay un detalle importante. El mismo filtro busca la misma característica dondequiera que lo pongas, así que atrapa igual un borde en el lado izquierdo del cuadro que uno en el derecho. Entonces no hace falta quedarse en un solo lugar: el filtro puede recorrer toda la cuadrícula.
Deslizar el filtro para crear un mapa de características
Ahora el filtro avanza de casilla en casilla. Empieza arriba a la izquierda y va hacia la derecha; al llegar al final de la fila, baja una fila y vuelve a empezar por la izquierda. Si anotas cada puntuación en la posición correspondiente, las puntuaciones forman una cuadrícula nueva y más pequeña.
Esa cuadrícula se llama mapa de características. Con solo mirarla sabes dónde es fuerte la característica.
Pulsa el botón de deslizar para mover el filtro paso a paso. Cada puntuación llena la misma posición del mapa de características, y al terminar el recorrido los lugares con un borde vertical fuerte se ven más claros.
Cuando el filtro termina de recorrer la cuadrícula, el mapa de características está completo. De una cuadrícula de cinco por cinco salió un mapa de cuatro por cuatro, un poco más pequeño que el original, pero la columna por la que pasa el borde vertical se ve con claridad. Un filtro encuentra un solo tipo de característica.
Por eso una CNN real usa a la vez decenas o cientos de filtros, cada uno con su patrón: bordes verticales, bordes horizontales, curvas y más. Y los números de los filtros no los escribe nadie. La red los aprende con el descenso de gradiente y la retropropagación que vimos antes, ajustándolos poco a poco para reducir el error. Elegir características, que antes era trabajo de una persona, pasa a hacerlo la propia red.
Capas más altas, características más grandes
Si pasas filtros otra vez sobre el mapa de características, las características pequeñas se combinan en otras más grandes. La primera capa capta trozos pequeños como bordes cortos, la siguiente combina bordes en partes como un ojo o una nariz, y una capa más alta junta las partes en una cara entera.
Es la misma idea de apilar capas de neuronas, solo que en una CNN cada capa recorre la imagen con filtros. Cuanto más alta es la capa, más amplia es la zona de la foto original que representa cada casilla, y más abstractas son las características que capta.
Pulsa el botón para subir una capa cada vez. Lo que ve la red crece de trozos de borde a partes como un ojo y una nariz, y luego a una cara entera.
Con cada capa, lo que la red veía se hizo más grande. Las capas bajas miran trozos pequeños y simples; las altas los combinan en formas con significado. Ver líneas, luego reconocer partes y por último captar el todo se parece mucho a como las personas reconocen las cosas.
Cuando los investigadores miran dentro de una CNN ya entrenada, suelen encontrar que los filtros de las capas bajas reaccionan a bordes y cambios de color, y los de las capas altas a partes como ojos o ruedas. La cara del widget es un dibujo simplificado de ese proceso.
Resumen
En resumen, una foto es una cuadrícula con un número de brillo en cada casilla. Una CNN coloca un filtro pequeño sobre un lugar y puntúa si la característica que busca está ahí. Al recorrer toda la cuadrícula con el mismo filtro se obtiene un mapa de características que la encuentra esté donde esté.
Si se apilan varias de esas capas, las características se vuelven cada vez más abstractas: de bordes a ojos y narices, y de ahí a caras. Los números de los filtros se aprenden de los datos.
Toca los puntos clave en orden para repasar. (una foto es una cuadrícula de números de brillo → un filtro pequeño puntúa una característica → al recorrerla se forma un mapa de características → capas más altas, características más abstractas)
Ahora ya sabes cómo ve una imagen una computadora. Convierte la foto en una cuadrícula de números, la recorre con filtros pequeños para encontrar características y apila capas para captar otras cada vez más grandes. Como el mismo filtro recorre toda la foto, encuentra al gato aunque se haya movido a un lado.
Pero las palabras y las frases no llegan como una cuadrícula de números, como las fotos. La próxima lección explica cómo convertir palabras en números: los embeddings.