Есть очень классное
видео с объяснением того, как работает Perciever и в чем суть архитектуры. Perciever – это сетка, обученная для мультмодельных задач, то есть на вход может поступать много разных типов информации (текст, изображение, звук и т.д.), и сама нейронка не знает, что это именно за данные. Помимо того, что нужно уметь справляться с разными инпутами, в этом случае также встает проблема с размерностью, так как те же самые изображения, разбитые на пиксели, продуцируют такой размер входных данных, который классический транфсормер не особо может обработать (поэтому в предшествующих решениях картинку разбивают на патчи, например)
Если очень кратко суммировать:
1. Сначала создается latent array небольшого размера, такого, что классический self-attention может его обработать (условно, каким-то образом мы инициализируем вектор)
2. Берутся входные данные (например, картинка) и растягивается в byte array. Этот array может быть очень большой. Поскольку данные просто растягиваются, а не преобразовываются неким образом, сетка становится инвариантна с типу данных
3. Из этой входной информации получаются матрицы K и V, которые потом пойдут на вход в механизм аттеншена. Матрицу Q мы получаем из небольшого latent array, и она также имеет небольшую размерность –> после аттеншена мы получаем гораздо более короткую последовательность, чем входные данные.
Интуитивно можно понимать, что Q – это то, что мы хотим выучить на основе данных, а K и V – на что нам обращать внимание при этом (что каждый кусочек входных данных нам может сообщить в разрезе того, что мы хотим выучить)
4. Потом этот преобразованный после аттеншена вектор попадает в архитектуру трансформера, он выдает снова преобразованную последовательность, и мы снова 'добавляем' информацию из исходных данных на каждой такой итерации.
5. Архитектура в итоге работает как RNN – сначала мы инициализировали некий Q, получили K и V из данных, подали их в аттеншн и потом в трансформер, получили новый latent array, из которого снова достали Q, и снова получили K и V из данных. То есть на 2+ этапе Q уже содержит информацию о данных, и дальше мы ее 'уточняем'
Еще авторы позволяют weight sharing, чтобы снизить число параметров (получается сопоставимо с ResNet), и обучают на картинках, видео, аудио и 3D clouds. Результаты работы сетки можно посмотреть
здесь, если не видели, они довольно впечатляющие
Как отмечают в коментах, подтверждается тезис Шмидхубера о том, что чем больше архитектура похожа на LSTM, тем она лучше
https://www.youtube.com/watch?v=P_xeshTnPZg