En la última década el aprendizaje profundo (deep learning, DL) se ha posicionado como una de las metodologías más robustas para la Inteligencia Artificial (artificial intelligence, AI). Se ha aplicado a tareas de:
- clasificación de imágenes
- reconocimiento de voz
- vehículos autónomos
- traducción automática
- y muchas más
- además de haber permeado la cultura popular
Parte del avance y éxito del campo se debe a la apertura y accesibilidad de recursos que permiten entender, replicar, mejorar y aplicar los sistemas basados en DL. Aquí una pequeña guía de como comenzar a adentrarse en el deep learning.
Las malas noticias
Aunque existe una gran apertura del campo existen tres obstáculos que se tienen que sortear para volverse experto en el campo
- DL es un campo matemático-computacional. El modelo computacional recae en conceptos matemáticos como el algebra lineal y cálculo, y la implementación de este modelo se basa en aspectos algorítmicos. Aunque existe un nivel que se puede sobrevivir sin estas bases, para hacer cosas más interesantes o ad hoc estas bases son esenciales.
- Aunque día con día surgen una gran cantidad de recursos para explicar y promover el campo la mayoría de estos están en idioma inglés. Así que se requiere de un dominio de este para poder tener acceso a este conocimiento (y bueno una vez comprendido el material se requiere generar versiones en español 😉)
- Es un campo en constante evolución, en un extremo tenemos un par de técnicas muy entendidas y consolidadas y en el otro extremo tenemos avances científicos que establecen el estado del arte del campo. Si uno quiere ir más allá de lo establecido implica estar al tanto de estos avances y estar dispuestos a leer artículos científicos que reporten este avance.
La buena noticia
Existen muchisimos recursos para aprender y acercarse al campo, aquí la lista, pero muchas veces basta con buscar en google, Quora, twitter y Stackoverflow
Para comenzar
Para comenzar conviene enfocarse en las redes neuronales en su versión de multi-capa y las matemáticas detrás de ellas (no es necesario revisar todo el material, con revisar un par y con ganar intuición en el tema es suficiente para avanzar con contenidos más avanzados)
Antes de comenzar una demo por parte de Google
Fundamentos de matemática
- Cualquier curso a nivel prepa o profesional de algebra lineal y calculo (intermedio y avanzado)
Videos sobre algebra lineal y su intuición
- Fundamentos de álgebra lineal por 3B1B [en español]
- Essence of linear algebra por 3B1B
Videos sobre cálculo y su intuición
- Essence of calculus por 3B1B
Videos sobre redes neuronales
- Neuronal networks por 3B1B
- 10.1: Introduction to Neural Networks por The Coding Train
- Neuronal networks por el fast-paced Siraj
Textos introductorios
- Make Your Own Neural Network por Tariq Rashid
- Post en Quora What is the most intuitive explanation of artificial neural networks? por Jordan Bennet
- Ch. 10 Neuronal Networks por Daniel Shiffman [en inglés]
- A Neural Network in 11 lines in Python (part 1) por iamtrask
- How to build a simple neural network in 9 lines of Python code por Milo Spencer-Harper
- How to create a Neural Network in JavaScript in only 30 lines of code por Harald Borgen
- Implementing a Neural Network from Scratch in Python – An Introduction por dennybritz
La batalla de las plataformas
En la sección anterior vimos algunos recursos para crear nuestras propias redes neuronales multi-capa, este modelo es la base para DL y conviene dominar muy bien los detalles para hacer DL. Sin embargo no es necesario re-escribir un librería de DL para comenzar hacer DL, ya que existen varias librerías/plataformas que nos permiten trabajar con DL. Aquí una lista:
- Tensorflow hecha por google, la más popular y muy completa con herramientas de visualización y producción como servicio, además de incontable proyectos basadas en esta tecnología
- Keras de Francois Chollet, es un wrapper que depende de otras librerías (theano, tensorflow o CNTK) muy versátil con muchos componentes, siempre digo que es el lego de las plataformas ya que permite poner prototipos muy rápidamente
- Caffe hecha en Berkeley es una de las primeras librerías, está siendo sustituida por Caffe2 , fue preferida mucho tiempo por su velocidad con redes Convolucionales dada que se basaba en el lenguaje C.
- PyTorch hecha por Facebook es la versión de python de Torch una de las primeras librerías para deep learning, ya que es reciente tiene muchas técnicas avanzadas para arquitecturas dinámicas.
- Theano hecha por U. de Montreal, es también una de las primeras librerías, gano popularidad por estar basada en el lenguaje Python, desafortunadamente ya no habrá mantenimiento .
Tambien destacan CNTK (MCT) desarrollada por Microsoft, Apache MXNet mantenida por la funcación Apache, dynet de CMU es una plataforma con una orientación más científica
Aquí una comparación de estas plataformas y otras más.
Arquitecturas DL
Las plataformas permiten conectar a las redes neuronales en diferentes estilos que llamamos arquitecturas;

