gonzo-обзоры ML статей – Telegram
gonzo-обзоры ML статей
24K subscribers
2.75K photos
2 videos
3 files
1.36K links
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Download Telegram
Ну и наконец ещё одна работа, на которую чаще всего ссылаются:
Distilling the Knowledge in a Neural Network
Geoffrey Hinton, Oriol Vinyals, Jeff Dean
https://arxiv.org/abs/1503.02531

Авторы развивают работы Каруаны и коллег, предлагая метод дистилляции для нейросетей.

Идея всё та же, в распределениях вероятностей классов при предсказании моделью-учителем хранится ценная богатая структура, которую и надо использовать для клонирования поведения модели учителя. Для этого можно использовать как предсказания на оригинальном датасете, так и на любом другом.

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

Технически задача дистилляции сводится к минимизации кросс-энтропии между предсказаниями учителя и ученика. При обучении ученика в качестве soft labels берутся предсказания после софтмакса, но взятого с какой-то температурой выше 1 (чтобы получить менее жёсткое распределение). Когда ученик обучен, он использует для предсказания уже обычный софтмакс.

В работе есть ещё одно интересное ответвление про обучение на очень больших датасетах ансамблей моделей-специалистов, которые фокусируются на своём подмножестве классов. Это чем-то напоминает Mixture of Experts (MoE), но легче него по вычислениям и параллелизации.
Дистиллируем дальше
Дистилляция моделей — это ещё не всё.

Data Distillation: Towards Omni-Supervised Learning
Ilija Radosavovic, Piotr Dollár, Ross Girshick, Georgia Gkioxari, Kaiming He
Статья: https://arxiv.org/abs/1712.04440

Авторы из FAIR исследуют подход под названием omni-supervised learning, специальный вариант semi-supervised, когда в дополнение к размеченным данным используются неразмеченные надыбанные на масштабах интернета.

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

Процесс выглядит так:
1) Обучаем модель на размеченных данных
2) Генерируем аннотации для неразмеченных данных, делая предсказания на различных трансформациях данных и ансамблируя результаты
3) Обновляем (переобучаем) модель на увеличенном наборе данных

Подход с ансамблированием преобразований похож на метод повышения точности предсказаний на инференсе, когда со входной картинкой делалось несколько преобразований (повороты, кропы и т.п.), а затем результат предсказаний усреднялся (multi-transform inference).

По наблюдению авторов, агрегация предсказаний генерирует новое знание и модель в принципе может использовать эту информацию для self-training.

В работе генерировали hard labels (то есть собственно метки классов), а не soft labels (вектор вероятностей классов). Дальше эти метки использовались как настоящие. В обучении делали так, чтобы в минибатче всегда была смесь настоящих меток и вот этих вот сгенерированных.

Применили для нескольких задач комп.зрения: определение ключевых точек и детекция объектов. Трансформации традиционные: скейлинг и горизонтальный флип.

Подход работает, позволяет получать более точные модели, чем без такого метода. До точности моделей, обученных на изначально размеченном датасете такого же размера, не дотягивает, но где в реальной жизни такие датасеты взять, кейс нереальный. Зато неразмеченного добра при желании насобирать можно много, так что вполне применимый подход.
Продолжаем дистиллировать данные.

Dataset Distillation
Tongzhou Wang, Jun-Yan Zhu, Antonio Torralba, Alexei A. Efros
Статья: https://arxiv.org/abs/1811.10959
Страница: https://ssnl.github.io/dataset_distillation/
Код: https://github.com/SsnL/dataset-distillation

Теперь заход с другой стороны — что если модель не трогать, а большой датасет отдистиллировать в маленький? Например, превратить 60000 обучающих примеров MNIST’а в 10? Причём не как раньше, когда пытались оставлять наиболее значимые примеры, а прям вот создать синтетические примеры (возможно не из того многообразия, где обитают сами исходные данные), на которых модель хорошо и быстро обучится.

Оказывается, можно.

Это идейно похоже на процесс генерации картинок, максимально активирующих нейроны конкретных классов, где backprop применяется для генерации входных данных, а не для обновления весов модели. Здесь мы генерим входные примеры, которые дадут минимальный лосс через шаг (или много шагов, потому что одного обычно совсем недостаточно) градиентного спуска относительно начальных весов.

В прямолинейном варианте подход требует знания начальных весов сети. В более интересном варианте достаточно знать распределение, из которого сэмплили начальные веса. Для моделей, предобученных на другие задачи (AlexNet), метод может найти дистиллированный датасет для быстрого файнтюнинга.

Полученный дистиллированный датасет представляет интерес не только для изучения, он полезен также для continual learning методов, где часто сохраняется в специальном буфере подмножество обучающих примеров, на которых проверяется качество и блокируются изменения, ухудшающие его. Дистиллированный датасет выглядит интересной заменой такого случайного подмножества (занимает мало места и содержит много важной информации для обучения).

