r neural-network deep-learning h2o

pesos de aprendizaje profundo h2o y normalización



neural-network deep-learning (1)

Estoy explorando h2o a través de la interfaz R y estoy obteniendo una matriz de peso extraña. Mi tarea es tan simple como obtienen: dado x, y calcular x + y.
Tengo 214 filas con 3 columnas. La primera columna (x) se dibujó uniformemente desde (-1000, 1000) y la segunda (y) desde (-100,100). Solo quiero combinarlos, así que tengo una sola capa oculta con una sola neurona. Este es mi código:

library(h2o) localH2O = h2o.init(ip = "localhost", port = 54321, startH2O = TRUE) train <- h2o.importFile(path = "/home/martin/projects/R NN Addition/addition.csv") model <- h2o.deeplearning(1:2,3,train, hidden = c(1), epochs=200, export_weights_and_biases=T, nfolds=5) print(h2o.weights(model,1)) print(h2o.weights(model,2))

y el resultado es

> print(h2o.weights(model,1)) x y 1 0.5586579 0.05518193 [1 row x 2 columns] > print(h2o.weights(model,2)) C1 1 1.802469

Por alguna razón, el valor de peso para y es 0.055 - 10 veces menor que para x. Entonces, al final, la red neuronal calcularía x + y / 10. Sin embargo, h2o.predict realmente devuelve los valores correctos (incluso en un conjunto de prueba).
Supongo que hay un paso de preprocesamiento que de alguna manera está escalando mis datos. ¿Hay alguna forma de que pueda reproducir los pesos reales producidos por el modelo? Me gustaría poder visualizar algunas redes neuronales bastante simples.


Las redes neuronales funcionan mejor si todas las características de entrada tienen una media 0 y una desviación estándar 1 . Si las características tienen desviaciones estándar muy diferentes, las redes neuronales funcionan muy mal. Debido a eso h20 hace esta normalización para ti. En otras palabras, antes de entrenar su red, calcula la media y la desviación estándar de todas las características que tiene, y reemplaza los valores originales con (x - mean) / stddev . En su caso, la stddev para la segunda característica es 10 veces más pequeña que la primera, por lo que después de la normalización los valores terminan siendo 10 veces más importantes en términos de cuánto contribuyen a la suma y los pesos que se dirigen a la neurona oculta necesitan cancelarlo Es por eso que el peso para la segunda característica es 10 veces más pequeño.