El aprendizaje automático no podría ser más popular, con varios actores de peso pesado que ofrecen plataformas dirigidas a científicos expertos en datos y recién llegados interesados ​​en trabajar con redes neuronales. Entre las opciones más populares se encuentra TensorFlow, una biblioteca de aprendizaje automático que Google abrió en noviembre de 2015.

En este tutorial, le daremos un vistazo rápido del aprendizaje automático, presentaremos conceptos básicos de TensorFlow, y guiaremos a través de algunos modelos TensorFlow en el área de clasificación de imágenes y le mostraremos las nuevas API de alto nivel. Luego, indicaremos recursos adicionales para aprender y usar TensorFlow.

Requisitos de TensorFlow

Necesita algunos requisitos previos para comprender completamente el material que cubriremos. Primero, deberías poder leer el código de Python.

En segundo lugar, debe saber algo sobre cálculo y estadísticas básicas. La mayoría de los programadores aprenden esto en la universidad o incluso en la escuela secundaria, pero si estás oxidado sobre alguno de los conceptos que utilizaré, existen muchos recursos en la web, como Cálculo para principiantes y Estadísticas Básicas.

También ayudaría si entendiera los métodos de optimización basados ​​en gradiente. Si no lo hace, puede tratar los optimizadores que usaremos como cajas negras.

Aprendizaje automático, redes neuronales y aprendizaje profundo

En la programación tradicional, le informamos explícitamente a la computadora qué hacer con los datos de entrada con anticipación, incluidas varias ramas de programas que responden a las condiciones en los datos. En machine learning, por otro lado, le damos a la computadora algunos datos, un modelo para los datos, pesos y sesgos para los términos del modelo, una función para definir la “pérdida” o “costo” de un modelo, y un algoritmo de optimización para “entrenar” al modelo ajustando los pesos y los sesgos para encontrar la pérdida mínima.

Una vez que la computadora encuentre el mejor modelo a partir de la capacitación con los datos iniciales, podemos usar ese modelo para predecir valores para nuevos datos. Si los datos tienden a cambiar con el tiempo, es posible que tengamos que volver a entrenar el modelo periódicamente para mantenerlo preciso.

Normalmente dividimos los datos iniciales en dos o tres grupos: datos de entrenamiento, datos de prueba y, opcionalmente, datos de validación. Los datos pueden ser continuos (números reales), en cuyo caso resolveremos un problema de regresión para predecir una respuesta, o puede ser discretos (enteros o etiquetas de clase), en cuyo caso resolveremos un problema de clasificación.

Red Neuronal

Una red neuronal artificial, una de las muchas maneras de implementar el aprendizaje automático, es un modelo que consiste en un grupo interconectado de nodos, generalmente con una capa de entrada, una capa de salida y una o más capas ocultas en el medio. Actualmente, cada nodo es a menudo una neurona “sigmoidea”, lo que significa que su función de activación varía suavemente entre 0 y 1 en una curva en forma de “S”, lo que le da un comportamiento más estable que la función de paso binario del “perceptrón” anterior.

El aprendizaje profundo es, en esencia, una red neuronal con múltiples capas ocultas, es decir, una red neuronal profunda. Hay muchos tipos de redes profundas y  una de las más utilizados es la red convolucional profunda, que funciona bien para el reconocimiento de imágenes.

A medida que explore TensorFlow, leerá sobre este y otros tipos de redes neuronales profundas, como las redes neuronales recurrentes (RNN), que son útiles para el reconocimiento de voz. Hay muchas maneras de minimizar la pérdida en redes neuronales profundas, y discutiremos varios de ellos al intentar algunos ejemplos.

TensorFlow Playground

Para familiarizarse con las redes neuronales, prueba TensorFlow Playground.

Este sitio le permite tratar de resolver cuatro problemas de clasificación y un problema de regresión utilizando sus propias elecciones de selección de características (las propiedades utilizadas para crear su modelo predictivo), funciones de activación neuronal (para definir la salida de sus nodos) y el número de capas ocultas y número de neuronas en cada capa (para definir qué tan profunda debe ser su red).

También puedes ajustar el tamaño del lote para cada iteración de datos de entrenamiento, la relación entre el entrenamiento y los datos de prueba, la tasa de aprendizaje para el entrenamiento de su modelo, el tipo de regularización y la tasa de regularización. Pruebe varias estrategias y vea qué tan bajo puede bajar la pérdida para cada problema y cuánto tiempo tarda cada uno en converger. Mientras juega con las metodologías, preste atención para ver como funciona.

