Aprendizaje profundo por tu cuenta


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:

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:

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 * Por supuesto también existen cursos presenciales con gran material, otra lista aquí

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

Código en github

Por supuesto github no fue pensado para lista, sino para código aquí algunos ejemplos de tutoriales en la plataforma

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

Links populares y pop

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.


comments powered by Disqus