Я использую функцию nnet в R для обучения своей нейронной сети. Я не понимаю, что такое параметр распада в nnet? Является ли этот размер шага для использования в градиентном спускаемом ментоде или параметре регуляризации, используемом для преодоления переобучения?
Назначение параметра распада в функции nnet в R?
Ответ 1
Это регуляризация, чтобы избежать чрезмерной установки.
decay:параметр для распада веса. По умолчанию 0.
Дополнительная информация доступна в авторской книге Современная прикладная статистика с S. Fourth Edition, стр. 245:
Одним из способов обеспечения гладкости f является ограничение класса оценок, например, с использованием ограниченного числа сплайн-узлов. Другим способом является регуляризация, в которой критерий соответствия изменяется на
E + λC(f)со штрафом C на "шероховатость f. Распад массы, связанный с нервным сетей, использует в качестве штрафа сумму квадратов весов wij.... Использование распада веса, по-видимому, помогает процессу оптимизации и избегать чрезмерного использования. (выделено мной)
Ответ 2
Дополняя blahdiblah ответ, посмотрев исходный код, я думаю, что параметр weights соответствует скорости обучения обратному распространению (читая руководство, я не мог) понять, что это было). Посмотрите на файл nnet.c, строка 236, внутри функции fpass:
TotalError += wx * E(Outputs[i], goal[i - FirstOutput]);
здесь, в очень интуитивной номенклатуре, E соответствует ошибке bp, а wx - это параметр, переданный функции, который в конечном итоге соответствует идентификатору Weights[i].
Также вы можете быть уверены, что параметр decay действительно является тем, на что он претендует, перейдя к строкам 317 ~ 319 того же файла, внутри функции VR_dfunc:
for (i = 0; i < Nweights; i++)
sum1 += Decay[i] * p[i] * p[i];
*fp = TotalError + sum1;
где p соответствует весам соединений, что является точным определением регуляризации веса-распада.