WOT

Friday, August 21, 2020

A "Weird" Introduction to Deep Learning - Una "original" introducción al aprendizaje profundo



This article is a translation of the original that appears on KDnuggets: A “Weird” Introduction to Deep Learning

https://www.kdnuggets.com/2018/03/weird-introduction-deep-learning.html/2

Thank you very much for allowing its publication in Spanish.

https://www.kdnuggets.com/2018/03/weird-introduction-deep-learning.html/2

Muchas gracias por permitir su publicación en español. 

Una “original” introducción al aprendizaje profundo


 
Share
Etiquetas: Deep LearningDropoutNeural NetworksRepresentationTensorTensorFlow


Hay presentaciones increíbles, cursos y blogs sobre aprendizaje profundo, pero este es un tipo de introducción diferente.

Artículo de Favio Vazquez, fundador de Ciencia y Datos.




Hay presentaciones increíbles, cursos y blogs sobre aprendizaje profundo. En la sección de recursos voy a facilitar algunos de ellos, pero este es un tipo diferente de introducción al aprendizaje profundo.





¿Pero por qué es original? Tal vez porque no va a seguir la estructura "normal" de una publicación de aprendizaje profundo, en la que se empieza con las matemáticas, luego se pasa a la documentación, la implementación y finalmente a las aplicaciones.
Será más parecida a la publicación que hice de “My journey into Deep Learning”, ya que creo que contar una historia puede ser mucho más útil que sencillamente lanzar información y fórmulas a diestro y siniestro. Vamos a empezar.


NOTA: hay un seminario web complementario de este artículo. Se puede encontrar aquí: Webinars - DeepCognition.ai


¿Por qué hago esta introducción?



A veces es importante tomar notas de ideas que nos vengan a la mente. Yo tiendo a hablar mucho y a estar presente en numerosas presentaciones y conferencias, y esa es mi forma de contribuir con algo de conocimiento al público en general.

El aprendizaje profundo (Deep Learning (DL)) es, en este momento, un campo tan importante para la ciencia de datos, la inteligencia artificial, la tecnología y para nuestras vidas, que merece toda la atención que se le está prestando. Por favor, no digamos que el aprendizaje profundo consiste solo en agregar una capa a una red neuronal, y eso es todo, ¡magia! No. Espero que después de leer este artículo tengamos una perspectiva diferente de lo que es el aprendizaje profundo. 

Cronología del aprendizaje profundo


He elaborado esta cronología teniendo en cuenta determinados documentos y otras cronologías con el propósito de que todos veamos que el aprendizaje profundo es mucho más que redes neuronales. Se han producido avances a nivel teórico y mejoras de software y hardware que han sido necesarios para llegar al punto en el que nos encontramos hoy. Si alguien desea disponer de esta cronología puede pedírmela y se la enviaré. (Los datos de mi contacto aparecen al final del artículo).


¿Qué tiene de extraño el aprendizaje profundo?




El aprendizaje profundo existe desde hace bastante tiempo. Entonces, ¿por qué se ha vuelto tan importante de forma tan rápida en los últimos 5–7 años?
Como dije antes, hasta finales de la década de 2000, todavía carecíamos de una forma confiable de entrenar redes neuronales muy profundas. Hoy en día, con el desarrollo de algunas mejoras teóricas y algorítmicas simples pero importantes, los avances en hardware (en su mayoría GPU, ahora TPU) y la generación y acumulación exponencial de datos, el aprendizaje profundo ha llegado de forma natural a encajar en ese espacio que faltaba para transformar la forma en que llevamos a cabo el aprendizaje automático.
El aprendizaje profundo es también un campo en el que se sigue investigando, en el que nada está establecido o se da por terminado, todavía estamos buscando los mejores modelos, la topología de las redes y las mejores formas de optimizar sus hiperparámetros, entre otras cosas. Es muy difícil, como cualquier otro campo activo de la ciencia, mantenerse al día en los progresos que se hacen en investigación, pero no es imposible.

Una nota al margen sobre topología y aprendizaje automático (Deep Learning with Topological Signatures, de Hofer y otros):

Los métodos de la topología algebraica se han empezado a utilizar recientemente en la comunidad del aprendizaje automático, principalmente bajo el término de análisis de datos topológicos (TDA). Dado que TDA nos permite inferir información topológica y geométrica relevante de los datos, puede ofrecer una perspectiva novedosa y potencialmente beneficiosa en relación con determinados problemas de aprendizaje automático.
Afortunadamente para nosotros, hay muchas personas que nos ayudan a comprender y digerir toda esta información mediante la impartición de cursos, como el de Andrew Ng, y publicaciones de blogs entre otros recursos. 

