Перейти к содержанию

Регуляризаторы

Использование регуляторов

Регуляторы позволяют применять штрафные санкции к параметрам слоя или активности слоя во время оптимизации. Эти штрафы включены в функцию потерь, которую оптимизирует сеть.

Штрафы применяются для каждого слоя. Точный API будет зависеть от слоя, но слои Dense, Conv1D, Conv2D и Conv3D имеют унифицированный API.

Эти слои выставляют 3 аргумента по ключевым словам:

  • kernel_regularizer: экземпляр keras.regularizers.Regularizer
  • bias_regularizer: экземпляр keras.regularizers.Regularizer
  • activity_regularizer: экземпляр keras.regularizers.Regularizer

Пример

from keras import regularizers

model.add(Dense(64, input_dim=64,

                kernel_regularizer=regularizers.l2(0.01),

                activity_regularizer=regularizers.l1(0.01)))

Доступные штрафы

keras.regularizers.l1(0.)

keras.regularizers.l2(0.)

keras.regularizers.l1_l2(l1=0.01, l2=0.01)

Разработка новых регуляторов

Любая функция, которая принимает матрицу весов и возвращает тензор вклада потерь, может быть использована в качестве регуляризатора, например

from keras import backend as K

def l1_reg(weight_matrix):

    return 0.01 * K.sum(K.abs(weight_matrix))

model.add(Dense(64, input_dim=64,

                kernel_regularizer=l1_reg))

Кроме того, вы можете написать свои регуляторы объектно-ориентированным способом; см. примеры в модуле keras/regularizers.py.