После недельного новогоднего перерыва возвращаемся в строй!
В данной работе авторы по-другому применяют уже разобранные мной самомодифицирующиеся матрицы весов.
Напомню идею механизма - у нас есть матрица весов
W, в которую мы подаём вход x. А эта матрица не только выдаёт выход y, но и векторы, с помощью которых мы рассчитываем добавку к матрице W, и обновляем её.У любой нейросети можно просто заменить обычный полносвязный слой на такой. Если заменить все слои, тогда сетка будет сама менять свои веса без специальной процедуры "обучения". Единственное, что в сетку в этом случае нужно подавать правильный ответ на вход при обучении.
Авторы взяли небольшую свёрточную нейросеть и заменили полносвязный слой в конце на самообучающийся слой. Итоговую сеть обучают мета-обучаться следующим образом:
1) Конструируется последовательность ML-задач, с примерами и своими метками
2) Примеры из этих задач последовательно скармливают сетке
3) В качестве таргета используется логлосс на тестовых примерах всех задач. Причём производительность на каждой задаче проверяется после каждой следующей задачи тоже, чтобы мета-обучать сетку не забывать предыдущие умения - то есть отсутствию "catastrophic forgetting" - известной проблемы нейросетей.
4) Вся эта конструкция дифференцируема и может обучаться градиентным спуском
Как я уже писал ранее, meta-meta-learning - это именно то, что нам нужно для получения "AGI". Я очень рад, что хотя бы некоторые исследователи видят правильную постановку задачи, которую нужно ставить перед моделью.
Конкретно к такой схеме у меня есть вопросы ввиду пределов масштабируемости из-за использования градиентного обучения - пробрасывать производные сквозь длинные последовательности может быть проблематично. Кроме того, по моему мнению, у пространства параметров обучаемого мета-алгоритма не должна быть высокая размерность, а тут у нас большие матрицы весов.
@knowledge_accumulator
