100% encontró este documento útil (3 votos)
2K vistas

Deep Learning Con Python

Este documento proporciona una introducción al aprendizaje profundo (deep learning) y a Pytorch. Explica brevemente la historia del deep learning, sus logros y aplicaciones. Luego describe los factores que han permitido el auge reciente del deep learning, como grandes conjuntos de datos etiquetados, GPUs, mejoras en los algoritmos y software de código abierto como Pytorch y Tensorflow. Finalmente, cubre conceptos clave como las arquitecturas de redes neuronales, funciones de pérdida, optimización y regularización.

Cargado por

Rich M
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (3 votos)
2K vistas

Deep Learning Con Python

Este documento proporciona una introducción al aprendizaje profundo (deep learning) y a Pytorch. Explica brevemente la historia del deep learning, sus logros y aplicaciones. Luego describe los factores que han permitido el auge reciente del deep learning, como grandes conjuntos de datos etiquetados, GPUs, mejoras en los algoritmos y software de código abierto como Pytorch y Tensorflow. Finalmente, cubre conceptos clave como las arquitecturas de redes neuronales, funciones de pérdida, optimización y regularización.

Cargado por

Rich M
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 108

Bagde

Deep Learning
del curso con Pytorch
Juan Pablo Morales
@juanpamf
¿Qué es el Deep
Learning?
Deep Learning

El Deep learning es una área del Machine


Learning que usa redes neuronales
artificiales de múltiples capas,
Para aprender automáticamente features
de distintos niveles de abstracción,
Y resolver problemas difíciles de datos
como: imagen, texto, video, audio.
Historia

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”

Crecimiento de los datasets abiertos


Datos Labelizados

Performance de los modelos profundos


GPUs
Mejoras en los algoritmos
Software open-source
Software para
Deep Learning
Pytorch y Tensorflow
son los líderes
Comparación
´

´
Ciclo de trabajo en
Deep Learning
La importancia de entender
cómo aprende una red

● “No free lunch” theorems


○ No existe un algoritmo de aprendizaje que sea
una bala de plata
● Leaky abstractions
○ No se puede esperar una API mágica que haga
todo el trabajo por nosotros (A. Karpathy)
● Trabajo duro
○ Modelo complejo (ej. Tiempo de cómputo)
○ Entendimiento de generalización
○ Visualización
Algoritmos de aprendizaje

● Espacio de modelos H
● Una función de pérdida L
● Un método de optimización

El entrenamiento de la red corresponde a


encontrar el modelo dentro de H cuya
pérdida es mínima sobre el dataset.
Algoritmos de aprendizaje

● Predicción del modelo:


● Función de pérdida:

● Función de pérdida total:

● 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

● Definición del problema


○ X -> Y
○ Error
● Preparación de los datos
● Diseño del algoritmo de aprendizaje
● Tuning
Espacio de modelos en
Deep Learning
Espacio de modelos

Arquitectura:
Capas
Espacio de modelos
Espacio de modelos

● Dada una arquitectura, para cada valor


de los parámetros obtenemos una red
neuronal distinta.
● Por ende una arquitectura define un
espacio de modelos.
● Buscamos los parámetros óptimos
Espacio de modelos y
capacidad

● Mientras más grande el espacio de


modelos decimos que tiene más
capacidad
● Mientras más capacidad más potencial
de aprender, pero más difícil de enseñar
● Red profunda pequeña = 1M
parámetros
Capas Convolucionales

● 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

● La cantidad de canales de entrada C


● El tamaña del filtro/kernel F
● La cantidad de filtros K
● El padding P
● El stride S
Funciones de pérdida
para Deep Learning
Función de pérdida
Tipos de problema
Tipos de Problemas Ejemplo Target

Regresión Precio hotel Booking.com R

Clasificación Binaria Exámen Médico {0,1}

Clasificación Multiclase Reconocimiento de imagen {0,1,2,...N}

Clasificación Multiclase Género de una película {{0,1},{2,3,5},...}


Multilabel
Regresión

Ú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

● Otras pérdidas clásicas:


○ Hinge Loss
● Problemas específicos que pueden requerir
pérdidas específicas:
○ Distribución de probabilidad: Divergencia KL.
SGD y
Backpropagation
Una analogía
Heurísticas

● Seguir la dirección del gradiente


● Tener un componente aleatorio para
evitar mínimos locales
● Ajustar el largo del paso (learning rate)
Bajada de gradiente
SGD

● La pérdida es una suma sobre todo el


dataset
○ Costo de cómputo alto
● Introducimos aleatoriedad eligiendo al
azar un dato sobre el cual calcular la
pérdida
● Aplicamos un paso de la bajada de
gradiente
SGD

Excelentes propiedades teóricas


Mini-batch SGD

● Bajada de gradiente (dataset completo)


○ Rápido, puede bloquearse en mínimos locales
● SGD (1 dato)
○ Converge más lentamente, evita mínimos locales
● Mini-batch SGD (k datos)
○ Buen compromiso entre velocidad y
aleatoreidad.
Backpropagation
● Una red neuronal es un grafo de cómputo
Compuesto de entradas, salidas, parámetros, y funciones
lineales y de activación

● Su estructura nos permite calcular el


gradiente de forma más simple
Algoritmo de backpropagation

● Librerias como pytorch implementan de


