No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Cómo mejorar las predicciones de redes neuronales

13/16
Recursos

Refuerza y practica tu inglés con los cursos de English Academy 🚀
Screenshot 2023-10-19 at 11.56.36 AM.png

Aportes 12

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

To understand a little bit more about overfitting and underfitting, I found this example:

Let’s Imagine we have three students, let’s call them student A, B and C respectively

  • Student A is not interested in learning and he/she doesn’t pay much attention
  • Student B pays attetion in class, but he/she memorizes absolutely all that professor says, not learning the main concepts
  • Student C pays attention in class and he/she learns the gist concepts from the classes, not memorizing but learning


Now, the professor decides to take a class test previosly before the official test, the class test would be the training set and the official test would be the test set

|

  • Student A obtains 50% in this class test because he/she is not interested in learning and hence in the official test she/he will obtain a bad result as well (Underfitting)
  • Student B obtains 98% in this class test because he has memorized all, but he will obtain a lower score in the official test because he/she will have difficulties to face the new information that he/she didn’t see in classes and the class test, since he/she doesn’t learn just memorize (Overfitting)
  • Student C obtains quite similiar results in both cases, because this student learned the main concepts and doesn’t have problems with new information (Ideal Case)

|

Reference link: https://www.analyticsvidhya.com/blog/2020/02/underfitting-overfitting-best-fitting-machine-learning/

Hay varias estrategias que se pueden utilizar para mejorar las predicciones de las redes neuronales.

Recopilar más datos:

  • A menudo, el rendimiento de una red neuronal mejora cuando se tienen más datos de entrenamiento. Cuanto más variado y representativo sea el conjunto de datos, mejor será la capacidad del modelo para generalizar y realizar predicciones precisas.

Preprocesar los datos:

  • Realizar un buen preprocesamiento de los datos puede ayudar a mejorar las predicciones. Esto puede incluir normalización, estandarización, codificación de variables categóricas, eliminación de valores atípicos, manejo de valores faltantes, entre otros. El preprocesamiento adecuado puede ayudar a reducir el ruido y mejorar la calidad de los datos de entrada.

Ajustar la arquitectura de la red:

  • La elección de la arquitectura de la red neuronal es crucial. Puedes experimentar con diferentes configuraciones, como el número de capas ocultas, el número de neuronas por capa, las funciones de activación, etc. A veces, aumentar la complejidad de la red o agregar capas adicionales puede mejorar su capacidad de aprendizaje.

Regularización:

  • La regularización es una técnica que ayuda a prevenir el sobreajuste (overfitting) de la red neuronal. Puedes utilizar métodos de regularización como la regularización L1 o L2, la eliminación aleatoria de neuronas (dropout), la normalización de lotes (batch normalization), entre otros. Estas técnicas ayudan a controlar la complejidad de la red y mejorar su capacidad de generalización.

Optimización del aprendizaje:

  • La elección del algoritmo de optimización y la tasa de aprendizaje pueden afectar el rendimiento del modelo. Puedes probar diferentes algoritmos de optimización, como el descenso de gradiente estocástico (SGD), el optimizador Adam, el optimizador RMSprop, entre otros. Además, ajustar la tasa de aprendizaje puede ayudar a encontrar un equilibrio entre la velocidad de convergencia y la estabilidad del entrenamiento.

Aumento de datos (data augmentation):

  • Esta técnica consiste en generar nuevas muestras de entrenamiento a partir de las muestras existentes mediante transformaciones y perturbaciones. Por ejemplo, se pueden aplicar rotaciones, desplazamientos, cambios de escala, recortes, cambios de iluminación, entre otros, a las imágenes de entrada. El aumento de datos puede ayudar a mejorar la capacidad de generalización y evitar el sobreajuste.

Ensamblaje de modelos (model ensembling):

  • Combinar las predicciones de varios modelos puede mejorar el rendimiento. Puedes entrenar múltiples redes neuronales con diferentes configuraciones y luego combinar sus predicciones utilizando métodos como el promedio, votación o stacking. Esto puede ayudar a reducir el sesgo y la varianza y mejorar la precisión del modelo final.
