Назначение параметра распада в функции nnet в R?

Я использую функцию nnet в R для обучения своей нейронной сети. Я не понимаю, что такое параметр распада в nnet? Является ли этот размер шага для использования в градиентном спускаемом ментоде или параметре регуляризации, используемом для преодоления переобучения?

Ответ 1

Это регуляризация, чтобы избежать чрезмерной установки.

Из документации (pdf):

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