You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
10 Hrs
0 Min
38 Seg

Entrenamiento, funciones de pérdida y optimizadores

9/24
Resources

How to select a loss function and optimizer in PyTorch?

Selecting the right loss function and optimizer is crucial to effectively train a linear regression model. PyTorch facilitates this process by offering a variety of options within its nn and torch.optim modules. The PyTorch documentation is an excellent source of information for exploring these alternatives, along with similar frameworks such as NumPy, which also offer a number of loss functions.

What is the L1Loss loss function and why is it recommended?

The loss function is essential for measuring how far the model predictions are from the actual values. For this linear regression example, we use the L1Loss function, also known as mean absolute error (MAE). This function is popular for tabular data with continuous variables, as it measures the average magnitude of the errors in a set of predictions without considering their direction.

To implement L1Loss in PyTorch, it is used as follows:

import torch.nn as nn
 # Define loss functionfn_loss = nn.L1Loss()

How to set up an optimizer like SGD?

The optimization process is key to improve the parameters of our model through methods such as Stochastic Gradient Descent (SGD). To set it up in PyTorch, it is important to define the learning rate, a hyperparameter that determines the magnitude of the parameter updates.

A recommended practice when setting the learning rate is to start with a value such as 0.01, experimenting later to find the optimal value. The optimizer is configured as follows:

import torch.optim as optim
 # Define optimizeroptimizer optimizer = optim.SGD(model.parameters(),  lr=0.01)

How to train a linear regression model?

Training a model involves multiple steps, starting with the initialization of important hyperparameters such as the number of epochs. These determine how many times the training data will be checked.

What are the steps in the training loop?

  1. Train mode: We set up the model in training mode, allowing us to improve parameters and calculate gradients.
  2. Prediction and loss calculation: perform a prediction with the training data and calculate the resulting loss:
    y_pred = model(x_training)loss = fn_loss(y_pred, y_training).
  3. Gradient reset: It is crucial to reset the gradients to get new clean values at each iteration.
    optimizer.zero_grad()
    .
  4. Backpropagation: We calculate the gradients of the loss function with respect to the parameters.
    loss.backward()
  5. Parameter update: We apply the learning rate to adjust the parameters.
    optimizer.step()

How to evaluate the model after training?

The evaluation mode, unlike the training mode, does not modify the model parameters. It serves to validate how the model predicts the data when it is not trained:

 with torch.no_grad(): # Disables gradient calculation model.eval() y_pred_test = model(x_test) lost_test = fn_lost(y_pred_test, y_test.float()).

Correctly choosing and adapting these elements based on the characteristics of the data is vital to maximize model performance. As you move into more complex applications, continued experimentation and tweaking of these hyperparameters will lead to more accurate results. Go ahead, keep exploring and optimizing your models!

Contributions 5

Questions 1

Sort by:

Want to see more contributions, questions and answers from the community?


Para los que no comprendan aun bien que es el Stochastic Gradient Descent

El Stochastis Gradient Descent que es el optimizador que utilizamos aqui es uno de los optimizadores mas comunes, simplemente es hacer un Gradient Descent pero en vez de tomar todos los datos y hacer calculos a partir de ellos, tomamos pequenos lotes, es decir una muestra de los datos para hacer los calculos sobre esto, que nos ahorra mucho el tiempo de entrenamiento del modelo.


Si no entiendes que es el Gradient Descent

Nota: Gradient o gradiente es una forma de decirle a las derivadas parciales de una funcion, a la manera más simple, siempre que leas gradiente entiende muchas derivadas de una funcion.

💡 De manera simple es ir viendo como bajamos la funcion de error, por medio de ver que tan lejos estamos del numero optimo de error que buscamos, y vamos modificando por iteracion. El gradiente no es mas que derivar, ver si hay que subir o bajar el gradiente y entonces le restamos este gradiente al parametro actual.

Por que restamos? porque el gradiente calcula hacia donde va la funcion y para moverla al lado contrario con tal de llegar a 0. Es decir, si lo vemos como una brujula, el gradiente nos dice que vamos subiendo, cuando en realidad queremos bajar entonces por eso la resta.


Videos (En ingles) que puede funcionar entender a profundidad estos temas

Gradient Descent

Stochastic Gradien Descent

Creo que hay un error en la guía, el MAE es el error absoluto medio, no cuadrático
Con SGD, lo que pasa es que si pudieramos visualizar es que la "convergencia" hacia el minimo global se hace mas "saltarin" coin respecto al Gradient Descendent - el cual actualiza los pesos en toda el dataset de entrenamiento. Si SGD lo combinamos con el momentun (otro parametro del optimizador), lo que hace es que eventualmente en funciones de perdida con valles , el SGD + momentum , hace que "brinque" los minimos locales y siga buscando el minimo global
■ Resumen: La elección de la función de pérdida y el optimizador debe estar guiada por la naturaleza del problema, la arquitectura del modelo, la estabilidad y la convergencia deseada, y los recursos disponibles. Para la mayoría de los casos SGD funciona bien, pero dataset más complejos, precisarán de otras funciones. * Seleccionaremos una función de pérdida y el optimizador para el entrenamiento de modelo. La función de pérdida mide que tan equivocadas están las predicciones del modelo, ``y_pred`` en comparación con las etiquetas. * El optimizador le indica a los modelos como actualizar sus parámetros internos para reducir la pérdida. Para el siguiente ejemplo podremos usar el Error cuadrático medio, como la función de pérdida ``torch.nn-L1Loss`` para medir la diferencia absoluta entre dos puntos y tomar la media en todos los ejemplos. * Para el optimizador usaremos ``Stocastic Gradient Descent`` SGD como optimizador donde los parámetros serán el ``volume`` y el ``bias``, ``lr`` es la tasa de aprendizaje para que el optimizador actualice los pesos. (O cuales sean tus parámetros)
El descenso de gradiente estocástico (SGD) es como bajar una montaña a ciegas. En cada paso, sientes la pendiente justo debajo de ti y das un paso en esa dirección. Repites esto muchas veces hasta llegar al punto más bajo (o casi). Es rápido pero a veces puede no ser la ruta más directa.