Я использую функцию 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
соответствует весам соединений, что является точным определением регуляризации веса-распада.