Concepto de época en ML: Cada ciclo de corrección de propagación hacia atrás y hacia adelante para reducir la pérdida se denomina época. En resumen, la propagación hacia atrás consiste en determinar las mejores ponderaciones y sesgos de entrada para obtener un resultado más preciso o "minimizar la pérdida". <https://learn.microsoft.com/es-es/archive/msdn-magazine/2019/april/artificially-intelligent-how-do-neural-networks-learn> Una ejecución completa del conjunto de datos de entrenamiento a través del algoritmo se conoce como una época en el aprendizaje automático. <https://coinmarketcap.com/academy/es/glossary/epoch> Epoch en el aprendizaje automático, una época (o «epoch» en inglés) en inteligencia artificial se refiere a una iteración completa de entrenamiento de un modelo de aprendizaje automático en un conjunto de datos. Durante una época, el modelo recibe una serie de ejemplos de entrenamiento y ajusta sus parámetros (como los pesos de las conexiones en una red neuronal) en función de los errores cometidos en la predicción de las respuestas correctas. Una vez que todos los ejemplos de entrenamiento han sido vistos por el modelo, se completa una época y se repite el proceso de entrenamiento para tantas épocas como sea necesario para mejorar la precisión del modelo. El número de épocas necesarias para entrenar un modelo depende de varios factores, como el tamaño del conjunto de datos y la complejidad del modelo. <https://ciberseguridadmax.com/epoch/> Una Época es cuando un conjunto de datos ENTERO se pasa hacia adelante y hacia atrás a través de la red neuronal solo UNA VEZ. Dado que una época es demasiado grande para alimentar la computadora a la vez, la dividimos en varios lotes (`batch`) más pequeños. <https://bookdown.org/victor_morales/TecnicasML/redes-neuronales.html> Recuerde que cada neurona de una red neuronal toma los valores de entrada multiplicados por una ponderación para representar la fortaleza de esa conexión. La propagación hacia atrás detecta las ponderaciones correctas que se deben aplicar a los nodos de una red neuronal mediante la comparación de las salidas actuales de la red con los resultados correctos o deseados. La diferencia entre el resultado deseado y el resultado actual se calcula mediante la función de pérdida o costo. En otras palabras, la función de pérdida nos indica el grado de precisión que tiene nuestra red neuronal al realizar predicciones para una entrada determinada. La fórmula para calcular la pérdida está representada en la **figura 1**. No deje que las matemáticas le intimiden: solo se trata de sumar los cuadrados de todas las diferencias. Inicialmente, las ponderaciones y sesgos se suelen establecer en valores aleatorios que, a menudo, producen un valor alto de pérdida cuando se empieza a entrenar una red neuronal. La función de costo o pérdida **Figura 1 La función de costo o pérdida** A continuación, el algoritmo ajusta cada ponderación para minimizar la diferencia entre el valor calculado y el valor correcto. El término "propagación hacia atrás" procede del hecho de que el algoritmo retrocede y ajusta las ponderaciones y los sesgos después de calcular una respuesta. Cuanto menor sea la pérdida para una red, más precisa será. A continuación, se puede cuantificar el proceso de aprendizaje como la reducción del resultado de la función de pérdida. Cada ciclo de corrección de propagación hacia atrás y hacia adelante para reducir la pérdida se denomina época. En resumen, la propagación hacia atrás consiste en determinar las mejores ponderaciones y sesgos de entrada para obtener un resultado más preciso o "minimizar la pérdida". Si piensa que esto consume muchos recursos de proceso, está en lo cierto. De hecho, la capacidad de proceso era insuficiente hasta hace relativamente poco para que este proceso resultara práctico para el uso general. <https://learn.microsoft.com/es-es/archive/msdn-magazine/2019/april/artificially-intelligent-how-do-neural-networks-learn>

Muy buen curso