На MNIST получилось отдистиллировать весь датасет в 10 примеров (по одному на класс!), на которых LeNet обучается до почти 94% точности за 2000 шагов градиентного спуска с фиксированной инициализацией. С рандомной инициализацией 88.5%. На CIFAR10 тоже интересные результаты.

Неплохо также работает адаптация между MNIST/USPS/SVHN.

Или, например, получается адаптация претренированной AlexNet на PASCAL-VOC и CUB-200 датасеты с одной картинкой на категорию.

Метод заточен на конкретные архитектуры и инициализации, есть куда расширять. Но выглядит очень интересно. Например, можно существенно сократить вычисления на оценку моделей в neural architecture search (помните эти страшные цифры? https://www.technologyreview.com/s/613630/training-a-single-ai-model-can-emit-as-much-carbon-as-five-cars-in-their-lifetimes/)

Статья подана на ICLR 2020.

Дистиллированные картинки выглядят интересно. Есть над чем подумать.

Отдельное направление для применения этой работы — data poisoning attack. Из сабмита на ICLR эту часть убрали :) Наверняка готовят отдельную статью, это обещает быть сильно.

Хитрый data poisoning с помощью дистилляции позволяет сгенерить небольшое число примеров, которые всего за одну итерацию обучения сильно портят одну конкретную категорию классификации, не трогая остальные. Без доступа к точным значениям весов модели!
👍3
MNIST: 10 images train test accuracy from 12.9% to 93.8% (with a fixed known initialization)
CIFAR10: 100 images train test accuracy to 36.8% ± 1.2% (with unknown random initializations)
Attack well-trained classifiers with unknown weights within 1 gradient step

CIFAR10: plane ⟶ car

100 images train classifiers with 78.2% ± 1.1% test accuracy
to predict 45.9% ± 18.1% label plane test images as label car
Stabilizing Transformers for Reinforcement Learning
Emilio Parisotto, H. Francis Song, Jack W. Rae, Razvan Pascanu, Caglar Gulcehre, Siddhant M. Jayakumar, Max Jaderberg, Raphael Lopez Kaufman, Aidan Clark, Seb Noury, Matthew M. Botvinick, Nicolas Heess, Raia Hadsell
CMU, Google
, DeepMind

Статья: https://arxiv.org/abs/1910.06764

Обсуждается возможность использования трансформерных архитектур в рамках RL-задач. Известно, что предыдущие попытки давали нестабильные результаты.

Авторы предлагают модифицированную архитектуру под называнием GTrXL (Gated Transformer-XL). Она более всего похожа на Transformer-XL и содержит следующие модификации:
- как и в TrXL, используется относительное позиционирование токенов, что позволяет работать с широким окном;
- как и в модификации TrXL-I, layernorm делается на входе каждого слоя, а не на выходе, а residual connection позволяет его обойти без нормализации — авторы утверждают, что это очень важно в RL для выучивания ранних простых реактивных стратегий, на основании которых далее формируются уже более сложные;
- ключевым отличием является добавление gating-слоя вместо простого сложения в точке примыкания residual connection — здесь они экспериментировали с разными гейтами, победителем вышел GRU-style gating.

При этом показали, что если начальную инициализацию гейта делать близкой к identity map, то скорость обучения резко растёт (опять таки за счёт того, что сначала сразу выучивается простая policy).
Improving Transformer Models by Reordering their Sublayers
Ofir Press, Noah A. Smith, Omer Levy
University of Washington, Allen Institute for AI, Facebook AI Research

Статья: https://ofir.io/sandwich_transformer.pdf
Тредик с обсуждением: https://twitter.com/OfirPress/status/1193074964301111296

В обычном трансформере слои self-attn и feedforward чередуются через один. А что если попробовать другие порядки? Авторы делали много разных тестов на задаче LM на WikiText-103. Основные наблюдения:
- случайные чередования слоёв дают большой разброс качества, в том числе случаются результаты получше чем у бейзлайна;
- важен ли баланс в кол-ве self-attn и feedforward -- точно не понятно, решили оставить одинаковое количество;
- выяснили, что self-attn полезнее снизу, а сверху feedforward;
- искали оптимум в классе архитектур "k-сэндвичей", это вариант, где всего 32 слоя, и устроены они так: внизу k слоёв self-attn, потом (16-k) пар self-attn+feedforward и в конце k слоёв feedforward;
- из 32 слоёв оптимумом оказался k=6, т.е. sssssssfsfsfsfsfsfsfsfsfsfffffff, на нём perplexity оказался 17.96 (против 18.40 у бейзлайна).
BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension
Mike Lewis, Yinhan Liu, Naman Goyal, Marjan Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Ves Stoyanov, Luke Zettlemoyer
Facebook AI

#NLP #BERT #GPT2 #BART #denoising

Статья: https://arxiv.org/abs/1910.13461

По большому счёту, делают аналог denoising автоэнкодера на трансформерах. А именно, в качестве энкодера используют BERT, в качестве декодера GPT-2, общая схема -- классический seq2seq.

