GoogLeNet
Rubén Rodríguez Abril
GoogLeNet ha supuesto un gran avance en la optimización de las redes convolucionales. Esta red, fruto de las investigaciones de los ingenieros de Google, demostró que el número de operaciones llevadas a cabo por una red neuronal (que se cuenta en cientos de millones en cada prueba) podía reducirse sin por ello ver mermado su rendimiento.
Origen de GoogLeNet
En el año 2014, el ingeniero de Google Christian Szegedy y sus colaboradores introdujeron un nuevo modelo de red neuronal convolucional que a pesar de tener mucha mayor profundidad que AlexNet, permitía el ahorro de considerables recursos computacionales respecto a esta última. El nuevo modelo, especializado en la detección y clasificación de objetos, recibió el nombre de GoogLeNet y se convirtió en una de las redes neuronales artificiales más avanzadas del estado de la técnica. Suya fue la victoria en la edición del año 2014 del concurso Large-Scale Visual Recognition Challenge (ILSVRC14).
Innovaciones de GoogLeNet
Durante sus investigaciones, los creadores de GoogLeNet se habían percatado de que para aumentar la profundidad de una red convolucional era necesario resolver previamente dos grandes problemas.
El primero de ellos es el enorme gasto computacional que conlleva añadir nuevas capas, pues en todas ellas deben realizarse repetidas multiplicaciones matriciales seguidas de sumas de vectores. Con el ánimo de reducir el número de conexiones entre neuronas, Szegedy y su equipo introdujeron una nueva estructura denominada módulo de incepción (inception module), que será detallada en el próximo apartado.
El segundo problema es el de la desaparición del gradiente, que afecta a en mayor o menor medida a las redes de gran profundidad y dificulta el aprendizaje de las capas más alejadas de la salida. Para paliar este problema crearon e introdujeron clasificadores auxiliares, que “inyectaban” directamente gradiente de función de pérdida en las partes inferiores de la red, en una forma que analizaremos más adelante.
Las siguientes secciones del artículo tendrán por objeto el análisis de estas dos nuevas estructuras, así como el de la arquitectura global de la red.
Módulos de incepción de GoogLeNet
Densidad de conexiones
En los sistemas nerviosos biológicos las conexiones entre las neuronas no son densas sino dispersas. Las células del cerebro no están conectadas “todas con todas”, sino que tienden a asociarse en agrupaciones a través del aprendizaje hebbiano o la propia programación genética de la neurona. Uno de los ejemplos más palmarios es el de las células C y S de la corteza visual primaria (V1), estudiados en su día por Hubel y Wiesel, y que sólo reciben estímulos de una parte limitada del campo visual.
El denominado principio de dispersión (sparsity), procedente de la fisiología del sistema nervioso, ha sido adoptado en el ámbito del Aprendizaje Profundo. Implica que cada neurona sólo debe de tener conexión directa con un reducido número de otras neuronas de la red, y no con todas ellas. En la actualidad el principio tiene una gran importancia en el diseño de las redes neuronales artificiales, pues previene el sobreajuste (overfitting) y el desperdicio de poder computacional. Como manifestaciones del mismo podemos citar los procedimientos de apagado (dropout) de neuronas durante el entrenamiento o la propia existencia de capas convolucionales. En estas últimas, cada neurona no está conectada con todas las neuronas de la capa anterior sino tan sólo con las de su campo excitatorio, que vienen señaladas por el kernel de la convolución.
Densidad entre capas
Sin embargo, a pesar de la extraordinaria reducción de conexiones que supone la introducción de la convolución, la densidad de conexiones no se elimina totalmente. Así, aunque las conexiones de las capas convolucionales de LeNet y AlexNet no son densas a nivel de neuronas (debido a las limitaciones impuestas por el kernel), sí que lo son a nivel de mapas o canales. En LeNet todos los mapas/canales de una capa de convolución están conectados con todos los mapas/canales de la capa anterior, lo que multiplica excesivamente el número de parámetros. No hay densidad, pues, a nivel de neuronas, pero sí que la hay a nivel de mapas.
En este ejemplo se observa que los mapas de la capa posterior, como consecuencia del stride 3, ven reducida su resolución respecto a los de la capa previa. Cada nuevo mapa es generado a partir de todos los mapas de la capa previa. Y es necesario aplicar el kernel en todos y cada uno de estos últimos. Así, si tenemos 75 mapas en la capa previa, el número de multiplicaciones necesarias para generar un solo mapa de resolución 50×50 en la capa siguiente es 3×3×75×50×50 = 1687500. Si el número de mapas en esta capa sucesiva fuera igual al de la anterior, entonces la cantidad de operaciones se elevaría a 1687500×75= 126562500.
El módulo de incepción
Con el objetivo de reducir sustancialmente el número total de conexiones en la red, los creadores de GoogLeNet diseñaron una nueva estructura a la que denominaron módulo de incepción (inception module). Y a partir de ella crearon su nueva arquitectura. Estos módulos sustituyen a las capas vistas en otros modelos de red. La red GoogLeNet consta de nueve de estos módulos, identificados por una letra y un número (como 3a o 4e).
- Cada módulo recibe como entrada los mapas de características de la capa previa. A partir de TODOS ellos el módulo crea sus propios mapas, en un número variable. Estos nuevos mapas pueden ser de cuatro clases diferentes. Las tres primeras son convoluciones de 1×1, 3×3 y 5×5, y se utilizan para extraer rasgos y patrones geométricos a diferentes escalas. La cuarta clase es la de agrupación (max pooling), y se utiliza para generar cierta invariancia traslacional.
- Antes de aplicar las convoluciones de 3×3 y 5×5 y después de agrupar con max-pooling, los datos de entrada deben ser sometidos a una convolución de 1×1. Esta última no altera la resolución de la entrada, pero sí que reduce su número de canales/mapas. Con ello disminuye sensiblemente el número de parámetros necesarios para realizar las convoluciones posteriores.
- Los mapas creados por los módulos de incepción se incluyen en una misma capa (filter concatenation), cuyas neuronas servirán de entrada para las células de la capa siguiente.
En esta ilustración mostramos el módulo de incepción 3a, el primero de los módulos de la red. Recibe como input 192 mapas/canales de la capa anterior. Las convoluciones de 3×3 y 5×5, pasan antes por otra de 1×1 que reduce el número de mapas (de 192 a 96 y 16 respectivamente). El conjunto de todas las convoluciones da como resultado un total de 256 nuevos mapas. El resto de módulos sigue exactamente este esquema, tan sólo variando el número de mapas.
Optimización de la red
Por medio de esta nueva técnica, los creadores de GoogLeNet fueron capaces de reducir extraordinariamente el número de parámetros de red. Mientras que AlexNet tenía 60 millones de parámetros independientes (pesos sinápticos), en GoogLeNet éstos pasaron a ser sólo 4 millones, a pesar de que el número de capas se había incrementado de 8 a 22. El gasto computacional se hizo 15 veces más pequeño.
Arquitectura de GoogLeNet
Clasificadores auxiliares en GoogLeNet
Dado que GoogLeNet tiene 22 capas, el problema de la desaparición del gradiente puede provocar que las neuronas de las capas más alejadas de la salida apenas modifiquen sus pesos sinápticos durante los entrenamientos. Para prevenir este inconveniente fueron creadas nuevas estructuras denominadas clasificadores auxiliares. Su misión sería la de inyectar directamente el gradiente de la función de pérdida en las capas más inferiores de la red.
El hecho de que redes poco profundas como LeNet (3 capas) y AlexNet (6 capas) sean capaces de realizar eficientemente tareas de clasificación indica que probablemente los mapas de características de las capas intermedias de GoogLeNet son ya bastante discriminativos, aunque estén alejados de la salida. Por ese motivo, los creadores de la red decidieron adjuntar a la red dos clasificadores auxiliares.
Estructura de los módulos auxiliares
- Capa de average-pooling de 5×5.
- Convolución de 1×1.
- Capa densamente conectada con la anterior, que experimenta un apagado del 70% durante el entrenamiento.
- Última capa densamente conectada con la anterior, y con una función de activación softmax. La función de pérdida es también la entropía cruzada.
Los gradientes se calculan en la última capa y se retropropagan a través de todo el clasificador auxiliar. Una vez que la retropropagación ha alcanzado la primera capa del clasificador, el gradiente es multiplicado por 0,3. Y a partir de entonces, la retropropagación continúa, esta vez en el cuerpo principal de la red.
Existen en GoogLeNet dos módulos auxiliares, que reciben su input de las salidas de los módulos de incepción 4a y 4d.
Resultados de GoogLeNet
GoogLeNet fue presentada a las pruebas de clasificación de objetos y detección de objetos dentro del concurso ILSVRC14. En la primera obtuvo unas tasas de error top-5 de tan sólo un 6,67%, tanto con los datos validación como con los de prueba. El lector recordará, si ha leído nuestra página dedicada a AlexNet, que en la prueba de clasificación de imágenes de ILSVRC14 la red debía asignar cinco etiquetas diferentes (“top-5”) para un objeto, y al menos una de ellas debía ser la correcta. En caso contrario, cometía un error (“top-5 error”). Pues bien, el porcentaje de error en este campo se redujo del 17% de AlexNet a tan sólo el 6,67%.
En la segunda de las pruebas, detección de objetos, el sistema debía crear una caja (box) o conjunto de cajas que cubrieran un objeto determinado. Y éste debía a su vez cubrir al menos la mitad de la superficie de las cajas. Tras ello, el objeto debía de ser clasificado correctamente por la red. GoogLeNet también se presentó a esta prueba, obteniendo resultados satisfactorios.
Conclusión
Los éxitos de GoogLeNet y su excelente rendimiento tuvieron lugar a pesar de la extraordinaria reducción del número de parámetros de red. Ello mostró hasta qué punto redes neuronales anteriores como AlexNet o VGG16 habían estado desperdiciando enormes cantidades de poder computacional. A consecuencia de esto, el principio de dispersión adquirió una importancia aún mayor en el diseño de las nuevas arquitecturas de red.
Por otro lado, la aparición de GoogLeNet motivó el inicio de sugerentes investigaciones por parte de los ingenieros de Google, que analizaron el modo en que la información semántica es creada y almacenada por una red neuronal convolucional, y mostraron hasta qué punto dicha red podía crear imágenes oníricas o alucinadas. Pero ello será objeto de otro artículo en este mismo portal.
Lecturas recomendadas
– Szegedy, C. et al (2014). Going deeper with convolutions.