![](https://static.platzi.com/media/user_upload/image-7a46d047-c4a3-43d3-b280-7cebd4994fba.jpg)
El rendimiento nos puede indicar si el modelo es bueno. Al pasar por un procedimiento de entrenamiento con un pase hacia adelante, un calculo de perdidas y un pase hacia atras sobre cada punto de datos, se cumple un proceso llamado **epoca.** A menudo se pueden hacer multiples epocas hasta que el modelo aprenda los patrones que necesita para poder hacer una prediccion. Sin embargo, como las redes neuronales tienden a hacer Overfit, se puede ver que el rendimiento del aprendizaje en los datos de entrenamiento aumenta con el tiempo. Se puede utilizar con conjunto de datos de validacion para preguntar si efectivamente estos patrones de la red neuronal estan aprendiendo. De esta forma, el numero optimo de epocas y el modelo que deberias usar es aquel en el que el rendimiento alcanza su punto maximo y luego no cambia.

El sobreajuste (overfitting) es un problema común en el aprendizaje de máquinas y ocurre cuando el modelo se ajusta demasiado a los datos de entrenamiento y no generaliza bien a nuevos datos. Aquí hay algunas estrategias para prevenir el overfitting:

Más datos: Recopilar más datos de entrenamiento puede ayudar a prevenir el sobreajuste, ya que brinda al modelo una mayor variedad de ejemplos para aprender y generalizar. Cuantos más datos tenga, es menos probable que el modelo se ajuste demasiado a patrones específicos y se sobreajuste.

Validación cruzada: Utilizar técnicas de validación cruzada, como la validación cruzada k-fold, puede proporcionar una evaluación más robusta del rendimiento del modelo. Dividir el conjunto de datos en múltiples conjuntos de entrenamiento y validación, y promediar los resultados de varias iteraciones de entrenamiento y evaluación, puede ayudar a detectar si el modelo está sobreajustado.

Regularización: La regularización es una técnica que agrega una penalización adicional a la función de pérdida durante el entrenamiento. Los métodos de regularización más comunes son la regularización L1 y L2, que agregan términos de penalización basados en la magnitud de los pesos del modelo. Estos términos de penalización ayudan a evitar que los pesos se vuelvan demasiado grandes y reducen la complejidad del modelo, lo que puede ayudar a prevenir el sobreajuste.

Dropout: El dropout es una técnica que se aplica durante el entrenamiento y consiste en desactivar aleatoriamente un porcentaje de neuronas en cada capa durante cada paso de entrenamiento. Esto evita que las neuronas dependan demasiado de las demás y reduce la posibilidad de sobreajuste. Durante la inferencia o la evaluación, no se aplica el dropout y se utilizan todas las neuronas.

Early stopping: El early stopping implica detener el entrenamiento del modelo antes de que alcance el número máximo de épocas. Se monitorea el rendimiento del modelo en un conjunto de validación y se detiene el entrenamiento cuando el rendimiento en el conjunto de validación comienza a empeorar. Esto evita que el modelo se ajuste demasiado a los datos de entrenamiento y ayuda a encontrar un punto óptimo en términos de rendimiento en datos no vistos.

Reducción de la complejidad del modelo: Reducir la complejidad del modelo puede ayudar a prevenir el sobreajuste. Esto puede implicar la reducción del número de capas ocultas, el número de neuronas en cada capa o incluso el uso de una arquitectura de red neuronal más simple en general. Un modelo más simple es menos propenso a sobreajustarse y puede generalizar mejor.

Es importante recordar que no existe una solución única para prevenir el sobreajuste, y la elección de las estrategias adecuadas dependerá del problema y los datos específicos. A menudo, es útil experimentar con diferentes enfoques y encontrar la combinación adecuada de técnicas para obtener el mejor rendimiento del modelo.

Hay varias estrategias que se pueden utilizar para mejorar las predicciones de las redes neuronales. A continuación, se presentan algunas técnicas comunes:

Recopilar más datos: El rendimiento de las redes neuronales puede mejorar al proporcionar más datos de entrenamiento. Cuanto más variado y representativo sea el conjunto de datos, mejor podrá generalizar el modelo.

Preprocesamiento de datos: Aplicar técnicas de preprocesamiento de datos puede ayudar a mejorar las predicciones. Esto incluye la normalización de características, el manejo de valores atípicos, la eliminación de ruido y la selección de características relevantes.

Ajustar la arquitectura de la red: La elección de una arquitectura adecuada es fundamental. Puede considerar aumentar o disminuir el número de capas ocultas, el número de neuronas en cada capa, la elección de funciones de activación y otros hiperparámetros relacionados con la arquitectura de la red. La arquitectura debe adaptarse al problema específico y a los datos disponibles.

Regularización: La regularización es una técnica utilizada para evitar el sobreajuste (overfitting). Puede aplicar técnicas de regularización como la regularización L1 o L2, la eliminación de dropout o la normalización por lotes (batch normalization) para evitar que el modelo se ajuste demasiado a los datos de entrenamiento y mejore su capacidad de generalización.

Ajuste de hiperparámetros: Los hiperparámetros, como la tasa de aprendizaje, el tamaño del lote (batch size), el número de épocas, entre otros, pueden tener un impacto significativo en el rendimiento del modelo. Puede utilizar técnicas como la búsqueda en cuadrícula (grid search) o la optimización bayesiana para encontrar los mejores valores de hiperparámetros.

Ensamblado de modelos: Combinar las predicciones de varios modelos puede mejorar el rendimiento general. Esto se puede lograr mediante técnicas como el promedio de modelos, la votación o el apilamiento (stacking).

Aumento de datos: El aumento de datos implica generar ejemplos adicionales a partir de los datos existentes mediante técnicas como la rotación, el recorte, la inversión, la ampliación o la adición de ruido. Esto puede ayudar a ampliar el conjunto de datos de entrenamiento y mejorar la capacidad del modelo para generalizar.

Estas son solo algunas de las estrategias comunes para mejorar las predicciones de las redes neuronales. La elección de la técnica adecuada dependerá del problema específico y de los datos disponibles. Es recomendable probar diferentes enfoques y experimentar con diferentes combinaciones para obtener los mejores resultados.

Es increíble que con herramientas matemáticas dispuestas en nodos y relacionando estos mismos entre si, podamos manipular grandes cuerpos de información para entender los negocios, la vida, las enfermedades, nuestros sistemas, nuestras herramientas (el internet mismo), y en resumen, para vivir mejor. Que increible.

Los nodos ‘dropout’ son nodos específicos que no activamos en casos aleatorios para evitar que nuestro modelo haga overfitting. Es decir, arbitrariamente decidimos que ciertos nodos en una de nuestras capas ocultas/hidden layers no entrarán dentro del rango de activación