gonzo-обзоры ML статей – Telegram
gonzo-обзоры ML статей
24.1K subscribers
2.72K photos
2 videos
3 files
1.34K links
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Download Telegram
Tasks, stability, architecture, and compute: Training more effective learned optimizers, and using them to train themselves
Luke Metz, Niru Maheswaranathan, C. Daniel Freeman, Ben Poole, Jascha Sohl-Dickstein
Статья: https://arxiv.org/abs/2009.11243

Свежая работа по теме обучаемых оптимизаторов. А то типа безобразие, фичи научились выучивать и их больше подавать на вход не надо, а оптимизаторы у нас по-прежнему олдскульные сделанные человеком — SGD, моменты, Adam и вот это вот всё. Непорядок.

Такие работы периодически появляются, но какого-то суперпрогресса и перехода в практическую плоскость пока не случилось. Но должно.

В текущей работе команда из Google Brain предприняла масштабную попытку обучить оптимизатор, который желательно должен быть достаточно генерализованным.

Выбран датасет с тысячами разных задач (https://arxiv.org/abs/2002.11887, https://github.com/google-research/google-research/tree/master/task_set — это частично те же авторы). В обучающем датасете около 6000 разных задач: RNN, CNN, FCN, LM, VAE, masked autoregressive flows и т.д.

Задача по обучению такого оптимизатора обычно состоит из двух циклов: во внутреннем оптимизатор применяется к различным задачам, а во внешнем его параметры итеративно обновляются. Цель — получить лучший loss на этих задачах с обучаемым оптимизатором. Лосс для внешнего цикла (outer-loss) определяется как средний inner-loss посчитанный на inner-validation set.

Outer-loss даже дифференцируемый, но очень дорогой для вычисления, потому что задачу во внутреннем цикле надо развернуть на достаточно большое число шагов. Поэтому градиентными методами такую штуку обучать достаточно сложно (плюс она ещё и плохо обусловлена) и для внешнего цикла используются эволюционные стратегии. Когда обучение устаканивается, то переходят к Persistent Evolutionary Stragegies (PES, по ним статья ещё обещается). Обучается всё распределённо на 1024 многоядерных воркерах. Во внутреннем цикле обучают Adam’ом.

Архитектура оптимизатора является комбинацией FFN и LSTM. LSTM (64 ячейки) работает на уровне тензоров, на вход получает вычисленные по тензорам фичи + глобальные параметры (трейн и валидационный лоссы), и посчитанную по каждому тензору информацию отправляет в другие такие же LSTM’ки, а также в FFN, которая работает на уровне отдельных параметров. Эта же FFN (2 скрытых слоя и 32 нейрона) получает на вход инфу о градиентах и значениях параметров, а на выход отправляет апдейты для параметров.

Для обучения задействовали только CPU, для GPU и других современных железок такие задачи (обучение кучи маленьких сеточек) не очень заточены. Задействовали 60K ядер примерно на месяц, или около 5k CPU years. Потребили порядка 200 мегаватт-часов.

После обучения проверяют полученный оптимизатор на пачке задач из датасета, а также на MNIST и CIFAR-10. Обученная конструкция превосходит бейзлайновые оптимизаторы (вариации Adam) с фиксированными гиперпараметрами, а также затюненные на небольшом числе задач бейзлайны (обучаемому оптимизатору такой возможности не дают).

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

Опитимизатор показывает генерализацию по некоторым осям задачи (размер датасета, размер батча, число скрытых нейронов). На больших задачах (резнеты поглубже) и снова CIFAR-10, а также уменьшенный ImageNet результаты вполне сравнимые с бейзлайнами.

Из красивого, полученный оптимизатор оказывается способен обучить самого себя (всё как с компиляторами) и в обучающем датасете похожей задачи не было. Получается сравнимо с Adam (правда после 10К итераций начинает ухудшаться). Тут так понимаю его таки поставили во внешний цикл вместо эволюционных стратегий.
👍1
Вся эта движуха глобально очень правильная. Я бы ожидал на горизонте пары лет, что какая-нибудь большая компания потратит гигаватты на своих кластерах на обучение оптимизатора на более серьёзных сетях и задачах и выдаст таки нейросетевой оптимизатор, назову его NG (neural gradients), который все остальные смогут использовать по аналогии с BERT. И это будет ещё один шаг в сторону AutoML, умный оптимизатор без гиперпараметров, превосходящий всю эту текущую алхимию с разными оптимизаторами, их параметрами и хитрыми политиками прогрева и игрой с learning rate.

Сбер или Яндекс, не хотите? ;) В случае успеха будет мировой почёт и уважение.
👍1🔥1
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).
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.

Отдельный практический челлендж — сделать так, чтобы можно было параллельно делать подгонку одной модели для всего батча.
1👍1