Почему проверка градиента медленная для обратного распространения? - PullRequest
0 голосов
/ 12 октября 2018

Я недавно выучил алгоритм «Проверка градиента», чтобы убедиться, что производные обратного распространения моей нейронной сети рассчитаны правильно.

Курс, из которого я выучил , и многие другиеисточники, такие как этот , утверждают, что это намного медленнее, чем вычисление производных, но я не могу найти нигде, где бы объяснялось ПОЧЕМУ.

Итак, почему проверка градиента медленнее, чем вычислениенапрямую производная?

Насколько она медленнее?

1 Ответ

0 голосов
/ 13 октября 2018

В обратном распространении вы выполняете обратный режим автоматического / алгоритмического дифференцирования для функции, которая имеет очень большое количество входов N и только один выход.

В обратном режиме вы вычисляетепроизводные всех входов за один проход по цепочке операций.Это потребует около 3-х оценок функций плюс накладные расходы организации на выполнение обратной цепочки операций, сохранение и доступ к промежуточным результатам.

В режиме пересылки для той же ситуации, которую вы используете для «проверки градиента»«Независимо от того, продвигаете ли вы производные AD или вычисляете разделенные разницы, вам нужно будет рассчитывать каждую производную отдельно.Общая стоимость составляет около 2 * N функциональных оценок.

А так как N большое, 2 * N намного больше, чем 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...