Esto me resulta raro o poco corriente, porque normalmente hay que esperar algún tiempo (a veces años) para poder digerir información difícil y avanzada en documentos o revistas de investigación. Por supuesto, la mayoría de las áreas de la ciencia ahora actúan con rapidez a la hora de pasar de un artículo a una publicación de blog que te dice lo que necesitas saber, pero en mi opinión, el aprendizaje profundo tiene una connotación diferente.

Avances del aprendizaje profundo y del aprendizaje de representación





Trabajamos con algo que es muy emocionante. La mayoría de las personas de este campo dicen que las últimas ideas presentadas de aprendizaje profundo (específicamente nuevas topologías y configuraciones para redes neuronales (NN) o algoritmos para mejorar su uso) son las mejores ideas en aprendizaje automático que se han producido en décadas (recuerde que el aprendizaje profundo (DL) es una parte del aprendizaje automático (ML)).
Hasta ahora he usado mucho la palabra aprendizaje en este artículo. ¿Pero qué es aprender?
En el contexto del aprendizaje automático, la palabra "aprendizaje" describe un proceso de búsqueda automática para obtener mejores representaciones de los datos que estamos analizando y estudiando (hay que tener esto en cuenta, no es hacer que una computadora aprenda).
Hay una palabra muy importante en este campo, RE-PRE-SEN-TA-CIÓN. No olvidemos eso. ¿Qué es una representación? Es la forma de ver los datos.
Pongamos un ejemplo. Digamos que le pido que trace una línea que separe los círculos azules de los triángulos verdes en el siguiente diagrama:




                                                      Ian Goodfellow et al. (Deep Learning, 2016)


Este ejemplo es del libro de aprendizaje profundo de Ian Goodfellow, y otros autores (2016).
Entonces, si queremos utilizar una línea, esto es lo que dice el autor:
“… representamos los datos en coordenadas cartesianas, y vemos que resulta imposible.”
Es imposible si tenemos en cuenta en concepto de línea:
Según Wolfram MathWorld, una línea es una figura recta unidimensional que no tiene grosor y que se extiende infinitamente en ambas direcciones..

Entonces, ¿no podemos hacer nada? En realidad si. Si encontramos una forma de representar estos datos de una manera diferente, de alguna manera podemos trazar 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, para que podamos trazar o representar estos datos de una manera que podamos trazar esta línea. Si  transformamos la representación a coordenadas polares, tenemos la solución:
                                 


Ian Goodfellow et al. (Deep Learning, 2016)

And that’s it now we can draw a line:


