Алгоритм, не сходящийся в заданном количестве повторений для нейронной сети в R

Я новичок в нейронных сетях в R. Я пытаюсь эмулировать следующее поведение, реализованное с использованием neuroph в java.

Тип - Многослойный персептрон, Входы - 7, Выходы - 1, Скрытые - 5 нейронов, Передаточная функция - сигмовидная, Правило обучения - Обратное распространение, Максимальная ошибка - 0,01, Скорость обучения - 0,2

Ниже приведен код R, который я реализовал.

net.result <- neuralnet(Output ~ Input1 + Input2 + Input3 + Input4 + Input5 + Input6 + Input7, 
                        traindata, algorithm = "backprop", hidden = 5,
                        threshold = 0.01, learningrate = 0.2, act.fct = "logistic", 
                        linear.output = FALSE, rep =50, stepmax = 100)

Данные относительно небольшие (120 строк), и ниже приведен образец используемых обучающих данных. Обратите внимание, что входные данные нормализованы и масштабируются от 0 до 1.

     Input1 Input2 Input3 Input4 Input5 Input6 Input7       Output
 1   0      0      0      0      0      0      0            0
 2   0      0      0      0      0      1      0.0192307692 0
 3   0      0      0      0      1      0      0.125        0
 4   0      0      0      0      1      1      0.0673076923 0
 5   0      0      0      1      0      0      0.1971153846 0
 6   0      0      0      1      0      1      0.2644230769 0.3333333333

Ниже приведено предупреждение, которое я получаю при выполнении упомянутой выше команды.

Warning message:
algorithm did not converge in 50 of 50 repetition(s) within the stepmax

Любое разъяснение, почему это происходит?


person Sabra Ossen    schedule 07.08.2015    source источник


Ответы (2)


Увеличьте stepmax со 100 до некоторого большого значения, чтобы дать алгоритму больше времени для сходимости. Однако лучше уменьшить количество скрытых узлов, а затем перезапустить нейронную сеть.

person Saurabh Kumar    schedule 08.08.2015
comment
Я увеличил stepmax до 1e5, но все же это привело к аналогичному предупреждающему сообщению. Когда я уменьшил количество скрытых узлов до 3, все заработало. Знаете ли вы, почему модель нельзя построить с большим количеством скрытых нейронов? - person Sabra Ossen; 10.08.2015
comment
Количество скрытых узлов обычно зависит от количества входных и выходных узлов. Поскольку в вашем случае у вас есть 7 входных и 1 выходной узлы; следовательно, количество скрытых узлов должно быть меньше или равно 4. Обычно при выборе количества скрытых узлов используется среднее значение как входных, так и выходных узлов. Надеюсь, поможет. - person Saurabh Kumar; 10.08.2015

Вы можете изменить количество скрытых слоев/скрытых узлов и пробовать разные комбинации методом проб и ошибок. Вы можете попробовать увеличить количество скрытых слоев в MLP до 2. MLP с 2 скрытыми слоями используются редко, но они имеют свое применение в случае сложных закономерностей в данных. Теоретически МЛП с двумя скрытыми слоями можно использовать для аппроксимации любой функции.

person Gaurav    schedule 12.08.2015