Использование регуляторов
Регуляторы позволяют применять штрафные санкции к параметрам слоя или активности слоя во время оптимизации. Эти штрафы включены в функцию потерь, которую оптимизирует сеть.
Штрафы применяются для каждого слоя. Точный 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.