@adelshin23

Как работает эта деталь в градиентном спуске?

# cделать шаг градиента
def step(v,direction, step_size):
   """Двигаться с шаговым размером step_size в направлении от v"""
     return [v_i + step_size*direction_i  for v_i, direction_i in zip(v, direction)]

Как это работает?direction в нашем случае градиент.Зачем из v_i вычитать произведение частной производной и размера шага?

Вопрос 2: Зачем в стохастическом спуске растасовывают данные?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
1 - нарисуйте картинку для одномерного случая. Градиент превратится в обычную производную. Производная - это угол наклона касательной к нашей cost функции. Получается на этом шаге мы смотрим возрастает функция или нет (производная больше или меньше) и в зависимости от этого смещаемся в сторону, где функция меньше на размер шага(отсюда и название - градиентный спуск, мы спускаемся к минимуму функции используя градиент как направление). Для многомерного случая все так же, мы по сути делаем это для каждой переменной.
2 - чтобы не попасть на локальный минимум
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ivodopyanov
NLP, python, numpy, tensorflow
2 - в части исходных данных может быть какая-то дополнительная структура, которая и правда приведет нас к локальному минимуму. Например, если какие-то N примеров подряд имеют примерно одинаковые входные или выходные данные, то тогда модель обучится, что данные только такого характера и есть в принципе, и ей сложнее будет "расстаться" с этим знанием при обучении на следующих примерах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы