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

См. также

rxNeuralNet

Примеры


 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))