No tienes acceso a esta clase

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

Regularización - Dropout

21/29
Recursos

Aportes 15

Preguntas 3

Ordenar por:

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

en el método de regularización, el parámetro no es delta, es la letra griega lambda.

El overfitting es el sobre ajuste de los datos o dicho de otro modo la memorización de los datos.

Se debe reducir la complejidad del modelo.

  • Con la regularización se penaliza a la función de coste, usando el valor de los pesos.

  • El dropout desconecta o apaga a un % de neuronas para en cada iteración. Esto es para evitar la dependencia entre neuronas.

Interesante, no conocía el dropout ni regularización.
La red conspira en mi contra. Nunca pensé en eso 😂

Una cosa que no me había quedado claro y que me ayudó a entender toda la explicación:
La función de costo es lo mismo que la función de pérdida 😄 El profesor usa los dos términos de forma indistinta porque ambos se refieren a las mismas funciones, tales como el error cuadrático medio, el binary crossentropy y el categorical crossentropy que nos permiten evaluar el error de las predicciones.

Regularización - Dropout

Overfitting es un problema que ocurre cuando el modelo se aprende de memoria los datos en lugar de aprender acerca del problema que se le presenta

Una red neuronal puede llegar a overfitting porque cada neurona se vuelve más especifica con los datos

Una de las formas más sencillas de reducir el overfitting es usando un modelo más pequeño.

Esto es si tenemos una red demasiado compleja con demasiados parámetros se apegará demasiado a estos datos haciendo overfitting

Y si tenemos una red demasiado sencilla llegaría a underfitting porque no lograría adaptarse al problema siendo tan pequeña

no existe receta de cocina para evitar el underfitting y el overfitting, ni para saber cuántas capas debería tener mi red ni cuantas neuronas debería tener cada capa, aun así, una técnica es empezar con un modelo muy pequeño y una vez cómo se comporta iterar

Regularización

viene de un problema de hacer los datos más regulares

Occam’s Razor “When faced with two equally good hypothesis, always choose the simpler one.”

Reducir la complejidad del modelo, para hacer esto debemos reducir los pesos que arroja nuestra red al entrenar, la regularización se lograr con una fórmula matemática

en la cual la regularización castiga la función de perdida utilizando el valor absoluto del peso o el peso al cuadrado multiplicado por un delta

aquí siendo el valor decisivo lambda $\lambda$ que mientras mayor su valor mayor el efecto de la regularización sobre la función de perdida.

Dropout

Otra técnica para reducir el overfitting es el Dropout

la universidad que planteo esto tuvo la idea haciendo fila en un banco y viendo que cada cierta cantidad de personas de la fila avanzaban los cajeros cambiaban de lugar internamente de forma aleatoria
Esto lo hacen para evitar que una persona que haga fila para ver un cajero reducir la posibilidad de atender alguien que conozca y que estén conspirando o tenga la intención de hacer algún fraude.

entonces pensaron que tal si mis redes neuronales están conspirando entre si con los valores de entrada, entonces qué tal si muevo mis valores de entrada para que la conspiración no sea tan alta

el dropout consiste durante cada una de las épocas apagar ciertas neuronas de forma aleatoria para reducir el exceso de exactitud que ocasiona el overfitting

Cuando me contó la historia del dropout tuve un momento “Eureka” hahahaha; este mundo de los parámetros es super genial. Antes de este curso, pensaba que existía un “manual” para la correcta configuración de una red neuronal, pero al parecer es ir iterando hasta conseguir el resultado que queremos

Gracias. Ahora es mas claro, quizas la confusion radicaba en traducir del ingles. En ingles iteración (iteration) se define como el numero de bratches necesarios para completar un “epoch”. Siendo un bratch un subconjunto de los datos de entrenamiento. Aqui en el curso interación se define como epoch. Si estoy en algo incorrecto por favor dejenmelo saber.

Para los que quieran saber mas de la regularización L1 y L2:

L1 Regularization (Regularización L1 o “Lasso”):

