Jordi Torres: Introducción Práctica Al Deep Learning Con Tensorflow de Google
Short Description
Google anunció que abría su código de Deep Learning llamado TensorFlow, creado por su equipo Google Brain. Esta liberaci...
Description
Parte 1 http://jorditorres.org/introduccion-practica-al-deep-learning-con-tensorflow-de-google-parte-1/
La prensa generalista como La Vanguardia o El País que encuentro en el restaurante donde voy a comer, ya llevan tiempo mencionando de manera tímida las palabras Deep Learning . Pero esto no ha hecho más que empezar, y sin duda puede ser una oportunidad para los ingenieros informáticos.
Y en concreto, la semana pasada Google anunció que abría su código de Deep Learning llamado TensorFlow, TensorFlow, creado por su equipo Google Brain. Sin duda es una noticia que se debe analizar profundamente porque pienso que esta liberación de código puesto a disposición de la comunidad va a representar un punto de inflexión importante en este campo en muchos sentidos. Hay muchos más entornos para deep learning, como Theano Theano,, caffe caffe,, DeepLearning4J DeepLearning4J,, torch torch,, Mocha.jl o Lasagne Lasagne,, pero mi visión es que TensorFlow va a marcar terreno rápidamente. Por ello les propongo que me acompañen en esta breve introducción práctica a TensorFlow (basándome en uno de los tutorials que ofrece la misma página oficial de Tensorflow) Tensorflow) siguiendo el modelo de learn by doing que utilizo en mis clases prácticas en la universidad UPC. Por motivos de disponibilidad voy a realizar esta introducción en varios días mediante varios post en este blog. Hoy, para acabar esta primera entrega, les avanzo una breve reflexión en voz alta sobre los motivos que puede tener Google para liberar un código de tanto valor, creo que es importante. También añado los pasos a seguir para instalar este paquete en su ordenador.
1- ¿Qué es lo más importante hoy en día, el software o los datos? Creo que una primera conclusión del paso que ha dado Google es que para poder extraer conocimiento en el universo Big Data, lo más importante ya no debe ser el software. Estoy seguro que lo son los datos, que Google no comparte. Se puede entender que a medida que las empresas son más data-driven, está claro que se sienten más cómodas abriendo su software (sin liberar sus datos). Pero estoy seguro que también hay en la decisión de Google el considerar el retorno que tiene para cualquier empresa que libera un código en cuanto a ideas que la comunidad aporta y la empresa creadora también puede beneficiarse. Pero tampoco hay que menospreciar el valor de marca que implica liberar un código. Y si este código se usa, como estoy seguro que será el caso TensorFlow, la compañía creadora del software tiene mucha gente ya formada que puede incorporar en su empresa siempre que lo necesite (y me imagino que esto va ha hacer Google pues todo pinta que continuará creciendo).
2- Instalación de TensorFlow TensorFlow tiene una API Python que usaremos que requiere Python Python 2.7 instalado. La manera más fácil de instalar Su instalación resulta bastante sencilla con el comando habitual pip install: virtualenv ~/Virtualenvs/ /Virtualenvs/tensorflow tensorflow source ~/Virtualenvs/ /Virtualenvs/tensorflow tensorflow/ /bin/ bin/activate pip install https: https ://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0py2-none-any.whl git clone ---recurse recurse-submodules https: https://github.com/tensorflow/tensorflow
No es imprescindible usar un entorno virtual como en el ejemplo, aunque recomendable. Estos comandos son para MAC, MAC, si se encuentran en un entorno Ubuntu/Linux puede hacer: $ pip install https: https ://storage.googleapis.com/tensorflow/linux/cpu/tensorflow0.5.0-cp27-none-linux_x86_64.whl
Si se opta por una instalación a partir de fuentes pueden visitar esta página.
Para probar que tienen bien instalado el paquete, pueden hacer su primer programa “Hello World” en TensorFlow. Cómo hemos comentado Tensorflow ofrece una fantástica API en
Python para poder ser usado. Después de invocar el interprete de Python, puede teclear el siguiente código: import tensorflow as tf
hello = tf.constant('Hello World!') session = tf.Session() print session.run(hello)
Hasta aquí he mostrado una manera de instalar el paquete TensorFlow para entrar de la manera más sencilla posible a usarlo. Pero hace falta remarcar que lo que ha liberado Google es mucho más y que podemos descargar el código fuente de Tensorflow y compilarlo, descargar la versión para GPUs, la versión que se ejecuta via Docker, entre muchas otras cosas. Más detalle de todas las posibilidades se puede encontrar en la página de Download and Setup TensorFlow a la que invito al lector visitar una vez llegado al final de este post sin haberse accidentado por el camino. November 20th, 2015
Parte 2 http://jorditorres.org/introduccion-practica-al-deep-learning-con-tensorflow-de-google-parte-2/ 3- Mucho tiempo entre nosotros, peró … Sin duda las técnicas de Deep Learning hasta hace pocos años no han experimentado su gran auge, a pesar que son técnicas basadas en redes neuronales artificiales que ya aparecían en la literatura científica de los años 80 (por ejemplo con el Neocognitron de Kunihiko Fukushima). Como dato, mencionar que en 1990, Yann LeCun junto con otros investigadores, consiguieron aplicar el algoritmo estándar backpropagation (algoritmo creado a mediados de los 70) a una deep red neuronal con varias capas con el propósito de reconocer los dígitos de los códigos postales del correo escritos a mano. A pesar del éxito de aplicar el algoritmo, el tiempo requerido para entrenar la red neuronal con ese conjunto de datos fue aproximadamente de 3 días, hecho que lo hacía impracticable para un uso generalizado. 4- Una capacidad de cálculo nunca vista hasta ahora El lector a estas alturas ya debe suponer que hay de nuevo en el escenario de hoy en día para hacer posible la llegada del Deep Learning: una capacidad de computación antes nun ca vista. Desde entonces la capacidad de cálculo de los computadores ha experimentado un crecimiento espectacular. Una muestra de ello lo podemos encontrar en la lista Top500 con los quinientos ordenadores más rápidos del planeta que se elabora dos veces al año desde 1993. La gráfica resumen de las capacidades de cálculo a que llegan estos ordenadores, llamados supercomputadores, se muestra a continuación:
En esta gráfica indica dos veces al año (Junio y Noviembre) la velocidad máxima de procesado que consigue un supercomputador (en número de instrucciones en coma flotante que un ordenador puede ejecutar por segundo) , indicando el más rápido con un triángulo, el ordenador número 500 con un cuadrado y la suma de todos ellos con un círculo. Tenemos desde 1993 hasta la semana pasada, que se presentó la última lista, siendo el más rápido del mundo por sexta vez consecutiva, el supercomputador Tianhe-2, desarrollado por la National University of Defense Technology de China que llega a una velocidad de 33.86 PetaFlop/segundo, es decir, realizar 33.860.000.000.000.000 operaciones por segundo. ¿Qué les parece? Cómo podemos observar en la gráfica, desde que Yann LeCun creo su red neuronal para interpretar códigos postales, a hoy en día, la potencia de los ordenadores se ha multiplicado por 1.000.000.000 aproximadamente. Nada despreciable, ¿Verdad?. Otro tema es que seamos capaces de usar toda esta potencia de cálculo disponible para poder entrenar una red neuronal. Cómo sufren mis colegas teóricos, de momento queda bastante margen para mejorar. Sin duda hace falta también el conocimiento de los ingenieros de computadores (hardware y software) en este nuevo mundo del aprendizaje automático. Hoy en dia hay una gran diversidad de componentes y de arquitectura de computadores. Por ejemplo TensorFlow ya tiene librerías para explotar las ventajas de trabajar con arquitecturas especiales basadas en GPUs, que presentan un gran rendimiento para entrenar redes neuronales. Sin duda todo un mundo que se escapa de este tutorial. 5- Un sunami de datos Pero aunque yo me dedique a la supercomputación y para justificar mi trabajo les intente convencer que esta es fundamental para el Deep Learning , hay otro factor quizás aun mucho más fundamental por el que podemos asegurar que ahora el Deep Learning ha llegado para quedarse. En realidad, para que estos algoritmos sean realmente útiles, se necesitan cantidades ingentes de datos para poder ser entrenados correctamente y en realidad hasta ahora los datos disponibles eran muy limitados. Con la llegada del Big Data, en todas sus formas, la generación d e datos nunca había sido tan enorme . Cómo muestra me limito a reproducir unos datos de un interesante artículo en el portal UNIVERSIA que comenta algunas cifras que Bernard Marr presenta en la revista Forbes.com:
Se han creado más datos en los últimos 2 años que en toda la historia de la humanidad Se estima que para 2020 cada individuo creará 1,7 megabytes de información nueva por segundo Para 2020, nuestro universo de datos pasará de 4.4 zettabytes que existen actualmente a 44 zettabytes (44 billones de gigabytes). Creamos nuevos datos a cada segundo: realizamos 40.000 nuevas búsquedas en Google por segundo, lo que equivale a 3.5 millones de búsquedas por día y 1.2 billones por año. En agosto de 2015, se conectaron más de 1.000 millones de personas a Facebook por día, lo que supone un aumento del 3,37% con respecto al mismo período en 2014 Los usuarios de Facebook envían una media de 31,25 millones de mensajes y miran 2,77 millones de vídeos por minuto Se sube una media de 300 horas de vídeos a YouTube por minuto En 2015 se tomaron 1 billón de fotografías, y miles de millones serán compartidas en la red. Para 2017 se estima que casi el 80% de las fotografías serán tomadas por smartphones Este año, se importarán más de 1.400 millones de de smartphones, todos ellos con sensores capaces de recolectar todo tipo de datos, sin mencionar aquellos creados por los mismos usuarios del móvil. Para 2020 tendremos más de 6.100 millones de usuarios de smartphones en el mundo. En los próximos 5 años habrá más de 50.000 millones de dispositivos smart conectados en el mundo, todos desarrollados para recolectar, analizar y compartir datos.
Una pregunta para acabar, ¿Leyendo esto, qué empresas creen que concentran una gran parte de estos datos generados? Cómo decíamos en la anterior entrega de este tutorial de introducción a Deep Learning, el poder está en los datos y no en el software. Otra cosa es que tengas la capacidad económica para comprar los sistemas informáticos y lo más importante, poder pagar la energía que estos consumen. Saben cuanto consume el supercomputador Tianhe-2? La pequeña cantidad de 17,808 W/h, estando conectado 24 horas al dia todos los días del año. ¡Calculen! November 23rd, 2015
Parte 3 http://jorditorres.org/introduccion-practica-al-deep-learning-con-tensorflow-de-google-parte-3/ 6- ¿Por dond e empezar? Con los datos que presentábamos en la segunda entrega el lector se sentirá abrumado por los cifras que aparecen , siendo probable que aun no tenga datos y se pregunte ¿que datos puedo usar para entrenar a mis redes neuronales si mi empresa aun no ha acumulado suficientes? Por suerte en la comunidad de machine learning, y en el caso que nos ocupa la de Deep Learning, dispone de un gran número de conjuntos de datos de acceso abierto para poder crear modelos a partir de ellos si no se dispone de datos propios para empezar. En el portal DeepLearning.net se puede encontrar una lista de conjuntos de datos disponibles con diferentes característica y tamaños. Aquí les comentamos algunos de los datasets de la lista que pueden ser útiles para empezar a trabajar y que podrían ser usados como conjunto de datos para experimentar con lo que iremos explicando en este tutorial introductorio.
El dataset CIFAR-10 El dataset CIFAR10 subconjunto de imágenes del conjunto del 80 million tiny images, contiene 60.000 imágenes a color de 32×32 pertenecientes a 10 clases de 6.000 images cada una de
View more...
Comments