Evolución y Usos de las CNNs y ¿Por qué Aprendizaje Profundo?

$$\gdef \sam #1 {\mathrm{softargmax}(#1)}$$ $$\gdef \vect #1 {\boldsymbol{#1}} $$ $$\gdef \matr #1 {\boldsymbol{#1}} $$ $$\gdef \E {\mathbb{E}} $$ $$\gdef \V {\mathbb{V}} $$ $$\gdef \R {\mathbb{R}} $$ $$\gdef \N {\mathbb{N}} $$ $$\gdef \relu #1 {\texttt{ReLU}(#1)} $$ $$\gdef \D {\,\mathrm{d}} $$ $$\gdef \deriv #1 #2 {\frac{\D #1}{\D #2}}$$ $$\gdef \pd #1 #2 {\frac{\partial #1}{\partial #2}}$$ $$\gdef \set #1 {\left\lbrace #1 \right\rbrace} $$ % My colours $$\gdef \aqua #1 {\textcolor{8dd3c7}{#1}} $$ $$\gdef \yellow #1 {\textcolor{ffffb3}{#1}} $$ $$\gdef \lavender #1 {\textcolor{bebada}{#1}} $$ $$\gdef \red #1 {\textcolor{fb8072}{#1}} $$ $$\gdef \blue #1 {\textcolor{80b1d3}{#1}} $$ $$\gdef \orange #1 {\textcolor{fdb462}{#1}} $$ $$\gdef \green #1 {\textcolor{b3de69}{#1}} $$ $$\gdef \pink #1 {\textcolor{fccde5}{#1}} $$ $$\gdef \vgrey #1 {\textcolor{d9d9d9}{#1}} $$ $$\gdef \violet #1 {\textcolor{bc80bd}{#1}} $$ $$\gdef \unka #1 {\textcolor{ccebc5}{#1}} $$ $$\gdef \unkb #1 {\textcolor{ffed6f}{#1}} $$ % Vectors $$\gdef \vx {\pink{\vect{x }}} $$ $$\gdef \vy {\blue{\vect{y }}} $$ $$\gdef \vb {\vect{b}} $$ $$\gdef \vz {\orange{\vect{z }}} $$ $$\gdef \vtheta {\vect{\theta }} $$ $$\gdef \vh {\green{\vect{h }}} $$ $$\gdef \vq {\aqua{\vect{q }}} $$ $$\gdef \vk {\yellow{\vect{k }}} $$ $$\gdef \vv {\green{\vect{v }}} $$ $$\gdef \vytilde {\violet{\tilde{\vect{y}}}} $$ $$\gdef \vyhat {\red{\hat{\vect{y}}}} $$ $$\gdef \vycheck {\blue{\check{\vect{y}}}} $$ $$\gdef \vzcheck {\blue{\check{\vect{z}}}} $$ $$\gdef \vztilde {\green{\tilde{\vect{z}}}} $$ $$\gdef \vmu {\green{\vect{\mu}}} $$ $$\gdef \vu {\orange{\vect{u}}} $$ % Matrices $$\gdef \mW {\matr{W}} $$ $$\gdef \mA {\matr{A}} $$ $$\gdef \mX {\pink{\matr{X}}} $$ $$\gdef \mY {\blue{\matr{Y}}} $$ $$\gdef \mQ {\aqua{\matr{Q }}} $$ $$\gdef \mK {\yellow{\matr{K }}} $$ $$\gdef \mV {\lavender{\matr{V }}} $$ $$\gdef \mH {\green{\matr{H }}} $$ % Coloured math $$\gdef \cx {\pink{x}} $$ $$\gdef \ctheta {\orange{\theta}} $$ $$\gdef \cz {\orange{z}} $$ $$\gdef \Enc {\lavender{\text{Enc}}} $$ $$\gdef \Dec {\aqua{\text{Dec}}}$$
🎙️ Yann LeCun

Evolución de las CNNs

En el cerebro de los animales, las neuronas reaccionan a bordes en determinadas orientaciones. Grupos de neuronas que reaccionan a las mismas orientaciones son replicados sobre todo el campo visual.

Fukushima (1982) construyo una red neuronal (NN) que funcionaba de la misma forma que el cerebro, basada en dos conceptos. Primero, las neuronas son replicadas a través del campo visual. Segundo, hay células complejas que agrupan la información de células simples (unidades selectivas de orientación). Como resultado, el corrimiento de la imagen cambiará la activación de células simples, pero no influirá la activación integrada de la célula compleja (agrupación convolucional).

