weights nnet neurons neuralnet neural network net fct error complex act r neural-network

nnet - neuralnet r



R-neuralnet-El backprop tradicional parece extraño (1)

Se recomienda que normalice sus datos antes de alimentarlos a una red neuronal. Si haces eso, entonces estás listo para ir:

library(neuralnet) data(infert) set.seed(123) infert[,c(''age'',''parity'',''induced'',''spontaneous'')] <- scale(infert[,c(''age'',''parity'',''induced'',''spontaneous'')]) fit <- neuralnet::neuralnet(formula = case~age+parity+induced+spontaneous, data = infert, hidden = 3, learningrate = 0.01, algorithm = "backprop", err.fct = "ce", linear.output = FALSE, lifesign = ''full'', lifesign.step = 100) preds <- neuralnet::compute(fit, infert[,c("age","parity","induced","spontaneous")])$net.result summary(preds) V1 Min. :0.02138785 1st Qu.:0.21002456 Median :0.21463423 Mean :0.33471568 3rd Qu.:0.47239818 Max. :0.97874839

En realidad, hay algunas preguntas sobre SO que tratan con esto. ¿Por qué tenemos que normalizar la entrada de una red neuronal artificial? parecía tener algunos de los más detalles.

Estoy experimentando con los diferentes algoritmos en el paquete neuralnet pero cuando pruebo el algoritmo backprop tradicional los resultados son muy extraños / decepcionantes. Casi todos los resultados calculados son ~ .33 ??? Supongo que debo estar usando el algoritmo de forma incorrecta, como si lo ejecutara con el valor predeterminado rprop+ diferencia entre muestras. Sin duda, la retropropagación normal no es tan mala, especialmente si puede converger tan rápidamente al umbral proporcionado.

library(neuralnet) data(infert) set.seed(123) fit <- neuralnet::neuralnet(formula = case~age+parity+induced+spontaneous, data = infert, hidden = 3, learningrate = 0.01, algorithm = "backprop", err.fct = "ce", linear.output = FALSE, lifesign = ''full'', lifesign.step = 100) preds <- neuralnet::compute(fit, infert[,c("age","parity","induced","spontaneous")])$net.result summary(preds) V1 Min. :0.3347060 1st Qu.:0.3347158 Median :0.3347161 Mean :0.3347158 3rd Qu.:0.3347162 Max. :0.3347286

¿Se supone que algunas configuraciones son diferentes aquí?

Ejemplo predeterminado neuralnet

set.seed(123) fit <- neuralnet::neuralnet(formula = case~age+parity+induced+spontaneous, data = infert, hidden = 3, err.fct = "ce", linear.output = FALSE, lifesign = ''full'', lifesign.step = 100) preds <- neuralnet::compute(fit, infert[,c("age","parity","induced","spontaneous")])$net.result summary(preds) V1 Min. :0.1360947 1st Qu.:0.1516387 Median :0.1984035 Mean :0.3346734 3rd Qu.:0.4838288 Max. :1.0000000