Red neuronal para regresión de salida múltiple

10

Tengo un conjunto de datos que contiene 34 columnas de entrada y 8 columnas de salida. Una forma de resolver el problema es tomar las 34 entradas y construir un modelo de regresión individual para cada columna de salida. Me pregunto si este problema puede resolverse usando solo un modelo, particularmente usando Neural Network.

He usado un perceptrón multicapa, pero eso necesita múltiples modelos al igual que la regresión lineal. ¿Puede el aprendizaje secuencia a secuencia 1 ser una opción viable? Intenté usar TensorFlow, no parece ser capaz de manejar valores flotantes.

Cualquier sugerencia para abordar este problema mediante el uso de un solo modelo unificado, especialmente utilizando la red neuronal será apreciada.

  1. Ilya Sutskever, Oriol Vinyals y Quoc V. Le (2014). Secuencia a secuencia de aprendizaje con redes neuronales. Avances en los sistemas de procesamiento de información neuronal , 27. ( pdf )
sjishan
fuente
Cual es el problema
TEG - Restablecer a Monica
1
(Para los votantes potenciales cercanos: Esto no es una cuestión de programación Sería fuera de tema sucesivamente. Desbordamiento de pila .)
Gung - Restablecer Mónica
¿Puedes aclarar la opción "secuencia a secuencia" aquí? No sé si será familiar para las personas que trabajan con NN, pero no lo es para mí.
gung - Restablece a Monica
Modelado de secuencia a secuencia usando RNN. papers.nips.cc/paper/…
sjishan
Puedes probar MultiOutputRegressor (). Esto funciona para este tipo de problemas
Subham Sarkar

Respuestas:

6

Una red neuronal con múltiples resultados toma la forma Si su resultado tiene la dimensión , entonces tendrá la dimensión .

Y=γ+V1Γ1+ϵV1=a(γ2+V2Γ2)V2=a(γ3+V3Γ3)VL1=a(γL+XΓL)
N×8[γ1,Γ1](pV1+1)×8

Es decir, estaría asumiendo que cada resultado comparte TODOS los parámetros en las capas ocultas, y solo tiene parámetros diferentes para tomar la variable derivada más alta y relacionarla con el resultado.

¿Es esta una suposición realista para su contexto?

genérico_usuario
fuente
4

Al principio pensé que el comentario de generic_user era un show-stopper, pero me di cuenta de que no lo es:

Si entreno d redes diferentes en d salidas diferentes, entonces cada una se ajustará a esa dimensión sin tener en cuenta a las demás.

Pero si entreno una red con salidas d y uso todas las salidas para la propagación hacia atrás, entonces cada peso en cada capa de la red se ajustará para que todas las salidas d sean más precisas.

Es decir: cada parámetro de red se ajustará mediante una suma de gradientes (cómo varía cada salida con un " meneo " en este parámetro) de modo que ajustarlo en la dirección elegida hacia arriba o hacia abajo provoca una salida más precisa en general, incluso si se ajusta El peso de esa manera hace que algunas dimensiones de la salida sean menos precisas.

Entonces, sí, lo que finalmente distingue a cada salida es solo una ecuación lineal codificada en la última capa, pero al entrenar una red de múltiples salidas, cada capa mejorará al presentar esa última capa con algo que le permita hacer su trabajo mejor . Y, por lo tanto, se deduce que las relaciones entre salidas serán explicadas por esta arquitectura.

Es posible que pueda hacerlo mejor que una red totalmente conectada al hacer que su arquitectura refleje las relaciones conocidas en la salida, al igual que las redes profundas funcionan mejor que las superficiales al explotar las relaciones "compositivas" entre las entradas .

Pavel Komarov
fuente
Una regresión multivariada supone que hay una matriz de covarianza (desconocida) que relaciona las variables objetivo entre sí. ¿Está sugiriendo que solo tener una capa densa es suficiente para capturar esta covarianza sin la necesidad de incluir explícitamente capas ocultas?
thecity2
Estoy sugiriendo que las capas ocultas deben capturar parte de esa covarianza. Una sola capa de salida densa es solo un conjunto de regresores lineales paralelos a través de funciones de activación. No se puede establecer una relación entre las salidas cuando no hay una capa oculta para que se sintonicen mutuamente y tomen como entrada / pase como entrada a otros nodos de salida.
Pavel Komarov
0

Puede hacerlo con una sola red neuronal. Pero su red neuronal debería verse así:
Capa de entrada: 34 nodos (uno por su columna de entrada)
Capa de salida: 8 nodos (uno por su columna de salida)

Puede agregar tantas capas ocultas como desee en la Red neuronal. Entonces, la red neuronal genera 8 valores pronosticados y cada valor será una regresión diferente de las entradas.

Bhagyesh Vikani
fuente
¿Qué paquete de qué idioma es compatible?
Arpit Sisodia
0

Me estaba preguntando lo mismo; Aquí están mis ideas:

Supongo que si las salidas comparten algunos patrones ocultos, la capacitación puede beneficiarse al aprender simultáneamente la regresión para todas las salidas.

Sería interesante probar una arquitectura en la que construya una red neuronal para cada salida, pero todas las redes neuronales comparten algunas capas (las primeras medias capas, por ejemplo). Entonces podría entrenar cada red neuronal al mismo tiempo: dentro del ciclo de aprendizaje, cada red neuronal se entrena un paso (con un lote) secuencialmente.

Esto sería similar a la transferencia de conocimiento, pero con la diferencia de que en la transferencia de conocimiento cada red neuronal está completamente entrenada antes de reutilizar alguna parte de ella para entrenar a otra red neuronal.

Apuesto a que alguien ha pensado en esto antes, pero no tengo ninguna referencia al respecto.

Lay González
fuente