TGViewer
gonzo-обзоры ML статей gonzo-обзоры ML статей @gonzo_ml · 24.5K subscribers
Post #545 4.37K
Perceiver: General Perception with Iterative Attention
Andrew Jaegle, Felix Gimeno, Andrew Brock, Andrew Zisserman, Oriol Vinyals, Joao Carreira
Статья: https://arxiv.org/abs/2103.03206
Код (неавторский): https://github.com/lucidrains/perceiver-pytorch

Работа, нацеленная на мультимодальность, чтобы одна универсальная архитектура на основе трансформера могла работать с данными разной природы.

Сейчас работа с различными модальностями часто основана на выборе подходящих задаче inductive biases, учитывающих знание о том, как соотносятся между собой элементы входа. Например, свёрточные сетки полагаются на локальность фич в изображениях и имеют подходящий для этого bias. С текстами хорошо работает трансформер. Ну и так далее. Смешивать разные модальности в одной модели в целом непросто.

Хочется заменить это на одну универсальную архитектуру, делающую по возможности меньше таких предположений о структуре входа. Ну то есть давайте заложим поменьше biases, сделаем универсальную архитектуру, и позволим ей выучить всё из данных. Если получится, не придётся затачиваться на отдельные модальности и можно будет использовать одну общую архитектуру для смешанных модальностей.

Собственно, Perceiver — это архитектура, основанная на трансформере и использующая асимметричный механизм внимания (кросс-внимание), могущий итеративно выхватывать из входа релевантные данные и агрегировать их внутри себя, и способный скейлиться на очень большие размеры входа (как раз чего не могут обычные трансформеры, хотя за последнее время появилось много эффективных их реализаций).

Как оно работает?

Основная идея подхода — завести маленький набор латентных переменных (latent array). Эти юниты будут через механизм внимания обращаться ко входу (потенциально большому) и таким образом окажутся боттлнеком, который должен отсеять важные части входа. И делать это perceiver может итеративно, потому что таких блоков в сети будет несколько. Каждый раз, соответственно, он может обращаться к разным частям входа, в зависимости от того, что он “узнал” на предыдущих шагах.

Авторы предлагают посмотреть на эту модель как на выполняющую кластеризацию входа end-to-end, где скрытые юниты являются центрами кластеров. Не знаю, мне сходу неочевидно, почему это так.

Поскольку временная/пространственная информация всё-таки важна, а модель на структуру входа напрямую не закладывается, авторы добавляют к каждому входному элементу позиционные энкодинги на основе Фурье (синусы и косинусы от логарифмического банка частот, а координата внутри измерения масштабируется в диапазон [-1,1]). Эмбеддинги не добавляются ко входу (как в оригинальном трансформере), а конкатенируются с ним.

Авторы считают, что эта история с позиционными эмбеддингами не дискредитирует их подход c уменьшением implicit biases. Типа, мы даём сети фичи, а как их использовать её дело, сама выучит и решит как лучше. К тому же их легче адаптировать к новым доменам, чем собирать новую архитектуру. Ну и вообще мультимодальные модели так легче собирать.

Внутри модели повторяются два основных блока: 1) кросс-внимание (cross-attention), где Q приходит из низкоразмерной латентной части, а K/V из входа (большого), и 2) обычное внимание (self-attention трансформера), трансформирующее эти latent’ы. Эти блоки могут повторяться много раз, и даже иметь расшаренные веса между этими повторениями. Тогда получается что-то типа развёрнутой по глубине RNN или универсального трансформера.

Стандартное внимание по-прежнему остаётся квадратичным, но оно здесь от низкоразмерного latent’а (<=1024), так что не так страшно. Можно заодно глубины добавить, чтобы модель посложнее была (на ImageNet сделали 48 таких блоков). У latent’ов есть обучаемые позиционные эмбеддинги. Сам этот latent array, так понимаю, выучивается, а не зависит от входа или какого-то рандома.
GitHub GitHub - lucidrains/perceiver-pytorch: Implementation of Perceiver, General Perception with Iterative Attention, in Pytorch Implementation of Perceiver, General Perception with Iterative Attention, in Pytorch - lucidrains/perceiver-pytorch
  • 👍 3
More from @gonzo_ml
  1. Oct 5, 2026photo post
  2. Oct 5, 2026photo post
  3. Oct 5, 2026Сингулярность отменяется, слава Коши! The Dynamics of Intelligence Explosions Toby Ord Pap…
  4. Oct 4, 2026photo post
  5. Oct 4, 2026По свежим запросам читателей. Это какая-то интересная статья — получается, что достаточно…
  6. Oct 4, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →