Automatización del aprendizaje profundo: una introducción suave a Autookeras y Keras sintonizador

El aprendizaje profundo ha revolucionado el aprendizaje automático. Pero diseñar la red neuronal correcta (capas, neuronas, funciones de activación, optimizadores) puede parecer un experimento interminable. ¿No sería bueno si alguien te hiciera el trabajo pesado por ti?

Eso es exactamente lo que Automl para el aprendizaje profundo tiene como objetivo resolver.

En este artículo, le presentaré dos herramientas poderosas pero accesibles para automatizar el aprendizaje profundo: Autokeras y Keras Tuner. Nos sumergiremos profundamente en estas bibliotecas y haremos una construcción de modelos prácticos.

¿Por qué automatizar el aprendizaje profundo?

El diseño del modelo de aprendizaje profundo y el ajuste de los hiperparameter son intensivos en recursos. Es fácil:

  • Over forma usando demasiados parámetros.
  • Desperdiciar el tiempo probando las arquitecturas manualmente.
  • Se pierde las configuraciones de mejor rendimiento.

Las herramientas AutomL eliminan gran parte de las conjeturas automatizando la búsqueda y el ajuste de la arquitectura.

¿Cómo funcionan estas bibliotecas?

Autokeras

Autokeras aprovecha las técnicas de búsqueda de arquitectura neuronal (NAS) detrás de escena. Utiliza un enfoque de prueba y error impulsado por el sintonizador Keras debajo del capó para probar diferentes configuraciones. Una vez que se encuentra un buen candidato, lo capacita a convergencia y evalúa.

Sintonizador de keras

Keras Tuner se centra en la optimización de hiperparameter. Usted define el espacio de búsqueda (por ejemplo, número de capas, número de unidades, tasas de aprendizaje), y utiliza algoritmos de optimización (búsqueda aleatoria, optimización bayesiana, hiperbandas) para encontrar la mejor configuración.

Instalación de bibliotecas requeridas

Instalar estas bibliotecas es bastante fácil; Solo necesitamos usar PIP. Podemos ejecutar el comando a continuación en el cuaderno Jupyter para instalar ambas bibliotecas.

pip install autokeras
pip install keras-tuner

Autokeras: aprendizaje profundo automatizado de extremo a extremo

Autokeros es una biblioteca de alto nivel construida sobre TensorFlow y Keras. Automatiza:

  • Búsqueda de arquitectura neural (NAS)
  • Ajuste de hiperparameter
  • Entrenamiento modelo

Con solo unas pocas líneas de código, puede entrenar modelos de aprendizaje profundo para obtener imágenes, texto, datos tabulares y de series de tiempo.

Creando el modelo

Para este artículo, trabajaremos en la clasificación de imágenes. Cargaremos el conjunto de datos MNIST usando los conjuntos de datos TensorFlow. Este conjunto de datos está disponible gratuitamente en TensorFlow, puede consultarlo aquíy luego usaremos el ImageClassifier de Autookeras.

import autokeras as ak
from tensorflow.keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

clf = ak.ImageClassifier(max_trials=3)  # Try 3 different models
clf.fit(x_train, y_train, epochs=10)

accuracy = clf.evaluate(x_test, y_test)
print("Test accuracy:", accuracy)

Podemos ver en la captura de pantalla de salida que tardó 42 minutos para la prueba 2, y continuará hasta 3 pruebas y luego nos mostrará el mejor modelo con parámetros.

Sintonizador Keras: optimización flexible de hiperparameter

Keras Tuner, desarrollado por el equipo de TensorFlow, es una biblioteca de optimización de hiperparameter. A diferencia de Autokeros, no diseña arquitecturas desde cero; en cambio, sintoniza los hiperparámetros de la arquitectura que define.

Creando el modelo

A diferencia de Auto Keras, aquí tendremos que crear todo el modelo. Usaremos el mismo conjunto de datos de imágenes MNIST y crearemos un modelo de clasificador de imagen CNN.

import tensorflow as tf
import keras_tuner as kt

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def build_model(hp):
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Flatten())
    model.add(tf.keras.layers.Dense(hp.Int('units', 32, 512, step=32), activation='relu'))
    model.add(tf.keras.layers.Dense(10, activation='softmax'))
    model.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
    return model

tuner = kt.Hyperband(build_model, objective='val_accuracy', max_epochs=10)
tuner.search(x_train, y_train, epochs=10, validation_split=0.2)
Salida del sintonizador Keras

Entonces, en la salida, podemos ver claramente que la prueba 21 se completó en 22 segundos con una precisión de validación de ~ 97.29% y el modelo también mantiene la mejor precisión que es ~ 97.93%.

Para averiguar el mejor modelo, podemos ejecutar los comandos que se dan a continuación.

models = tuner.get_best_models(num_models=2)
best_model = models[0]
best_model.summary()
Mejor modelo

También podemos descubrir las 10 principales pruebas que Keras Tuner realizó utilizando el comando a continuación.

tuner.results_summary()
Las mejores pruebas

Case de uso de la vida real

Un excelente ejemplo de cómo podemos usar ambas bibliotecas es una empresa de telecomunicaciones que desea predecir la rotación de clientes utilizando datos estructurados de clientes. Su equipo de ciencia de datos utiliza Autookeras para entrenar rápidamente un modelo sobre características tabulares sin escribir código de arquitectura compleja. Más tarde, usan Keras Suner para ajustar una red neuronal personalizada que incluye características de conocimiento de dominio. Este enfoque híbrido ahorra semanas de experimentación y mejora el rendimiento del modelo.

Conclusión

Tanto Autookeras como Keras Tuner hacen que el aprendizaje profundo sea más accesible y eficiente.

Use Autokeras cuando desee un modelo rápido y de extremo a extremo sin preocuparse por la arquitectura. Use Keras Tuner cuando ya tenga una buena idea de su arquitectura, pero desea exprimir el mejor rendimiento a través del ajuste de hiperparámetros.

La automatización de partes del aprendizaje profundo lo libera para concentrarse en comprender sus datos e interpretar los resultados, que es donde reside el valor real.