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