Проходят ли градиенты через необучаемые переменные в тензорном потоке? - PullRequest
0 голосов
/ 28 февраля 2019

Я обучаю нейронную сеть, в которую включены средние учителя .Процесс выглядит следующим образом:

  1. Возьмите контролируемую архитектуру и сделайте ее копию.Давайте назовем исходную модель учеником, а новую - учителем.

  2. На каждом этапе обучения используйте одну и ту же мини-серию в качестве входных данных для ученика и учителя, но добавьте случайное увеличение или шумна входы отдельно.Добавьте дополнительную стоимость согласованности между результатами ученика и учителя (после softmax).

  3. Пусть оптимизатор обновит вес ученика в обычном режиме.

  4. Пустьвеса учителей - это экспоненциальная скользящая средняя (EMA) весов учеников.То есть после каждого шага обучения немного обновляйте веса учителей в сторону весов учеников.

Кроме того, в документации тензорного потока говорится, что переменные EMA создаются с помощью (trainable = False) и добавляютсяв коллекцию GraphKeys.ALL_VARIABLES.Теперь, когда они не обучаемы, им не будет применен градиент, я понимаю это.Но, поскольку они зависят от текущих обучаемых переменных графа, и, следовательно, от этого зависят и прогнозы сети учителей;будет ли дополнительный градиент потока к обучаемым переменным из-за зависимости ema от них?Вообще, не обучаемые переменные пропускают градиенты через них?

1 Ответ

0 голосов
/ 28 февраля 2019

Да.TLDR: все, что входит в потерю, будет генерировать градиенты.

Поток такой:

  • вычислительные потери
  • вычисляют градиенты.Обычно это для снижения потерь.Градиенты обратно распространяются через вашу модель.
  • Возьмите обучаемые переменные и настройте их на основе алгоритма градиента / оптимизации.

Если переменная не обучаема, то она не корректируется, а градиентывсе еще распространяются.

будет ли дополнительный градиентный поток к обучаемым переменным из-за зависимости ema от них?

Только вычисление ema на основе других вещей в вашем графе,это не изменит градиенты.Однако если результат будет включен в потери, он будет генерировать градиенты и распространять больше градиентов для оптимизации потерь.

...