Как избежать локальных минимумов
В предыдущей задаче мы убедились, насколько легко алгоритм может застрять в локальном минимуме. Даже в простой задаче оптимизации с одной переменной градиентный спуск не смог найти глобальный минимум, если на пути встречались локальные. Один из способов решить эту проблему — использовать импульс (momentum), который позволяет оптимизатору преодолевать локальные минимумы. Мы снова воспользуемся функцией потерь из предыдущей задачи — она уже определена и доступна вам как loss_function().

Несколько оптимизаторов в tensorflow поддерживают параметр импульса, в том числе SGD и RMSprop. В этом упражнении вы будете использовать RMSprop. Обратите внимание, что на этот раз x_1 и x_2 инициализированы одинаковым значением. Кроме того, keras.optimizers.RMSprop() уже импортирован для вас из tensorflow.
Это упражнение является частью курса
Введение в TensorFlow на Python
Инструкции к упражнению
- Задайте для операции
opt_1скорость обучения 0,01 и импульс 0,99. - Настройте
opt_2на использование оптимизатора среднеквадратичного распространения (RMS) со скоростью обучения 0,01 и импульсом 0,00. - Определите операцию минимизации для
opt_2. - Выведите
x_1иx_2как массивыnumpy.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Initialize x_1 and x_2
x_1 = Variable(0.05,float32)
x_2 = Variable(0.05,float32)
# Define the optimization operation for opt_1 and opt_2
opt_1 = keras.optimizers.RMSprop(learning_rate=____, momentum=____)
opt_2 = ____
for j in range(100):
opt_1.minimize(lambda: loss_function(x_1), var_list=[x_1])
# Define the minimization operation for opt_2
____
# Print x_1 and x_2 as numpy arrays
print(____, ____)