Генерация прогноза с использованием модели нейронной сети с обратным распространением на R возвращает одинаковые значения для всех наблюдений.

Я пытаюсь сгенерировать прогноз, используя обученную нейронную сеть обратного распространения с использованием пакета нейронной сети для нового набора данных. Я использовал функцию «вычислить», но получил одно и то же значение для всех наблюдений. Что я сделал не так?

# the data
Var1 <- runif(50, 0, 100)
sqrt.data <- data.frame(Var1, Sqrt=sqrt(Var1))

# training the model
backnet = neuralnet(Sqrt~Var1, sqrt.data, hidden=2, err.fct="sse", linear.output=FALSE, algorithm="backprop", learningrate=0.01)

print (backnet)

Call: neuralnet(formula = Sqrt ~ Var1, data = sqrt.data, hidden = 2,     learningrate = 0.01, algorithm = "backprop", err.fct = "sse",     linear.output = FALSE)

1 repetition was calculated.

        Error Reached Threshold Steps
1 883.0038185    0.009998448226  5001

valnet = compute(backnet, (1:10)^2)

summary (valnet$net.result)

      V1           
Min.   :0.9998572  
1st Qu.:0.9999620  
Median :0.9999626  
Mean   :0.9999505  
3rd Qu.:0.9999626  
Max.   :0.9999626  

print (valnet$net.result)

         [,1]
[1,] 0.9998572272
[2,] 0.9999477241
[3,] 0.9999617930
[4,] 0.9999625684
[5,] 0.9999625831
[6,] 0.9999625831
[7,] 0.9999625831
[8,] 0.9999625831
[9,] 0.9999625831
[10,] 0.9999625831

person Meed    schedule 06.10.2013    source источник
comment
Можете ли вы предоставить воспроизводимый набор данных, который позволит людям получить тот же результат, что и у вас, чтобы они могли понять, что пошло не так?   -  person gung - Reinstate Monica    schedule 06.10.2013
comment
Спасибо @gung. Я отредактировал весь вопрос =)   -  person Meed    schedule 06.10.2013


Ответы (1)


Мне удалось заставить работать следующее:

library(neuralnet)

# the data
Var1 <- runif(50, 0, 100)
sqrt.data <- data.frame(Var1, Sqrt=sqrt(Var1))

# training the model
backnet = neuralnet(Sqrt~Var1, sqrt.data, hidden=10, learningrate=0.01)

print (backnet)


Var2<-c(1:10)^2

valnet = compute(backnet, Var2)

print (valnet$net.result)

Возвращает:

     [,1]
[1,] 0.9341689395
[2,] 1.9992711472
[3,] 3.0012823496
[4,] 3.9968226732
[5,] 5.0038316976
[6,] 5.9992936957
[7,] 6.9991576925
[8,] 7.9996871591
[9,] 9.0000849977
[10,] 9.9891334545

Согласно справочному руководству neuralnet , алгоритм обучения по умолчанию для пакета — обратное распространение:

нейронная сеть используется для обучения нейронных сетей с использованием обратного распространения, гибкого обратного распространения (RPROP) с (Riedmiller, 1994) или без обратного отслеживания веса (Riedmiller and Braun, 1993) или модифицированной глобально конвергентной версии (GRPROP) Anastasiadis et al. (2005). Функция позволяет выполнять гибкие настройки посредством индивидуального выбора ошибки и функции активации. Кроме того, реализован расчет обобщенных весов (Интратор О. и Интратор Н., 1993).

person henderso    schedule 06.10.2013
comment
Пожалуйста, исправьте, если я ошибаюсь, поскольку упоминается в документе, что алгоритм по умолчанию - algorithm = "rprop+", поскольку упомяните, что rprop+-- resilient backpropagation with and without weight backtracking - person dondapati; 10.04.2018