maOptimizer: алгоритмы оптимизации
Задает алгоритмы оптимизации для нейронной сети.
Использование
adaDeltaSgd(decay = 0.95, conditioningConst = 1e-06)
sgd(learningRate = 0.001, momentum = 0, nag = FALSE, weightDecay = 0,
lRateRedRatio = 1, lRateRedFreq = 100, lRateRedErrorRatio = 0)
Аргументы
decay
Указывает скорость вырождения, применяемую к градиентам при вычислении шага в алгоритме адаптивной оптимизации ADADELTA. Эта скорость гарантирует, что скорость обучения продолжит расти, предоставляя меньшие весовые коэффициенты для удаленных градиентов при вычислении размера шага. С математической точки зрения она заменяет средний квадрат градиентов экспоненциально убывающим средним арифметическим квадратных градиентов в знаменателе правила обновления. Присваиваемое значение должно находиться в диапазоне (0,1).
conditioningConst
Задает константу условия для алгоритма адаптивной оптимизации ADADELTA, который используется для определения размера шага в регионах, где экспоненциально убывающее среднее арифметическое квадратных градиентов невелико. Присваиваемое значение должно находиться в диапазоне (0,1).
learningRate
Указывает размер шага, выполняемого в направлении отрицательного градиента для каждой итерации процесса обучения. Значение по умолчанию — = 0.001
.
momentum
Указывает весовые коэффициенты для каждого измерения, управляющего вкладом предыдущего шага в размер следующего шага во время обучения. Это изменит learningRate
, чтобы ускорить обучение. Значение должно быть равно >= 0
и < 1
.
nag
При TRUE
используется ускоренный градиент Нестерова. Этот метод уменьшает сложность Oracle для максимальной неакцентированной глубины градиента и является лучшим для оптимизации сглаженной выпуклой.
weightDecay
Указывает весовые коэффициенты масштабирования для размера шага. После каждого обновления весовые коэффициенты в сети масштабируются по (1 - ``learningRate * weightDecay)
. Значение должно быть равно >= 0
и < 1
.
lRateRedRatio
Указывает коэффициент сокращения скорости обучения: коэффициент, на который сокращается скорость обучения во время обучения. Уменьшение скорости обучения может не допустить локальных минимумов. Значение должно быть равно > 0
и <= 1
.
- Значение
1.0
— без сокращения. - Значение
0.9
— скорость обучения сокращается до 90 от текущего значения.
Сокращение может инициироваться либо периодически после фиксированного числа итераций, либо при выполнении определенных условий возникновения ошибок, касающихся увеличения или уменьшения функции потери. - Чтобы активировать периодическое снижение скорости, укажите частоту, задав число итераций между сокращениями с аргументом
lRateRedFreq
. - Чтобы запустить уменьшение скорости на основе критерия ошибки, укажите число в
lRateRedErrorRatio
.
lRateRedFreq
Задает частоту сокращения скорости обучения, определяя число итераций между сокращениями. Например, если указано значение 10
, скорость обучения сокращается после каждых 10 итераций.
lRateRedErrorRatio
Указывает критерий ошибки сокращения скорости обучения. Если задано значение 0
, скорость обучения сокращается при увеличении потери между итерациями. Если задано дробное значение больше 0
, скорость обучения сокращается, если потери меньше, чем эта доля предыдущего значения.
Подробнее
Эти функции можно использовать для аргумента optimizer
в rxNeuralNet.
Функция sgd
задает максимальную неакцентированную глубину стохастического градиента. maOptimizer
Функция adaDeltaSgd
задает максимальную неакцентированную глубину градиента AdaDelta, описанную в 2012 году Мэтью Д. Цайлером в документе "ADADELTA: метод адаптивной скорости обучения".
Значение
Строка символов, содержащая спецификацию для алгоритма оптимизации.
Авторы
Корпорация Майкрософт Microsoft Technical Support
Ссылки
ADADELTA: An Adaptive Learning Rate Method
См. также
Примеры
myIris = iris
myIris$Setosa <- iris$Species == "setosa"
res1 <- rxNeuralNet(formula = Setosa~Sepal.Length + Sepal.Width + Petal.Width,
data = myIris,
optimizer = sgd(learningRate = .002))
res2 <- rxNeuralNet(formula = Setosa~Sepal.Length + Sepal.Width + Petal.Width,
data = myIris,
optimizer = adaDeltaSgd(decay = .9, conditioningConst = 1e-05))