LeCun (1990) utilizó propagación hacia atrás para entrenar una CNN para el reconocimiento de dígitos escritos a mano. Hay una demostración de 1992 donde el algoritmo reconoce los dígitos de cualquier estilo. Realizar reconocimiento de caracteres/patrones utilizando un modelo entrenado de extremo a extremo era nuevo en ese tiempo. Previamente, personas habían utilizado un modelo supervisado sobre extractores de características.

Estos nuevos sistemas CNN podían reconocer múltiples caracteres en la imagen al mismo tiempo. Para hacerlo, personas utilizaron una pequeña ventana de entrada para una CNN y la deslizaban sobre toda la imagen. Si se activaba, significaba que ahí había un determinado carácter presente.

Mas adelante, esta idea fue aplicada a la detección de rostros/personas y segmentación semántica (clasificación entre píxeles). Ejemplos incluyen a Hadsell (2009) y Farabet (2012). Esto eventualmente se tornó popular en la industria, siendo utilizado en aplicaciones de conducción autónoma, por ejemplo en el seguimiento de carril.

Los tipos de equipo de cómputo especializado para entrenar CNNs fueron un tema popular en los 1980’s, después el interés bajó, y ahora nuevamente ha vuelto a ser popular.

La revolución del Aprendizaje Profundo (aunque el termino no era usado en ese tiempo) inició en 2010-2013. Investigadores se enfocaron en inventar algoritmos que pudieran ayudar a entrenar CNNs más rápido. Krizhevsky (2012) apareció con AlexNet, la cual era una CNN mucho más grande que las utilizadas anteriormente, y entrenada en ImageNet (1.3 millones de ejemplos) utilizando GPUs. Después de ejecutarse por un par de semanas AlexNet superó por un gran margen el rendimiento de los mejores sistemas compitiendo – un 25.8% contra un 16.4% de la tasa de error top-5.

Después de ver el éxito de AlexNet, la comunidad de Visión por Computadora (CV) quedó convencida de que las CNNs funcionaban. Mientras que todas las publicaciones del 2011-2012 que mencionaban CNNs fueron rechazadas, desde 2016 las publicaciones más aceptadas en CV utilizan CNNs.

A través de los años, el número de capas utilizadas ha ido incrementándose: LeNet – 7, AlexNet – 12, VGG – 19, ResNet – 50. Sin embargo, hay una relación entre el número de operaciones necesarias para calcular la salida, el tamaño del modelo y su precisión. En consecuencia, en la actualidad un tema popular es cómo comprimir las redes para realizar los cálculos más rápido.

Aprendizaje Profundo y Extracción de Características

Las redes multicapa son exitosas porque explotan la estructura composicional de los datos naturales. En una jerarquía composicional, combinaciones de objetos de una capa en la jerarquía forman los objetos de la siguiente capa. Si modelamos esta jerarquía como múltiples capas y dejamos que la red aprenda la combinación apropiada de características, obtenemos lo que llamamos una arquitectura de Aprendizaje Profundo. En consecuencia, las redes de Aprendizaje Profundo son jerárquicas por naturaleza.

Las arquitecturas de Aprendizaje Profundo nos han llevado a obtener un progreso increíble en tareas de visión por computadora, que van desde identificar y generar máscaras precisas alrededor de objetos hasta identificar propiedades espaciales de los mismos. Principalmente las arquitecturas Mask-RCNN y RetinaNet son las responsables de haber logrado esta mejora.

Las Mask-RCNNs han encontrado su aplicación en la segmentación de objetos individuales, como por ejemplo creando máscaras para cada objeto en una imagen. Tanto la entrada como la salida son imágenes. Esta arquitectura puede también ser usada para realizar segmentación de instancias, por ejemplo para identificar diferentes objetos del mismo tipo en una imagen. Detectron, un sistema de software del centro de investigación de IA de Facebook (FAIR), implementa todos estos algoritmos de detección de objetos de última generación (SOTA), y es de código abierto.

Algunas de las aplicaciones prácticas de las CNNs son la conducción autónoma de vehículos y el análisis médico de imágenes.

A pesar de que la ciencia y las matemáticas detrás del Aprendizaje Profundo son bastante entendidas, aún existen algunas preguntas interesantes que requieren más investigación. Estas preguntas incluyen: ¿Por qué arquitecturas con múltiples capas se desempeñan mejor, si podemos aproximar cualquier función con dos capas solamente? ¿Por qué las CNNs trabajan bien con datos naturales como el habla, imágenes y texto? ¿Cómo es que podemos optimizar funciones no convexas tan bien? ¿Por qué funcionan estas arquitecturas sobre-parametrizadas?

