tf.keras.optimizers.Ftrl
| Просмотреть исходный код на GitHub |
Оптимизатор, реализующий алгоритм FTRL.
Наследуется от: Optimizer
tf.keras.optimizers.Ftrl(
learning_rate=0.001,
learning_rate_power=-0.5,
initial_accumulator_value=0.1,
l1_regularization_strength=0.0,
l2_regularization_strength=0.0,
name='Ftrl',
l2_shrinkage_regularization_strength=0.0,
beta=0.0,
**kwargs
)
«Следуй за регулярным лидером» (FTRL) — алгоритм оптимизации, разработанный в Google для прогнозирования показателей кликов в начале 2010-х годов. Он наиболее подходит для мелкомасштабных моделей с большими и разреженными пространствами признаков. Алгоритм описан в работе McMahan et al., 2013. Версия Keras поддерживает онлайн-регуляризацию L2 (регуляризацию L2, описанную в упомянутой статье) и регуляризацию L2 типа сжатия (которая представляет собой добавление штрафа L2 к функции потерь).
Инициализация:
n = 0 sigma = 0 z = 0
Правило обновления для одной переменной w:
prev_n = n n = n + g ** 2 sigma = (sqrt(n) - sqrt(prev_n)) / lr z = z + g - sigma * w if abs(z) < lambda_1: w = 0 else: w = (sgn(z) * lambda_1 - z) / ((beta + sqrt(n)) / alpha + lambda_2)
Обозначения:
-
lr— скорость обучения -
g— градиент для переменной -
lambda_1— сила регуляризации L1 -
lambda_2— сила регуляризации L2
См. документацию для параметра l2_shrinkage_regularization_strength, чтобы получить подробности при включенном сжатии, в котором случае градиент заменяется градиентом со сжатием.
| Args | |
|---|---|
learning_rate | Значение типа Tensor, с плавающей точкой или расписание, которое является tf.keras.optimizers.schedules.LearningRateSchedule. Скорость обучения. |
learning_rate_power | Значение с плавающей точкой, должно быть меньше или равно нулю. Управляет тем, как скорость обучения уменьшается во время обучения. Используйте ноль для фиксированной скорости обучения. |
initial_accumulator_value | Начальное значение аккумуляторов. Допускаются только нулевые или положительные значения. |
l1_regularization_strength | Значение с плавающей точкой, должно быть больше или равно нулю. По умолчанию 0,0. |
l2_regularization_strength | Значение с плавающей точкой, должно быть больше или равно нулю. По умолчанию 0,0. |
name | Необязательное имя-префикс для операций, создаваемых при применении градиентов. По умолчанию "Ftrl". |
l2_shrinkage_regularization_strength | Значение с плавающей точкой, должно быть больше или равно нулю. Это отличается от L2 выше, поскольку L2 выше — это штраф стабилизации, а L2 сжатия — штраф по величине. При разряженном вводе сжатие произойдёт только для активных весов. |
beta | Значение с плавающей точкой, представляющее значение beta из статьи. По умолчанию 0,0. |
**kwargs | ключевые аргументы. Разрешённые аргументы — clipvalue, clipnorm, global_clipnorm. Если clipvalue (с плавающей точкой) задано, градиент каждого веса ограничен значением, не превышающим это значение. Если clipnorm (с плавающей точкой) задано, градиент каждого веса индивидуально ограничивается так, чтобы его норма не превышала это значение. Если global_clipnorm (с плавающей точкой) задано, градиент всех весов ограничивается так, чтобы их глобальная норма не превышала это значение. |
Ссылка:
| Исключения | |
|---|---|
ValueError | в случае любого некорректного аргумента. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/optimizers/Ftrl