Я уже рассказывал про meta-meta-learning (он же continual learning) - постановка, в которой мы учимся решать много задач, получая их по одной и переиспользуя знания из предыдущих. В данном случае у нас few-shot вариант.
Если мы просто обучаем нейросеть подряд на этих задачах, нейросеть будет забывать предыдущие - это побочный эффект обычно используемого обучающего алгоритма. В данной работе вместо обучающего алгоритма используется HyperTransformer. Схема такова:
- Есть архитектура свёрточной нейросети, её веса задаются вектором
wcnn. Для классификации используют Prototypical Loss, поскольку число классов заранее неизвестно. Это позволяет нейросети выдавать для картинки один вектор f(x).- Гипертрансформер получает на вход тренировочные данные текущей задачи (N сэмплов из K классов) и предыдущий
wcnn. На выходе у него следующая версия wcnn- Получившуюся свёрточную нейросеть прогоняют на валидации всех уже показанных задач и считают лосс. Вся процедура получается дифференцируемой и гипертрансформер обучают этот лосс минимизировать.
Несмотря на выигрыш по сравнению с бейзлайном, у меня есть сомнения по поводу такой параметризации этой схемы. Трансформер над вектором весов и задачей выглядит не очень естественной конструкцией. При этом, в теории оно должно выучиться при достаточных ресурсах и данных.
Авторы не проверяют свою модель в сценарии meta-testing, когда мы запускаем только инференс hypertransformer на новом датасете. Интуитивно, оно и не должно зажечь, поскольку количество параметров в таком трансформере наверняка достаточно, чтобы обучаться задачам самому, и поэтому он переобучился на meta-трейне.
С другой стороны, в целом, концепт генерации маленькой модели при помощи большой модели, обученной на больших объёмах данных, вызывает интерес. Но победить дистилляцию из большой модели в маленькую будет непросто. Посмотрим.
@knowledge_accumulator