The Neural Network Zoo
Las arquitecturas que debemos conocer son:
Redes convolucionales, muy populares para el procesamiento de imágenes
- Convolutional Neural Networks (CNNs / ConvNets) curso en Stanford
- A Beginner’s Guide To Understanding Convolutional Neural Networks por Adit Deshpande
- Backpropagation In Convolutional Neural Networks por Jefkine
Redes recurrentes, muy populares para secuencias en particular el lenguaje humano (texo)
- Understanding LSTM Networks por colah
- A Beginner’s Guide to Recurrent Networks and LSTM por dl4j
- Understanding LSTM and its diagrams por Shi Yah
Los cursos avanzados
Existen varios cursos en línea que profundizan en deep learning aquí algunos recursos que ayudan a identificar algunos:
- Por supuesto alguien ya preguntó en Quora y hay varias respuestas
- Las plataformas de cursos en línea todas tienen varias opciones: udacity , udemy , coursea y edX
- Aquí una lista más extensiva y actualizada de cursos
Algunos cursos destacados
- Neural Networks for Machine Learning por Geoffrey Hinton, uno de los fundadores del campo
- Practical Deep learning for Coders por Jeremy Howard, ha sido descrito como muy accesible
- Neural Networks and deep Learning por deeplearning.ia, ha habido mucho hype por este curso
- Cursos por Lazy Programmer, muy accesibles y los cursos están muy bien divididos de tal forma que se aprende la intuición de varios cursos
- Deep Leraning in Python por Dan Becker, un curso muy práctico
Listas Awesome
No soy el único que ha estado recolectando lista de recursos, hace un par de años se hizo polular hacer listas usando la plataforma github, y muchas de estas listas se enfocan a deep learning
- Awesome Deep Learning por ChristosChristofidis
- Awesome Deep Learning Resources por guillaume-chevalier
- Awesome Deep Vision por kjw0612
- Awesome TensorFlow por jtoy
- Awesome Recurrent Neural Networks por myungsub
- Awesome Artificial Intelligence (AI) por owainlewis
- Awesome DeepBio por gokceneraslan
- Awesome Deep learning papers and other resources por endymecy
- Machine Learning & Deep Learning Tutoria l por ujjwalkarn
- Awesome - Most Cited Deep Learning Papers por terryum
Código en github
Por supuesto github no fue pensado para lista, sino para código aquí algunos ejemplos de tutoriales en la plataforma
- Introduction to Deep Neural Networks with Keras and Tensorflow por leriomaggio
- Data science Python notebooks por donnemartin
- TensorFlow-Examples
- Ejemplos en Keras
- Ejemplos en Tensorflow
- 30 Amazing Machine Learning Projects for the Past Year (v.2018) en Mybridge
Deep learning para investigación
Ahora, si quieres ver los últimos avances en el campo estás son algunas fuentes de artículos científicos
- Summaries and notes on Deep Learning research papers por dennybritz
- Deep Learning Papers Reading Roadmap por songrotek
- El sitio arxiv contiene los artículos más recientes en el campo, sin embargo su interface es algo difícil recomendamos Arxiv Sanity Presenter
Links populares y pop
- Deep Learning Gallery
- THE NEURAL NETWORK ZOO
- Deep learning foro con links a diversa información (no actualizado)
- Deep learning en pinterest
- Deep learning en reddit
- Deep learning en medium
- Podcast: The Talking Machine
- Podcast: This Week in Machine Learning and IA
- Podcast: Adversarial Learning
- Podcast: The AI podcast
- Deep learing en el navegador: ConvNetJS , deeplearn.js , Playground
Donde encuentro más
El campo avanza muy rápido mi recomendación es seguir a gente activa en el campo en la red social de twitter, recomiendo comenzar por Deep Learning Hub que retuitea a expertos en el campo. Muchos de los links aquí incluyen blogs cuyos autores tienen una cuenta en esta plataforma. Si estás trabado con algún tema Quora puede tener la misma pregunta que tienes , aun mejor alguien ya la pudo haber contestado 😉. De todas formass i tienes una duda o si quires sugerir algún recurso me puedes avisar via twitter.