La guía definitiva de las redes neuronales convolucionales

La guía definitiva de las redes neuronales convolucionales

Juan Gabriel Gomila Juan Gabriel Gomila
52 minutos

Leer el artículo
Audio generated by DropInBlog's Blog Voice AI™ may have slight pronunciation nuances. Learn more

Como sabes, hace poco se ha publicado en Udemy un nuevo curso de Deep Learning de la A a la Z, ahora en español, de Juan Gabriel Gomila, Kirill Eremenko y Hadelin de Ponteves, ambos miembros del Ligency TeamPara ayudarte en el proceso de aprendizaje, traemos para ti este artículo, y así ayudarte en tu proceso de formación sobre las Redes Neuronales Convolucionales.

Redes neuronales convolucionales, la guía definitiva

¿Así que deseas aprender redes neuronales convolucionales? Bueno, has llegado al sitio indicado. La guía definitiva de las redes neuronales convolucionales está aquí.

Si pasas por alto el lenguaje complejo, te darás cuentas que el plan de ataque está diseñado de una manera que realmente te ayudará a procesar y  entender el concepto.

El objetivo final es que puedas entender qué son estas redes y cómo trabajan.

Una vez nos adentremos en el tema, verás las diferencias y las similitudes entre las redes neuronales convolucionales y tu propio cerebro, particularmente en lo referente al reconocimiento de imágenes.

Redes neuronales convolucionales – Plan de ataque

Estos son los pasos (en nuestro plan de abordaje del contenido / plan de ataque) que vamos a seguir para que domines las redes neuronales convolucionales y, en consecuencia, el Deep Learning.

  • ¿Qué son las Redes Neuronales convolucionales (CNN)?

    Las CNNs no son un tema fácil de dominar. Este es el primer paso en tu viaje, así que aprende lo básico antes de empezar.
  • Paso 1: Operación Convolucional

    El primer bloque de construcción en nuestro plan de ataque es la operación convolucional. En este punto, vamos a hablar sobre detectores de características, que básicamente sirven como filtro de las redes neuronales.

    También vamos a discutir los mapas de características. Aprenderemos los parámetros de dichos mapas, cómo son detectados los patrones, las capas de detección y cómo se mapean los hallazgos.

  • Paso 1 (b): Capa ReLU

    La segunda parte de este paso involucra la Unidad Lineal Rectificada o ReLU. Cubriremos las capas de ReLU y vamos a explorar cómo funciona la linealidad en el contexto de las redes neuronales convolucionales.

    No es necesario para entender la CNN, pero no hace ningún daño hacer una clase rápida para que mejores tus habilidades.

  • Paso 2: Agrupación (Pooling)

    En esta parte, vamos a cubrir la agrupación (Pooling) y llegaremos a entender exactamente cómo funciona generalmente. Nuestro nexo aquí, sin embargo, es un tipo específico de agrupación: Agrupación Máxima.

    A pesar de ello, vamos a cubrir varios enfoques, incluyendo la agrupación media (O sum). Culminaremos esta sección con una demostración que fue realizada usando una herramienta de interacción visual que va a aclarar definitivamente todo el concepto para ti.

  • Paso 3: Aplanamiento

    Este será un breve resumen del proceso de aplanamiento y de cómo nos movemos de capas agrupadas a capas aplanadas cuando trabajamos con redes neuronales convolucionales.

  • Paso 4: Conexión completa

    En esta parte, todo lo que hemos visto a lo largo de la sección se fusionará. Al aprender esto, podrás visualizar una imagen más completa de cómo operan las Redes Neuronales Convolucionales y cómo las "neuronas" que se producen finalmente aprenden la clasificación de las imágenes.

  • Resumen

    Al final, vamos a juntar todo y a dar un pequeño resumen de los conceptos que hemos visto en esta sección. Si crees que te va a dar algún beneficio (y probablemente lo haga), deberías ver el apartado en el que se cubren Softmax y Entropía cruzada. No es obligatorio para el curso, pero es muy probable que estos conceptos aparezcan mientras trabajas con redes neuronales convolucionales, así que estar familiarizados con estos conceptos será un gran beneficio para ti.

  • Softmax y Entropia Cruzada

    Algo adicional para mejorar tu comprensión de las redes neuronales convolucionales.

¿Estás listo? Empecemos. 

¿Qué son las redes neuronales convolucionales?

Es esta sección vamos a contestar los siguientes interrogantes en el sentido más básico antes de expandir el contenido en cada una de ellas en los siguientes apartados de esta sección:

  • ¿Cómo funciona el cerebro humano?
  • ¿Por qué las redes neuronales convolucionales son tan importantes?
  • ¿Cómo funcionan las redes neuronales convolucionales?
  • ¿Cómo escanean imágenes las redes neuronales convolucionales?
  • ¿Cómo las redes neuronales leen las expresiones faciales?
  • ¿Cuáles son los pasos que constituyen el proceso de las redes neuronales convolucionales?

Empecemos. 

¿Cómo funciona el cerebro humano?

Con mayor precisión, ¿cómo reconocemos los objetos y la gente a nuestro alrededor o en imágenes? Comprender esto es una gran parte del entendimiento de las redes neuronales convolucionales.

En pocas palabras, nuestros cerebros dependen de la detección de características y en consecuencia, categorizan los objetos que vemos.

Es probable que en cientos de situaciones en tu vida, hayas mirado algo instantáneamente, haciéndolo parecer algo, y después de mirarlo a fondo, te dieras cuenta de que se trataba de algo totalmente distinto.

Esto sucede porque tu cerebro detecta el objeto por primera vez, pero debido a que la mirada fue breve, no pudo llegar a procesar suficientemente las características del objeto como para categorizarlo correctamente.

Empecemos con un breve juego de ilusión óptica.

Mira las siguientes imágenes:

redes neuronales convolucionales

¿Ves a una anciana mirando hacia abajo, o a una mujer joven mirando fijamente?

redes neuronales convolucionales

Y en esta otra imagen, ¿ves a un conejo o a un pato?

Basta de juegos. El punto de este ejercicio es que tu cerebro clasifica objetos en una imagen, basado en las características que detecta primero.

Las imágenes previas fueron diseñadas para que lo que veas primero dependa de la línea y el ángulo en el cual tu cerebro decida iniciar su expedición de “detección de características”.

