Примечания к исследованию: Оптимизация сетей глубокого обучения — параметры инициализации

машинное обучение

Оптимизация сети глубокого обучения — параметры инициализации

Влияние параметров

При обучении нейронной сети с использованием градиентного спуска необходимо инициализировать параметры. Для параметров w (весовых матриц) и параметров b (векторов смещения) использование различных стратегий инициализации может иметь очень большое влияние на результаты и эффективность обучения:

  1. Ускорить сходимость градиентного спуска
  2. Увеличьте вероятность сходимости градиентного спуска к меньшей ошибке обучения (и обобщения)

Схемы с разными параметрами:

  1. инициализирован до 0
    • не может «нарушить симметрию»
    • This means that every neuron in each layer will learn the same thing
for l in range(1, L):
    parameters['W' + str(l)] = np.zeros((layers_dims[l],layers_dims[l-1]))
    parameters['b' + str(l)] = np.zeros((layers_dims[l],1))

alt

  1. случайная инициализация
    • success to "break symmetry",make sure different hidden units can learn different things
    • Initializing weights to very large random values does not work well.
    • плохая инициализация может привести к исчезновению/взрыву градиентов
for l in range(1, L):
        parameters['W' + str(l)] = np.random.randn(layers_dims[l],layers_dims[l-1]) * 10
        parameters['b' + str(l)] = np.zeros((layers_dims[l],1))

3. Пользовательская схема инициализации - He initialization (автор He et al., 2015)

for l in range(1, L + 1):
        parameters['W' + str(l)] = np.random.randn(layers_dims[l],layers_dims[l-1]) * np.sqrt(2/layers_dims[l-1])
        parameters['b' + str(l)] = np.zeros((layers_dims[l],1))

Суммировать:

  • Different initializations lead to different results
  • Random initialization is used to break symmetry and make sure different hidden units can learn different things
  • Don't intialize to values that are too large
  • He initialization works well for networks with ReLU activations.