La extracción de características consiste en expandir la dimensión de representación de tal forma que las características expandidas sean más propensas a ser linealmente separables; puntos en un espacio dimensional más alto son más propensos a ser linealmente separables, debido al incremento en la cantidad de posibles planos separadores.

Los primeros profesionales en el área de Aprendizaje de Máquina dependían de características de alta calidad, seleccionadas manualmente y especializadas en un campo determinado para construir modelos de inteligencia artificial, pero con la llegada del Aprendizaje Profundo, los modelos comenzaron a extraer las características genéricas automáticamente. Algunos enfoques comúnmente utilizados en los algoritmos de extracción de características son listados abajo:

  • Repetición de espacios
  • Proyecciones Aleatorias
  • Clasificador Polinomial (productos-cruzados de características)
  • Funciones de base radial
  • Maquinas Kernel

Debido a la naturaleza composicional de los datos, las características aprendidas tienen una jerarquía de representaciones con un nivel incremental de abstracciones. Por ejemplo:

  • Imágenes - En el nivel más granular, las imágenes pueden ser vistas como píxeles. Combinaciones de píxeles forman bordes los cuales al ser combinados forman textons (formas multi-borde). Los textons forman motivos y los motivos forman partes de la imagen. Uniendo todas estas partes obtenemos la imagen final.
  • Texto - De la misma forma, hay una jerarquía inherente en los datos de tipo texto. Caracteres forman palabras, cuando unimos palabras obtenemos grupos de palabras, después cláusulas, luego uniendo cláusulas obtenemos oraciones. Las oraciones finalmente nos dicen qué historia está siendo transmitida.
  • Habla - En habla, muestras componen bandas, las cuales forman sonidos, los cuales forman fonos, luego fonemas, luego palabras completas, luego oraciones, así mostrando una clara jerarquía en su representación.

Aprendiendo representaciones

Hay quienes rechazan el Aprendizaje Profundo: Si podemos aproximar cualquier función con 2 capas, ¿por qué tener más? Por ejemplo: las SVMs encuentran un hiperplano separador “en el espacio de los datos”, las predicciones significativas están basadas en comparaciones con los ejemplos de entrenamiento. Las SVMs son esencialmente una muy simplista red neuronal de 2 capas, donde la primera capa define “plantillas” (templates) y la segunda capa es un clasificador lineal. El problema con la falacia de las dos capas es que, la complejidad y el tamaño de la capa intermedia es exponencial en N (para lograrlo correctamente con una tarea difícil, se necesitan grandes cantidades de plantillas). Pero si se expande el número de capas a log(N), las capas llegan a ser lineales en N. Hay una relación de balance entre tiempo y espacio.

Una analogía es diseñar un circuito para calcular una función booleana con no más de dos capas de compuertas - ¡podemos calcular cualquier función booleana de esta forma! Pero, la complejidad y recursos de la primera capa (número de compuertas) rápidamente llegarían a ser inviables para funciones complejas.

¿Qué es “profundo”?

  • Una SVM no es profunda porque solo tiene dos capas.
  • Un árbol de clasificación no es profundo porque cada capa analiza las mismas características (en bruto).
  • Una red profunda tiene varias capas y las utiliza para construir una jerarquía de características de complejidad incremental.

¿Cómo pueden los modelos aprender representaciones (buenas características)?

Hipótesis de la superficie cerrada (manifold): los datos naturales viven en una superficie cerrada de baja dimensionalidad. El conjunto de imágenes posibles es esencialmente infinito, el conjunto de imágenes “naturales” es un pequeño subconjunto. Por ejemplo: para una imagen de una persona, el conjunto de posibles imágenes está en el orden de magnitud del número de músculos de la cara que la persona puede mover (grados de libertad) ~ 50. Un extractor de características ideal (no realista) representaría todos los factores de variación (cada uno de los músculos, iluminación, etc.).

Preguntas y respuestas al final de la lección:

  • Para el ejemplo de rostros, ¿podría alguna otra técnica de reducción de dimensionalidad (como PCA) extraer dichas características?
    • Respuesta: podría funcionar solamente si la superficie cerrada es un hiperplano, lo cual no es así.

📝 Marina Zavalina, Peeyush Jain, Adrian Pearl, Davida Kollmar
victorsergio
27 Jan 2020