Начальные значения смещения для нейронной сети

В настоящее время я строю CNN в тензорном потоке, и я инициализирую свою матрицу весов, используя инициализацию нормального веса He. Тем не менее, я не уверен, как я должен инициализировать свои значения смещения. Я использую ReLU в качестве функции активации между каждым сверточным слоем. Существует ли стандартный метод инициализации значений смещения?

# Define approximate xavier weight initialization (with RelU correction described by He)
def xavier_over_two(shape):
    std = np.sqrt(shape[0] * shape[1] * shape[2])
    return tf.random_normal(shape, stddev=std)

def bias_init(shape):
    return #???

1 ответ

Решение

Инициализация уклонов. Можно и обычно инициализировать смещения равными нулю, поскольку нарушение асимметрии обеспечивается небольшими случайными числами в весах. Для нелинейностей ReLU некоторым людям нравится использовать небольшое постоянное значение, такое как 0,01, для всех смещений, потому что это гарантирует, что все блоки ReLU срабатывают в начале и, следовательно, получают и распространяют некоторый градиент. Однако неясно, обеспечивает ли это последовательное улучшение (на самом деле некоторые результаты указывают на то, что это работает хуже), и более распространенным является просто использование инициализации с нулевым смещением.

источник: http://cs231n.github.io/neural-networks-2/

Помните о конкретном случае смещения последнего слоя. Как объясняет Андрей Карпати в своем "Рецепте обучения нейронных сетей":

хорошо инициализировать. Правильно инициализируйте веса последнего слоя. Например, если вы регрессируете некоторые значения, которые имеют среднее значение 50, то инициализируйте окончательное смещение равным 50. Если у вас есть несбалансированный набор данных с соотношением 1:10 положительных: отрицательных, установите смещение в ваших логитах так, чтобы ваша сеть предсказывала вероятность 0,1 при инициализации. Их правильная установка ускорит сходимость и устранит кривые потерь "хоккейной клюшки", когда на первых нескольких итерациях ваша сеть в основном просто изучает смещение.

Другие вопросы по тегам