A medida que avancemos en nuestra sección sobre redes neuronales convolucionales, te darás cuenta del impresionante parecido entre cómo estas redes funcionan, y como lo hace tu cerebro. Este tipo de redes neuronales también clasifica los objetos o imágenes basadas en un conjunto de características que han pasado a través de ellas y que han podido ser detectadas.

Conjunto de pruebas

Ahora, echemos un vistazo a un conjunto de pruebas que es suministrado a una red neuronal convolucional y los resultados que arroja.

redes neuronales convolucionales

Vale la pena aclarar que las cuatro categorías que se muestran en esta lista de suposiciones están lejos de ser las únicas categorías de las cuales la red se puede realizar una elección.

Usualmente tienes que filtrar cientos, o más probablemente miles, de categorías hasta que haces una lista corta como las que puedes observar en la imagen de arriba, que luego clasificas de acuerdo a su probabilidad de ser la categoría correcta para la imagen presentada.

Puedes ver que la red no estaba tan segura de la última imagen como de las dos primeras. Podemos inferir de esto que, una cosa importante sobre las redes neuronales convolucionales que siempre se debe tener en cuenta es que a menudo se confunden al menos en sus primeras etapas de entrenamiento.

Al igual que el cerebro muchas veces categoriza erróneamente los objetos a primera vista, las redes neuronales convolucionales son propensas a la misma indecisión cuando se presentan con un objeto o una imagen desde un ángulo que puede colocarlo fácilmente bajo más de una categoría.

De hecho, con esa misma imagen en la captura de pantalla de arriba, muchos humanos no están seguros de lo que el objeto es en realidad. Como podemos ver, la respuesta correcta fue "hand glass", no un par de tijeras como fue categorizado por la red neuronal.

¿Por qué las redes neuronales convolucionales son tan importantes?

Para poder entenderlo, debes realizarte las siguientes preguntas:

  • ¿Cómo los coches que se conducen solos reconocen a otros coches, a peatones y a otros objetos en la calle?
  • ¿Cómo Facebook pasó de hacerte etiquetar por ti mismo a las personas, a identificar a tus amigos y automáticamente etiquetarlos como lo hace ahora?

Y la respuesta para ambas preguntas deberían ser: a través de la magia de las redes neuronales convolucionales.

¿Cómo funcionan las redes neuronales convolucionales?

Lo primero que debes saber aquí son los elementos que están incluidos en la operación:

  • Introducir la imagen
  • Red neural convolucional
  • Etiqueta de salida (categoría o clase de imagen)

Estos elementos interactúan de la siguiente manera:

Ya hemos visto cómo la red neuronal convolucional puede clasificar imágenes de acuerdo a los objetos incluidos en ellas. Sin embargo, este no es su único uso.

Por ejemplo, la red neuronal convolucional puede ser utilizada para detectar las emociones humanas en la imagen. Puedes utilizar la foto de una persona y la red neuronal determina una clasificación del efecto de lo que esa persona parece estar sintiendo.

Por supuesto, esto requiere un entrenamiento más avanzado, ya que ser capaz de determinar las emociones de una persona por sus expresiones fáciles es a menudo una tarea complicada para los propios seres humanos.

Naturalmente, solo una pequeña parte de las personas puede hacerlo con un alto grado de éxito.

¿Cómo escanean imágenes las redes neuronales convolucionales?

Antes de entrar en los detalles de esta operación, debes tomar en cuenta que la forma en que se escanean las imágenes en blanco y negro difiere en gran medida de la forma en que se escanean las imágenes a color. Vamos a examinar cada uno de ellos por separado, pero primero, echemos un vistazo a las similitudes.

Ambos tipos de imágenes son similares en los siguientes aspectos:

  • Cada píxel contiene 8 bits (1 byte) de información.
  • Los colores se representan en una escala de 0 a 255. La razón de esto es que los bits son unidades binarias, y como tenemos 8 de ellas por byte, un byte puede tener cualquiera de los 256 (2^8) valores posibles. Como contamos 0 como el primer valor posible, podemos subir hasta 255.
  • En este modelo, 0 es negro oscuro y 255 es blanco puro, y en el medio están los varios (sin duda más de 50) tonos de gris.
  • En realidad, la red no aprende los colores. Dado que los ordenadores no entienden más que 1 y 0, los valores numéricos de los colores se representan en la red en términos binarios.

Ahora, vamos a profundizar en las mayores diferencias que hemos mencionado anteriormente. 

Diferencias destacadas

Las imágenes en blanco y negro son bidimensionales, mientras que las imágenes a color son tridimensionales. La diferencia que esto hace es en el valor asignado a cada píxel cuando se presenta en la red neuronal. En el caso de las imágenes bidimensionales en blanco y negro, a cada píxel se le asigna un número entre 0 y 255 para representar su sombra.

Por otro lado, cada píxel dentro de una imagen a color es representada en tres niveles, ya que cada color es una combinación de rojo, verde y azul (RGB) a diferentes niveles de concentración, a un solo píxel en una imagen coloreada se le asigna un valor separado para cada una de estas capas.

Eso significa que una capa roja es representada con un número entre 0 y 255, y lo mismo con las capas azules y verdes. Estas son presentadas en un formato RGB. Por ejemplo, un píxel “rosado vivo”, sería presentado a la red neuronal como (250, 105, 180). 

¿Cómo las redes neuronales leen las expresiones faciales?

Veamos un caso en el cual a una red neuronal convolucional se le pide que lea una sonrisa humana. Con el propósito de simplificar, la siguiente figura muestra una representación muy básica de una sonrisa humana (por supuesto, en términos generales). 

El asunto es obviamente más complejo cuando intentas proporcionar a la red neuronal imágenes de verdaderos seres humanos.

Como puedes ver, la tabla de cuadrícula de la derecha muestra todos los píxeles valorados en 0, mientras que sólo las partes donde aparece la cara sonriente están valoradas en 1. Esto difiere del modelo de 8 bits que acabamos de discutir, nuevamente, con el fin de romper el concepto.

En la tabla anterior, las celdas blancas están representadas como 0 y las celdas negras como 1, lo que significa que no es posible que otras sombras puedan aparecer en esta imagen.

Lo que hacemos cuando entrenamos una red neuronal convolucional para detectar sonrisas es enseñarle los patrones de 0 y 1 que normalmente se asocian con la forma de una sonrisa.

