No tienes acceso a esta clase

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

Reduciendo el overfitting

22/28
Recursos

Aportes 16

Preguntas 6

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Use las tres técnicas y este fue el resultado:

Además dejo la comparación de mi modelo entre daots de entrenamiento y validación:

create model 4 neurons with intermediate layers of dropout of 50%, and regularizer l1_l2

Use las 3 técnicas como el compañero Alfonso pero me dió distinto

Prove distintas tecnicas pero la mejor fue dropout tanto en perdida como en accuracy.
Acontinuacion presento la perdida con 50 epocas y el respectivo codigo .

Finalmente realice las comparaciones tanto en perdida como en accurracy

Dejo aquí mi resultado con 3 técnicas:
3 capas 4, 4 y 1
Dropout y Regularización L2:
Graficando los 5 modelos para comparación.

Excelente! Appliqué el modelo simple, con L1 y L2, y dropout. Ahora mi loss inicia un poco más elevado que los otros modelos, pero baja con seguridad, sin tender al sobreajuste, Graciaaaas!!

🧙🏻‍♂️Mi solución aplicando dropout del 70% en dos capas y regularización L1.

Les comparto el resultado que tuve de cada una de las técnicas y una mezcla de las 3

Comparto mis resultados.

En el último modelo cambié el optimizador a Adam, esto parece mejorar mucho el Overfitting.

Este fue mi resultado

#Llamar al modelo
model5 = models.Sequential()

#Agregar capa
model5.add(layers.Dense(8, activation='relu', input_shape = (10000,), 
                        kernel_regularizer= regularizers.l1(0.00001)))
model5.add(layers.Dropout(0.6))
model5.add(layers.Dense(8, activation='relu', 
                        kernel_regularizer= regularizers.l1(0.00001)))
model5.add(layers.Dropout(0.6))
model5.add(layers.Dense(1, activation='sigmoid'))

model5.compile(optimizer='rmsprop',
            loss='binary_crossentropy',
            metrics = 'accuracy'
            )

history5 = model5.fit(partial_x_train, partial_y_train,
                    epochs=20,
                    batch_size = 512,
                    validation_data=(x_val,Y_val))

Este es la distribución de mi red

model4 = models.Sequential()
model4.add(
    layers.Dense(
        6,
        activation='relu',
        input_shape=(10000,),
        kernel_regularizer=regularizers.l1(0.0001)
    )
)
# dropout se aplica agregando una capa de dropout
model4.add(layers.Dropout(0.5))
model4.add(
    layers.Dense(
        6,
        activation='relu',
        kernel_regularizer=regularizers.l1(0.0001)
    )
)
model4.add(layers.Dropout(0.5))

# para reducir a la probabilidad de 0 o 1 se usa sigmoid
model4.add(layers.Dense(1, activation='sigmoid'))


# el rmsprop es una version optimizada del descenso del gradiente y es el optimizador por defecto
model4.compile(optimizer='rmsprop',
               loss='binary_crossentropy',
               metrics='accuracy')

# entrenar el modelo
history8 = model4.fit(partial_x_train, partial_y_train,
                      epochs=20,
                      batch_size=256,
                      validation_data=(x_val, y_val))

y este una gráfica interesante de comparar modelos

Intente hacerlo igual que el profe pero mi progama no me dejaba, deje epoch=10, si ponia mas mi compu no me dejaba, pore el mejor modelo que logre fue con un accuracy de 0.8929

Cumpliendo el reto

Hice varias pruebas y obtengo mejores resultados con una sola capa. De los tipos de regularización probadas, el que mejor me funcionó fue el de Dropout.
.

Regularización con Dropout

  • Arquitectura:
    Obtengo mejores resultados seteando Dorpout al 85%
Model: "sequential_60"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_138 (Dense)            (None, 16)                160016    
_________________________________________________________________
dropout_38 (Dropout)         (None, 16)                0         
_________________________________________________________________
dense_139 (Dense)            (None, 1)                 17        
=================================================================
Total params: 160,033
Trainable params: 160,033
Non-trainable params: 0
_________________________________________________________________
  • Resultados:

Regularización con L2

Sin duda en todas las pruebas que hice obtengo mejores resultados con L2 que con L1 o la combinación de L1 y L2.

  • Arquitectura
    Nuevamente hago uso solo de 1 capa
Model: "sequential_63"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_144 (Dense)            (None, 16)                160016    
_________________________________________________________________
dense_145 (Dense)            (None, 1)                 17        
=================================================================
Total params: 160,033
Trainable params: 160,033
Non-trainable params: 0
_________________________________________________________________
  • Resultados: