Estoy utilizando un perceptrón multicapa con 2 capas ocultas para resolver una tarea de clasificación binaria en un conjunto de datos de series temporales ruidosas con un desequilibrio de clases de 80/20. Tengo 30 millones de filas y 500 características en el conjunto de entrenamiento. El conjunto de datos es estructurado, es decir, no son imágenes. Mis características originales estaban muy sesgadas hacia la derecha; hago lo posible por transformarlas en distribuciones más agradables tomando registros o categorizando algunas de ellas. Utilizo una arquitectura de 512->128->128->1, con activaciones relu en cada capa excepto la última. Mi función de pérdida es la entropía cruzada sigmoidea.
El conjunto de validación contiene 10 millones de filas. Al principio, el error de validación disminuye, pero vuelve a aumentar después de un par de épocas. Al analizar los gradientes y pesos de cada capa, veo que el sobreajuste coincide con el pesos sólo en la capa final cada vez más grande. La última capa parece ir a toda marcha mientras que el resto de la red parece hacer muy poco aprendizaje.
Puedo resolver el problema de sobreajuste utilizando la regularización l2, pero esto perjudica el error de validación. Todavía no he encontrado un parámetro de regularización beta que no perjudique el mejor error de validación que he visto. El abandono empeora aún más las cosas.
Es cierto que el problema de clasificación es muy difícil, con una señal probablemente muy débil, pero me parece que los árboles potenciados por el gradiente son capaces de generalizar mucho mejor que un simple, digamos, perceptrón multicapa de 64x64 (la pérdida logarítmica en el conjunto de entrenamiento es la misma para ambas redes y el árbol potenciado por el gradiente).
Hay alguna palabra de sabiduría sobre cómo hacer que esta red se generalice mejor dado que ya lo he intentado:
- abandono de diversos grados
- l1/l2/grupo de regularización del lazo
- añadir ruido a las entradas
- añadir ruido a los gradientes y pesos
- la ingeniería de rasgos para eliminar/representar rasgos muy sesgados
- normalización por lotes
- utilizando una tasa de aprendizaje más baja en la capa final
- simplemente utilizando una red más pequeña (esta es la mejor solución que he encontrado)
a algunas o todas las capas. Todos los métodos perjudican tanto el error de validación que el rendimiento no se acerca a lo que hace el modelo de árbol. Ya me habría rendido si no fuera porque el modelo de árbol es capaz de hacerlo mucho mejor fuera de la muestra, pero la pérdida del registro de entrenamiento para ambos es la misma.
0 votos
¿Qué tamaño tiene su conjunto de datos? ¿Cuántas entradas tiene la red? ¿Qué función de activación está utilizando?
0 votos
Tengo 30 millones de filas y 500 características en el conjunto de entrenamiento. El conjunto de validación contiene 10 millones de filas.