Si miras el arco de 1 que termina en la segunda fila desde abajo, podrás reconocer la sonrisa.

¿Cuáles son los pasos que constituyen el proceso de las redes neuronales convolucionales?

  • Paso 1: Convolución
  • Paso 1 (b): Capa ReLu
  • Paso 2: Agrupación (Pooling)
  • Paso 3: Aplanamiento
  • Paso 4: Conexión Completa

Probablemente, encontrarás estos términos aún mucho para digerir por el momento, lo que es bastante normal en este punto. A medida que avancemos por las siguientes secciones, irás entiendo lo que cada uno de ellos significa.

Lectura Adicional

Mientras tanto, si vas a investigar material extra, deberías echar un vistazo a este estudio titulado: "Gradient-Based Learning Applied to Document Recognition" de Yann LeCun y otros.

LeCun es considerado uno de los padres fundadores del campo de las redes neuronales convolucionales y fue la primera persona en dirigir la empresa Facebook IA research, en Nueva York, antes de renunciar a principios de año (del 2019).

Así que, si hay alguien que puede darte las bases sobre el tema, definitivamente es este tipo.

Ahora es el momento de que hagas algunas lecturas sobre el tema para que puedas familiarizarte con el amplio concepto de redes neuronales convolucionales.

División en 4 pasos básicos

A continuación, te explicamos como funcionan las redes neuronales convolucionales paso a paso:

Paso 1 – Operación de convolución

En este apartado, vamos a aprender sobre la convolución, que es el primer paso en el proceso al que se someten las redes neuronales convolucionales. Aprenderemos qué es la convolución, cómo funciona, qué elementos se utilizan en ella y cuáles son sus diferentes usos.

¡Prepárate!

¿Qué es convolución?

En términos meramente matemáticos, convolución es una función derivada de dos funciones dadas por integración, que expresa como la forma de una es modificada por la otra. Puede sonar confuso, pero para hacer las cosas peores, échale un vistazo a la fórmula de la convolución:

Si no te consideras un gran amante de las matemáticas, no hay necesidad de preocuparse, ya que este curso se basa en un enfoque más intuitivo del concepto de redes neuronales convolucionales, no en uno matemático o meramente técnico.

Aquellos de vosotros que habéis practicado cualquier campo que implique el procesamiento de señales seguramente estáis familiarizados con la función de convolución.

Si quieres hacer algún trabajo extra por tu cuenta para profundizar en los aspectos matemáticos de la convolución, puedes consultar este estudio de 2017 del profesor Universitario Jianxin Wu titulado "Introduction to Convolutional Neural Networks”.

Vamos a entrar en la operación de convolución real en el contexto de las redes neuronales. El siguiente ejemplo te proporcionará un desglose de todo lo que necesitas conocer sobre este proceso.

La operación de convolución

Estos son los tres elementos que participan en la operación de convolución:

  • Suministrar la imagen
  • Detector de características
  • Mapa de características

Como puedes ver, la imagen suministrada es la misma imagen de la cara sonriente que vimos en el apartado anterior. Si observas atentamente los patrones de 1s y el 0s, nuevamente, serás capaz de distinguir allí la cara sonriente.

A veces se utiliza una matriz de 5x5 o 7x7 como detector de características, pero la más convencional, y con la que vamos a trabajar, es una matriz de 3x3. El detector de características a menudo se conoce como un "kernel" o un " filtro ", con el que te puedes encontrar a medida que indagas en otros materiales sobre el tema.

Es mejor recordar ambos términos para ahorrarnos la confusión. Todos ellos se refieren a la misma cosa y se usan indistintamente, incluso en este artículo.

¿Cómo funciona exactamente la operación de convolución?

Puedes pensar en la detección de características como en una ventana que consiste de 9 celdas (3x3). Esto es lo que haces con ello:

  • Coloca la ventana sobre la imagen de entrada empezando desde la esquina superior izquierda dentro de los bordes que se ven marcados en la imagen de arriba, y luego cuentas el número de celdas en las que el detector de características coincide con la imagen de entrada
  • El número de celdas coincidentes se inserta en la celda superior izquierda del mapa de características
  • Después, mueve el detector de características una celda a la derecha y haces lo mismo. Este movimiento se llama A y debido a que estamos moviendo el detector de características una celda a la vez, esto se conoce como un paso de un píxel
  • En este ejemplo verás que la celda central izquierda del detector de características con el número 1 coincide con la celda sobre la que se encuentra dentro de la imagen de entrada. Esa es la única celda que coincide, y por eso escribes "1" en la celda siguiente en el mapa de características, y así sucesivamente.
  • Después de haber pasado por toda la primera fila, puedes pasar a la siguiente y realizar el mismo proceso.

Es importante no confundir el mapa de características con los otros dos elementos. Las celdas del mapa de características pueden contener cualquier dígito, no sólo 1 y 0. Después de repasar cada píxel de la imagen de entrada en el ejemplo anterior, se obtendrían los siguientes resultados:

Por cierto, así como una característica del detector también puede ser denominado como un Kernel o un filtro, un mapa de características  también es conocido como un mapa de activación, y ambos términos son intercambiables.

¿Cuál es el objetivo de la operación de convolución?

Existen varios usos que obtenemos de la derivación de un mapa de características. Uno de los más importantes es reducir el tamaño de la imagen de entrada. Debes saber que cuanto más grandes sean tus pasos (los movimientos a través de los píxeles), más pequeño será tu mapa de características.

En este ejemplo, usamos pasos de un píxel que nos hicieron obtener un mapa de características bastante grande.

Cuando se trata de imágenes apropiadas, vas a encontrar que es necesario ampliar los pasos. Aquí estamos tratando con una imagen de entrada 7x7 después de todo, pero las imágenes reales tienden a ser sustancialmente más grandes y complejas.

De esta manera, con mayores pasos entre píxeles, vas hacerlos más fáciles de leer.

¿Se pierde información cuando usamos un detector de características?

La respuesta a esa pregunta es SÍ. El mapa de características con el que terminamos tiene pocas celdas y por ende, con menos información que la imagen de entrada original.

Sin embargo, el propósito del detector de características en sí mismo es filtrar la información de la imagen de entrada y filtrar las partes que forman parte de ella y excluir el resto.

Básicamente, se trata de separar el trigo de la paja.

