EN
Ciencia de datos

No se Trata de Aprendizaje Profundo, sino de Aprender a Representar

10/10/2017
Resulta oportuno reflexionar y pensar sobre lo que Deep Learning ha traído realmente a la comunidad de Machine Learning, y separar el trigo de la paja.

Recientemente, hemos creado un grupo de trabajo dedicado a Deep Learning (Aprendizaje Profundo). Los grupos de trabajo ofrecen oportunidades para compartir internamente ideas, conceptos, recursos, código, etc. Además, se pretende promover el uso de Machine Learning (Aprendizaje Automático) en BBVA. Recuerdo vivamente cómo José Antonio Rodríguez, uno de los impulsores de este grupo de trabajo, nos dijo entonces:”Deberíamos llamarlo el grupo de trabajo sobre aprendizaje de la representación, más que sobre Deep Learning. Hoy en día, estoy convencido de que su perspectiva era correcta: un aspecto crucial del Deep Learning es que ayuda a hacer mejores representaciones (abstracciones) de la naturaleza -y de los negocios, para este caso.

Así que, dada toda la expectación que está rodeando al Deep Learning en estos días, pensé que sería oportuno reflexionar y pensar sobre lo que Deep Learning ha traído realmente a la comunidad de Machine Learning, y separar el trigo de la paja. En este post, intentaré resaltar la importancia del aprendizaje de la representación para el desarrollo de la Inteligencia Artificial, y describiré el papel del Deep Learning como un marco de aprendizaje de la representación.

Representando Objetos y Conceptos

Uno de los problemas fundamentales en Machine Learning es cómo una máquina debe representar un objeto/concepto. Las máquinas sólo entienden los números, por lo que necesitamos encontrar una manera de condensar toda la información sobre un objeto en un conjunto de números (por ejemplo un vector). Hablando en términos generales, el vector sería la representación -seré más preciso más adelante-. Dicha representación puede ser utilizada más tarde para realizar diferentes tareas; tanto si queremos clasificar el objeto, generar nuevas tareas o hacer cualquier otra cosa, no es importante para nuestra discusión. En cualquier caso, necesitaremos una representación adecuada.

Permítanme explicar lo que es una representación con un ejemplo sencillo: una manzana. La máquina necesita encontrar un conjunto de números (un vector) que represente adecuadamente lo que hace de la manzana una manzana: su textura, color, sabor, olor, forma, etc. Además, la representación debe reflejar los diferentes contextos donde aparece el concepto de manzana: no debe aparecer en el espacio (no muy a menudo, esperemos), aunque es común observar una manzana colgada de un árbol. Esta representación genérica de la manzana puede ser utilizada posteriormente para crear nuevas manzanas con diferente brillo, sombras y así sucesivamente -cada manzana en particular será una realización de la representación abstracta del concepto manzana-. O para pintar una naturaleza muerta que contiene una hermosa y brillante manzana en el centro. Como dijimos anteriormente, la tarea no importa para esta discusión; lo importante es que la máquina necesita una representación adecuada del concepto de manzana.

Como algunos de ustedes se preguntarán en este punto, ¿pueden todas las manzanas ser representadas por un solo vector? Ciertamente no. Necesitamos un conjunto completo de vectores, que probablemente serán similares -para alguna definición de similitudes, que yo dejo para otro post. El espacio (Riemanniano) en el que viven estos vectores de manzana es una estructura matemática conocida como colector (véase la subsección 5.11.3 del Deep Learning book y el excelente post de Christopher Olah). Por lo tanto, la tarea de cualquier técnica de aprendizaje de la representación es aproximarse a tales colectores.

Redes Neuronales Profundas

Entonces, ¿qué hay de Deep Learning? Bueno, el Deep Learning no es más que una técnica (poderosa) para aprender representaciones de datos, de una manera jerárquica y composicional. Las redes Neuronales profundas -Deep Neural Networks (DNN)- aprenden representaciones de un objeto de entrada aprendiendo abstracciones de creciente complejidad, que pueden ser compuestas para generar conceptos de mayor nivel, y finalmente, una abstracción apropiada del objeto original. Por lo tanto, es jerárquica (de abstracciones más bajas a abstracciones más altas) y composicional (las abstracciones de bajo nivel dan lugar a las de mayor nivel). Esto se muestra esquemáticamente en la figura anterior: la complejidad de la representación aumenta con la profundidad (de izquierda a derecha en la figura anterior). Observe que las representaciones de capas más profundas (abstracciones de capa superior) se componen de capas anteriores (abstracciones de nivel inferior) a medida que la información pasa a través de la red (ver, por ejemplo, este gif animado que ejemplifica el flujo de información en la clasificación de imágenes con TensorFlow).

Aunque las DNNs (Redes Neuronales Profundas) por sí solas se han aplicado con éxito en varios campos como la clasificación de imágenes, el reconocimiento de voz, etc., es importante tener en cuenta que su principal contribución en esos casos fue la creación de una representación adecuada. Por ejemplo, en el caso de una DNN que realiza la clasificación de imágenes, la red aprende simultáneamente un clasificador y una representación. La representación aprendida puede ser utilizada entonces para encontrar imágenes similares. O podría ser usada para generar nuevas. En la imagen animada de la izquierda, del blog de Erik Bernhardsson, una DNN fue entrenada en un conjunto de datos que consta de 50.000 fuentes diferentes. Se crean fuentes completamente nuevas a partir de la representación obtenida, aquí se muestra una interpolación entre algunas de estas fuentes. Hay varios GIF animados en ese blog, que demuestran aún más el potencial del aprendizaje de la representación adecuada. Se podría ir aún más lejos con las representaciones de DNN y dejar que la red alucine un poco, ver la figura de abajo.

Otro paradigmático ejemplo es el caso de DeepMind y el antiguo juego del Go. Para el dominio de este juego por una Inteligencia Artificial, se aplicaron técnicas de Aprendizaje por Refuerzo (Reinforcement Learning) para prevenir el uso de un Árbol de Búsqueda Monte-Carlo completo. Aquí, las DNNs proporcionaron al Aprendizaje por Refuerzo una representación adecuada del tablero de juego completo – técnicamente hablando, de las funciones de política y valor dadas a los estados del tablero y a las acciones de los jugadores. Usted puede encontrar una explicación fácil de seguir del algoritmo AlphaGo de DeepMind aquí.

Siguientes pasos

Volviendo a la definición de Deep Learning, ¿son los aspectos jerárquicos y composicionales la historia completa? Bueno, en realidad no. Una cosa que, en mi opinión, ha hecho que las DNNs sean tan exitosos es la incorporación de simetrías. Las simetrías han permitido a las DNN superar la maldición de la dimensionalidad y, a su vez, poder seleccionar una pequeña familia de funciones del infinito conjunto de posibles. En otras palabras, han permitido a las computadoras aprender representaciones de los datos de manera eficiente y efectiva. Pero ésta es otra historia fascinante. Dejaré la discusión sobre la maldición de la dimensionalidad, y la importancia de incorporar simetrías mientras se aprende, para otro post.

Mientras trabajamos en ello, tal vez quieras echar un vistazo al trabajo de Stephane Mallat y Joan Bruna sobre Scattering Convolutional Networks (Redes Convolucionales Profundas), que proporciona un marco matemático para entender las Redes Convolucionales Profundas, y el trabajo reciente sobre la conexión entre Deep Learning y Física de Lin, Tegmark y Rolnick.

Esperemos que después de esta lectura, obtengas una visión más clara de lo que representa el Aprendizaje de la Representación, y cómo el Deep Learning encaja en esta disciplina.