Una vez que piense que tiene una idea de las redes neuronales de Playground (que en realidad no se basa en TensorFlow aunque viva en el repositorio de TensorFlow), es hora de consultar el código fuente de TensorFlow de GitHub.

TensorFlow en GitHub

El archivo README.md en la parte inferior de esta página de GitHub tiene una buena explicación general y enlaces útiles.

Clona el repo TensorFlowClone del repositorio TensorFlow para comenzar con TensorFlow en tu propia máquina.

Gráficos de flujo de datos de TensorFlow

TensorFlow es compatible con aprendizaje automático, redes neuronales y aprendizaje profundo en el contexto más amplio de gráficos de flujo de datos. Estos gráficos describen la red computacional para los modelos de una manera más complicada pero más flexible, generalizada y eficiente que el Playground.

El código para una solución TensorFlow primero carga los datos y crea el gráfico, luego establece una sesión y ejecuta el entrenamiento del modelo contra los datos.

Como verá cuando abra su repositorio TensorFlow en un editor o explorando el código en GitHub, el núcleo de TensorFlow se implementa en C ++ con soporte de GPU opcional. Utiliza un compilador específico de dominio para el álgebra lineal (XLA) para recopilar subgrafos de TensorFlow (gráficos de flujo de datos). Una versión de XLA que admite las Unidades de Procesamiento de Tensor de Google (Google Tensor Processing Units, TPU), que no es de código abierto en este momento, usa generación de código personalizado.

Las capas superiores de TensorFlow y la API primaria de TensorFlow se implementan en Python. Además de Python, hay una API en C ++, Java y Go.

Mientras navegas por el repositorio TensorFlow, preste especial atención al directorio de ejemplos.

Instalación de TensorFlow

Puede instalar TensorFlow localmente o usarlo en la nube. Tal vez la forma más poderosa de usar TensorFlow sea configurar un proyecto de Google Cloud Platform, luego configure un entorno para Cloud Machine Learning, el servicio de capacitación a gran escala de Google, ya sea en un Cloud Shell, en un contenedor Docker o localmente.

Aquí puedes ver el tutorial para empezar con Google Cloud.

Sin embargo, para comenzar, creo que primero debe instalar TensorFlow localmente. El equipo de TensorFlow recomienda hacer una instalación virtualenv de Python cuando esté disponible, pero hay otras opciones, dependiendo de su sistema. Al usar la imagen de Docker para entrenar modelos, debe asignar la mayor parte de la memoria RAM y los núcleos de su computadora a Docker, luego cierre Docker para liberar los recursos cuando haya terminado.

Durante la instalación, puede elegir entre versiones de solo CPU o GPU. La versión de GPU ejecutará entrenamientos mucho más rápido en máquinas con un chip Nvidia, pero es mucho más difícil de instalar correctamente. Sugeriría instalar un binario solo de CPU al principio.

$ sudo pip install tf-nightly

La instalación de una compilación nightly le proporciona el código más reciente que se compila correctamente y pasa todas las pruebas de aceptación. La documentación del sitio web suele ser para una compilación estable anterior, pero la documentación más reciente y la documentación para otras versiones numeradas están disponibles en el repositorio de código.

Puede encontrarse con un error de permiso al desinstalar versiones antiguas en el paso de instalación de pip de la compilación pip “nativa” estándar:

 

$ sudo pip install —upgrade $TF_BINARY_URL

Si eso pasa ignora la versiones instaladas

$ sudo pip install –upgrade —ignore-installed $TF_BINARY_URL

Si ocurre un problema en la instalación lo más probable es que no se pueda importar en python ejecutando este comando:

>>> import tensorflow as tf

Si quiere probar completamente su instalación, corra la demostración convolutional.py desde el repositorio de TensorFlow. En una CPU, esta demostración demorará aproximadamente media hora entrenando un modelo de red neuronal convolucional moderadamente simple para identificar dígitos manuscritos del conjunto de datos MNIST estándar:

$ python -m tensorflow.models.image.mnist.convolutional

Ten en mente que esto causará una carga importante en tu computador.

Entender los gráficos de flujo de datos