¿Por qué nos proponemos a reducir la imagen de entrada a sus características esenciales?

Piénsalo de esta forma. Lo que haces es detectar ciertos elementos, por ejemplo, los ojos y la nariz, e inmediatamente sabes a quién estás mirando.

Estas son las características más reveladoras, y eso es todo lo que tu cerebro necesita ver para llegar a su conclusión. Incluso estos rasgos son vistos ampliamente y no de forma detallada.

Si tu cerebro  procesara cada pedacito de información que entra a través de tus sentidos en un momento dado, primero serías incapaz de tomar ninguna acción, y pronto tendrías un colapso mental. La clasificación amplia resulta ser más práctica.

Las redes neuronales convolucionales funcionan exactamente de la misma forma.

¿Cómo las redes neuronales convolucionales realmente realizan esta operación?

Sin embargo, el ejemplo que dimos anteriormente es uno bastante simplificado. En realidad, las redes neuronales convolucionales desarrollan múltiples características y las usan para desarrollar diversos mapas de características que son referidas como capas convolucionales.

A través del entrenamiento, la red determina qué rasgos considera importantes con el objetivo de ser capaz de escanear imágenes y categorizarlas de forma más precisa.

En base a ello, se desarrollan sus detectores de características. En algunos casos, los rasgos que serán considerados por la red, serán invisibles para el ojo humano, que es la razón por la cual las redes neuronales convolucionales son tan increíblemente útiles. Con suficiente entrenamiento, pueden ir años luz por delante de nosotros en términos de procesamiento de imágenes.

¿Qué otros usos tienen las matrices convolucionales?

Hay otro uso para las matrices convolucionales, que es en realidad parte de las razones por las que se denominan “filtros”. Esta palabra que es usada aquí, es en el mismo sentido que cuando hablamos de los filtros de Instagram.

Realmente, puedes utilizar una matriz convolucional para ajustar una imagen. Aquí hay algunos ejemplos de filtros siendo utilizados en una imagen, haciendo uso de estas matrices.

En realidad hay pequeños análisis técnicos por hacer sobre estos filtros, pero no será de importancia para nuestro artículo. Estas son matrices intuitivas formuladas. El punto es ver como al aplicarlas a una imagen, pueden alterar sus características en la misma manera que se usan para detectar esas características.

¿Qué sigue?

Esto es todo lo que necesitas saber por ahora respecto a la operación de convolución. En nuestro siguiente apartado, exploraremos el siguiente paso de la convolución: la capa ReLU.


Paso 1(b): La Unidad Lineal Rectificada (ReLU)

La Unidad Lineal rectificada o ReLU no es un componente separado del proceso de las redes neuronales convolucionales.

Es un paso suplementario a la operación de la convolución de la cual hablamos en el apartado anterior. Hay algunos instructores y autores que explican ambos pasos separadamente, pero en nuestro caso vamos a considerar ambos como componentes del primer paso en nuestro proceso.

Si has leído el post de blog sobre redes neuronales artificiales, entonces debes estar familiarizado con la función de rectificación que ves en la siguiente imagen.

La razón de aplicar la función de rectificación es incrementar la no linealidad en nuestras imágenes.

El motivo por el cual queremos hacer esto es porque las imágenes son naturalmente no lineales.

Cuando miras cualquier imagen, vas a descubrir que contienen muchas características no lineales (por ejemplo, la transición entre píxeles, los bordes, los colores, etc.).

El rectificador sirve para romper aún más la linealidad con el fin de compensar la linealidad que podríamos imponer a una imagen cuando la sometemos a la operación de convolución.

Para ver cómo se desarrolla esto realmente, podemos mirar la siguiente imagen y ver los cambios que se producen al someterla a la operación de convolución seguida de una rectificación.

La imagen de entrada

Esta imagen en blanco y negro es la imagen de entrada original.

Detector de características

Al someter a la imagen al proceso de convolución, o en otras palabras, al aplicarle un detector de características, el resultado es lo que ves en la siguiente imagen.

Como puedes observar, toda la imagen ahora está compuesta de píxeles que varían de blanco a negro con muchas sombras en gris entre ellos.

Rectificación

Lo que la función de rectificación le hace a una imagen como esta es eliminar todos los elementos en negro, dejando solo aquellos que llevan un valor positivo (los colores grises y blancos).

La principal diferencia entre las imágenes no rectificadas y las rectificadas es la progresión de colores. Si miras la primera de cerca, encontrarás partes donde una raya blanca es seguida por una gris y luego una negra. Después de rectificar la imagen, verás los colores cambiando de forma más abrupta.

El cambio gradual ya no está allí. Eso indica que la linealidad se ha eliminado.

Hay que tener en cuenta que la forma en la que acabamos de ver este ejemplo sólo proporciona una comprensión básica, más no técnica del concepto de rectificación.

Los conceptos matemáticos detrás del proceso no son necesarios aquí y podrían ser bastante complejos en este punto.

Lectura adicional

Si quieres ver el concepto desde una perspectiva más matemática, puedes echarle un vistazo a un artículo de 2016 de CC Jay Kuo, titulado "Understanding Convolutional Neural Networks with a Mathematical Model”.

Si estás buscando profundizar más en el tema, puedes leer el artículo del año 2015, escrito por Kaiming He y otros, de Microsoft Research. El artículo se titula “Profundizando en los Rectificadores: Superando el rendimiento a nivel humano en la clasificación de ImageNet”. En este artículo, los autores proponen una forma modificada de la función del rectificador llamada Unidad Lineal Rectificada Paramétrica (PReLU). Es una lectura bastante interesante si quieres saber más del tema.

Te invitamos a que continúes fortaleciendo tus bases en matemáticas, con el curso de Juan Gabriel Gomila y Llorenç Valverde,  "Resuelve problemas de matemáticas con Python/Sage desde cero"El mejor contenido desarrollado por dos expertos en la materia.

Paso 2 – Máxima agrupación (Max Pooling)

¿Qué es la máxima agrupación? (Max Pooling)

En vez de definir verbalmente qué es la agrupación, empezaremos inmediatamente este apartado con unos cuantos ejemplos.

Ejemplo: el guepardo


En el ejemplo anterior, la misma imagen de un guepardo se presenta de diferentes maneras. Se ve normal en su primera versión, un poco rotada en la segunda y estrechada horizontalmente en la tercera. El propósito de la agrupación máxima es permitir que la red neural convolucional detecte el guepardo cuando se le presenta la imagen de cualquier forma.