Así, en este sencillo ejemplo, hemos encontrado la transformación de coordenadas con la que obtenemos una mejor representación para manejar los datos. Pero si creamos un sistema, un programa que pueda buscar diferentes representaciones (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 aprendizaje automático.
Esto es algo muy importante a tener en cuenta. El aprendizaje profundo es el aprendizaje de la representación utilizando diferentes tipos de redes neuronales y la optimización de 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 del aprendizaje profundo. Aquí cito algunos de ellos:


1. Idea: propagación hacia atrás.

Learning representations by back-propagating errors de David E. Rumelhart, Geoffrey E. Hinton & Ronald J. Williams.


2. Idea: mejor iniciaización de los parámetros de redes. Algo que debemos recordar: la estrategia de inicialización se debe seleccionar de acuerdo con la función de activación que se utilice (siguiente).

Weight Initialization for Deep Networks - Practical aspects of Deep Learning | Coursera
Este curso le enseñará la "magia" de hacer que el aprendizaje profundo funcione bien. En lugar del proceso del aprendizaje profundo ...

How to train your Deep Neural Network
Hay ciertas prácticas en aprendizaje profundo que son muy recomendables, para entrenar de manera eficiente redes neuronales profundas ...

CS231n Convolutional Neural Networks for Visual Recognition
Materiales y notas del curso para la clase CS231n de Stanford: Redes neuronales convolucionales para reconocimiento visual.

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

Understanding Activation Functions in Neural Networks
Recientemente, un colega me hizo algunas preguntas como "¿por qué tenemos tantas funciones de activación?", "¿Por qué ...

Activation Functions: Neural Networks
Sigmoid, tanh, Softmax, ReLU, Leaky ReLU EXPLICADAS !!!

4. Idea: retiro. Una forma de evitar el sobreajuste y más.

Learning Less to Learn Better — Dropout in (Deep) Machine learning
En esta publicación, discutiré principalmente el concepto de retiro en las redes neuronales, específicamente las redes profundas, seguido de ...
Dropout: A Simple Way to Prevent Neural Networks from Overfitting, un gran artículo de Srivastava, Hinton y otros.

5. Idea: redes neuronales convolucionales (CNNs).
 


6. Idea: redes residuales (ResNets).

[1512.03385v1] Deep Residual Learning for Image Recognition
Resumen: las redes neuronales más profundas son más difíciles de entrenar. Presentamos un marco de aprendizaje residual para facilitar el ...

[1608.02908] Residual Networks of Residual Networks: Multilevel Residual Networks
Resumen: una familia de redes residuales con cientos o incluso miles de capas domina las principales tareas de reconocimiento de imágenes ...

7. Idea: CNN basadas en la región. Uutiliza entre otras cosas oara detectar objetos.

[1311.2524v5] Rich feature hierarchies for accurate object detection and semantic segmentation
Resumen: el rendimiento de detección de objetos, medido en el conjunto de datos canónico PASCAL VOC, se ha estancado en los últimos ...

[1703.06870] Mask R-CNN
Resumen: presentamos un marco conceptual simple, flexible y general para la segmentación de instancias de objetos. Nuestra…

facebookresearch/Detectron
Detectron: la plataforma de investigación de FAIR para la investigación de detección de objetos, que implementa algoritmos populares como Mask R-CNN y ...

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

A Beginner's Guide to Recurrent Networks and LSTMs
Contenido: el propósito de este artículo es proporcionar a los estudiantes de redes neuronales una base intuitiva sobre el funcionamiento de ...

Understanding LSTM Networks -- colah's blog
Estos bucles hacen que las redes neuronales recurrentes parezcan algo misteriosas. Sin embargo, si pensamos un poco más, resulta que ...

Recurrent Layers - Keras Documentation
input_length: longitud de las secuencias de entrada, que se especificará cuando sea constante. Este argumento es obligatorio si está ...
Por cierto: Liao y Poggio (2016) demostraron que ResNets == RNNs, arXiv: 1604.03640v1.

9. Idea: redes generativas antagónicas (GANs).

[1406.2661v1] Generative Adversarial Networks
Resumen: proponemos un nuevo marco para estimar modelos generativos a través de un proceso contradictorio, en el que…

nashory/gans-awesome-applications
gans-awesome-applications: lista seleccionada de increíbles aplicaciones y demos GAN.

10. Idea: redes de cápsulas.


What is a CapsNet or Capsule Network?
¿Qué es una red de cápsulas? ¿Qué es la cápsula? ¿Es CapsNet mejor que la red neuronal convolucional (CNN)? Este artículo es ...

Understanding Hinton’s Capsule Networks. Part I: Intuition.
Serie de las partes para comprender las redes de cápsulas de Hinton:

gram-ai/capsule-networks
Una implementación de PyTorch del documento NIPS 2017 "Enrutamiento dinámico entre cápsulas".

Y hay muchas otras aportaciones, 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 del aprendizaje profundo.


¿Cómo empezar con aprendizaje profundo?




No es fácil comenzar, pero haré todo lo posible para que avancemos juntos en este proceso. Consulte los recursos, pero recuerde, no se trata solo de ver videos y leer artículos, sino de comprender, programar, codificar, fallar y luego hacer que suceda.


1. Aprendizaje de Python y R ;)

0. 
Andrew Ng y Coursera (ya lo conoces, no necesita introducción):>
Deep Learning | Coursera
Aprendizaje profundo de deeplearning.ai. Si desea tener acceso a la inteligencia artificial, esta especialización le ayudará a hacerlo. Profundo…


1. Siraj Raval: es increíble. Tiene la capacidad de explicar conceptos difíciles de una manera fácil y divertida. Se puede seguir en su canal de YouTube. Específicamente estas listas de reproducción:

The Math of Intelligence:





2. Intro to Deep Learning:





3. Libro de François Chollet: Deep Learning with Python (and R):

Deep Learning with Python
La explicación más clara del aprendizaje profundo que he encontrado ... fue un placer leerla.
Deep Learning with R
La explicación más clara del aprendizaje profundo que he encontrado ... fue un placer leerla.

