Una introducción “extraña” al Deep Learning

Hay increíbles blogs, artículos, cursos y publicaciones en blogs sobre Deep Learning. Pero este es un tipo diferente de introducción.

Favio Vázquez
Ciencia y Datos
15 min readJul 26, 2018

--

Por cierto, la traducción de Deep Learning como “aprendizaje profundo” es poco usada y más extraña que este artículo, así que seguiré diciendo Deep Learning o DL.

Pero, ¿por qué extraña? Tal vez porque no seguirá la estructura “normal” de una publicación de Deep Learning, donde se comienza con las matemáticas, luego se pasa a los artículos, la implementación y luego a las aplicaciones.

Estará más cerca de la publicación que hice antes sobre “Mi viaje hacia el Deep Learning”, creo que contar una historia puede ser mucho más útil que simplemente arrojar información y fórmulas en todas partes. Vamos a empezar.

NOTA: hay un seminario web complementario para este artículo.Encuéntrelo aquí:

¿Por qué estoy haciendo esta introducción?

A veces es importante tener una copia de seguridad de tus pensamientos por escrito. Tiendo a hablar mucho, y estar presente en varias presentaciones y conferencias, y esta es mi forma de contribuir con un poco de conocimiento a todos.

Deep Learning (DL) es un campo tan importante para Data Science, Inteligencia Artificial, la tecnología y nuestras vidas en este momento, por lo que considero que merece toda la atención que está recibiendo. Por favor, no digan que el Deep Learnes solo agregar una capa a una red neuronal, y eso es todo, ¡magia! Nop. Espero que después de leer esto tengas una perspectiva diferente de lo que DL es.

Cronología de Deep Learning

Acabo de crear esta línea de tiempo basada en varios documentos y otras líneas de tiempo con el propósito de que todos vean que el Deep Learning es mucho más que redes neuronales. Ha habido avances realmente teóricos, mejoras de software y hardware que hemos necesitado para llegar a este día. Si lo deseas, solo háblame y te lo enviaré. (Encuentra mi contacto al final del artículo).

¿Qué tiene de extraño el Deep Learning?

El Deep Learning ha existido desde hace bastante tiempo. Entonces, ¿por qué se volvió tan relevante tan rápido los últimos 5–7 años?

Como dije en otros artículos, hasta fines de la década de 2000, aún nos faltaba una forma confiable de entrenar redes neuronales muy profundas. Hoy en día, con el desarrollo de varias mejoras teóricas y algorítmicas simples pero importantes, los avances en hardware (principalmente GPU, ahora TPU) y la generación y acumulación exponencial de datos, DL se adaptó naturalmente a este espacio perdido para transformar la forma en que lo hacemos Machine Learning.

El DL también es un campo de investigación activo, aún no todo está dicho, todavía estamos buscando los mejores modelos, la topología de las redes , las mejores formas de optimizar sus hiperparámetros y más. Es muy difícil, como cualquier otro campo activo en la ciencia, mantenerse al día con la investigación, pero no es imposible.

Una nota al margen sobre topología y Machine Learning (Deep learning con firmas topológicas de Hofer et al.):

Los métodos de la topología algebraica han surgido recientemente en la comunidad de Deep Learning, más prominente bajo el término análisis de datos topológicos (ADT) . Como TDA nos permite inferir información topológica y geométrica relevante de los datos , puede ofrecer una perspectiva novedosa y potencialmente beneficiosa sobre varios problemas de Machine Learning.

Afortunadamente para nosotros, hay muchas personas que ayudan a comprender y resumir toda esta información a través de cursos como el de Andrew Ng , publicaciones en blogs y mucho más.

Esto para mí es extraño o poco común porque normalmente hay que esperar (a veces años) para poder digerir información difícil y avanzada en artículos o revistas de investigación. Por supuesto, la mayoría de las áreas de la ciencia ahora son realmente rápidas para pasar de un artículo a una publicación de blog que te dice lo que necesitas saber, pero en mi opinión, DL tiene una sensación diferente.

Avances del Deep Learning y el Aprendizaje de Representaciones

Estamos trabajando con algo que es muy emocionante, la mayoría de las personas en el campo están diciendo que las últimas ideas en los documentos de Deep Learning (específicamente nuevas topologías y configuraciones para redes neuronales o algoritmos para mejorar su uso) son las mejores ideas en Machine Learning en décadas (recuerde que DL está dentro de ML).

He usado la palabra Learning (aprendizaje) mucho en este artículo hasta ahora. Pero, ¿qué es aprender?

En el contexto del DL, la palabra “aprendizaje” describe un proceso de búsqueda automática para obtener mejores representaciones de los datos que está analizando y estudiando (ten esto en cuenta, no estás haciendo que una computadora aprenda).

Esta es una palabra muy importante para este campo, RE-PRE-SEN-TA-CION. No te la olvides. ¿Qué es una representación ? Es una forma de ver los datos.

Permítanme darles un ejemplo, digamos que les digo que quiero que dibujen una línea que separe los círculos azules de los triángulos verdes para esta imagen:

Ian Goodfellow y cols. (Deep Learning, 2016)