Este segundo ejemplo es más avanzado. Aquí tenemos 6 imágenes diferentes de 6 guepardos diferentes (o 5, hay 1 que aparece en 2 fotos) y cada uno de ellos posa de forma diferente en distintos escenarios y en diferentes ángulos.

De nuevo, la máxima agrupación se preocupa de enseñar a la red neural convolucional a reconocer que, a pesar de todas estas diferencias, todas son imágenes de guepardos. Para ello, la red necesita adquirir una propiedad que se conoce como "variación espacial".

Esta propiedad hace que la red sea capaz de detectar el objeto de la imagen sin ser confundida por las diferencias en las texturas de la imagen, las distancias desde donde se disparan, sus ángulos o cualquier otra cosa.

Para poder alcanzar el paso de la agrupación, es necesario culminar el paso de la convolución, lo que implica que tendríamos un mapa de características listo.

Tipos de agrupación

Antes de entrar en detalle, debes saber que existen diversos tipos de agrupación. Estos incluyen, entre otros, los siguientes:

  • Agrupación media
  • Agrupación máxima
  • Suma de agrupaciones.

Nosotros vamos a enfocarnos en la agrupación máxima.

Mapa de características agrupadas

El proceso de llenar un mapa de características agrupadas es diferente al que utilizamos para crear el mapa de características regular. En este caso, colocarás una casilla de 2x2 en la esquina superior izquierda y te moverás a lo largo de la fila.

Por cada 4 celdas en las que se encuentre la caja, verás el valor numérico máximo y lo insertarás en el mapa de características agrupadas. En la figura de abajo, por ejemplo, la caja contiene actualmente un grupo de celdas donde el valor máximo es 4.

Si recuerdas el ejemplo de la operación de convolución del apartado anterior,  usamos pasos de un píxel. En este ejemplo, estamos usando pasos de 2 píxeles. Por eso terminamos con un mapa de características comunes  3x3. Generalmente, los pasos de dos son los más utilizados.

Te darás cuenta de que en el tercer movimiento a lo largo de la misma fila, te encontrarás con una columna solitaria. Podrás continuar avanzando a pesar de que la mitad de tu ventana estará vacía. Aun así, encontrarás tu valor máximo y lo pondrás en el mapa de características agrupadas.

En el último paso, te enfrentarás a  una situación en la cual la caja contendrá una sola celda. Tendrás que tomar ese valor como el valor máximo.

Al igual que en el paso de convolución, la creación del mapa de características agrupadas también permite eliminar información o características innecesarias. En este caso, hemos perdido aproximadamente el 75% de la información original encontrada en el mapa de características, ya que por cada 4 píxeles en el mapa de características terminamos con sólo el valor máximo y nos deshacemos de los otros 3.

Estos son los detalles que son innecesarios y sin los cuales la red puede hacer su trabajo más eficientemente. 

Razón de la extracción del valor máximo

La razón por la que extraemos el valor máximo, que es en realidad el punto de todo el paso de agrupación, es para tener en cuenta las distorsiones. Digamos que tenemos tres imágenes del guepardo y en cada imagen las líneas de lágrimas del guepardo toman un ángulo diferente.

La característica después de haber sido agrupada será detectada por la red a pesar de estas diferencias en su apariencia entre las tres imágenes. Considera que el rasgo de la línea de separación está representado por el 4 en el mapa de características de arriba.

Imagina que en vez de que los cuatro aparezcan en la celda 4x2, aparecieran en 3x1. Al agrupar la característica, todavía terminaríamos con 4 como valor máximo de ese grupo, y por lo tanto obtendríamos el mismo resultado en la versión agrupada.

Este proceso es lo que proporciona a la red neuronal convolutiva la capacidad de "varianza espacial". Además, la agrupación sirve para minimizar el tamaño de las imágenes así como el número de parámetros que, a su vez, evita que surja un problema de "sobreajuste".

¿Qué es el sobreajuste?

El sobreajuste ocurre cuando se crea un modelo excesivamente complejo para tener en cuenta las peculiaridades que acabamos de mencionar.

Una vez más, se trata de una explicación abstracta del concepto de agrupación sin profundizar en los aspectos matemáticos y técnicos del mismo.

Podemos hacer una analogía aquí desde el cerebro humano. Nuestro cerebro también realiza un paso de agrupación, ya que la imagen de entrada se recibe a través de los ojos, pero luego se destila varias veces hasta que, en la medida de lo posible, sólo se conserva la información más relevante para que puedas reconocer lo que estás mirando.

Lectura adicional

Si quieres leer más sobre este tema, te recomendamos el estudio del año 2010 titulado: "Evaluation of Pooling Operations in Convolutional Architectures for Object Recognition" de  Dominik Scherer y otros, de la Universidad de Bonn.

Es algo bastante simple de leer, solamente consta de 10 páginas, y resumirá el concepto de agrupación perfectamente para ti. Incluso puedes obviar la segunda parte titulada “trabajo relacionado” si lo consideras irrelevante para lo que deseas aprender.

Ahora, vamos con un ejemplo mucho más divertido.

El juego de números

La imagen de arriba es de una herramienta en línea que fue desarrollada. Te será difícil encontrar esta página usando Google, por lo que puede visitarla a través del siguiente enlace: https://cs.ryerson.ca/~aharley/vis/conv/flat.html 

Vayamos al grano.

Lo que hicimos en esta captura de pantalla fue insertar un numero al azar, en este caso, ingresamos el número 4.

Como puedes ver en la línea de imágenes en el centro, el cuadro que se encuentra solo en la fila inferior representa la imagen de entrada y la fila siguiente representa la operación de convolución, seguida de la fase de agrupación.

Verás el término "downsampling" utilizado en la sección de "visibilidad de capas" a la izquierda. Downsampling es simplemente otra palabra para agrupación.

Asimismo, se observan las distintas versiones de la imagen original que aparecen en la fila de convolución, para reconocer los filtros que se utilizan para la operación de convolución y las características en las que se centra la aplicación.

Te darás cuenta de que en la fila de agrupación las imágenes tienen más o menos las mismas características que sus versiones convolutivas, menos alguna información. Todavía puedes reconocerla como la propia imagen.