forma automática este algoritmo
Autograd (reverse mode automatic differentiation)
Backpropagation
Las piezas del puzzle encajan
Evaluar un modelo
de Deep Learning
Recap

1. Diseñamos nuestro algoritmo de aprendizaje


a. Arquitectura (espacio de modelos)
b. Función de pérdida
c. Método de optimización
2. Minimizamos la pérdida sobre el dataset
a. Esto es equivalente a fijar el buen valor de los
parámetros de la red
¿Nos asegura esto
una buena performance
sobre nuevos datos?
Fase de evaluación: Primera
idea

● Separar dataset aleatoriamente en:


○ Entrenamiento (70%)
■ Aquí se realiza la minimización
○ Test (30%)
■ Aquí se evalúa el performance del modelo (tasa de
error)
● ¿Qué hacemos con los hiperparámetros?
Si probamos varios modelos elegiremos un buen valor,
pero nuestra estimación de performance estará cesgada.
Fase de evaluación:
Segunda idea

Separar dataset aleatoriamente en:


○ Entrenamiento (60%)
■ Aquí se realiza la minimización
○ Validación (20%)
■ Con base a la tasa de error, elegimos el
mejor valor de los hiperparámetros.
○ Test (20%)
■ Aquí se evalúa la performance del modelo
(Taza de error)
Fase de evaluación:
Segunda idea

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

● Penalizar parámetros grandes:

● Update con un término adicional de


decaimiento:
Batch Norm

● Innovación clave en el deep learning


contemporáneo (2016).
● Similar a normalizar los inputs (buena
práctica), pero en capas intermedias.
○ Para un batch de datos calcular media y
varianza.
○ Actualizar datos restando media y dividiendo
por varianza más epsilon
○ Transformar con:
¿Por qué batch norm es
eficiente?

● Alisa la función de pérdida


(MIT, 2019):
● Los mínimos a los que lleva son
planos, y se sabe que tienen
buena generalización
● Controla el internal covariate
shift (ICS)
Dropout

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)

● Iteraciones sucesivas del data scientist,


probando parámetros y esperando el
resultado
● También conocido como Student
Gradient Descent
● No es suficientemente sistemático (ej:
empresas)
Grid Search (ML tradicional)

● Definimos los hiperparametros que


vamos a optimizar
● Definimos el rango que pueden tomar
los hiperparametros
● Definimos una cantidad de valores por
probar
● Separamos el espacio de forma regular,
formando un grid
Random search

● El deep learning tiene muchos más


hiperparametros que el ML tradicional
Random search

● Random search es más eficiente para


deep learning
● La mejor forma de utilizarlo es
definiendo el rango de los parámetros
con una escala correcta
○ LR: escala logaritmica
○ Batch_size: potencias de 2
● Por costo computacional podemos optar
por optimizar un solo hiperparametro
Hiperparametros de mayor
importancia

● 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

● Red discriminativa: entropía cruzada cuando la red


debería/rechazar

● Red Generadora: inversa de la discriminativa


(juego a suma nula)
La tarea: Invierno a Verano a
Invierno a ...
Aplicaciones de CycleGAN
Aplicaciones de CycleGAN
Definiendo CycleGAN

● 4 redes:
○ G_x_y
○ G_y_x
○ D_x
○ D_y
● Deep
Convolutional
GANs
DCGAN Tips
Perdida de CycleGAN

● Pérdida de las 2 GANs


○ Con MSE en vez de cross-entropy
● Pérdida Cíclica
○ Distancia del ciclo al original (norma L1)
● Pérdida por identidad
○ Las redes que llevan hacia su dominio deben dejar
fijas las imagenes del dominio (norma L1)
¿Por qué el Deep
Learning es más
poderoso que el ML
tradicional?
Going deeper: Más capas

Hay razones por las


cuáles con más capas
obtenemos mayor
performance?
Teorema de aproximación
universal (Hornik et al. 1991)

● Toda función continua en es


aproximable por una red de una capa
suficientemente grande.
● Key Takeaway: Las redes de una capa
son igual de “expresivas” que las redes
profundas.
Capacidad y cantidad
de neuronas
Profundidad y costo en parámetros
(Telgarski et al. 2016)

● Existen funciones que pueden ser


aproximadas por una red de capas
que para ser aproximadas por redes de
capas necesitan al menos
● A mismo presupuesto en parámetros
(optimización!) las redes profundas son
altamente más expresivas.
Oscilaciones exponenciales

1 layer adicional = 2x Profundidad 1 vs Profundidad 2


oscilaciones
Los modelos profundos son
más difíciles de optimizar
Residual networks
(He et al. 2016)
Las innovaciones hacen posibles
redes cada vez más profundas
Para ir más lejos
Topics

● Embeddings y arquitecturas para NLP


● Redes Recursivas y LSTM
● Deep Reinforcement Learning
● Autoencoders y Deep Learning
Bayesiano
Recursos

● Google Scholar, Arxiv (sanity)


● Deep Learning Book
● Canal Youtube: 2 minute papers
● Deep Learning cheatsheets
● The Increbile Pytorch en Github
● Twitter
Personas

● Fei Fei Li, Justin Johnson, Andrej


Karpathy
● Andrew NG
● Roger Grosse
● Yoshua Bengio e Ian Goodfellow
● Ali Rahimi y Ben Recht
● Gabriel Peyré
● Y muchos más...
Un data scientist es un
programador

Anonímo

También podría gustarte