Spec-Zone.ru › TensorFlow 2.9

tf.keras.optimizers.experimental.Ftrl

Оптимизатор, реализующий алгоритм FTRL.

Наследуется от: Optimizer, Module

tf.keras.optimizers.experimental.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,
    clipnorm=None,
    clipvalue=None,
    global_clipnorm=None,
    use_ema=False,
    ema_momentum=0.99,
    ema_overwrite_frequency=None,
    jit_compile=True,
    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 Значение с плавающей запятой, расписание, которое является tf.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 Строка. Имя для использования для весов аккумуляторов импульса, созданных оптимизатором.
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(), это происходит автоматически после последней эпохи, и вам ничего не нужно делать.
jit_compile Булево значение, по умолчанию True. Если True, оптимизатор будет использовать компиляцию XLA. jit_compile не может быть True при обучении с tf.distribute.experimental.ParameterServerStrategy. Кроме того, если не найдено устройство GPU, этот флаг будет игнорироваться.
**kwargs Аргументы ключевых слов, используемые только для обратной совместимости.
Атрибуты
iterations Количество шагов обучения, которые выполнил этот optimizer.

По умолчанию, итерации будут увеличиваться на единицу каждый раз, когда вызывается apply_gradients().

learning_rate

Методы

add_variable

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

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

Создать переменную оптимизатора.

Аргументы
shape Список целых чисел, кортеж целых чисел или одномерный тензор типа int32. По умолчанию скаляр, если не указано иначе.
dtype Тип данных переменной оптимизатора, которая должна быть создана. По умолчанию tf.keras.backend.floatx, если не указано иначе.
initializer Строка или вызываемая функция. Экземпляр инициализатора.
name Имя переменной оптимизатора, которая должна быть создана.
Возвращаемое значение
Переменная оптимизатора в формате tf.Variable.

add_variable_from_reference

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

add_variable_from_reference(
    model_variable, variable_name, shape=None, initial_value=None
)

Создать переменную оптимизатора из переменной модели.

Создать переменную оптимизатора на основе информации о переменной модели. Например, в оптимизаторе SGD моментум для каждой переменной модели создается соответствующая переменная моментума той же формы и типа.

Аргументы
model_variable tf.Variable. Соответствующая переменная модели для создаваемой переменной оптимизатора.
variable_name Строка. Префикс имени создаваемой переменной оптимизатора. Имя создаваемой переменной будет следовать шаблону {variable_name}/{model_variable.name}, например, momemtum/dense_1.
shape Список или кортеж, по умолчанию None. Форма создаваемой переменной оптимизатора. Если None, создаваемая переменная будет иметь такую же форму, как model_variable.
initial_value Тензор или Python-объект, преобразуемый в тензор, по умолчанию None. Начальное значение переменной оптимизатора. Если None, начальное значение будет равно 0 по умолчанию.
Возвращаемое значение
Переменная оптимизатора.

aggregate_gradients

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

aggregate_gradients(
    grads_and_vars
)

Агрегировать градиенты на всех устройствах.

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

Аргументы
grads_and_vars Список пар (градиент, переменная).
Возвращаемое значение
Список пар (градиент, переменная).

apply_gradients

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

apply_gradients(
    grads_and_vars, skip_gradients_aggregation=False
)

Применить градиенты к переменным.

Аргументы
grads_and_vars Список пар (градиент, переменная).
skip_gradients_aggregation Если True, агрегация градиентов не будет выполняться внутри оптимизатора. Обычно этот аргумент устанавливается в True, когда вы пишете пользовательский код, агрегирующий градиенты вне оптимизатора.
Возвращаемое значение
None
Возможные исключения
TypeError Если grads_and_vars имеет неправильный формат.
RuntimeError Если вызов происходит в контексте кросс-репликации.

build

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

build(
    var_list
)

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

Аргументы
var_list Список переменных модели, на которых нужно создать переменные Ftrl.

compute_gradients

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

compute_gradients(
    loss, var_list, tape=None
)

Вычислить градиенты потери на обучаемых переменных.

Аргументы
loss Tensor или вызываемый объект. Если вызываемый объект, loss не должен принимать аргументов и возвращать значение для минимизации.
var_list список или кортеж объектов Variable для обновления, чтобы минимизировать loss.
tape (Необязательно) tf.GradientTape. Если loss предоставлен как Tensor, должна быть предоставлена лента, которая вычислила loss.
Возвращает
Список пар (градиент, переменная). Переменная всегда присутствует, но градиент может быть None.

finalize_variable_values

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

finalize_variable_values(
    var_list
)

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

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

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

from_config

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

@classmethod
from_config(
    config
)

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

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

Аргументы
config Словарь Python, обычно результат вызова get_config.
Возвращает
Экземпляр оптимизатора.

get_config

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

get_config()

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

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

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

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

minimize

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

minimize(
    loss, var_list, tape=None
)

Минимизировать loss путём обновления var_list.

Этот метод просто вычисляет градиент с помощью tf.GradientTape и вызывает apply_gradients(). Если вы хотите обработать градиент перед применением, то вызовите tf.GradientTape и apply_gradients() явно вместо использования этой функции.

Аргументы
loss Tensor или вызываемый объект. Если вызываемый объект, loss не должен принимать аргументов и возвращать значение для минимизации.
var_list список или кортеж объектов Variable для обновления, чтобы минимизировать loss.
tape (Необязательно) tf.GradientTape.
Возвращает
None

update_step

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

update_step(
    gradient, variable
)

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

© 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/experimental/Ftrl

Spec-Zone.ru

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