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 типа сжатия (добавление штрафа 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 Значение с плавающей запятой, соответствующее параметру 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
)

Исключает переменные из затухания весов.

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

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

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