Deep Learning Fundamentals
Sobre este curso: obtenga un curso intesivo sobre lo que hay que aprender y cómo aprender más. El aprendizaje profundo…

Deep Learning with TensorFlow
Este curso de Deep Learning con TensorFlow se centra en TensorFlow. Si es nuevo en el tema del aprendizaje profundo ...

5. 
DataCamp:

Deep Learning in Python
El aprendizaje profundo es la técnica de aprendizaje automático que está detrás de las capacidades más interesantes en diversas áreas como la robótica ...

keras: Deep Learning in R
Como ya sabe, el aprendizaje automático es un subcampo de la informática (CS). El aprendizaje profundo, entonces, es un subcampo de… www.datacamp.com


Aprendizaje profundo distribuido

                   




El aprendizaje profundo es una de las herramientas y de las teorías más importantes que debe aprender un científico de datos. Somos muy afortunados de tener a personas increíbles que hacen investigación, crean software, herramientas y hardware específicos para tareas de aprendizaje profundo. 


La DL es costosa desde el punto de vista de la computación y, aunque ha habido avances en la teoría, el software y el hardware, necesitamos los desarrollos en Big Data y aprendizaje automático distribuido para mejorar el rendimiento y la eficiencia. Importantes personas y empresas están realizando esfuerzos increíbles para unirse a los marcos distribuidos (Spark) y las bibliotecas de aprendizaje profundo (TF y Keras).

Aquí hay una descripción general:

1. 
Databricks: Pipelines de aprendizaje profundo (pronto se fusionarán con Spark)
Overview - Deep Learning Pipelines 0.2.0 Documentation
Página de inicio de la documentación de Deep Learning Pipelines 0.2.0

2. Elephas: aprendizaje profundo distribuido con Keras & PySpark:
maxpumperla/elephas
elephas – Aprendizaje profundo distribuido con Keras & Spark

3. 
Yahoo! Inc.: TensorFlowOnSpark:
yahoo/TensorFlowOnSpark
TensorFlowOnSpark lleva los programas de TensorFlow a los clústeres de Apache Spark

4. 
CERN Keras distribuido (Keras + Spark):
cerndb/dist-keras
dist-keras – Aprendizaje profundo distribuido con un enfoque sobre el entrenamiento distribuido, utilizando Keras y Apache Spark.

5. 
Qubole (tutorial Keras + Spark):
Distributed Deep Learning with Keras on Apache Spark | Qubole
Se ha demostrado que el aprendizaje profundo produce modelos de aprendizaje automático altamente efectivos en muy variados campos. Algunos de…

6. 
Intel Corporation: BigDL (biblioteca de aprendizaje profundo distribuido para Apache Spark)
intel-analytics/BigDL
BigDL: biblioteca de aprendizaje profundo distribuido para Apache Spark



7. TensorFlow y Spark en Google Cloud:

Using Apache Spark with TensorFlow on Google Cloud Platform | Google Cloud Big Data and Machine…
Apache Spark y TensorFlow son proyectos de código abierto que han tenido un impacto importante en el mundo empresarial ...


Hacer cosas con aprendizaje profundo

                             

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

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

                     


Lo que se ve en la imagen superior son manipulaciones tensoriales trabajando en el tensor de Riemann en relatividad general.

Los tensores, definidos matemáticamente, son sencillamente matrices de números, o funciones, que se transforman según ciertas reglas bajo un cambio de coordenadas.
Pero en el ámbito del aprendizaje automático y el aprendizaje profundo, un tensor es una generalización de vectores y matrices a dimensiones potencialmente superiores. Internamente, TensorFlow representa tensores como matrices n-dimensionales de tipos de datos básicos.

En aprendizaje profundo utilizamos tensores  todo el tiempo, pero no es necesario ser un experto para usarlos. Es posible que deba comprender un poco sobre ellos, así que aquí enumero algunos buenos recursos:

Los tensores y las nuevas herramientas de aprendizaje automático, como TensorFlow, son temas candentes en estos días, especialmente entre las personas que buscan ...

Learning AI if You Suck at Math — P4 — Tensors Illustrated (with Cats!)
Bienvenido a la cuarta parte de Learning AI if You Suck at Math. Si se perdió las partes 1, 2, 3, 5, 6 y 7, asegúrese de revisarlas ...

