Generative Teaching Networks: Accelerating Neural Architecture Search byLearning to Generate Synthetic Training Data [2019]
Когда мы оптимизируем архитектуру нейронной сети, существует проблема - чтобы оценить архитектуру, нам нужно прогнать её обучение, и в случае какого-нибудь ImageNet это проблематично.
Данная работа предлагает заменить обучение на всех тренировочных данных обучением на специально сгенерированном маленьком датасете, который содержит "оптимальные" сэмплы для обучения нейросети.
Как обучаем датасет?
1) Берём какую-нибудь свёрточную архитектуру и ваш тестовый датасет
2) Фиксируем, что наш синтетический датасет состоит из N батчей по K образцов.
3) Вместо того, чтобы учить напрямую N*K картинок, как параметры, мы учим генеративную сеть и N*K векторов шумов, которые в неё будут подаваться. Таким образом кол-во параметров становится гораздо меньше.
4) Обучаемся, пробрасывая "мета-градиенты" - считаем ошибку модели, которую прогнали на всех тренировочных данных, и потом применили на тестовых данных. Пробрасываем градиенты бэкпропом через весь процесс обучения до каждого шума и генеративной сети (см. картинку).
Далее этот датасет можно заморозить и гонять на нём нейросеть во время поиска нейронной архитектуры. Авторы сравнивают с baseline-ом, в котором берётся N*K реальных картинок, получается лучше.
Идея интересная, но есть 2 вопроса:
1) Какая здесь интуиция? Что именно мы делаем, обучая этот датасет? Какую именно информацию мы в него записываем, что это помогает быстрее учиться? На языке вертится, но сформулировать не могу, буду рад почитать, что вы про это думаете.
2) Насколько эта идея опирается на то, что это поиск параметров архитектуры для нейросетей определённого вида? Во многом вопрос связан с предыдущим. Интересно было бы, например, обучить датасет для свёрточной сети, а потом обучить на нём визуальный трансформер. И можно ли этот подход применять при обучении алгоритма "произвольной формы".
@knowledge_accumulator
Post #99
1.73K

- 👍 12
- 🤔 4