En una nota aparte:
  • Puedes ignorar el resto de las filas por ahora, ya que no hemos cubierto ese proceso aún. Ten en mente que, como agrupar es similar a la operación de convolución en sus pasos, estos también son solo otras capas del mismo proceso.
  • Si pasas el puntero del ratón por encima de cualquier imagen, enviará un rayo que apuntará a la fuente de estos píxeles en particular sobre los que estás en la versión anterior (la versión de agrupación apuntará a la versión de convolución, y esa apuntará a la imagen de entrada).

Puedes visitar el link que te hemos compartido anteriormente y jugar con la herramienta un rato antes de empezar el siguiente apartado.

Paso 3: Aplanamiento

Este paso es bastante simple, por ello la sorprendente brevedad del apartado.

Después de terminar los dos pasos previos, se supone que ya debemos tener un mapa de características agrupadas. Como el nombre de este paso indica, literalmente vamos a aplanar nuestro mapa de características agrupadas en una columna, como en la imagen que mostramos a continuación.

Esto lo hacemos debido a que necesitamos insertar esta información dentro de nuestra red neuronal artificial más adelante.

Como puedes ver en la imagen de arriba, tenemos múltiples mapas de características del paso anterior.

Lo que sucede después del paso de aplanamiento es que terminas con un largo vector de datos de entrada que luego se pasa a través de la red neuronal artificial para que se procese más.

En resumen, esto es lo que tenemos después de que terminemos con cada uno de los pasos que hemos cubierto hasta ahora:

  • Imagen de entrada (punto de inicio)
  • Capa convolucional (operación de convolución)
  • Capa de agrupación (agrupación / pooling)
  • Capa de entrada para la red neuronal artificial (aplanamiento)

En la siguiente sección vamos a hablar sobre cómo será utilizada esta información.

Paso 4: Conexión completa

Aquí es donde las redes neuronales artificiales y las redes neuronales convolucionales chocan al añadir las primeras a las segundas.

Es aquí donde el proceso de creación de una red neuronal convolutiva empieza a tomar un giro más complejo y sofisticado.

Como puedes ver en la siguiente imagen, tenemos tres capas en el paso de conexión completa:

  • Capa de entrada
  • Capa totalmente conectada
  • Capa de salida

Te puedes dar cuenta de que cuando hablamos sobre redes neuronales artificiales llamamos a la capa del medio "capa oculta", mientras que en el contexto convolucional estamos usando el término "capa totalmente conectada".

El proceso de conexión completa

Como dijimos en el apartado anterior, la capa de entrada contiene el vector de datos que se creó en el paso de aplanamiento. Las características que hemos destilado en los pasos anteriores están codificadas en este vector.

En este punto, ya son suficientes para un grado justo de precisión en el reconocimiento de clases. Ahora queremos llevarlo al siguiente nivel en términos de complejidad y precisión.

¿Cuál es el objetivo de este paso?

El papel de la red neuronal artificial es tomar estos datos y combinar las características en una variedad más amplia de atributos que hagan que la red convolucional sea más capaz de clasificar imágenes, que es el propósito de la creación de una red neuronal convolucional.

Ahora podemos ver un ejemplo más complejo que el del principio del apartado.

Exploraremos cómo se procesa la información desde el momento en que se inserta en la red neuronal artificial hasta que desarrolla sus clases (perro, gato).

Al principio, como ya sabéis, tenemos una imagen de entrada que convolucionamos, agrupamos, aplanamos y luego pasamos a través de la red neuronal artificial.

Al final de este canal, la red neuronal emite sus predicciones.

Veamos un ejemplo detallado

Por ejemplo, la red predice que la figura de la imagen es un perro con una probabilidad del 80%, pero la imagen en realidad resulta ser de un gato. En este caso hay que calcular un error.

En el contexto de las redes neuronales artificiales, llamamos a este cálculo una función de costo o un error medio al cuadrado, pero cuando tratamos con redes neuronales convolucionales, se le llama más comúnmente función de pérdida.

Utilizamos la función de entropía cruzada para conseguirlo. La función de entropía cruzada y los errores medios al cuadrado se discutirán en detalle en un apartado más adelante. Por ahora, todo lo que necesitas saber es que la función de pérdida nos informa de la precisión de nuestra red, que luego utilizamos para optimizar nuestra red con el fin de aumentar su eficacia.

Esto requiere que ciertas cosas sean alteradas en nuestra red. Estas incluyen los pesos (las líneas azules que conectan las neuronas, que son básicamente las sinapsis), y el detector de características, ya que la red a menudo resulta estar buscando las características equivocadas y para estar optimizadas, tiene que ser revisada varias veces.

Así como comentamos mientras hablábamos sobre las redes neuronales artificiales, la información es entonces transmitida en la dirección opuesta como se ve en la figura de abajo. A medida que trabajamos para optimizar la red, la información sigue fluyendo una y otra vez hasta que la red alcanza el estado deseado.

Como te hemos recordado, este proceso se explica aquí de manera intuitiva, pero la ciencia y las matemáticas que hay detrás son más complejas.

Reconocimiento de clases

Hasta ahora, hemos visto ejemplos donde la salida consiste en una sola neurona.

Como esta contiene dos, hay algunas diferencias.

Vamos a echarle un vistazo a la categoría Perro.

Para poder entender cómo va a funcionar, necesitamos verificar los pesos puestos en cada sinapsis que se vincula a esta categoría, para que podamos decir qué atributos / características son más relevantes para ella.

Este proceso de conexión completa, prácticamente funciona de la siguiente manera:

  • En la capa totalmente conectada, la neurona  detecta un cierto rasgo; digamos, una nariz
  • Preserva su valor
  • Comunica su valor a las categorías Perro y Gato
  • Ambas categorías comprueban el rasgo y deciden si es relevante para ellas

En nuestro ejemplo, el peso colocado en la sinapsis de la nariz del perro es alta (1.0), lo que significa que la red confía en que se trata de la nariz de un perro.

Información fluye en ambas direcciones

Dado que la información fluye continuamente en ambas direcciones, la categoría "gato" toma nota de ello y entiende que, puesto que se trata de la nariz de un perro, simplemente no puede ser la nariz de un gato. Aunque al principio hubiera considerado la señal que dice "nariz pequeña y redondeada" porque ésta podría ser tanto la nariz de un gato como la de un perro, ahora descarta esta característica.

