Learning to Combine Top-Down and Bottom-Up Signals in Recurrent Neural Networks with Attention over Modules
Sarthak Mittal, Alex Lamb, Anirudh Goyal, Vikram Voleti, Murray Shanahan, Guillaume Lajoie, Michael Mozer, Yoshua Bengio
Статья: https://arxiv.org/abs/2006.16981
Статья про дальнейшее развитие RIM — BRIM, Bidirectional RIM. Эту взяли на ICML 2020.
Серьёзное ограничение RIM (как и многих других архитектур, работающих с последовательностями наблюдений) в том, что в них отсутствуют top-down сигналы. По идее, предыдущий опыт даёт различную ценную информацию в виде убеждений, ожиданий, контекста и другой верхнеуровневой информации, могущей серьёзно повлиять на восприятие входных данных. BRIM собственно и предлагает совместить оба пути, bottom-up (обычный) и top-down.
Вот, кстати, недавно описанный Feedback Transformer тоже предлагал аналогичный путь для информации в сети, и он был неплох по результатам. В типовых же архитектурах передача информации сверху вниз отсутствует напрочь (рекуррентные сети — это не то, там связи лишь внутри одного слоя, сверху вниз их нет). А в мозгу таких связей навалом.
Ещё одно ограничение оригинальной работы про RIM — это отсутствие иерархии. В модели не было множества слоёв, были лишь конкурирующие модули, они все существовали на едином уровне иерархии.
Текущая работа добавляет к RIM, во-первых, иерархию слоёв, а, во-вторых, связи от более высоких в иерархии слоёв к нижним. Каждый слой по-прежнему состоит из некоторого числа отдельных модулей (как в RIM).
Общение между модулями теперь устроено богаче. Модуль из слоя L в момент времени t генерит ключи Q и обращается через механизм внимания к 1) нижележащим модулям со слоя L-1 в тот же момент времени t; 2) вышележащим модулям со слоя L+1 за предыдущий момент времени t-1; 3) ну и ко всё тому же вектору нулей, чтобы по активациям к этому вектору отобрать активные модули.
Внутри слоя общение модулей устроено как раньше — активные модули обновляют своё состояние по всем модулям текущего слоя, неактивные сохраняют старое состояние.
Никаких дополнительных лоссов модель не требует, это что называется drop-in replacement для LSTM/GRU.
Получается красивая модульная архитектура с иерархией, где потоки информации регулируются механизмами внимания. Это в общем уже близко к теории сознания под названием Global Workspace Theory (теория глобального рабочего пространства).
Проводят эксперименты с различными бейзлайнами: варианты LSTM (иерархические, с фидбеком, со вниманием, или со всем сразу), трансформеры, RMC, RIM, иерархический RIM. BRIM берут двуслойный.
На sequential MNIST/CIFAR BRIM генерализует на более высокие разрешения лучше остальных. Из прикольного, чем больше в данных на входе шума, тем больше модель смотрит на верхние модули.
На задаче сложения (идёт поток чисел на вход, затем сигнал какие два из потока нужно сложить результат лучше аналогичной LSTM.
На stochastic moving MNIST (видео 64x64 в котором одно или два символа летают и отскакивают от стенок, и надо предсказать будущие кадры) результат лучше, чем у другой модели.
На отскакивающих мячиках (в том числе с закрывающей часть картинки ширмой) BRIM даёт результат лучше, чем LSTM или RIM.
Ну и языковое моделирование тоже лучше.
В RL на десяти первых по алфавиту Атари играх работает лучше LSTM/RIM.
В общем с точки зрения перформанса норм.
Важность внимания и модульности показали ещё в RIM. Здесь дополнительно из абляций показали, что двунаправленность и иерархия также очень важны.
Sarthak Mittal, Alex Lamb, Anirudh Goyal, Vikram Voleti, Murray Shanahan, Guillaume Lajoie, Michael Mozer, Yoshua Bengio
Статья: https://arxiv.org/abs/2006.16981
Статья про дальнейшее развитие RIM — BRIM, Bidirectional RIM. Эту взяли на ICML 2020.
Серьёзное ограничение RIM (как и многих других архитектур, работающих с последовательностями наблюдений) в том, что в них отсутствуют top-down сигналы. По идее, предыдущий опыт даёт различную ценную информацию в виде убеждений, ожиданий, контекста и другой верхнеуровневой информации, могущей серьёзно повлиять на восприятие входных данных. BRIM собственно и предлагает совместить оба пути, bottom-up (обычный) и top-down.
Вот, кстати, недавно описанный Feedback Transformer тоже предлагал аналогичный путь для информации в сети, и он был неплох по результатам. В типовых же архитектурах передача информации сверху вниз отсутствует напрочь (рекуррентные сети — это не то, там связи лишь внутри одного слоя, сверху вниз их нет). А в мозгу таких связей навалом.
Ещё одно ограничение оригинальной работы про RIM — это отсутствие иерархии. В модели не было множества слоёв, были лишь конкурирующие модули, они все существовали на едином уровне иерархии.
Текущая работа добавляет к RIM, во-первых, иерархию слоёв, а, во-вторых, связи от более высоких в иерархии слоёв к нижним. Каждый слой по-прежнему состоит из некоторого числа отдельных модулей (как в RIM).
Общение между модулями теперь устроено богаче. Модуль из слоя L в момент времени t генерит ключи Q и обращается через механизм внимания к 1) нижележащим модулям со слоя L-1 в тот же момент времени t; 2) вышележащим модулям со слоя L+1 за предыдущий момент времени t-1; 3) ну и ко всё тому же вектору нулей, чтобы по активациям к этому вектору отобрать активные модули.
Внутри слоя общение модулей устроено как раньше — активные модули обновляют своё состояние по всем модулям текущего слоя, неактивные сохраняют старое состояние.
Никаких дополнительных лоссов модель не требует, это что называется drop-in replacement для LSTM/GRU.
Получается красивая модульная архитектура с иерархией, где потоки информации регулируются механизмами внимания. Это в общем уже близко к теории сознания под названием Global Workspace Theory (теория глобального рабочего пространства).
Проводят эксперименты с различными бейзлайнами: варианты LSTM (иерархические, с фидбеком, со вниманием, или со всем сразу), трансформеры, RMC, RIM, иерархический RIM. BRIM берут двуслойный.
На sequential MNIST/CIFAR BRIM генерализует на более высокие разрешения лучше остальных. Из прикольного, чем больше в данных на входе шума, тем больше модель смотрит на верхние модули.
На задаче сложения (идёт поток чисел на вход, затем сигнал какие два из потока нужно сложить результат лучше аналогичной LSTM.
На stochastic moving MNIST (видео 64x64 в котором одно или два символа летают и отскакивают от стенок, и надо предсказать будущие кадры) результат лучше, чем у другой модели.
На отскакивающих мячиках (в том числе с закрывающей часть картинки ширмой) BRIM даёт результат лучше, чем LSTM или RIM.
Ну и языковое моделирование тоже лучше.
В RL на десяти первых по алфавиту Атари играх работает лучше LSTM/RIM.
В общем с точки зрения перформанса норм.
Важность внимания и модульности показали ещё в RIM. Здесь дополнительно из абляций показали, что двунаправленность и иерархия также очень важны.
👍2
Coordination Among Neural Modules Through a Shared Global Workspace
Anirudh Goyal, Aniket Didolkar, Alex Lamb, Kartikeya Badola, Nan Rosemary Ke, Nasim Rahaman, Jonathan Binas, Charles Blundell, Michael Mozer, Yoshua Bengio
Статья: https://arxiv.org/abs/2103.01197
И ещё одна релевантная статья в значительной степени от тех же авторов, что и про RIM/BRIM. На этот раз суперсвежая, от 1 марта.
В современном DL есть большое движение в сторону более богатых и модульных репрезентаций. С RIM это вообще очевидно, но RIM пока не массовая архитектура. Есть активное движение к архитектуре Mixture of Experts (MoE), применявшейся в свежих Switch Transformer или переводчике M2M-100. Но даже обычные трансформеры по сути сегментируют вход по позициям, где у каждой позиции есть своя репрезентация.
Обычно в таких архитектурах взаимодействия между отдельными репрезентациями (или модулями, где они более выражены) реализованы попарно. Проблема таких попарных взаимодействий в том, что они могут не дать какого-то когерентного интегрированного представления или глобальной координации, а это может повредить задачам, ради которых оно делается.
И тут мы снова возвращаемся к упомянутой в прошлый раз теории глобального рабочего пространства (Global Workspace Theory, GWT), где вводится ограниченный канал (то самое глобальное рабочее пространство), через который взаимодействуют различные модули-специалисты, при этом соревнуясь за доступ к нему.
Данная работа вдохновлена GWT и авторы утверждают, что подобная архитектура даёт гибкость и генерализацию.
В целом, система составленная из модулей-специалистов с разреженными взаимодействиями обладают хорошими свойствами типа 1) возможности масштабирования (легко добавить новых специалистов); 2) лучшей устойчивости (выбивание части специалистов может не сильно повредить системе); 3) вычислительной эффективности (вычисления производятся в основном локально, что хорошо). Но синхронизация всё равно нужна.
GWT предлагает простой и понятный способ это устроить. Есть глобальная общая репрезентация, называющаяся рабочим пространством или доской. Она может быть модифицирована теоретически любым специалистом и далее рассылается всем специалистам в системе. При этом, чтобы в неё что-то записать, специалист соревнуется с остальными и по факту возникает некая приоритизация сигналов специалистов.
Общий канал коммуникации хорош тем, что он провоцирует выработку общего языка для общения. Без него каждый модуль для общения с другим модулем вырабатывал бы свой собственный протокол, и это очевидно плохо скейлится и вероятно плохо переносится на новые ситуации, которые не очень можно было обучить заранее. Кроме того с общим языком появляется взаимозаменяемость специалистов.
Для работы с общим пространством (SW, shared workspace) используется механизм внимания (это обычное multihead dot-product attention как в трансформерах), где элементы этого пространства, как и специалисты, рассматриваются как неупорядоченное множество. SW — это в каком-то смысле память. Скорее рабочая память.
Данная архитектура накручивается как на RIM, так и на трансформеры. В RIM всё и так уже модуляризовано (каждый модуль — это специалист), а в трансформерах специалистом считается каждая отдельная позиция.
По сути предложенная архитектура заменяет имеющиеся в RIM или трансформерах механизмы внимания на новый, работающий через глобальное рабочее пространство очень ограниченного размера (по аналогии с человеческой рабочей памятью авторы считают, что это число меньше 10).
Процесс работы устроен следующим образом:
1. Вход обрабатывается, чтобы получить его репрезентацию каждым специалистом. По сути здесь мы получаем какие-то начальные представления, с которыми дальше работать.
Anirudh Goyal, Aniket Didolkar, Alex Lamb, Kartikeya Badola, Nan Rosemary Ke, Nasim Rahaman, Jonathan Binas, Charles Blundell, Michael Mozer, Yoshua Bengio
Статья: https://arxiv.org/abs/2103.01197
И ещё одна релевантная статья в значительной степени от тех же авторов, что и про RIM/BRIM. На этот раз суперсвежая, от 1 марта.
В современном DL есть большое движение в сторону более богатых и модульных репрезентаций. С RIM это вообще очевидно, но RIM пока не массовая архитектура. Есть активное движение к архитектуре Mixture of Experts (MoE), применявшейся в свежих Switch Transformer или переводчике M2M-100. Но даже обычные трансформеры по сути сегментируют вход по позициям, где у каждой позиции есть своя репрезентация.
Обычно в таких архитектурах взаимодействия между отдельными репрезентациями (или модулями, где они более выражены) реализованы попарно. Проблема таких попарных взаимодействий в том, что они могут не дать какого-то когерентного интегрированного представления или глобальной координации, а это может повредить задачам, ради которых оно делается.
И тут мы снова возвращаемся к упомянутой в прошлый раз теории глобального рабочего пространства (Global Workspace Theory, GWT), где вводится ограниченный канал (то самое глобальное рабочее пространство), через который взаимодействуют различные модули-специалисты, при этом соревнуясь за доступ к нему.
Данная работа вдохновлена GWT и авторы утверждают, что подобная архитектура даёт гибкость и генерализацию.
В целом, система составленная из модулей-специалистов с разреженными взаимодействиями обладают хорошими свойствами типа 1) возможности масштабирования (легко добавить новых специалистов); 2) лучшей устойчивости (выбивание части специалистов может не сильно повредить системе); 3) вычислительной эффективности (вычисления производятся в основном локально, что хорошо). Но синхронизация всё равно нужна.
GWT предлагает простой и понятный способ это устроить. Есть глобальная общая репрезентация, называющаяся рабочим пространством или доской. Она может быть модифицирована теоретически любым специалистом и далее рассылается всем специалистам в системе. При этом, чтобы в неё что-то записать, специалист соревнуется с остальными и по факту возникает некая приоритизация сигналов специалистов.
Общий канал коммуникации хорош тем, что он провоцирует выработку общего языка для общения. Без него каждый модуль для общения с другим модулем вырабатывал бы свой собственный протокол, и это очевидно плохо скейлится и вероятно плохо переносится на новые ситуации, которые не очень можно было обучить заранее. Кроме того с общим языком появляется взаимозаменяемость специалистов.
Для работы с общим пространством (SW, shared workspace) используется механизм внимания (это обычное multihead dot-product attention как в трансформерах), где элементы этого пространства, как и специалисты, рассматриваются как неупорядоченное множество. SW — это в каком-то смысле память. Скорее рабочая память.
Данная архитектура накручивается как на RIM, так и на трансформеры. В RIM всё и так уже модуляризовано (каждый модуль — это специалист), а в трансформерах специалистом считается каждая отдельная позиция.
По сути предложенная архитектура заменяет имеющиеся в RIM или трансформерах механизмы внимания на новый, работающий через глобальное рабочее пространство очень ограниченного размера (по аналогии с человеческой рабочей памятью авторы считают, что это число меньше 10).
Процесс работы устроен следующим образом:
1. Вход обрабатывается, чтобы получить его репрезентацию каждым специалистом. По сути здесь мы получаем какие-то начальные представления, с которыми дальше работать.
2. Специалисты соревнуются за право записи в глобальное пространство. Этот механизм по сути обеспечивает реагирование только на критически важные сигналы, так чтобы всякая ерунда не захламляла GWT. Соревнования сделано через внимание, Q поступает из памяти (то самое GWT), а K и V от специалистов. Память по результату обновляется либо через soft-attention от всех специалистов (но по факту мы знает, что обычно там доминирует их небольшое число, ибо софтмакс), либо вообще через top-k softmax. Первые модели дальше будут называться SSW (shared workspace with soft competition), вторые HSW (hard attention). Содержимое памяти обновляется через хитрый механизм с гейтами как в RMC (https://arxiv.org/abs/1806.01822).
3. Содержимое памяти бродкастится всем специалистам. Специалисты обновляют своё состояние снова через механизм внимания (генерят свои Q, получают K,V из памяти, прибавляют к своим состояниям взвешенную таким образом через внимание память). После обновления состояния с учётом памяти специалисты вычисляют свои обычные функции (LSTM/GRU или FFN для трансформера).
Заодно как бонус получаем линейную вычислительную сложность от числа специалистов.
Неожиданная приятность другого рода в том, что эта работа ссылается на наш с Мишей Бурцевым Memory Transformer (https://arxiv.org/abs/2006.11527). У нас тоже в одном из вариантов в трансформере был боттлнек в виде памяти небольшого размера.
И дальше собственно эксперименты.
На задачке определения равносторонних треугольников (когда на картинке есть три кластера точек) трансформеры с общим рабочим пространством (особенно HSW) сходятся быстрее обычных и дают более высокое качество. Sparse transformer, кстати, оказывается здесь особенно плох.
Задачки на object tracking из CATER dataset тоже показывают, что трансформеры с SW лучше обычных.
На задачах relational reasoning из CLEVR, где по картинке и текстовому вопросу надо ответить про определённые свойства объектов и их отношения с другими, трансформеры с SW сходятся сильно быстрее обычных и дают более высокое итоговое качество.
На задачах physical reasoning и всё тех же отскакивающих мячиков, что и раньше (надо предсказать будущие кадры видео), RIM + SW лучше всех и это преимущество растёт и с ростом горизонта предсказания, и с ростом числа мячиков.
Была ещё задачка на RL из Starcraft 2, где надо предсказывать будущие наблюдения агентов, RIM + SW тоже бьём и обычный LSTM, и RIM. Что интересно, обычный RIM с попарными взаимодействиями между специалистами, здесь даже хуже LSTM.
В общем хорошая тема, ждём развитий.
3. Содержимое памяти бродкастится всем специалистам. Специалисты обновляют своё состояние снова через механизм внимания (генерят свои Q, получают K,V из памяти, прибавляют к своим состояниям взвешенную таким образом через внимание память). После обновления состояния с учётом памяти специалисты вычисляют свои обычные функции (LSTM/GRU или FFN для трансформера).
Заодно как бонус получаем линейную вычислительную сложность от числа специалистов.
Неожиданная приятность другого рода в том, что эта работа ссылается на наш с Мишей Бурцевым Memory Transformer (https://arxiv.org/abs/2006.11527). У нас тоже в одном из вариантов в трансформере был боттлнек в виде памяти небольшого размера.
И дальше собственно эксперименты.
На задачке определения равносторонних треугольников (когда на картинке есть три кластера точек) трансформеры с общим рабочим пространством (особенно HSW) сходятся быстрее обычных и дают более высокое качество. Sparse transformer, кстати, оказывается здесь особенно плох.
Задачки на object tracking из CATER dataset тоже показывают, что трансформеры с SW лучше обычных.
На задачах relational reasoning из CLEVR, где по картинке и текстовому вопросу надо ответить про определённые свойства объектов и их отношения с другими, трансформеры с SW сходятся сильно быстрее обычных и дают более высокое итоговое качество.
На задачах physical reasoning и всё тех же отскакивающих мячиков, что и раньше (надо предсказать будущие кадры видео), RIM + SW лучше всех и это преимущество растёт и с ростом горизонта предсказания, и с ростом числа мячиков.
Была ещё задачка на RL из Starcraft 2, где надо предсказывать будущие наблюдения агентов, RIM + SW тоже бьём и обычный LSTM, и RIM. Что интересно, обычный RIM с попарными взаимодействиями между специалистами, здесь даже хуже LSTM.
В общем хорошая тема, ждём развитий.
arXiv.org
Relational recurrent neural networks
Memory-based neural networks model temporal data by leveraging an ability to remember information for long periods. It is unclear, however, whether they also have an ability to perform complex...
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, так понимаю, выучивается, а не зависит от входа или какого-то рандома.
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
👍2
Эксперименты показали, что на ImageNet персивер в ~44M параметров бьёт заточенный на это ResNet-50 (у него правда обычно ~25M), сильно бьёт обычный трансформер (но там пришлось уменьшать размер входа до 64x64 чтобы он смог работать) и в общем сравним с недавним ViT (https://t.me/gonzo_ML/434).
На датасете AudioSet, где надо классифицировать звуковые события в видео, моделька дала SoTA на чистой видео модальности, а также лучшая и на чистом аудио, и на audio+video, хоть там разница и поменьше.
На датасете с облаками точек ModelNet40 не SoTA, но весьма достойно, особенно учитывая, что SoTA весьма сложна.
В общем, модель работает. Что особенно прекрасно, она хорошо контрибьютит в большое свежее движение трансформеров от текстов к картинкам и к другим модальностям, а тут и к мультимодальности.
На датасете AudioSet, где надо классифицировать звуковые события в видео, моделька дала SoTA на чистой видео модальности, а также лучшая и на чистом аудио, и на audio+video, хоть там разница и поменьше.
На датасете с облаками точек ModelNet40 не SoTA, но весьма достойно, особенно учитывая, что SoTA весьма сложна.
В общем, модель работает. Что особенно прекрасно, она хорошо контрибьютит в большое свежее движение трансформеров от текстов к картинкам и к другим модальностям, а тут и к мультимодальности.
Telegram
gonzo-обзоры ML статей
An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob…
Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob…
👍1