Introducción al aprendizaje estadı́stico
Aprendizaje profundo
Departamento de Matemática
FIQ - Basado en los slides del curso Introduction to machine learning de Hastie y
Tibshirani
Aprendizaje Profundo
Las redes neuronales se hicieron populares en la década
de 1980.
Muchos éxitos, entusiasmo y grandes conferencias:
NeurIPS, Snowbird.
Luego llegaron las SVMs, Bosques Aleatorios e Impulso
en la década de 1990, y las Redes Neuronales pasaron a
un segundo plano.
Resurgieron alrededor de 2010 como Aprendizaje
Profundo.
Para la década de 2020 muy dominantes y exitosas.
Parte del éxito se debe a enormes mejoras en la potencia
informática, conjuntos de entrenamiento más grandes y
software: Tensorflow y PyTorch.
Gran parte del crédito es para tres pioneros y sus estudiantes:
Yann LeCun, Geoffrey Hinton y Yoshua Bengio, quienes
recibieron el Premio Turing 2019 por su trabajo en Redes
Neuronales.
Red Neuronal de una Capa
K
X
f (X) = β0 + βk hk (X)
k=1
K
X p
X
= β0 + g(wk0 + wkj Xj )
k=1 j=1
Detalles
Pp
Ak = hk (X) = g(wk0 + j=1 wkj Xj ): activaciones en la capa
oculta.
g(z) se llama la función de activación. Populares: la sigmoide y
la rectificada lineal.
Funciones de activación en las capas ocultas: tı́picamente no
lineales, de lo contrario el modelo colapsa a un modelo lineal.
Las redes neuronales profundas apilan múltiples capas ocultas,
permitiendo transformaciones no lineales más complejas.
Pn
El modelo se ajusta minimizando n1 i=1 (yi − f (xi ))2 (por
ejemplo regresión).
Red Neuronal Multicapa
Ejemplo: Dı́gitos MNIST. Dı́gitos manuscritos
Dı́gitos MNIST. Dı́gitos manuscritos
Imágenes en escala de grises de 28 × 28
60K para entrenamiento, 10K para pruebas
Las caracterı́sticas son los 784 valores de pixel en escala
de grises ∈ 0, 255
Las etiquetas son la clase de dı́gito 0-9
Meta: construir un clasificador para predecir la clase de
imagen.
Construimos una red de dos capas con 256 unidades en la
primera capa, 128 unidades en la segunda capa y 10
unidades en la capa de salida.
Junto con los interceptos (llamados sesgos) hay 235.146
parámetros (referidos como pesos)
Detalles de la capa de salida
(2)
Sea Zm = m0 + K
P 2
l=1 ml Al , m = 0, 1, . . . , 9 las 10
combinaciones lineales de las activaciones en la segunda
capa.
La función de activación de salida codifica la función
softmax
eZm
fm (X) = P (Y = m|X) = P9 .
Zl
l=0 e
Ajustamos el modelo minimizando la log-verosimilitud
multinomial negativa (o entropı́a cruzada):
n X
X 9
yim log(fm (xi )).
i=1 m=0
yim es 1 si la verdadera clase para la observación i es m,
de lo contrario 0 - codificación one-hot.
Resultados
Exito temprano de las redes neuronales en los años 90.
Con tantos parámetros, la regularización es esencial.
Algunos detalles de regularización y ajuste vendrán
después: ridge y dropout.
Problema muy sobreexplotado - las mejores tasas
reportadas son < 0.5%!
Se reporta que la tasa de error humano es alrededor de
0.2%, o 20 de las 10K imágenes de prueba.
Red neuronal convolucional (CNN)
¿ Cuándo usar aprendizaje profundo
Las CNN han tenido enormes éxitos en clasificación de
imágenes y modelado, y están comenzando a usarse en
diagnóstico médico. Ejemplos incluyen mamografı́a digital,
oftalmologı́a, escaneos de MRI, y radiografı́as digitales.
Las RNN han tenido grandes victorias en modelado de
voz, traducción de idiomas, y pronóstico.
¿Deberı́amos siempre usar modelos de aprendizaje
profundo?
A menudo los grandes éxitos ocurren cuando la relación
señal-ruido es alta, por ejemplo en reconocimiento de
imágenes y traducción de idiomas. Los conjuntos de datos
son grandes y el sobreajuste no es un gran problema.
¿ Cuándo usar aprendizaje profundo
Para datos más ruidosos, modelos más simples a menudo
funcionan mejor.
Vayamos a los datos Hitters estudiados antes.
Este es un problema de regresión, donde el objetivo es
predecir el Salary de un jugador de béisbol en 1987 utilizando
sus estadı́sticas de rendimiento de 1986. Después de eliminar a
los jugadores con respuestas faltantes, nos quedan 263 jugadores
y 19 variables. Dividimos los datos aleatoriamente en un
conjunto de entrenamiento de 176 jugadores (dos tercios) y un
conjunto de prueba de 87 jugadores (un tercio).
Continuación del ejemplo
Se utilizaron tres métodos para ajustar un modelo de regresión
a estos datos.
Se utilizó un modelo lineal para ajustar los datos de
entrenamiento y hacer predicciones sobre los datos de
prueba. El modelo tiene 20 parámetros.
Se ajustó el mismo modelo lineal con regularización lasso.
El parámetro de ajuste se seleccionó mediante validación
cruzada de 10 folders en los datos de entrenamiento. Se
seleccionó un modelo con 12 variables con coeficientes
distintos de cero.
Se ajustó una red neuronal con una capa oculta que
consistı́a en 64 unidades ReLU a los datos. Este modelo
tiene 1,409 parámetros.
Continuación del ejemplo
La Tabla 10.2 compara los resultados. Vemos un rendimiento
similar para los tres modelos.
Los autores se pasaron una buena cantidad de tiempo
manipulando los parámetros de configuración de la red
neuronal para lograr estos resultados. Es posible que con más
tiempo y la forma y cantidad de regularización adecuadas, se
podrı́a igualar o incluso superar la regresión lineal y el lasso.
Pero con gran facilidad se obtuvieron modelos lineales que
funcionan bien.
Continuación del ejemplo
Los modelos lineales son mucho más fáciles de presentar y
comprender que la red neuronal, que es esencialmente una
caja negra. El lasso seleccionó 12 de las 19 variables para
hacer su predicción.
Ası́ que en casos como este, nos va mucho mejor siguiendo el
principio de la navaja de Occam: cuando nos enfrentamos a
varios métodos que dan un rendimiento aproximadamente
equivalente, elegimos el más simple.
Conclusión: ¿ Cuándo usar aprendizaje profundo
Tenemos a nuestra disposición una serie de herramientas muy
potentes, que incluyen redes neuronales, bosques aleatorios,
máquinas de vectores de soporte y modelos aditivos
generalizados, por nombrar algunos. Y luego tenemos
modelos lineales y variantes simples de estos.
Cuando nos enfrentamos a nuevos problemas de modelado y
predicción de datos, es tentador siempre optar por los métodos
nuevos y de moda. A menudo dan resultados extremadamente
impresionantes, especialmente cuando los conjuntos de datos
son muy grandes y pueden admitir el ajuste de modelos no
lineales de alta dimensión.
Conclusión: ¿ Cuándo usar aprendizaje profundo
Sin embargo, si podemos producir modelos con las herramien-
tas más simples que se desempeñan tan bien, es probable que
sean más fáciles de ajustar y comprender, y potencialmente
menos frágiles que los enfoques más complejos. Siempre que
sea posible, tiene sentido probar también los modelos más sim-
ples y luego tomar una decisión basada en el intercambio
rendimiento-complejidad.
Normalmente esperarı́amos que el aprendizaje profundo sea
una opción atractiva cuando el tamaño de la muestra del con-
junto de entrenamiento es extremadamente grande y cuando la
interpretabilidad del modelo no es una prioridad alta.
Ajustando las redes neuronales
Empezamos con una red de una capa y respuesta Y continua.
Este problema es difı́cil porque el objetivo la función
objetivo es no convexa.
A pesar de esto, han evolucionado algoritmos efectivos
que pueden optimizar problemas complejos de redes
neuronales de manera eficiente.
Funciones no convexas y gradiente descendiente
1 Pn
Sea R(θ) = 2 i=1 (yi − fθ (xi ))2 con θ = ({wk }K
k=1 , β).
1. Comenzar con una conjetura θ0 para todos los
parámetros en θ, y establecer t = 0.
2. Iterar hasta que el objetivo R(θ) deje de disminuir:
(a) Encontrar un vector δ que refleje un pequeño cambio en
θ, tal que θt+1 = θt + δ reduzca el objetivo; es decir,
R(θt+1 ) < R(θt ).
(b) Establecer t ← t + 1.
Descenso de gradiente
En este ejemplo simple alcanzamos el mı́nimo global.
Si hubiéramos comenzado un poco a la izquierda de θ0
habrı́amos ido en la otra dirección, y terminado en un
mı́nimo local.
Aunque θ es multidimensional, hemos representado el
proceso como unidimensional. Es mucho más difı́cil
identificar si uno está en un mı́nimo local en altas
dimensiones.
Cómo encontrar una dirección δ que apunte cuesta abajo?
Gradiente descendiente
Cómo encontrar una dirección δ que apunte cuesta abajo?
Calculamos el vector de gradiente
∂R(θ)
∇R(θ) =
∂θ θ=θt
es decir, el vector de derivadas parciales en el punto θt en
el que nos encontramos.
El gradiente apunta cuesta arriba, ası́ que nuestra
actualización es δ = −ρ∇R(θt ) o
θt+1 ← θt − ρ∇R(θt ),
donde ρ es la tasa de aprendizaje (tı́picamente pequeña,
[Link]. ρ = 0.001).
Gradientes y retropropagación
¿ Cómo encontramos a ese gradiente y lo evaluamos en el
punto en el que estamos?
R(θ) = ni=1 Ri (θ) es una suma, ası́ que el gradiente es la
P
suma de los gradientes.
PK
Ri (θ) = 21 (yi − fθ (xi ))2 = 21 (yi − β0 − k=1 βk g(zik ))
2
Gradientes y retropropagación
PK
Ri (θ) = 21 (yi − fθ (xi ))2 = 21 (yi − β0 − k=1 βk g(zik ))
2
Pp
Para facilitar la notación, sea zik = wk0 + j=1 wkj xij . La
retropropagación usa la regla de la cadena para
diferenciación:
∂Ri (θ) ∂Ri (θ) ∂fθ (xi )
= ·
∂βk ∂fθ (xi ) ∂βk
= −(yi − fθ (xi )) · g(zik )
∂Ri (θ) ∂Ri (θ) ∂fθ (xi ) ∂g(zik ) ∂zik
= · · ·
∂wkj ∂fθ (xi ) ∂g(zik ) ∂zik ∂wkj
= −(yi − fθ (xi )) · βk · g 0 (zik ) · xij
Gradientes y retropropagación
∂Ri (θ) ∂Ri (θ) ∂fθ (xi )
= ·
∂βk ∂fθ (xi ) ∂βk
= −(yi − fθ (xi )) · g(zik )
∂Ri (θ) ∂Ri (θ) ∂fθ (xi ) ∂g(zik ) ∂zik
= · · ·
∂wkj ∂fθ (xi ) ∂g(zik ) ∂zik ∂wkj
= −(yi − fθ (xi )) · βk · g 0 (zik ) · xij
Manos a la obra. Gráfico computacional para esta
función
Manos a la obra
Manos a la obra
Manos a la obra
Manos a la obra
Manos a la obra
Trucos del oficio en gradiente descendiente
Aprendizaje lento. El descenso de gradiente es lento, y
una pequeña tasa de aprendizaje ρ lo hace aún más lento.
Con parada temprana, esto es una forma de no hacer
over-fitting.
Descenso de gradiente estocástico. En lugar de calcular el
gradiente usando todos los datos, usamos un pequeño
minibatch elegido al azar en cada paso. Por ejemplo, para
los datos MNIST, con n = 60K, usamos minibatches de
128 observaciones.
Una época es un conteo de iteraciones e implica el
número de actualizaciones por minibatch tal que en total
se han procesado n muestras; es decir, 60K/128 ∼ 469
para MNIST.
Regularización. Se pueden usar regularización ridge y
lasso para encoger los pesos en cada capa. Otras dos
formas populares de regularización son dropout y
aumentación.
Dropout Learning
En cada actualización de SGD, aleatoriamente eliminar
pesos con probabilidad φ.
Aumentación de datos: Hacer muchas copias de cada
(xi , yi ) y agregar una pequeña cantidad de ruido
gaussiano a los xi - una pequeña nube alrededor de cada
observación - pero dejar las copias de yi intactas! Esto
hace que el ajuste sea robusto a pequeñas perturbaciones
en xi .
Aumentación de datos
La aumentación de datos es especialmente efectiva con SGD,
aquı́ demostrado para una CNN y clasificación de imágenes.
Se hacen transformaciones naturales de cada imagen de
entrenamiento, haciendo en definitiva una nube de
imágenes alrededor de cada imagen original de
entrenamiento.
La etiqueta se deja sin cambios - en cada caso sigue
siendo tigre.
Mejora el rendimiento de la CNN.
Ajuste de red
La red
se considera relativamente sencilla; sin embargo, requiere una
serie de opciones que todas tienen un efecto en el rendimiento:
Ajuste de red. Continuación
El número de capas ocultas y el número de unidades por
capa. Hoy se considera que el número de unidades por
capa oculta puede ser grande y el overfitting se puede
controlar a través de las diversas formas de regularización.
Parámetros de ajuste de regularización. Estos incluyen la
tasa de abandono φ y la fuerza λ de la regularización
lasso y ridge, y tı́picamente se establecen por separado en
cada capa.
Detalles del descenso de gradiente estocástico. Estos
incluyen el tamaño del batch, el número de épocas y, si se
usa, detalles de la ampliación de datos.
Ajuste de red. Continuación
Opciones como estas pueden marcar la diferencia. El ejemplo
MNIST se puede lograr un error de clasificación de 1,8%
después de algunas pruebas y errores. Un ajuste y
entrenamiento más finos de una red similar pueden obtener un
error por debajo del 1% en estos datos, pero el proceso de
manipulación puede ser tedioso y puede resultar en overfitting
si se realiza de manera descuidada.