Este ejemplo es del libro de Deep Learning de Ian Goodfellow, et al. (2016).

Entonces, si quieres usar una línea, esto es lo que dice el autor:

“… representamos algunos datos usando coordenadas cartesianas, y la tarea es imposible”.

Esto es imposible si recordamos el concepto de una línea:

Una línea es una figura recta unidimensional sin grosor y que se extiende infinitamente en ambas direcciones. De Wolfram MathWorld .

Entonces, ¿está perdido el caso? En realidad no. Si encontramos una manera de representar estos datos de una manera diferente, de alguna manera podemos dibujar una línea recta para separar los tipos de datos. Esto es algo que las matemáticas nos enseñaron hace cientos de años. En este caso, lo que necesitamos es una transformación de coordenadas, de modo que podamos graficar o representar estos datos de forma que podamos trazar esta línea. Si observamos la transformación de coordenadas polares , tenemos la solución:

Ian Goodfellow y cols. (Deep Learning, 2016)

Y eso es todo ahora podemos trazar una línea:

Entonces, en este simple ejemplo, encontramos y elegimos la transformación para obtener una mejor representación a mano. Pero si creamos un sistema, un programa que pueda buscar representaciones diferentes (en este caso, un cambio de coordenadas), y luego encontramos una forma de calcular el porcentaje de categorías que se clasifican correctamente con este nuevo enfoque, en ese momento estamos haciendo Machine Learning.

Esto es algo muy importante a tener en cuenta, el DL es el aprendizaje de representaciones utilizando diferentes tipos de redes neuronales y optimizando los hiperparámetros de la red para obtener (aprender) la mejor representación de nuestros datos.

Esto no sería posible sin los asombrosos avances que nos llevaron al estado actual de Deep Learning. Aquí nombro algunos de ellos:

  1. Idea : Backpropagation.

Aprendizaje de representaciones mediante la propagación de errores por David E. Rumelhart, Geoffrey E. Hinton y Ronald J. Williams.

Un marco teórico para Back-Propagation por Yann Lecun.

2. Idea: Mejor inicialización de los parámetros de las redes. Algo para recordar: la estrategia de inicialización debe seleccionarse de acuerdo con la función de activación utilizada (siguiente).

3. Idea: mejores funciones de activación. Esto significa mejores formas de aproximar las funciones más rápido, lo que lleva a un proceso de capacitación más rápido.

4. Idea: Dropout. Mejores formas de prevenir el sobre-ajuste y más.

Dropout: una forma sencilla de evitar que las redes neuronales se sobrecalienten , un gran documento de Srivastava, Hinton y otros.

5. Idea: redes neuronales convolucionales (CNN).

Aprendizaje basado en gradientes aplicado al reconocimiento de documentospor Lecun y otros

Clasificación de ImageNet con redes neuronales convolucionales profundaspor Krizhevsky y otros.

6. Idea: Redes residuales (ResNets).

7. Idea: CNN basados ​​en la región . Usados para detección de objetos y más.

8. Idea: redes neuronales recurrentes (RNN) y LSTM.

Por cierto: Liao y Poggio (2016) mostraron que ResNets == RNNs, arXiv: 1604.03640v1.

9. Idea: Generative Adversarial Networks (GAN).

10. Idea: Capsule Networks.

Y hay muchos otros, pero creo que esos son avances teóricos y algorítmicos realmente importantes que están cambiando el mundo, y que dieron impulso a la revolución de DL.

¿Cómo comenzar con Deep Learning?

No es fácil comenzar, pero haré mi mejor esfuerzo para guiarlos en este proceso. Consulta estos recursos, pero recuerda, esto no solo es mirar videos y leer documentos, se trata de entender, programar, codificar, fallar y luego hacerlo realidad.

-1. Aprende Python y R;)

0. Andrew Ng y Coursera (ya sabes, él no necesita una introducción):

  1. Siraj Raval : Es increíble. Él tiene el poder de explicar conceptos difíciles de una manera fácil y divertida. Síguelo en su canal de YouTube. Específicamente estas listas de reproducción:

- Las Matemáticas de la Inteligencia:

- Introducción al Deep Learning:

2. El libro de François Chollet : Deep Learning con Python (y R):

3. Clase Cognitiva de IBM :

4. DataCamp :

Deep Learning distribuido

El Deep Learning es una de las herramientas y teorías más importantes que un Data Scientist debe aprender. Somos muy afortunados de ver personas increíbles que crean investigación, software, herramientas y hardware específicos para las tareas de LD.

El DL es computacionalmente costoso, y aunque ha habido avances en teoría, software y hardware, necesitamos los desarrollos en Big Data y el aprendizaje en máquinas distribuidas para mejorar el rendimiento y la eficiencia. Grandes personas y compañías están haciendo esfuerzos increíbles para unirse a los frameworks distribuidos (Spark) y las bibliotecas de DL (TF y Keras).

Aquí hay una descripción general:

  1. Databricks : Deep Learning Pipelines (Pronto se fusionarán con Spark)

2. Elephas: DL distribuido con Keras y PySpark:

