Какая разница между скоростью обучения и снижением веса в контексте нейронных сетей?
Какая разница между скоростью обучения и снижением веса в контексте нейронных сетей?
Ответы:
Скорость обучения - это параметр, который определяет, насколько шаг обновления влияет на текущее значение весов. Хотя снижение веса - это дополнительный термин в правиле обновления веса, который приводит к экспоненциальному снижению веса до нуля, если никакое другое обновление не запланировано.
Итак, допустим, что у нас есть функция стоимости или ошибки которую мы хотим минимизировать. Градиентный спуск говорит нам, что нужно изменить веса в направлении наискорейшего спуска в : где - скорость обучения, и, если она велика, у вас будет соответственно большая модификация весов (в общем случае она не должна быть слишком большой, в противном случае вы превысите локальный минимум в вашей функции стоимости).w E w i ← w i - η ∂ Eηжя
Чтобы эффективно ограничить количество свободных параметров в вашей модели, чтобы избежать переоснащения, можно упорядочить функцию стоимости. Простой способ сделать это - ввести нулевой средний гауссовский априор над весами, что эквивалентно изменению функции стоимости на . На практике это наказывает большие веса и эффективно ограничивает свободу в вашей модели. Параметр регуляризации определяет, как вы обмениваете первоначальную стоимость с штрафом за большие веса.λE
Применяя градиентный спуск к этой новой функции стоимости, мы получаем: Новый термин возникающий в результате регуляризации, приводит к уменьшению веса пропорционально его размеру.-ηλwi
В дополнение к ответу @ mrig (+1), для многих практических применений нейронных сетей лучше использовать более продвинутый алгоритм оптимизации, такой как Levenberg-Marquardt (сети малого и среднего размера) или масштабированный сопряженный градиентный спуск (средний-большой). сети), так как они будут намного быстрее, и нет необходимости устанавливать скорость обучения (оба алгоритма по существу адаптируют скорость обучения, используя кривизну, а также градиент). Любой приличный пакет нейронной сети или библиотека будут иметь реализации одного из этих методов, любой пакет, который не имеет, вероятно, устарел. Я использую библиотеку NETLAB для MATLAB, которая является отличным комплектом.
Я простые термины:
learning_rate: контролирует, насколько быстро или медленно модель нейронной сети распознает проблему.
ссылка: https://machinelearningmastery.com/learning-rate-for-deep-learning-neural-networks/
wight_decay: это метод регуляризации, используемый для того, чтобы избежать чрезмерной подгонки.
ссылка: https://metacademy.org/graphs/concepts/weight_decay_neural_networks