Esto sucede gradualmente ya que recibe la misma lectura varias veces. La categoría de perros, por su parte, empezará a centrarse más en los atributos que tienen mayor peso (las tres líneas moradas gruesas), e ignorará el resto.

El mismo proceso se produce de forma simultánea con el gato, permitiéndole escoger sus propias características prioritarias. Lo que acabamos de ver es lo que se ve en la imagen de abajo. A medida que este proceso se repite miles de veces, te encuentras con una red neuronal óptima.

La aplicación

El siguiente paso es poner a prueba la eficacia de nuestra red. Digamos que le damos la imagen de un perro.

Las categorías de perros y gatos que se encuentran al final de la red neural artificial no tienen ninguna pista de la imagen. Todo lo que tienen es lo que les da la capa anterior a través de las sinapsis.

A estas alturas, cada una de estas categorías tiene tres atributos en los que está centrando su atención.

Esa capa anterior transmite cuáles de estos atributos detecta, y en base a esa información, ambas clases calculan sus probabilidades, y así es como se producen las predicciones.

Como puedes ver en el paso siguiente, se predijo que la imagen del perro caería en la categoría de perros con una probabilidad de 0,95 y se colocó otro 0,05 en la categoría de gatos. Piénsalo de esta manera: Este proceso es una votación entre las neuronas sobre a cuál de las categorías se atribuirá la imagen. La categoría que obtiene la mayoría

El final del proceso de convolución

¿Recuerdas esta imagen?

Vimos esta imagen en el ejemplo del primer tutorial en esta sección, y hasta ahora debes tener un completo entendimiento de todo el proceso por el cual estas suposiciones fueron producidas.

Resumen Redes Neuronales Convolucionales

El proceso de convolución: Una recapitulación rápida

Ya que hemos terminado con esta sección, vamos hacer una rápida recapitulación de lo que hemos aprendido sobre las redes neuronales convolucionales. En el diagrama de abajo, puedes ver el proceso entero de crear y optimizar una red neuronal convolucional que hemos tratado en esta sección.

Como puedes ver y posiblemente recuerdes de los tutoriales previos, el proceso se desarrolla de la siguiente manera:

  • Empezamos con una imagen de entrada.
  • Aplicamos filtros o mapas de características a la imagen, lo que nos da una capa convolucional.
  • Luego rompemos la linealidad de esa imagen usando la función rectificadora.
  • La imagen queda lista para el paso de agrupación, cuyo propósito es proporcionar a la red neural convolucional la facultad de " invariabilidad espacial " que verá explicada con más detalle en el tutorial de agrupación.
  • Después de que terminemos con la agrupación, terminaremos con un mapa de características agrupadas.
  • Luego aplanamos nuestro mapa de características agrupadas antes de insertarlo en una red neuronal artificial.

A lo largo de todo este proceso, los bloques de construcción de la red, como los pesos y los mapas de características, son entrenados y alterados repetidamente para que la red alcance el rendimiento óptimo que le permita clasificar imágenes y objetos con la mayor precisión posible.

En este punto, has adquirido todo el conocimiento necesario para proceder a las aplicaciones más prácticas del concepto de redes neuronales convolucionales.

Lecturas adicionales

Sin embargo, si todavía tienes ganas de profundizar en el tema, siempre puedes hacer alguna lectura adicional por tu cuenta.

