Разница между падением веса нейронной сети и скоростью обучения

94

Какая разница между скоростью обучения и снижением веса в контексте нейронных сетей?

Райан Зотти
источник

Ответы:

161

Скорость обучения - это параметр, который определяет, насколько шаг обновления влияет на текущее значение весов. Хотя снижение веса - это дополнительный термин в правиле обновления веса, который приводит к экспоненциальному снижению веса до нуля, если никакое другое обновление не запланировано.

Итак, допустим, что у нас есть функция стоимости или ошибки которую мы хотим минимизировать. Градиентный спуск говорит нам, что нужно изменить веса в направлении наискорейшего спуска в : где - скорость обучения, и, если она велика, у вас будет соответственно большая модификация весов (в общем случае она не должна быть слишком большой, в противном случае вы превысите локальный минимум в вашей функции стоимости).w E w iw i - η EE(w)wEηжя

wiwiηEwi,
ηwi

Чтобы эффективно ограничить количество свободных параметров в вашей модели, чтобы избежать переоснащения, можно упорядочить функцию стоимости. Простой способ сделать это - ввести нулевой средний гауссовский априор над весами, что эквивалентно изменению функции стоимости на . На практике это наказывает большие веса и эффективно ограничивает свободу в вашей модели. Параметр регуляризации определяет, как вы обмениваете первоначальную стоимость с штрафом за большие веса.λEE~(w)=E(w)+λ2w2λE

Применяя градиентный спуск к этой новой функции стоимости, мы получаем: Новый термин возникающий в результате регуляризации, приводит к уменьшению веса пропорционально его размеру.-ηλwi

wiwiηEwiηλwi.
ηλwi
mrig
источник
2
Спасибо за полезное объяснение. Вопрос: в пакете "nnet" R есть параметр, используемый при обучении нейронной сети, который называется "распад". Знаете ли вы, соответствует ли гниение вашей лямбде или ее эта * лямбда?
Андреа Янни ௫
3
Я также добавил бы, что снижение веса - это то же самое, что регуляризация L2 для тех, кто знаком с последним.
Сергей
2
@ Сергей, пожалуйста, нет, перестань распространять эту дезинформацию! Это верно только в особом случае с ванильным SGD. См. Распад веса фиксации для бумаги Адама .
LucasB
Чтобы уточнить: во время написания документа PyTorch для Адама используется термин «снижение веса» (в скобках называется «штраф L2») для обозначения того, что, по моему мнению, эти авторы называют регулированием L2. Если я правильно понимаю, этот ответ относится к SGD без импульса, где два эквивалентны.
Дилан Ф.
14

В дополнение к ответу @ mrig (+1), для многих практических применений нейронных сетей лучше использовать более продвинутый алгоритм оптимизации, такой как Levenberg-Marquardt (сети малого и среднего размера) или масштабированный сопряженный градиентный спуск (средний-большой). сети), так как они будут намного быстрее, и нет необходимости устанавливать скорость обучения (оба алгоритма по существу адаптируют скорость обучения, используя кривизну, а также градиент). Любой приличный пакет нейронной сети или библиотека будут иметь реализации одного из этих методов, любой пакет, который не имеет, вероятно, устарел. Я использую библиотеку NETLAB для MATLAB, которая является отличным комплектом.

Дикран Сумчатый
источник
А как насчет алгоритмов оптимизации на основе Rprop? Как они складываются?
мощность
4
Я думаю, что большинство людей используют варианты rprop + импульс, такие как RMSProp, adagrad, SGD + нестеров импульс. Смотрите класс CS231 .
августа
1
Ну, конечно, это зависит от вашего приложения. Но для больших наборов данных / сетей, которые сейчас довольно модны, я думаю, что люди находят те алгоритмы, которые я упомянул, более подходящими.
facuq
6
@DikranMarsupial это может быть потому, что в настоящее время (почти через пять лет после вашего ответа) люди склонны использовать Адама вместо этого?
ComputerScientist
2
На самом деле этот ответ очень устарел. Эти алгоритмы непрактичны из-за масштаба моделей и наборов данных, которые типичны в настоящее время, и в наиболее широко используемых пакетах, которые, конечно, не устарели, отсутствуют эти алгоритмы.
LucasB
0

Я простые термины:

learning_rate: контролирует, насколько быстро или медленно модель нейронной сети распознает проблему.

ссылка: https://machinelearningmastery.com/learning-rate-for-deep-learning-neural-networks/

wight_decay: это метод регуляризации, используемый для того, чтобы избежать чрезмерной подгонки.

ссылка: https://metacademy.org/graphs/concepts/weight_decay_neural_networks

Кетан Вишвакарма
источник