Agrega la suma de los valores absolutos de los coeficientes a la función de pérdida.
Puede conducir a la selección de características, ya que algunos coeficientes pueden volverse exactamente cero.

L2 Regularization (Regularización L2 o “Ridge”):

Agrega la suma de los cuadrados de los valores de los coeficientes a la función de pérdida.
No conduce a la selección de características, pero tiende a reducir todos los coeficientes.


Dropout


El dropout es una técnica específica para redes neuronales y se aplica durante el entrenamiento. Consiste en desactivar aleatoriamente un conjunto de unidades (neuronas) durante cada paso de entrenamiento. Esto impide que las neuronas se vuelvan dependientes unas de otras y
reduce la capacidad de memorización de patrones específicos en los datos de entrenamiento.

Desactivación Aleatoria

  • Durante cada paso de entrenamiento, cada unidad tiene una probabilidad de ser desactivada, generalmente especificada por un hiperparámetro llamado tasa de dropout (dropout rate).

Aumento de la Robustez

  • El dropout aumenta la robustez del modelo, ya que obliga a la red a aprender patrones más robustos y evita la dependencia excesiva entre unidades.

Inferencia sin Dropout

  • Durante la inferencia (cuando se hacen predicciones), no se desactivan unidades, pero los pesos de las unidades se escalan por la tasa de dropout para tener en cuenta la probabilidad de desactivación.

La traducción más aceptada es la navaja de Ockham o principio de parsimonia (lex parsimoniae).

No se usa de forma tan común en ciencias de la computación, pero en física, química y biología sí.

Básicamente se resume en: no le busques tres pies al gato.

Geoffrey Hinton