Esta entrada de blog de Adit Deshpande del 2016 titulada The 9 Deep Learning Papers You Need To Know About (Understanding CNN's Part 3) te dará un  resumen de 9 aplicaciones de la vida real de lo que aprendiste en esta  sección, y luego puedes seguir estudiando estos ejemplos con más profundidad.

Por supuesto, te encontrarás con algunos conceptos que serán nuevos, pero con el conocimiento que tienes ahora, serás capaz de manejar una visión general en estos documentos.

Además, a medida que te entrenes más, siempre podrás volver a revisar estos casos de estudio de vez en cuando con tu nueva experiencia.

Softmax y Entropía cruzada

Descargo de responsabilidad: Ya debes saber que este tutorial de softmax y entropía cruzada no es completamente necesario ni es obligatorio para que procedas en este curso de Deep Learning.

Dicho esto, aprender sobre las funciones de softmax y entropía cruzada puede darte una mejor comprensión del tema de esta sección.

Al mirar las predicciones generadas por la red neuronal artificial en la imagen de abajo, deberíamos hacernos una pregunta a nosotros mismos;

"¿Cómo coordinan las dos categorías (perro y gato) sus probabilidades para sumar 1?"

La respuesta es que en realidad no coordinan estos resultados juntos.

La razón por la que los resultados tienen esta coherencia es que introducimos en la red el primer elemento de este tutorial que es la función softmax.

Softmax

La función de softmax funciona de la siguiente manera:

Sin esta función, cada una de las categorías de perros y gatos tendrán una probabilidad de valor real, pero los resultados no se sumarán a ninguna cifra en particular.

Aquí está la definición de Wikipedia de la función softmax, que también se conoce como la función exponencial normalizada:

Puedes olvidarte de toda la terminología matemática en esa definición por ahora, pero lo que aprendemos de esto es que sólo incluyendo la función softmax los valores de ambas categorías son procesados y hechos para sumar a 1.

Es realmente la única cosa razonable que se puede hacer si quieres que tu red neural convolucional sea de alguna utilidad.

De lo contrario, terminarías en situaciones donde, por ejemplo, la probabilidad de que la figura en la imagen sea un gato es del 90% y del 45% para la categoría de perro.

Estos resultados son prácticamente inútiles.

Entropía cruzada

De la mano de la función softmax está la función de entropía cruzada. Aquí está la fórmula para ello:

Ambas fórmulas son equivalentes la una a la otra, pero en este tutorial, usaremos la última forma.

Sin embargo, no debes dejar que la complejidad de su nombre y las fórmulas te abrumen. La función de entropía cruzada es en realidad bastante simple, como verás.

Si recuerdas el material de la sección de redes neuronales artificiales, teníamos una función llamada "función de error al cuadrado medio".

Utilizamos esta función para evaluar el rendimiento de nuestra red, y al trabajar para minimizar este error medio al cuadrado prácticamente estaríamos optimizando la red.

La función de error medio al cuadrado puede ser usada con redes neuronales convolucionales, pero una opción aún mejor sería aplicar la función de entropía cruzada después de haber introducido la función de softmax. Ahora ya no se llama función de coste, sino función de pérdida. Las diferencias entre las dos no son tan grandes de todos modos. Es principalmente una diferencia terminológica. Podrías considerarlas exactamente igual por ahora.

Utilizaremos la función de pérdida de la misma manera que utilizamos la función de coste; intentaremos minimizarla al máximo optimizando nuestra red.

Demostración

Veamos un ejemplo de cómo se utiliza esta función.

Al ingresar esta imagen de entrada, la red generó una predicción con un 90% para la categoría de perros y un 10% para la de gatos.

Esto proporciona una etiqueta "perro", de ahí el 1 y el 0 a la derecha. Al aplicar la función de entropía cruzada, necesita asegurarse de que las probabilidades de la izquierda van en la ranura "q", y los valores de la etiqueta de la derecha van en la ranura "p". Es necesario verificar que el orden es el correcto.

Como pueden ver aquí, para las dos primeras imágenes, ambas redes neuronales llegaron a predicciones finales similares, pero las probabilidades fueron calculadas con mucha menos precisión por la segunda red neuronal.

Para la tercera imagen que muestra esa extraña criatura con aspecto de león, ambas redes neuronales se equivocaron en sus predicciones ya que este animal es en realidad un perro, pero la primera red neuronal se inclinaba más hacia la predicción correcta que la segunda.

Así que, incluso cuando ambas estaban equivocadas, la segunda red neuronal estaba "más equivocada" que la primera. Lo que podemos hacer con estos datos es intentar hacer una evaluación del rendimiento de ambas redes. Para ello, tendremos que utilizar una de las funciones que hemos mencionado.

En primer lugar, necesitaremos reunir nuestros datos en una tabla como la siguiente:

Error de clasificación

Este es muy básico. Sólo dice cuántas predicciones erróneas hizo cada red. En nuestro ejemplo, cada red hizo una predicción errónea de tres. Esta función no es tan útil cuando se trata de la propagación regresiva.

Error cuadrático medio

La manera de derivar el error cuadrático medio es calculando los valores cuadráticos de los errores de la red y luego obtener el promedio de éstos en la tabla. En nuestro caso, NN2 obviamente tiene una tasa de error mucho más alta que NN1.

Entropía cruzada

Como puede ver, la estructura de los resultados de esta función difiere de las otras ya que tenemos NN2 con un valor de entropía cruzada de 1.06 y puede ser algo confuso.

¿Por qué utilizar la función de entropía cruzada en lugar del error medio al cuadrado?

Hay varias ventajas que se obtienen al usar la función de entropía cruzada que no son exactamente intuitivas o evidentes.

Examinaremos aquí una de las ventajas principales, y si quieres conocer las razones restantes para usar la función de entropía cruzada, puedes hacerlo a partir del material que encontrarás mencionado al final de este tutorial.

Al principio de su proceso de retro propagación, el valor de salida que tiene normalmente es mínimo, mucho más pequeño que el valor real deseado. El gradiente también suele ser muy bajo, lo que dificulta que la red neural utilice realmente los datos que tiene para ajustar los pesos y perfeccionarse.

La función de entropía cruzada, a través de su logaritmo, permite a la red evaluar estos pequeños errores y trabajar para eliminarlos.

Digamos que el valor de salida deseado es 1, pero lo que tiene actualmente es 0.000001. A través de alguna optimización, usted puede hacer que aumente hasta 0.001.

 

Cálculo del error cuadrático medio

Cuando se calcula el error cuadrático medio, se resta uno del otro, y por lo tanto el cambio será demasiado pequeño como para considerarlo. Cuando se usa la función de entropía cruzada, se toma un logaritmo antes de comparar los dos valores dividiendo uno por el otro.

En este caso, el cambio resultará ser bastante significativo.

En ambos casos, el grado de cambio es similar en términos absolutos, pero en términos relativos, la función de entropía cruzada hace que su red sea mucho más adecuada para usar este cambio como su guía en la dirección deseada, mientras que la función de error medio al cuadrado hace escaso uso de ella.

Por lo tanto, podemos concluir de esto que la función de entropía cruzada es una herramienta de optimización mucho más eficiente.

Observa que la función de entropía cruzada sólo es útil con redes neuronales convolucionales, más particularmente para propósitos de clasificación. Si se trata de un problema de regresión (redes neuronales artificiales), el error cuadrático medio se hace más conveniente.

Lectura Adicional

  • Como padrino del aprendizaje profundo, no hay nadie que te guíe mejor que Geoffrey Hinton en los detalles de softmax y la entropía cruzada. Si estás interesado, puedes ver este video donde Hinton desglosa de manera asombrosa todo el concepto.

Dejando a un lado este video, definitivamente deberías repasar los otros tutoriales de Hinton. Este hombre tiene una gran manera de simplificar las cosas y te ayudará a través de varios conceptos de Deep Learning con una facilidad increíble.

  • También puedes ver esta entrada del blog de Rob DiPietro del 2016 titulada "A Friendly Introduction to Cross-Entropy Loss" donde utiliza ejemplos y analogías divertidas y fáciles de entender para explicar la entropía cruzada con más detalle y con pocas matemáticas complicadas.
  • Si quieres entrar en los aspectos matemáticos pesados de la entropía cruzada, puedes ir a este post de Peter Roelants del 2016 titulado "How to Implement a Neural Network Intermezzo 2".

Eso es todo con respecto a las redes neuronales convolucionales.

Tiene mucho material adicional para revisar, así que puede hacerlo si quiere obtener más información sobre los temas que hemos tratado, o bien, puede pasar a la siguiente sección de este curso de Deep Learning.

Buena suerte! Eso es todo!

Gracias por seguir esta guía sobre Redes Neuronales Convolucionales, esperamos que hayas disfrutado, aprendido y te hayas desafiados a tí mismo en esta sección de Deep learning A-Z.

 

Artículo original en inglés

En caso de que desees leer la versión original en inglés, haz clic aquí.

Si te gusta la información que traemos para ti, dale “Me Gusta” a nuestra página de Facebook, síguenos a través de nuestro canal de Youtube, donde puedes ver el distinto material que preparamos para ti, y si lo deseas, puedes suscribirte a nuestra página para recibir un regalo digital que preparamos para ti. 

« Volver al Blog

Obtener mi regalo ahora