Экспериментируют со следующими видами шума на этапе предобучения:
- Token Masking -- замена токенов на [mask] -- MLM, как в BERT;
- Token Deletion -- удаление случайных токенов (без указания места удаления);
- Text Infilling -- замена нескольких слов на один символ [mask];
- Sentence Permutation -- случайная перестановка входных предложений местами;
- Document Rotation -- рубим входную строку в случайном месте и переставляем две части местами.

Дальше доучивали на нужную задачу (смотрели на бенчмарки SQuAD, GLUE и другие). Из интересных идей -- пробовали доучивать на перевод, добавив дополнительный энкодер из нового языка в эмбеддинги, идущие на вход основному энкодеру.

На сравнении с бертом тестировали эффективность разных стратегий зашумления на этапе предобучения. В целом, вышло, что чаще всего Text Infilling даёт SOTA в одиночку или в комбинации с другими, но, вообще говоря, это зависит от задачи.

Далее сравнивались с разными бейзлайнами на разных задачах:
- на дискриминативных задачах местами уступили RoBERTa,
- на задачах суммаризации -- получили SOTA,
- на некоторых других тоже, но не везде.

Общий вывод я бы сформулировал так:
- в целом модель выглядит универсальной и гибкой в управлении, можно ожидать, что она имеет некоторые шансы стать единой стандартной базой для transfer learning-а в разных задачах,
- Text Infilling как обобщение MLM -- хорошая идея, а вообще из работы следует, что оптимальная схема предобучения определяется финальной задачей (что печально),
- какого-то большого прорыва не вышло, но на отдельных задачах полулось заметно улучшить SOTA.
FreeLB: Enhanced Adversarial Training for Language Understanding
Chen Zhu, Yu Cheng, Zhe Gan, Siqi Sun, Tom Goldstein, Jingjing Liu
University of Maryland, Microsoft Dynamics 365 AI Research

#NLP #BERT #adversarial #ICLR

Версия на архиве: https://arxiv.org/abs/1909.11764
Версия, поданная на ICLR 2020: https://openreview.net/pdf?id=BygzbyHFvB
Кстати, одна из 11 статей, получившая на днях 8 из 8 баллов на blind review ICLR 2020.

Авторы предлагают новую adversarial схему обучения, FreeLB (Free Large-Batch), и показывают её эффективность при обучении трансформеров (BERT и RoBERTa) под NLP задачи из бенчмарков GLUE и ARC. Предлагаемый подход FreeLB применяется на этапе тюнинга обычной трансформер-модели на конкретную задачу.

В качестве общего соображения сообщается, что, в то время, как на задачах CV использование adversarial training приводит к улучшению генерализации и устойчивости модели к шуму за счёт некоторых потерь в точности, на задаче LM иногда наблюдается другой эффект -- улучшается как генерализация, так и точность.

Идея используемого adversarial подхода довольно проста -- после того, как мы сделали lookup за эмбеддингами токенов батча, мы их немного "портим", добавляя шум, и используем такие зашумлённые версии для обучения с тем же таргетом, что и в оригинале. Степень зашумления ограничивается небольшой евклидовой нормой добавляемого тензора шума. При этом позиционные и прочие служебные эмбеддинги не трогаем. В каком-то абстрактном смысле это отдалённо похоже на data augmentation подход. Шум, однако, у нас не случайный, а adversarial, т.е. всякий раз мы пытаемся подсунуть наиболее сложное для сети искажение.

В работе Madry et al. (2018) показано, что для поиска такого сложного зашумления можно использовать PGD (projected gradient descent): метод, в котором градиент проецируется на epsilon-сферу, и это помогает стабилизировать обучение. Проблема в том, для одного надёжного шага "спуска по шуму" нужно накопить несколько (К) forward-backward проходов по сети, что в случае с большими моделями и датасетами совсем не практично -- приводит к удорожанию обучения в К раз. В более поздних работах (модели FreeAT и YOPO) предлагается так или иначе экономить на расчётах, например, делая обновление градиента adversarial шума только раз в К шагов спуска основной модели.

Авторы данной работы предлагают новую схему (FreeLB) одновременной оптимизации сети и подстройки шума: при обработке минибатча будем делать К шагов по градиенту основной модели, накапливая его и пересчитывая оптимальный шум на основании текущего накопленного градиента на каждом шаге, а в конце разово применим итоговый накопленный градиент основной модели. Предлагается некоторое теоретическое обоснование, почему такой подход даёт более устойчивое обучение чем обычный PGD.

Дополнительно обсуждается возможность использования дропаутов при таком обучении (обычно в таких adversarial схемах dropout не используют) -- авторы предлагают фиксировать одинаковую маску дропаута на К шагов, примерно так, как это было сделано в Variational Dropout. Такой подход позволяет использовать dropout одновременно с adversarial training, и на ablation study (таб. 4) показано, что это даёт заметный профит.

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