La \*\*regularización\*\* es una técnica utilizada para evitar el \*\*overfitting\*\* (sobreajuste) en los modelos de aprendizaje automático, especialmente en redes neuronales. El \*\*overfitting\*\* ocurre cuando un modelo se ajusta demasiado a los datos de entrenamiento y pierde la capacidad de generalizar correctamente a datos nuevos. Una de las técnicas más comunes de regularización es el \*\*Dropout\*\*, que se utiliza en las redes neuronales para mejorar la capacidad de generalización del modelo. \### ¿Qué es \*\*Dropout\*\*? \*\*Dropout\*\* es una técnica de regularización que se aplica durante el entrenamiento de una red neuronal. Consiste en "desactivar" aleatoriamente un porcentaje de las neuronas en cada capa durante cada iteración de entrenamiento. De esta manera, el modelo no depende demasiado de neuronas específicas, forzando a la red a aprender representaciones más robustas de los datos. \- \*\*Cómo funciona\*\*: En cada paso de entrenamiento, las neuronas que se "eliminan" temporalmente no contribuyen ni a la propagación hacia adelante (forward pass) ni al retropropagación del gradiente (backpropagation). Durante la evaluación (validación o prueba), todas las neuronas se utilizan normalmente. \- \*\*Objetivo\*\*: Reducir la dependencia de características específicas en los datos de entrenamiento, promoviendo que las redes neuronales aprendan de manera más generalizada. \### Ejemplo de uso de Dropout en Keras A continuación se muestra cómo implementar \*\*Dropout\*\* en una red neuronal usando \*\*Keras\*\*: \#### Paso 1: Importar las bibliotecas necesarias ```python import numpy as np from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout ``` \#### Paso 2: Construir la red neuronal con Dropout Agregamos la capa `Dropout` después de cada capa densa. El parámetro `rate` (que varía entre 0 y 1) indica la fracción de neuronas que se eliminarán en cada iteración. Por ejemplo, un `rate` de 0.5 significa que el 50% de las neuronas se desactivarán en cada iteración. ```python \# Crear el modelo secuencial model = Sequential() \# Capa de entrada con 16 neuronas y Dropout del 20% model.add(Dense(16, input\_dim=8, activation='relu')) model.add(Dropout(0.2)) # Dropout del 20% \# Capa oculta con 8 neuronas y Dropout del 30% model.add(Dense(8, activation='relu')) model.add(Dropout(0.3)) # Dropout del 30% \# Capa de salida con activación sigmoide (para clasificación binaria) model.add(Dense(1, activation='sigmoid')) \# Compilar el modelo model.compile(optimizer='adam', loss='binary\_crossentropy', metrics=\['accuracy']) ``` En este ejemplo: \- La primera capa oculta tiene 16 neuronas, y después aplicamos `Dropout` con un ratio de 0.2, lo que significa que el 20% de las neuronas se desactivarán aleatoriamente durante el entrenamiento. \- La segunda capa oculta tiene 8 neuronas, y luego aplicamos `Dropout` con un ratio de 0.3, desactivando el 30% de las neuronas. \#### Paso 3: Entrenar el modelo ```python \# Entrenar el modelo con Dropout history = model.fit(X\_train, y\_train, epochs=50, batch\_size=32, validation\_split=0.2) ``` El modelo ahora usará `Dropout` durante el entrenamiento, pero desactivará esta función durante la evaluación. \### ¿Por qué Dropout ayuda a prevenir el \*\*overfitting\*\*? 1\. \*\*Promueve la independencia de las neuronas\*\*: Dado que ciertas neuronas se "desactivan" en cada paso, otras neuronas tienen que aprender a compensar. Esto significa que ninguna neurona individual se convierte en esencial, lo que ayuda al modelo a aprender representaciones más robustas. 2\. \*\*Reducción de la complejidad del modelo\*\*: Al desactivar neuronas aleatoriamente, estamos reduciendo de manera efectiva el tamaño de la red neuronal durante el entrenamiento. Esto actúa como un tipo de regularización, ya que limita la capacidad del modelo para sobreajustarse a los datos de entrenamiento. \### Visualización del impacto del Dropout Es común visualizar cómo afecta el \*\*Dropout\*\* a la pérdida y precisión del modelo durante el entrenamiento. Por ejemplo, si observas que la precisión en los datos de entrenamiento es mucho mayor que en los datos de validación, podría ser una señal de que el modelo está sobreajustando, y el Dropout puede ayudar a mitigarlo. ```python import matplotlib.pyplot as plt \# Pérdida durante el entrenamiento plt.plot(history.history\['loss'], label='Pérdida de entrenamiento') plt.plot(history.history\['val\_loss'], label='Pérdida de validación') plt.title('Pérdida durante el entrenamiento con Dropout') plt.xlabel('Épocas') plt.ylabel('Pérdida') plt.legend() plt.show() \# Precisión durante el entrenamiento plt.plot(history.history\['accuracy'], label='Precisión de entrenamiento') plt.plot(history.history\['val\_accuracy'], label='Precisión de validación') plt.title('Precisión durante el entrenamiento con Dropout') plt.xlabel('Épocas') plt.ylabel('Precisión') plt.legend() plt.show() ``` \### Cuándo utilizar Dropout \- \*\*Modelos grandes\*\*: El Dropout es particularmente útil en redes neuronales grandes, donde la cantidad de parámetros es muy alta y el riesgo de sobreajuste es mayor. \- \*\*Durante el entrenamiento\*\*: El Dropout se utiliza únicamente durante el entrenamiento, no en la fase de evaluación. \- \*\*En combinación con otras técnicas de regularización\*\*: Puede combinarse con otros métodos como la \*\*regularización L2\*\* o la \*\*normalización por lotes (Batch Normalization)\*\* para mejorar aún más el rendimiento. \### Conclusión El \*\*Dropout\*\* es una técnica efectiva y simple para evitar el sobreajuste en redes neuronales. Al eliminar aleatoriamente neuronas durante el entrenamiento, fuerza al modelo a aprender representaciones más robustas y generalizables. Esto resulta en un mejor rendimiento cuando el modelo se enfrenta a datos nuevos.
me impresona la conspiracion de las redes neuronales, hace un tiempo atras se devio apagar dos chatbot , lograron descubrir una secuncia de bit que transmitian a la ves con patrones de una secuencia de idiona, esto descoloco a los especialista y devieron apagarlos, pertencian a la empresa faceboot.

Interesante como nació el concepto del dropout.