TICS-579-Deep Learning

Clase 5: Model Training

Alfonso Tobar-Arancibia

Entrenamiento de la Red

A diferencia de un Modelo de Machine Learning, las Redes Neuronales se entrenan de manera progresiva (se espera una mejora en cada Epoch). Si nuestra Arquitectura es apropiada nosotros deberíamos esperar que el Loss de nuestra red siempre disminuya. ¿Por qué?

  • ¿Siempre buscamos la Red que tenga el mejor Loss de Entrenamiento?
  • Al igual que en los modelos de Machine Learning debemos evitar a toda costa el Overfitting. ¿Qué es el overfitting?

Entrenamiento de la Red

Bias-Variance Tradeoff (Dilema Sesgo-Varianza)

Probablemente el concepto más importante para determinar si un modelo tiene potencial o no. Corresponden a dos tipos de errores que pueden sufrir los modelos de ML.

Bias
Corresponde al sesgo, y tiene que ver con la diferencia entre el valor real y el valor predicho. Bajo sesgo implica una mejor predicción.
Variance
Corresponde a la varianza y tiene que ver con la dispersión dada por los valores predichos. Baja Varianza implica un modelo más estable pero menos flexible.

En general hay que buscar el equilibrio entre ambos tipos de errores:

  • Alto Sesgo y baja Varianza: Underfitting.
  • Bajo Sesgo y Alta Varianza: Overfitting.

Model Validation

Validación Cruzada

Se refiere al proceso de entrenar un modelo en una cierta porción de los datos, pero validar sus rendimiento y capacidad de generalización en un set de datos no vistos por el modelo al momento de entrenar.

  • ¿Qué es la Generalización?

Los dos métodos más populares que se usan en Machine Learning son Holdout y K-Fold. Más métodos se pueden encontrar en los docs de Scikit-Learn.

Debido a los volúmenes de datos utilizados, el esquema de validación más utilizado es el Holdout.

Model Validation: Holdout

Train

Se utiliza para entrenar.

Validation

Se utiliza para medir el nivel de generalización del modelo.

Test

Se utiliza para evaluar reportando una métrica de diseño del Modelo.

OJO

Loss no es lo mismo que métrica. ¿Cuál es la diferencia?

A diferencia de un modelo de Machine Learning el proceso de validación del modelo se realiza en paralelo con el entrenamiento. Es decir, se entrena y valida el modelo Epoch a Epoch.

Model Validation: K-Fold

Corresponde al proceso de Holdout pero repetido \(K\) veces.

Model Evaluation

La Evaluación del Modelo se hará en torno a una métrica definida a priori por el modelador. ¿Entonces es un Hiperparámetro?

La métrica a utilizar está íntimamente ligada al tipo de modelo.

Clasificación

  • \(Accuracy = \frac{1}{m} \sum_{i = 1}^m 1\{y_i = \hat{y_i}\}\)
  • \(Precision = \frac{TP}{TP + FP}\)
  • \(Recall = \frac{TP}{TP + FN}\)
  • \(F1-Score = 2 \cdot \frac{Precision \cdot Recall}{Precision + Recall}\)

Regresión

  • \(RMSE = \frac{1}{m} \sum_{i=1}^m (y_i-\hat{y_i})^2\)
  • \(MAE = \frac{1}{m} \sum_{i=1}^m |y_i - \hat{y_i}|\)
  • \(MAPE = 100 \cdot \frac{1}{m} \sum_{i=1}^m \frac{|y_i-\hat{y_i}|}{max(\epsilon,y_i)}\)
  • \(SMAPE = \frac{2}{m} \sum_{i=1}^2 \frac{|y_i - \hat{y_i} |}{max(|y_i + \hat{y_i}|,\epsilon)}\)
  • Las métricas acá explicadas son métricas básicas de cualquier modelo general de Clasificación y Regresión. Existen muchas otras métricas que son específicas para campos específicos. IoU por ejemplo es una Métrica de Segmentación Semántica, Map@k es una métrica para modelos de Recomendación, Bleu o Rouge son métricas para NLP, etc. Para ver millones de métricas pueden ver las docs de Torchmetrics.

Es posible utilizar métricas para ir monitoreando el progreso del modelo Epoch a Epoch.

Training-Validation Loop

Corresponde a la modificación del Training Loop con el Objetivo de Entrenar y Validar de manera simultánea.

Se realiza un Forward Pass con datos de Train y se calcula el Loss asociado. Internamente, Pytorch comienza a acumular Gradientes.

Training-Validation Loop

Se realiza un Backward Pass, se aplican los gradientes y se aplica el Update Rule.

Training-Validation Loop

Se realiza un nuevo Forward Pass, pero esta vez con los datos de Validación. En este caso Pytorch internamente sigue acumulando gradientes, lo cual no es correcto. Para ello se debe utilizar un with torch.no_grad(). Se calcula un Validation Loss.

Monitoreo de un Modelo: Validation Curve

Es importante ser capaz de identificar el momento exacto en el cual el momento comienza su overfitting. Para ello se utiliza el “Checkpointing”.

Checkpoint

  • Corresponde a un snapshot del modelo a un cierto punto. En la práctica se almacenan los parámetros del mejor modelo y del último Epoch.

EarlyStopping

  • Teoricamente, una vez que la red Neuronal alcanza el punto de Overfitting ya no tiene sentido seguir el entrenamiento. Por lo tanto es posible detener el entrenamiento bajo una cierta condición.

Continuará