Spec-Zone.ru › TensorFlow

tf.keras.optimizers.Ftrl

Оптимизатор, реализующий алгоритм 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,
    l2_shrinkage_regularization_strength=0.0,
    beta=0.0,
    weight_decay=None,
    clipnorm=None,
    clipvalue=None,
    global_clipnorm=None,
    use_ema=False,
    ema_momentum=0.99,
    ema_overwrite_frequency=None,
    loss_scale_factor=None,
    gradient_accumulation_steps=None,
    name='ftrl',
    **kwargs
)

"Follow The Regularized Leader" (FTRL) — алгоритм оптимизации, разработанный в Google для предсказания показателя кликабельности в начале 2010-х годов. Он наиболее подходит для неглубоких моделей с большими и разреженными пространствами признаков. Алгоритм описан в статье McMahan et al., 2013. Версия Keras поддерживает как онлайн L2-регуляризацию (L2-регуляризацию, описанную в вышеупомянутой статье), так и регуляризацию типа сжатия (добавление L2-штрафа к функции потерь).

Инициализация:

n = 0
sigma = 0
z = 0

Правило обновления для одной переменной w:

prev_n = n
n = n + g ** 2
sigma = (n ** -lr_power - prev_n ** -lr_power) / 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-регуляризации
  • lr_power — степень масштабирования n.

См. документацию параметра l2_shrinkage_regularization_strength для получения более подробной информации при включенном сжатии, в этом случае градиент заменяется градиентом со сжатием.

Аргументы
learning_rate Вещественное число, экземпляр keras.optimizers.schedules.LearningRateSchedule или вызываемый объект, не принимающий аргументы и возвращающий фактическое значение для использования. Скорость обучения. По умолчанию 0.001.
learning_rate_power Вещественное значение, должно быть меньше или равно нулю. Управляет тем, как скорость обучения уменьшается во время обучения. Используйте ноль для фиксированной скорости обучения.
initial_accumulator_value Начальное значение для аккумуляторов. Разрешены только нулевые или положительные значения.
l1_regularization_strength Вещественное значение, должно быть больше или равно нулю. По умолчанию 0.0.
l2_regularization_strength Вещественное значение, должно быть больше или равно нулю. По умолчанию 0.0.
l2_shrinkage_regularization_strength Вещественное значение, должно быть больше или равно нулю. Отличается от L2 выше тем, что L2 выше — это штраф за стабилизацию, а это L2 сжатия — штраф за величину. При разряжённом вводе сжатие произойдёт только для активных весов.
beta Вещественное значение, представляющее значение бета из статьи. По умолчанию 0.0.
name Строка. Имя, используемое для весов аккумуляторов импульса, созданных оптимизатором.
weight_decay Вещественное число. Если задано, применяется затухание веса.
clipnorm Вещественное число. Если задано, градиент каждого веса индивидуально ограничивается таким образом, чтобы его норма не была выше этого значения.
clipvalue Вещественное число. Если задано, градиент каждого веса ограничивается таким значением, чтобы он не был выше этого значения.
global_clipnorm Вещественное число. Если задано, градиент всех весов ограничивается таким образом, чтобы их глобальная норма не превышала этого значения.
use_ema Булево значение, по умолчанию False. Если True, применяется экспоненциально скользящее среднее (EMA). EMA состоит из вычисления экспоненциально скользящего среднего весов модели (поскольку значения весов изменяются после каждой обучающей партии), и периодического перезаписи весов их скользящим средним.
ema_momentum Вещественное число, по умолчанию 0.99. Используется только если use_ema=True. Это импульс, используемый при вычислении EMA весов модели: new_average = ema_momentum * old_average + (1 - ema_momentum) * current_variable_value.
ema_overwrite_frequency Целое число или None, по умолчанию None. Используется только если use_ema=True. Каждые ema_overwrite_frequency шаги итераций мы перезаписываем переменную модели её скользящим средним. Если None, оптимизатор не перезаписывает переменные модели в середине обучения, и вам нужно явно перезаписать переменные в конце обучения, вызвав optimizer.finalize_variable_values() (что обновляет переменные модели непосредственно). При использовании встроенной петли обучения fit() это происходит автоматически после последней эпохи, и вам ничего не нужно делать.
loss_scale_factor Вещественное число или None. Если вещественное число, масштабный множитель будет умножен на потери перед вычислением градиентов, а обратный масштабный множитель будет умножен на градиенты перед обновлением переменных. Полезно для предотвращения подтекания во время обучения с переменой точности. В качестве альтернативы, keras.optimizers.LossScaleOptimizer автоматически установит масштабный множитель потерь.
gradient_accumulation_steps Целое число или None. Если целое число, переменные модели и оптимизатора не будут обновляться на каждом шаге; вместо этого они будут обновляться каждые gradient_accumulation_steps шаги, используя среднее значение градиентов с момента последнего обновления. Это известно как «накопление градиента». Это может быть полезно, когда размер вашей партии очень мал, для уменьшения шума градиента на каждом шаге обновления.
Атрибуты
learning_rate
variables

