Deep Learning Con Python
Deep Learning Con Python
Deep Learning
del curso con Pytorch
Juan Pablo Morales
@juanpamf
¿Qué es el Deep
Learning?
Deep Learning
1950-1990: Creación de
principales algoritmos para
entrenamiento de NNs
1990: Dificultades para
entrenar modelos profundos
+ Investigación
2010<: Explosión del Deep
Learning
El boom del deep learning
Logros
● Resolucion con performance casi humana de
una gran parte de las tareas de percepción:
○ Visión: detección de objetos, segmentación
semántica
○ Escucha: Speech-to-text, reproducción de sonidos
○ Lenguaje: Traducción automática
○ Juegos: Ajedrez, Go, LoL, SC2
● Cada vez impactando más campos, como la
física, la medicina y las finanzas.
● Premio Turing 2018
Aplicaciones: DL Generativo
Aplicaciones: MusicVAE
Aplicaciones: Pix2Pix
Aplicaciones: CycleGAN
¿Por qué el Deep
Learning ahora?
¿Qué cambió?
● Datasets labelizados
de gran tamaño
● GPUs y hardware
● Mejoras en los
algoritmos
● Software Open Source
Datasets Etiquetados o
“labelizados”
´
Ciclo de trabajo en
Deep Learning
La importancia de entender
cómo aprende una red
● Espacio de modelos H
● Una función de pérdida L
● Un método de optimización
● Problema de minimización:
Espacio de modelos
parametrizado
Un flujo con similitudes al ML
tradicional
● Objetivo
● Preparación de los datos
○ Features
● Algoritmo de aprendizaje
○ Fija los parámetros (settings internos)
● Tuning
○ Búsqueda de hiperparámetros (settings externos)
Diferencias: Preparación de
los datos
Diferencias: Algoritmo de
aprendizaje
Diferencias: Algoritmo de
aprendizaje
Diferencias: Tuning
Flujo del deep learning
Arquitectura:
Capas
Espacio de modelos
Espacio de modelos
● Conectadas localmente
● Comparten parámetros
● ¡Muy eficientes sin tener un costo alto!
Arquitectura convolucional
● Arquitectura clásica:
(Conv - ReLU - Pool)* - FC
Fórmula para convoluciones
Última FC Sin
Layer activacion
x1 x1
L = Error cuadrático
promedio
(MSE)
Clasificación Binaria
Ultima
Sigmoid
FC Layer
x1 y1
L = Entropia
cruzada binaria
(BCE)
Clasificación Multiclase
Última FC Softmax
Layer
x1 x1
x2 x2
L = Negative Log-
x3 x3 Likelihood
(NLL)
x4 x4
x5 x5
Clasificación
Multiclase Multilabel
Ultima FC Sigmoid
Layer
x1 x1
x2 x2
x3 x3 L = BCE
x4 x4
x5 x5
En resumen
En deep learning
(grandes datasets):
○ Entrenamiento: 98%
○ Validación: 1%
○ Test: 1%
Underfitting-Overfitting
Regularización de
Redes Neuronales
profundas
Construir un
buen modelo de
deep learning
La receta para construir una red neuronal
de buena performance es similar a los
modelos de machine learning:
1. Construir un primer modelo simple que logre
aprender sobre los datos.
2. Este modelo probablemente a pesar de haber
aprendido sea muy simple y tenga cesgo
(underfitting).
3. Aumentar la capacidad del modelo hasta overfittear.
4. Regularizar para encontrar el buen punto medio
entre underfitting y overfitting.
Cómo controlar la capacidad
de mi modelo
Para aumentar la capacidad:
○ Agregar capas
○ Agregar cantidad de neuronas por capa
○ Aumentar el número de epochs
○ Elegir un método de optimización más
complejo (adaptividad, momentum, etc.)
Para disminuir la capacidad:
○ Entrenar con mayor cantidad de datos
○ Utilizar técnicas de regularización
L2 o weight decay
Algoritmo
○ Con cierta probabilidad p
"desactivaremos" ciertas
neuronas (== 0)
○ En cada iteración la capa
recalculara si "desactiva" una
neurona.
○ Durante la fase de entrenamiento
dropout actúa, durante la fase de
evaluación las capas de dropout
no tienen efecto.
Data augmentation
Optimización de
hiperparametros
Babysitting (panda)
● Learning rate
● Momentum
● Mini-batch size
● Neuronas en cada layer
● Cantidad de layers
El problema
que resolveremos
Transferencia de estilo
Tipos de transferencia
de estilo
● Example based vs
Collection Based
● Collection Based
○ Paired
○ Unpaired
● Una herramienta común:
las GAN
GANs
● La mayor innovación en
arquitecturas de redes
neuronales post-2010.
● Ian Goodfellow, MIT Top 35
under 35, Forbes top 40
under 40, etc.
● Arquitectura:
○ Red Generativa
○ Red Discriminativa
○ Juego a suma nula (pérdidas
opuestas)
GANs
Perdida de GANs
● 4 redes:
○ G_x_y
○ G_y_x
○ D_x
○ D_y
● Deep
Convolutional
GANs
DCGAN Tips
Perdida de CycleGAN
Anonímo