Big Bird: Transformers for Longer Sequences
Manzil Zaheer, Guru Guruganesh, Avinava Dubey, Joshua Ainslie, Chris Alberti, Santiago Ontanon, Philip Pham, Anirudh Ravula, Qifan Wang, Li Yang, Amr Ahmed
Статья: https://arxiv.org/abs/2007.14062
Чего-то мы про Big Bird не написали, а это непорядок. Во-первых, потому что это ещё один персонаж Улицы Сезам (следующий полезный трансформер определённо надо назвать Mr. Snuffleupagus, https://muppet.fandom.com/wiki/Mr._Snuffleupagus). Во-вторых, потому что это развитие ETC (https://news.1rj.ru/str/gonzo_ML/299) от тех же (в основном) авторов.
В двух словах идея такая: сделаем sparse attention таким, чтобы сложность механизма внимания стала линейной.
Для этого внимание разбирают на три части:
- глобальные токены g (смотрят на всю последовательность полным вниманием)
- случайные токены r (ключи, на которые смотрит каждый query)
- блок локальных соседей вправо и влево, всего w
Если про конкретику, то на задачах QA весь контекст имеет длину 4096 токенов, w=192..252, g=128..430, r=192.
В ETC не было рандомной части.
Доказывают, что Big Bird обладает всеми известными теоретическими свойствами полного трансформера (а заодно он Тьюринг-полный). Показывают на практике, что он реально рулит и бьёт другие модели на разных NLP задачах.
Для получения всего этого счастья заходят со стороны спарсификации графов и того, что случайные графы (здесь Эрдёш-Реньи, где каждое ребро независимо выбирается с фиксированной вероятностью) могут аппроксимировать полные графы в некоторых конкретных контекстах, включая их спектральные свойства. Здесь важным оказывается то, что информация между любыми двумя узлами может передаваться быстро.
Вторая идея — важность локального внимания, но она была уже в ETC.
Но экспериментально показывают, что этих двух вещей недостаточно для достижения качества полного трансформера, зато с глобальными токенами всё становится в порядке (отдельные глобальные токены недавно мы тоже рассматривали с Мишей Бурцевым в нашем Memory Transformer, https://arxiv.org/abs/2006.11527). Глобальные токены бывают двух типов: “внутренние” (какие-то из имеющихся токенов нарекаются глобальными), это называется ITC, Internal Transformer Construction; или “внешние” (добавляются к последовательности), это называется ETC, Extended Transformer Construction.
Доказывают попутно теорему про то, что если механизм разреженного внимания определяется графом, содержащим звезду (по сути старый добрый Star-Transformer, https://arxiv.org/abs/1902.09113), то он является универсальным аппроксиматором.
Полученный трансформер работает, и в отличие от Longformer (https://news.1rj.ru/str/gonzo_ML/292), который обучался на Quadro RTX8000 с 48 гигов памяти, этот обучают на карточке с 16 гигами на чип (но похоже, что уже на TPU).
Предобучают с MLM objective на нескольких датасетах с длинными документами (Books, википедия, Stories, CC-News), стартуют с чекпойнта Роберты. Получают предсказание пропущенных токенов с лучшим качеством (в терминах BPC), чем у роберты и лонгформера.
Далее файнтюнят на Quenstion Answering, тоже получается хорошо. И на классификации больших документов тоже многих побеждают.
Это были encoder-only задачи. Из encoder-decoder задач выбирают суммаризацию, в ней разреженный оставляют только энкодер, а декодер обычный. Типа саммари всё равно короткое, в отличие от входа. На суммаризации тоже всё хорошо.
Из интересного, применяют к биологической задаче из геномики. Там тоже сначала предобучают на MLM задаче по человеческому референсному геному (GRCh37), причём делают хитрость, чтобы контекст можно было сделать ещё пошире -- работают не на уровне букв-нуклеотидов, а проходятся Sentencpiece токенизатором и получают словарь в 32К токенов со средней длиной в 8.78 букв. И затем файнтюнят на задачи предсказания промоторов и профиля хроматина. Тоже получается хорошо.
Код, кажется, пока ещё не выложен, в huggingface тоже модели ещё нет (https://github.com/huggingface/transformers/issues/6113).
Manzil Zaheer, Guru Guruganesh, Avinava Dubey, Joshua Ainslie, Chris Alberti, Santiago Ontanon, Philip Pham, Anirudh Ravula, Qifan Wang, Li Yang, Amr Ahmed
Статья: https://arxiv.org/abs/2007.14062
Чего-то мы про Big Bird не написали, а это непорядок. Во-первых, потому что это ещё один персонаж Улицы Сезам (следующий полезный трансформер определённо надо назвать Mr. Snuffleupagus, https://muppet.fandom.com/wiki/Mr._Snuffleupagus). Во-вторых, потому что это развитие ETC (https://news.1rj.ru/str/gonzo_ML/299) от тех же (в основном) авторов.
В двух словах идея такая: сделаем sparse attention таким, чтобы сложность механизма внимания стала линейной.
Для этого внимание разбирают на три части:
- глобальные токены g (смотрят на всю последовательность полным вниманием)
- случайные токены r (ключи, на которые смотрит каждый query)
- блок локальных соседей вправо и влево, всего w
Если про конкретику, то на задачах QA весь контекст имеет длину 4096 токенов, w=192..252, g=128..430, r=192.
В ETC не было рандомной части.
Доказывают, что Big Bird обладает всеми известными теоретическими свойствами полного трансформера (а заодно он Тьюринг-полный). Показывают на практике, что он реально рулит и бьёт другие модели на разных NLP задачах.
Для получения всего этого счастья заходят со стороны спарсификации графов и того, что случайные графы (здесь Эрдёш-Реньи, где каждое ребро независимо выбирается с фиксированной вероятностью) могут аппроксимировать полные графы в некоторых конкретных контекстах, включая их спектральные свойства. Здесь важным оказывается то, что информация между любыми двумя узлами может передаваться быстро.
Вторая идея — важность локального внимания, но она была уже в ETC.
Но экспериментально показывают, что этих двух вещей недостаточно для достижения качества полного трансформера, зато с глобальными токенами всё становится в порядке (отдельные глобальные токены недавно мы тоже рассматривали с Мишей Бурцевым в нашем Memory Transformer, https://arxiv.org/abs/2006.11527). Глобальные токены бывают двух типов: “внутренние” (какие-то из имеющихся токенов нарекаются глобальными), это называется ITC, Internal Transformer Construction; или “внешние” (добавляются к последовательности), это называется ETC, Extended Transformer Construction.
Доказывают попутно теорему про то, что если механизм разреженного внимания определяется графом, содержащим звезду (по сути старый добрый Star-Transformer, https://arxiv.org/abs/1902.09113), то он является универсальным аппроксиматором.
Полученный трансформер работает, и в отличие от Longformer (https://news.1rj.ru/str/gonzo_ML/292), который обучался на Quadro RTX8000 с 48 гигов памяти, этот обучают на карточке с 16 гигами на чип (но похоже, что уже на TPU).
Предобучают с MLM objective на нескольких датасетах с длинными документами (Books, википедия, Stories, CC-News), стартуют с чекпойнта Роберты. Получают предсказание пропущенных токенов с лучшим качеством (в терминах BPC), чем у роберты и лонгформера.
Далее файнтюнят на Quenstion Answering, тоже получается хорошо. И на классификации больших документов тоже многих побеждают.
Это были encoder-only задачи. Из encoder-decoder задач выбирают суммаризацию, в ней разреженный оставляют только энкодер, а декодер обычный. Типа саммари всё равно короткое, в отличие от входа. На суммаризации тоже всё хорошо.
Из интересного, применяют к биологической задаче из геномики. Там тоже сначала предобучают на MLM задаче по человеческому референсному геному (GRCh37), причём делают хитрость, чтобы контекст можно было сделать ещё пошире -- работают не на уровне букв-нуклеотидов, а проходятся Sentencpiece токенизатором и получают словарь в 32К токенов со средней длиной в 8.78 букв. И затем файнтюнят на задачи предсказания промоторов и профиля хроматина. Тоже получается хорошо.
Код, кажется, пока ещё не выложен, в huggingface тоже модели ещё нет (https://github.com/huggingface/transformers/issues/6113).
Muppet Wiki
Mr. Snuffleupagus | Muppet Wiki | Fandom
Mr. Snuffleupagus is a full-bodied Muppet character on Sesame Street. He lives with his family in a cave just off of the street. His species is Snuffleupagus as well as his last name. Although his...
Tailoring: encoding inductive biases by optimizing unsupervised objectives at prediction time
Ferran Alet, Kenji Kawaguchi, Tomas Lozano-Perez, Leslie Pack Kaelbling
Статья: https://arxiv.org/abs/2009.10623
Очередная прикольная работа из серии “а что, так можно было?”.
Помните, на заре текущего хайпа, когда ещё даже VGG не появилась (и тем более резнеты), был популярен такой способ получения более точных предсказаний уже обученной модели, когда картинка подавалась на вход несколько раз с кропами, отзеркаливанием, иногда поворотами (где это было можно), а результат предсказания потом усреднялся?
Этот метод возвращается в новой ипостаси — Tailoring! Не знаю, как лучше по-русски назвать, пусть будет “подгонка”.
В чём суть?
В основе успеха многих решений лежит правильный inductive bias. Обычный классический подход подразумевает добавление inductive bias в архитектуру или через дополнительные лоссы. Первый подход неуниверсальный, а второй как и обучение с обычным лоссом приводит к generalization gap между данными обучения и предсказания, а также уводит objective в сторону от того, который нам реально важен.
Проблема здесь в том, что когда поступают запросы на инференс, модель уже не может использовать знание об этой новой конкретной точке, она “заморожена”. А собственно кто нам запретил воспользоваться этой новой информацией?
Вапник в своё время предложил подход под названием transductive learning (в противовес обычному inductive learning), где алгоритм получает не только обучающие данные, но и набор точек, на которых потом надо будет сделать предсказания, то есть делает предсказание от частного к частному без перехода к общему. Кстати, есть мнение, что Бертран Рассел сделал это ещё раньше, https://www.cs.bham.ac.uk/~jdk/transductive.html — не прогуливайте философию, в ML она тоже полезна!
Красивый пример, когда трансдукция полезнее обычной индукции, реализованной в виде supervised модели, есть в английской википедии — это классификация точек (https://en.wikipedia.org/wiki/Transduction_(machine_learning)#Example_problem). Действительно, обладая полным набором точек, хоть бы большинство из них и было без разметки, сделать разумную классификацию гораздо проще, проведя сначала unsupervised кластеризацию. И вообще говоря, множество подходов с предобучением или semi-supervised подходов, по сути делают что-то подобное. Теперь мы знаем, как это называется! :)
Но проблема с этим подходом в том, что обычно заранее мы не знаем, на чём надо будет потом применять модель, и хочется подход, который умеет делать предсказания в режиме онлайн по мере поступления новых точек. А гонять на каждом предсказании полный вариант transductive learning это too much.
Авторы предлагают подход tailoring и meta-tailoring. При “подгонке” (tailoring) мы при поступлении новой точки на предсказание файн-тюним модель на специальный unsupervised tailoring loss, а затем делаем предсказание. При “мета-подгонке” у нас есть двухуровневый процесс оптимизации по типу как в мета-обучении, где по сути мы обучаем модель с учётом последующей подгонки, чтобы она прошла легче — во внешнем цикле мы оптимизируем лосс, который нам важен (например, какой-то из supervised), а во внутреннем цикле оперируем этим нашим unsupervised tailoring loss. И, кстати, широко известный MAML (https://arxiv.org/abs/1703.03400) легко транслируется в текущий сеттинг с мета-подгонкой.
Если чуть больше конкретики, то мы, например, знаем, что данные должны обладать какими-то гарантиями: гладкость, симметрия, сохранение момента или энергии, что-нибудь ещё — мы можем использовать это в tailoring loss. Можно также заюзать какой-нибудь contrastive loss.
Отдельный практический челлендж — сделать так, чтобы можно было параллельно делать подгонку одной модели для всего батча.
Ferran Alet, Kenji Kawaguchi, Tomas Lozano-Perez, Leslie Pack Kaelbling
Статья: https://arxiv.org/abs/2009.10623
Очередная прикольная работа из серии “а что, так можно было?”.
Помните, на заре текущего хайпа, когда ещё даже VGG не появилась (и тем более резнеты), был популярен такой способ получения более точных предсказаний уже обученной модели, когда картинка подавалась на вход несколько раз с кропами, отзеркаливанием, иногда поворотами (где это было можно), а результат предсказания потом усреднялся?
Этот метод возвращается в новой ипостаси — Tailoring! Не знаю, как лучше по-русски назвать, пусть будет “подгонка”.
В чём суть?
В основе успеха многих решений лежит правильный inductive bias. Обычный классический подход подразумевает добавление inductive bias в архитектуру или через дополнительные лоссы. Первый подход неуниверсальный, а второй как и обучение с обычным лоссом приводит к generalization gap между данными обучения и предсказания, а также уводит objective в сторону от того, который нам реально важен.
Проблема здесь в том, что когда поступают запросы на инференс, модель уже не может использовать знание об этой новой конкретной точке, она “заморожена”. А собственно кто нам запретил воспользоваться этой новой информацией?
Вапник в своё время предложил подход под названием transductive learning (в противовес обычному inductive learning), где алгоритм получает не только обучающие данные, но и набор точек, на которых потом надо будет сделать предсказания, то есть делает предсказание от частного к частному без перехода к общему. Кстати, есть мнение, что Бертран Рассел сделал это ещё раньше, https://www.cs.bham.ac.uk/~jdk/transductive.html — не прогуливайте философию, в ML она тоже полезна!
Красивый пример, когда трансдукция полезнее обычной индукции, реализованной в виде supervised модели, есть в английской википедии — это классификация точек (https://en.wikipedia.org/wiki/Transduction_(machine_learning)#Example_problem). Действительно, обладая полным набором точек, хоть бы большинство из них и было без разметки, сделать разумную классификацию гораздо проще, проведя сначала unsupervised кластеризацию. И вообще говоря, множество подходов с предобучением или semi-supervised подходов, по сути делают что-то подобное. Теперь мы знаем, как это называется! :)
Но проблема с этим подходом в том, что обычно заранее мы не знаем, на чём надо будет потом применять модель, и хочется подход, который умеет делать предсказания в режиме онлайн по мере поступления новых точек. А гонять на каждом предсказании полный вариант transductive learning это too much.
Авторы предлагают подход tailoring и meta-tailoring. При “подгонке” (tailoring) мы при поступлении новой точки на предсказание файн-тюним модель на специальный unsupervised tailoring loss, а затем делаем предсказание. При “мета-подгонке” у нас есть двухуровневый процесс оптимизации по типу как в мета-обучении, где по сути мы обучаем модель с учётом последующей подгонки, чтобы она прошла легче — во внешнем цикле мы оптимизируем лосс, который нам важен (например, какой-то из supervised), а во внутреннем цикле оперируем этим нашим unsupervised tailoring loss. И, кстати, широко известный MAML (https://arxiv.org/abs/1703.03400) легко транслируется в текущий сеттинг с мета-подгонкой.
Если чуть больше конкретики, то мы, например, знаем, что данные должны обладать какими-то гарантиями: гладкость, симметрия, сохранение момента или энергии, что-нибудь ещё — мы можем использовать это в tailoring loss. Можно также заюзать какой-нибудь contrastive loss.
Отдельный практический челлендж — сделать так, чтобы можно было параллельно делать подгонку одной модели для всего батча.
❤1👍1
Авторы предлагают алгоритм под названием CNGrad, использующий подход conditional normalization. В этом подходе мы, похожим на BatchNorm образом, выучиваем два параметра (γ, β), которые масштабируют и сдвигают соответственно выход каждого определённого узла сети. И задача оптимизации заключается в адаптации этих двух параметров под конкретный запрос. Легко добавить подгонку в обученную без неё модель — достаточно навесить куда надо (γ = 1, β = 0), что даёт identity transformation, а дальше тюнить. Авторы доказывают, что глобального минимума в обучении можно достичь только модификациями этих вот двух параметров, не трогая основные веса сети.
Прогоняют эксперименты на трёх задачах: предсказание эволюции физической системы из 5 тел (tailoring loss основан на сохранении энергии и момента); классификация с целью добиться устойчивости к adversarial examples (tailoring loss стремится оптимизировать KL divergence для слегка возмущённых входов x + δ в каком-то небольшом радиусе); и классификация CIFAR-10 (где tailoring loss оптимизирует косинусное расстояние для слегка возмущённых точек, но делает это уже не только для предсказаний классов, но и для активаций предпоследнего слоя). Результаты везде интересные, предсказания более качественные и устойчивые.
В общем любопытный подход, в сочетании с contrastive loss и не только ещё много чего можно придумать, это всё только начало!
Да, очевидным образом это, конечно, удорожает предсказание, инференс становится более вычислительно требовательным. Для нескольких шагов градиентной оптимизации фактор увеличения вычислений в описанных задачах от 1.5x до 10x (но число параметров зато меняется несильно). Понятно, это не везде допустимо, но тут как обычно trade-off. Возможно зато, что можно получать то же качество с меньшими по размеру сетями и отыграть сколько-то вычислений.
Прогоняют эксперименты на трёх задачах: предсказание эволюции физической системы из 5 тел (tailoring loss основан на сохранении энергии и момента); классификация с целью добиться устойчивости к adversarial examples (tailoring loss стремится оптимизировать KL divergence для слегка возмущённых входов x + δ в каком-то небольшом радиусе); и классификация CIFAR-10 (где tailoring loss оптимизирует косинусное расстояние для слегка возмущённых точек, но делает это уже не только для предсказаний классов, но и для активаций предпоследнего слоя). Результаты везде интересные, предсказания более качественные и устойчивые.
В общем любопытный подход, в сочетании с contrastive loss и не только ещё много чего можно придумать, это всё только начало!
Да, очевидным образом это, конечно, удорожает предсказание, инференс становится более вычислительно требовательным. Для нескольких шагов градиентной оптимизации фактор увеличения вычислений в описанных задачах от 1.5x до 10x (но число параметров зато меняется несильно). Понятно, это не везде допустимо, но тут как обычно trade-off. Возможно зато, что можно получать то же качество с меньшими по размеру сетями и отыграть сколько-то вычислений.