3. Yahoo! Inc .: TensorFlowOnSpark:

4. Keras distribuidas por CERN (Keras + Spark):

5. Qubole (tutorial Keras + Spark):

6. Intel Corporation : BigDL (Biblioteca distribuida de Deep Learning para Apache Spark)

7. TensorFlow y Spark en Google Cloud:

Hacer cosas con Deep Learning

Como ya he dicho antes, uno de los momentos más importantes para este campo fue la creación y el origen abierto de TensorFlow .

TensorFlow es una biblioteca de software de código abierto para el cálculo numérico que utiliza gráficos de flujo de datos. Los nodos en el gráfico representan operaciones matemáticas, mientras que los bordes del gráfico representan los conjuntos de datos multidimensionales (tensores) comunicados entre ellos.

Las cosas que está viendo en la imagen de arriba son manipulaciones de tensor que trabajan con el Tensor de Riemann en Relatividad general .

Los tensores , definidos matemáticamente, son simplemente matrices de números, o funciones, que se transforman según ciertas reglas bajo un cambio de coordenadas.

Pero en el ámbito del Machine Learning y Deep Learning, un tensor es una generalización de vectores y matrices con dimensiones potencialmente mayores. Internamente, TensorFlow representa tensores como matrices n-dimensionales de tipos de datos base.

Usamos tensores todo el tiempo en DL, pero no necesitas ser un experto en ellos para usarlo. Es posible que necesites comprender un poco sobre ellos, así que aquí incluyo algunos buenos recursos:

Después de que vea eso, los avances que mencioné antes y los marcos de programación como TensorFlow o Keras (para obtener más información sobre Keras, vaya aquí ), ahora creo que tienes una idea de lo que necesitas comprender para trabajar con Deep Learning.

Pero, ¿qué hemos logrado hasta ahora con DL? Para nombrar algunas cosas(del libro de François Chollet en DL):

  • Clasificación de imágenes a nivel casi humano.
  • Reconocimiento de voz a nivel casi humano.
  • Transcripción de escritura a mano a nivel humano.
  • Mejora de la traducción automática.
  • Mejora de la conversión de texto a voz.
  • Asistentes digitales como Google Now o Amazon Alexa.
  • Conducción autónoma a nivel humano.
  • Mejora de la orientación de anuncios, tal como la utilizan Google, Baidu y Bing.
  • Resultados de búsqueda mejorados en la web.
  • Responder preguntas de lenguaje natural.

Y mucho más. Aquí hay una lista de 30 aplicaciones geniales y divertidas de DL:

Al pensar en el futuro de Deep Learning (para programar o crear aplicaciones), repetiré lo que dije en otras publicaciones.

Realmente creo que GUIs y AutoML son el futuro cercano de hacer las cosas con Deep Learning. No me malinterpreten, me encanta la programación, pero creo que la cantidad de código que escribiremos los próximos años decaerá.

No podemos pasar tantas horas en todo el mundo programando lo mismo una y otra vez, por lo que creo que estas dos características (GUI y AutoML) ayudarán a Data Scientist a ser más productivo y a resolver más problemas.

Una de las mejores plataformas gratuitas para realizar estas tareas en una GUI simple es Deep Cognition. Su sencilla interfaz de arrastrar y soltar te ayuda a diseñar modelos de Deep Learning con facilidad. Deep Learning Studio puede diseñar automáticamente un modelo de Deep Learning para su conjunto de datos personalizado gracias a su función avanzada AutoML con casi un clic.

Aquí puedes aprender más sobre ellos:

Echa un vistazo a los precios: O, es gratissss :)

Quiero decir, es sorprendente cuán rápido es el desarrollo en el área en este momento, que podemos tener GUI simples para interactuar con todos los conceptos duros e interesantes de los que hablé en esta publicación.

Una de las cosas que me gusta de esa plataforma es que aún se puede codificar, interactuar con TensorFlow, Keras, Caffe, MXNet y mucho más con la línea de comandos o tu computadora portátil sin instalar nada. ¡Tienes el notebook y el CLI!

Me quito el sombrero ante ellos y su contribución a la sociedad.

Otras aplicaciones interesantes de Deep Learning que puede probar de forma gratuita o por un costo bajo (algunas de ellas están en versiones beta privadas):

Gracias por leer esta introducción extraña a Deep Learning. Espero que te haya ayudado a comenzar en esta increíble área, o tal vez simplemente descubrir algo nuevo.

Espero que esta publicación ayude a todos en el mundo de Ciencia de Datos. Unámonos y ayúdenos unos a otros a transformar el mundo en un lugar mejor. Recuerda divertirte y que hay mucho más en la vida que en el trabajo, me encanta lo que hago, pero toma tiempo para tu familia y amigos, sé feliz y amable con los demás.

Para obtener más información o si tienes alguna pregunta, solo agrégueme y conversaremos allí:

y sígueme en twitter :)

--

--

Favio Vázquez
Ciencia y Datos

Data scientist, physicist and computer engineer. Love sharing ideas, thoughts and contributing to Open Source in Machine Learning and Deep Learning ;).