Tutorial Deep Learning con Tensorflow/Keras

Instalación

Con Anaconda

  1. Instalar Anaconda:

    https://www.anaconda.com/

  2. Importar el entorno (archivo envoronment.yml)

     conda env create -f envoronment.yml
    

Sin Anaconda

Red totalmente conectada

Entrenamiento del modelo

En este ejemplo utilizaremos el dataset CIFAR10 para entrenar un clasificador

  • Ejemplo del tipo de imágenes del dataset:

Ejemplo CIFAR10

Ejecuta el script cifar10_tf_fcn.py para entrenar el modelo

Este es un ejemplo de entrenamiento, en el que se ve que hay sobreentrenamiento (overfitting) a partir de la epoch 80 aproximadamente:

Ejemplo CIFAR10

Y esta imagen muestra un ejemplo visual de los resultados con el modelo anterior:

Ejemplo CIFAR10

En este caso, la precisión (accuracy) del modelo es:

  test accuracy: 0.5267

Ajuste de hiperparámetros

Para mejorar el resultado se pueden modificar los siguientes parámetros:

Resultados

Podemos ir añadiendo los resultados con distintas configuraciones en el hilo de discussions

Red convolucional

Ejecuta el script cifar10_tf_cnn.py para entrenar el modelo

Resultados sin Data Augmentation (data_augmentation = False)

Este es un ejemplo de entrenamiento, en el que se ve que hay sobreentrenamiento (overfitting) a partir de la epoch 15~20 aproximadamente:

Ejemplo CIFAR10

En este caso, la precisión (accuracy) del modelo es:

  test accuracy: 0.7184

Resultados con Data Augmentation (data_augmentation = True)

Este es un ejemplo de entrenamiento en el que no hay overfitting:

Ejemplo CIFAR10

En este caso, la precisión (accuracy) del modelo es:

  test accuracy: 0.7931

Ajuste de hiperparámetros

Para mejorar el resultado se pueden modificar los siguientes parámetros:

Autoencoders

Ejemplo 1: Detección de fraude

Ejecuta el script fraud_detection_tf_ae.py para entrenar el modelo

Aprendizaje no supervisado

Se entrena el modelo únicamente con los ejemplos de transacciones normales

Ejemplo detección fraude

Una vez entrenado, utilizamos el conjunto de validación para buscar un umbral sobre el error de reconstrucción que nos permita separar las transacciones fraudulentas de las normales.

Histograma detección fraude

Zoom:

Histograma detección fraude

Se ve claramente que tenemos dos distribuciones distintas, aunque se solapan en algún intervalo.

Representamos algunas métricas (precision, recall y f1):

precision-recall-f1 detección fraude

precision-recall

Como ejemplo, si elegimos un umbral para el error de reconstrucción de 5, obtendríamos esta separación de las clases:

precision-recall

y esta matriz de confución:

precision-recall

Ejemplo 2: Mejora de la resolución de imágenes

En este ejemplo utilizamos las imágenes en baja resolución como entrada al autoencoder y las imágenes con alta resolución como salida.

Este es un ejemplo del tipo de imágenes utilizadas. A la izquierda la entrada y a la derecha la salida.

Image enhance train set

Entrenamos hasta que el coste en el conjunto de validación deja de bajar:

Image enhance train history

Este es el resultado evaluando en el conjunto de test:

Image enhance test set evaluation

NLP (Natural Language Processing)

Word embedding

Skip-gram embedding

word embedding process

word embedding vectors

  • [king] - [man] + [woman] -> [queen]
  • [paris] - [france] + [italy] -> [rome]

Transformer

Attention

Attention mechanism (1)

Attention mechanism (2)

Mecanismo de atención

Transformer completo

Transformer

Transformer original

Ejemplos

Ejemplo 1

Análisis de sentimiento. El conjunto de entrenamiento está compuesto por críticas de cine etiquetadas como positivas o negativas.

El modelo está compuesto por una capa de embedding, dos capas convolucionales de 1 sola dimensión, y un clasificador totalmente conectado.

script: nlp_text_class_tf.py

Pooling Layers

Ejemplo 2

Este ejemplo es igual que el anterior, pero sustituyendo las dos capas convolucionales por una versión reducida de transformer que solo incluye la parte del encoder

script: nlp_text_class_transformer_tf.py

En ambos casos, el resultado en el conjunto de test está alrededor de 0.84 (accuracy)

Recurrent Neural Networks

RNN - LSTM

Vanilla RNN

LSTM

Tutorial RNN

Ejemplo 1

Este ejemplo es igual que los dos anteriores, pero sustituyendo las capas convolucionales/transformer por una capa de celdas LSTM.

script: nlp_text_class_lstm_tf.py

El resultado en el conjunto de test es parecido a los ejemplos anteriores, pero el entrenamiento es más lento.

Casos de uso, arquitecturas y ejemplos

Computer vision

Arquitecturas para computer vision

Applications of GANs

GAN example with Keras

Speech recognition

Speech recognition

Natural Language Processing

Applications of deep learning in NLP

Recommendation engines

Deep learning-based recommender systems (1)

Deep learning-based recommender systems (2)

Health

3D Image Classification from CT Scans (pneumonia prediction)

Anomaly detection in wearable health data

Deep Learning MAL

Job applications

Tesla confunde Burger King con señal de stop

Tesla confunde stop an anuncio

Recursos

Curso gratuito