Методы

add_variable

Просмотреть исходный код

add_variable(
    shape,
    initializer='zeros',
    dtype=None,
    aggregation='mean',
    name=None
)

add_variable_from_reference

Просмотреть исходный код

add_variable_from_reference(
    reference_variable, name=None, initializer='zeros'
)

Добавить переменную со всеми нулями с формой и типом данных переменной-ссылка.

apply

Просмотреть исходный код

apply(
    grads, trainable_variables=None
)

Обновить переменные обучения согласно предоставленным значениям градиента.

grads должна быть списком тензоров градиента с однозначным соответствием списку переменных, с которыми был построен оптимизатор.

trainable_variables может быть предоставлена при первом вызове для построения оптимизатора.

apply_gradients

Просмотреть исходный код

apply_gradients(
    grads_and_vars
)

assign

Просмотреть исходный код

assign(
    variable, value
)

Присвоить значение переменной.

Это должно использоваться в оптимизаторах вместо variable.assign(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или переменной оптимизатора; она может быть переменной, родной для бэкенда, или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, добавляемое к переменной.

assign_add

Просмотреть исходный код

assign_add(
    variable, value
)

Добавить значение к переменной.

Это должно использоваться в оптимизаторах вместо variable.assign_add(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или переменной оптимизатора; она может быть переменной, родной для бэкенда, или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, добавляемое к переменной.

assign_sub

Просмотреть исходный код

assign_sub(
    variable, value
)

Вычесть значение из переменной.

Это следует использовать в оптимизаторах вместо variable.assign_sub(value) для поддержки оптимизаций, специфичных для бэкенда. Обратите внимание, что переменная может быть переменной модели или переменной оптимизатора; она может быть переменной, родной для бэкенда, или переменной Keras.

Аргументы
variable Переменная для обновления.
value Значение, которое нужно добавить к переменной.

build

Просмотреть исходный код

build(
    var_list
)

Инициализировать переменные оптимизатора.

Аргументы
var_list список переменных модели для построения переменных Ftrl.

exclude_from_weight_decay

Просмотреть исходный код

exclude_from_weight_decay(
    var_list=None, var_names=None
)

Исключить переменные из расчёта weight decay.

Этот метод должен быть вызван до вызова метода build оптимизатора. Вы можете задать определённые переменные для исключения или задать список строк в качестве ключевых слов, если любая из них встречается в имени переменной, то переменная исключается.

Аргументы
var_list Список переменных Variable для исключения из расчёта weight decay.
var_names Список строк. Если любая строка из var_names встречается в имени переменной модели, то эта переменная модели исключается из расчёта weight decay. Например, var_names=['bias'] исключает все переменные смещения из расчёта weight decay.

finalize_variable_values

Просмотреть исходный код

finalize_variable_values(
    var_list
)

Установить конечное значение обучаемых переменных модели.

Иногда существуют дополнительные шаги перед завершением обновления переменных, такие как перезапись переменных модели их средним значением.

Аргументы
var_list Список переменных модели.

from_config

Просмотреть исходный код

@classmethod
from_config(
    config, custom_objects=None
)

Создаёт оптимизатор из его конфигурации.

Этот метод является обратным к методу get_config и способен восстановить тот же оптимизатор из словаря конфигурации.

Аргументы
config Словарь Python, как правило, результат get_config.
custom_objects Словарь Python, сопоставляющий имена дополнительным пользовательским Python-объектам, необходимым для восстановления этого оптимизатора.
Возвращает
Экземпляр оптимизатора.

get_config

Просмотреть исходный код

get_config()

Возвращает конфигурацию оптимизатора.

Конфигурация оптимизатора — это словарь Python (сериализуемый), содержащий конфигурацию оптимизатора. Этот же оптимизатор можно позже воссоздать (без сохранённого состояния) из этой конфигурации.

Подкласс оптимизатора должен переопределить этот метод, чтобы включить другие гиперпараметры.

Возвращает
Словарь Python.

load_own_variables

Просмотреть исходный код

load_own_variables(
    store
)

Устанавливает состояние объекта оптимизатора.

save_own_variables

Просмотреть исходный код

save_own_variables(
    store
)

Получает состояние объекта оптимизатора.

scale_loss

Просмотреть исходный код

scale_loss(
    loss
)

Масштабировать потерю перед вычислением градиентов.

Масштабирует потерю перед вычислением градиентов в train_step. Это главным образом полезно во время обучения с смешанной точностью для предотвращения численных ошибок.

set_weights

Просмотреть исходный код

set_weights(
    weights
)

Установить веса оптимизатора.

stateless_apply

Просмотреть исходный код

stateless_apply(
    optimizer_variables, grads, trainable_variables
)

update_step

Просмотреть исходный код

update_step(
    gradient, variable, learning_rate
)

Обновить шаг, учитывая градиент и соответствующую переменную модели.

© 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/api_docs/python/tf/keras/optimizers/Ftrl

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API