Una pregunta que siempre nos planteamos en machine learning y en deep learning es la diferencia entre algoritmos discriminativos y generativos y cuál escoger para un problema concreto. Los algoritmos discriminativos modelan la dependencia de una variable objetivo Y en función de una variable observada X. De esta forma se puede predecir la variable Y ... Seguir leyendo →
Expresividad, potencial y necesaria, de las redes neuronales
El deep learning ha proporcionado grandes avances en problemas que hace unos años tenían tasas de errores considerables. Sin embargo, ese éxito no ha venido acompañado de una justificación teórica y formal de la eficacia del deep learning. Sabemos, por el teorema de aproximación universal, que una red neuronal de una capa y un número... Seguir leyendo →
Programación diferenciable, una evolución del deep learning
En este blog hemos descrito multitud de modelos de deep learning en los que varias capas de redes neuronales procesan la información de la entrada produciendo representaciones cada vez más abstractas y apropiadas para resolver una tarea. Estos modelos podían tener recurrencia como las RNN, filtros usando redes convoluciones o word embeddings para poder reflejar... Seguir leyendo →
Introducción a los mecanismos de atención
En este post vamos a hacer una introducción al mecanismo de atención usado en modelos seq2seq de deep learning y concretamente en procesamiento de lenguaje natural. La descripción va a tener el nivel de detalle suficiente para que se entienda la esencia y el concepto de atención. Los modelos seq2seq (sentence to sentence), utilizados para... Seguir leyendo →
Optimización bayesiana con PyTorch y Ax
Esta entrada es parte del curso de Deep learning con PyTorch. En un post pasado presentamos la optimización Bayesiana y las dos nuevas herramientas abiertas de Facebook, Ax y BoTorch. Ax es una herramienta de alto nivel para gestionar experimentos adaptativos y BoTorch una librería de optimización bayesiana. En este post vamos a ver un... Seguir leyendo →
Nuevas herramientas de optimización bayesiana en PyTorch
Esta entrada es parte del curso de Deep learning con PyTorch. Con frecuencia en machine learning queremos optimizar los hiperparámetros de un modelo. Por ejemplo, en una red neuronal queremos saber el número de capas, el número de unidades por capa o la tasa de aprendizaje (learning rate) que logran un mejor comportamiento. Este problema... Seguir leyendo →
Teorema NFL y meta-learning
El teorema No-Free-Lunch (NFL) de optimización nos dice que no existe un algoritmo de aprendizaje universal. En tareas de clasificación, para cada algoritmo de aprendizaje, siempre existirá una distribución de probabilidad (que genera los datos entrada-salida) en la que falle. Una definición intuitiva, como la aportada en el libro de Shalev-Shwartz y Ben-David, establece que... Seguir leyendo →
Entender la generalización, clave para comprender el Deep Learning
Una de las partes importantes del machine learning es la generalización de los algoritmos, es decir su comportamiento para datos no vistos durante el entrenamiento. Dado que los algoritmos se han entrenado usando muestras finitas, este entrenamiento está sujeto a errores de muestreo (error debido a obtener los parámetros del modelo de sólo una muestra... Seguir leyendo →
Autograd, clave de la flexibilidad de PyTorch
Esta entrada es parte del curso de Deep learning con PyTorch. En los últimos dos años hemos visto como PyTorch, el framework basado en Torch para Deep Learning creado por Facebook, está siendo una alternativa potente a Tensorflow. Una de las principales ventajas de PyTorch es que es un framework imperativo, en el que las... Seguir leyendo →
PyTorch con CUDA en Colab
Esta entrada es parte del curso de Deep learning con PyTorch. En un post pasado vimos como las GPUs (graphics processing units) han impulsado el desarrollo del Deep Learning en los últimos años. Las GPUs, gracias a su estructura en paralelo, son muy eficientes para algoritmos con procesamiento de datos en paralelo como los usados... Seguir leyendo →