Un gráfico de flujo de datos es un tipo de gráfico dirigido que describe un cálculo matemático. Si no está familiarizado con los gráficos dirigidos, todo lo que necesita saber es que son gráficos con nodos y relaciones, y las relaciones fluyen en una dirección (se dirigen) de un nodo a otro.

En un gráfico de flujo de datos, los nodos representan operaciones matemáticas o puntos finales para alimentar datos, extraer resultados o leer / escribir variables persistentes. Las relaciones representan las relaciones de entrada / salida entre nodos y llevan matrices de datos multidimensionales de tamaño dinámico, que también se conocen como tensores.

Cómo usar TensorFlow

El tutorial que los autores de TensorFlow ofrecen para principiantes va paso a paso a través de algunos modelos simples de TensorFlow. Entre otras cosas, le enseña sobre la API de tf.estimator de alto nivel para crear capas.

Para importar datos ejecuta:

from tensorflow.examples.tutorials.mnist import input_data

Esto realmente importa a varios otros archivos de programa, que descargarán los datos oficiales de entrenamiento, prueba y validación de MNIST cuando los llamemos.

El siguiente código importa el módulo de biblioteca de tensorflow, le da el nombre tf. Siempre debes importar tensorflow antes de poder usarlo.

import tensorflow as tf

Ahora llegamos al código ejecutable. Primero, leemos en los datos importados usando:

def main(_)
      mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)

Esto tomará algunos segundos y devolverá:

Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting /tmp/data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting /tmp/data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting /tmp/data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting /tmp/data/t10k-labels-idx1-ubyte.gz

Ahora que tenemos los datos cargados, creamos un modelo que usa variables de TensorFlow, marcadores de posición y funciones. En realidad no es más que la ecuación matricial y = Wx + b, más alguna configuración para contener los tensores (784 es 28 por 28, para contener los píxeles de las imágenes, 10 es el número de categorías, para los dígitos 0-9 )

Después agregamos una función de pérdida, para medir le precisión del modelo o “goodness of fit”.

Finalmente, estamos listos para ejecutar realmente una sesión de TensorFlow. Notarás que el entrenamiento sucede lote por lote dentro de un bucle.

Ahora que la capacitación está completa (solo debería demorar un segundo), debemos probar el modelo y calcular la precisión:

Ahora lo puedes probar. En el terminal, navega a tensorflow/examples/tutorials/mnist/ en el repositorio y corre:

$ python mnist_softmax.py

Visualización de modelos en TensorBoard

TensorBoard es un conjunto de herramientas de visualización para ver gráficos de TensorFlow y trazar métricas, junto con algunas otras tareas útiles. Antes de poder usar TensorBoard, necesita generar archivos de datos a partir de una ejecución de TensorFlow.

En la misma carpeta que acabamos de utilizar, tensorflow/examples/tutorials/mnist/  en su repositorio TensorFlow, encontrará otro programa de clasificación MNIST, mnist_with_summaries.py. Si lee el código, encontrará un código de aspecto familiar, así como un código que podría ser nuevo para usted, por ejemplo, el uso de tf.name_scope para aclarar lo que veremos en TensorBoard y la función variable_summaries :

Esto, como dice el comentario, adjunta muchos resúmenes a un Tensor. Si lee más de mnist_with_summaries.py, verá muchas cláusulas tf.name_scope (name) que incluyen llamadas a variable_summaries (var, name) y otras funciones específicas de tf. <X> _summary como las que se muestran arriba. .

Presta atención al modelo y al optimizador. Si lees detenidamente el código, verás algunas neuronas ReLu y un optimizador Adaptive Moment Estimation (Adam, una variación de gradientes). También verá la misma definición de entropía cruzada que encontramos en el tutorial mnist_softmax.

Ahora corre el script:

$ python mnist_with_summaries.py

Al terminar podrás correr la interfaz con los siguientes comandos, especificando el fichero donde están los logs del modelo:

$ tensorboard —logdir=/tmp/mnist_logs/

Starting TensorBoard 23 on port 6006

(You can navigate to http://0.0.0.0:6006)

Una vez listo, puedes acceder a la url que te proporcionará el prompt.

Verás algo así:

Puedes navegar, hacer zoom y visualizar más datos usando la interfaz.

Más recursos

Continúa con el tutorial de Tensorflow:

https://www.tensorflow.org/tutorials/layers#mnist-for-ml-beginners

Dejar respuesta

Please enter your comment!
Please enter your name here