Después de comprobar lo anterior, los avances que mencioné antes y los marcos de programación como TensorFlow o Keras (para más información sobre Keras pinchar aquí), ahora creo que nos permiten tener una idea de lo que necesitamos para comprender el aprendizaje profundo y trabajar con él.

Pero, ¿qué hemos logrado hasta ahora con el aprendizaje profundo? Por nombrar algunos (del libro de François Chollet):
·         Clasificación de imágenes a nivel casi humano.
·         Reconocimiento de voz a nivel casi humano.
·         Transcripción de escritura a mano a nivel casi humano.
·         Traducción automática mejorada.
·         Conversión de texto a voz mejorada.
·         Asistentes digitales como Google Now o Amazon Alexa.
·         Conducción autónoma a nivel casi humano.
·         Mejora de la segmentación de anuncios, como la utilizan Google, Baidu, y Bing.
·         Resultados de búsqueda en la web mejorados.
·         Responder preguntas de lenguaje natural.
·         Juego del Go a un nivel superior al humano.
Y mucho más. A continuación se presenta una lista de 30 aplicaciones geniales y divertidas de aprendizaje automático:
30 amazing applications of deep learning

En los últimos años, el aprendizaje profundo se aplicó a cientos de problemas, que van desde la visión por computadora hasta ...
Pensando en el futuro del aprendizaje profundo (para la programación o la creación de aplicaciones), repetiré lo que dije en otras publicaciones.
Para hacer cosas con aprendizaje profundo, realmente creo que las GUI y AutoML son el futuro cercano. No me gustaría que se me interpretase mal, me encanta codificar, pero creo que la cantidad de código que escribiremos los próximos años se deteriorará.



No podemos consumir tantas horas en todo el mundo programando las mismas cosas una y otra vez, así que creo que estas dos funciones (GUI y AutoML) ayudarán a los científicos de datos a ser más productivos 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 nos ayuda a diseñar modelos de aprendizaje profundo con facilidad. Deep Learning Studio puede diseñar automáticamente un modelo de aprendizaje profundo para su conjunto de datos personalizado gracias a su característica avanzada AutoML casi con un clic.

En los siguientes enlaces se puede aprender más sobre ellos:
DeepCognition - Become an AI-Powered Organization Today
Diseñe, entrene e implemente modelos de aprendizaje profundo sin tener que codificar. Deep Learning Studio simplifica y acelera el…
Eche un vistazo a los precios: es gratissss :)

                  

Una de las cosas que me gustan de esa plataforma es que aún puedes codificar, interactuar con TensorFlow, Keras, Caffe, MXNet y muchos más con la línea de comandos o el Notebook sin tener que instalar nada. ¡Tenemos tanto el portátil como la CLI!
Me quito el sombrero ante ellos y su contribución a la sociedad.
Otras aplicaciones interesantes de aprendizaje profundo que se pueden probar gratis o por poco coste son (algunas de ellas en betas privadas):

Si es en el futuro, está en Skejul ... Usando la plataforma Context Aware Predictive ComputingTM de Skejul ESTABLEZCA sus reuniones ...

Seeing AI | Talking camera app for those with a visual impairment
Una aplicación gratuita que narra el mundo que te rodea. Diseñado para la comunidad de personas que padecen  visión deficiente, este proyecto de investigación aprovecha ...

Dialogflow
Una plataforma de experiencia de usuario conversacional.










Gracias por leer esta extraña introducción al aprendizaje profundo. Espero que le haya ayudado a iniciarte en esta increíble área, o tal vez simplemente a descubrir algo nuevo.

Si tiene preguntas, añádame en LinkedIn y charlaremos allí:


Bio:  Favio Vazquez es físico e ingeniero informático que trabaja en ciencia de datos y cosmología computacional. Tiene pasión por la ciencia, la filosofía, la programación y la música. En este momento, trabaja en ciencia de datos, aprendizaje automático y big data como científico principal de datos en Oxxo. Además, es el creador de Ciencia y Datos, una publicación de Data Science en español. Le encantan los nuevos retos, trabajar con un buen equipo y tener problemas interesantes que resolver. Es parte de la colaboración de Apache Spark, colabora en MLlib, Core and the Documentation. Le encanta aplicar su conocimiento y experiencia a la ciencia, análisis de datos, visualización y aprendizaje automático para ayudar al mundo para que se convierta en unlugar mejor.

Original. Publicado de nuevo con permiso.
Artículos relacionados:
·         My Journey into Deep Learning





No comments:

Post a Comment