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
Скейлинг по количеству экспертов. Даже 2 эксперта это хорошо.
Сравнение Switch Transformer и MoE Transformer
Switch быстрее
Монстрическая модель
Попытка добавить Switch в self-attention
Даже немного экспертов это хорошо
Очередные анонсы (от @che-shr-cat).

На следующий неделе делаю два доклада на конференции OpenTalks.ai.

1) 04 февраля в 15:15 "Главные результаты в NLP в 2020 году". Дам свой топ главных достижений за последний год. И это не только GPT-3 :)

2) 05 февраля в 13:15 "Обзорный доклад про железо для ИИ" по мотивам моей серии постов про железо (включая ещё не вышедшие части) https://blog.inten.to/hardware-for-deep-learning-current-state-and-trends-51c01ebbb6dc

Также обзоры по CV и RL сделают Алексей Досовицкий из Google Brain и Александр Новиков из DeepMind.

Расписание конференции здесь:
https://opentalks.ai/ru/timetable

Конференция платная, но организаторы дали нам код на 25% скидки, пользуйтесь: gonzoOpenTalksAI
Сегодня расскажем про пару статей, которые не получили пока большой популярности, но идеи или подходы, предлагаемые в них, кажутся интересными.

Extracting Training Data from Large Language Models
Nicholas Carlini, Florian Tramer, Eric Wallace, Matthew Jagielski, Ariel Herbert-Voss, Katherine Lee, Adam Roberts, Tom Brown, Dawn Song, Ulfar Erlingsson, Alina Oprea, Colin Raffel
Google, Stanford, UC Berkeley, Northeastern University, OpenAI, Harvard, Apple
Статья: https://arxiv.org/abs/2012.07805

#NLP #dataleak #security #transformers

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

В качестве бейзлайна предложена простая схема из двух этапов:
- генерация — сэмплим из модели много строк без кондишенинга по стратегии top-k.
- фильтрация — считаем для каждой строки perplexity согласно модели и оставляем только некоторый top (т.е. строки с самой низкой perplexity).

Анализ бейзлайна показывает, что в результате действительно получаем довольно много точно запомненного текста (авторы упоминают MIT public license, какие-то популярные гайдлайны, адреса и ники популярных людей), но это не очень интересно, т.к. очевидно, что все эти тексты встречались в обучающих данных чаще других, ну и в целом, предложенная схема сэмплинга часто давала очень однообразные результаты. Кроме того, в результатах очень много случаев, когда генерация вырождалась в повторение одного или нескольких слов (стандартная для жадного сэмплинга проблема).

Дальше авторы предлагают пару улучшений схемы сэмплирования: сэмплинг с кондишенингом на случайные строки из интернета и сэмплинг с постепенным понижением температуры (чтобы повысить разнообразие начала текста, но не потерять в последующей связности); а также способы более качественной фильтрации:
- сравнение perplexity с другими моделями (мы ищем именно заученный контент, а вероятность, что две разные модели заучат одно и то же, довольно мала)
- важный частный случай -- сравнение с такой же моделью, но меньшего размера (меньшие модели меньше склонны к заучиванию)
- сравнение perplexity на той же модели того же текста, но lowercased (опять же, шансов, что модель заучит два варианта написания, довольно мало)
- сравнение perplexity с сжимаемостью текста zlib-ом (позволяет фильтровать случаи с повторением одного слова)
- усреднение perplexity скользящим окном.

Прогнав различные комбинации предложенных методов, авторы взяли по 100 топовых примеров и вручную проверили их присутствие в обучающих данных/в интернете. В итоге получили примерную оценку эффективности каждого из методов — лучший дал около 60%, в среднем по всем методам около 30%. Среди выявленных данных нашлись ФИО, контактные данные, UUIDs, конфиги, цитаты IRC-переписки и прочее. Часть из выделенных данных встречалась лишь в одном документе обучающем датасета (хотя и несколько раз). Из курьезного нашлись последовательности квадратов чисел, числа Фибоначчи, цифры числа pi.

К слову, на цифрах числа pi показывают, что выбор стратегии сэмплинга и обуславливающего префикса сильно влияет на результат — простейший подход даёт 25 цифр, а правильно подобранный префикс позволяет вытащить до 824 правильных цифр числа pi. Также показывают, что способность/склонность к заучиванию напрямую связана с размером модели.

В целом, кажется, что это далеко не последняя работа на эту тему — чем больше публикуемые модели, тем больше они требуют разных данных для обучения, и тем больше повода искать в них интересные заученные строки.
👍1
Transformer Feed-Forward Layers Are Key-Value Memories
Mor Geva, Roei Schuster, Jonathan Berant, Omer Levy
Tel Aviv University, Cornell Tech, Allen Institute for AI
Статья: https://arxiv.org/abs/2012.14913

#NLP #transformers #feedforward #interpretation

Множество работ за последние годы были посвящены изучению логики работы self-attention и извлечению разной информации из эмбеддингов и карт внимания. Однако в обычном трансформере примерно две трети всех параметров живут в feed-forward слоях, чья роль пока изучена не очень хорошо.

Данная работа предлагает способ интерпретации содержимого feed-forward слоёв и даёт несколько интересных идей о том, как можно их использовать для лучшего понимания происходящего в трансформере при обработке входного текста. Анализ проводился, судя по всему, на GPT-like сети, хотя в явном виде это, кажется, нигде не указано.

В типичном трансформере feed-forward слой представляет собой две линейные проекции с ReLU между ними, т.е., если для простоты игнорировать biases, это выглядит как FF(x) = ReLU(x*K^t)*V

Авторы предлагают трактовать такой слой как memory bank, работающий по следующей схеме:
- матрица K содержит ключи памяти (внутренняя размерность между K^t и V — ёмкость памяти).
- ReLU(x*K^t) даёт разложение "внимания" входного токена на веса по ключам памяти (веса положительно определёны, но не нормированы).
- затем эти веса применяются для доступа к записям по ключам, которые хранятся в V, взвешенная сумма этих записей и даёт выходное значение.

Если эта логика верна, можно попробовать выяснить назначение конкретного ключа в конкретном модуле памяти. Для этого авторы просто строят выборку строк из большого датасета, на которой данный ключ получает максимальный вес, и анализируют их глазами асессоров, задача которых сформулировать принцип, связывающий данные примеры. В ряде случаев таким принципом оказалась реакция на конкретное слово, в ряде -- тематический топик или семантическое свойство текста. Разметка выделенных паттернов на "поверхностные", "средние" и "семантические" позволяют показать, что в нижних слоях преобладают "поверхностные" паттерны, а чем выше слой, тем больше процент "семантических".

Далее, как интерпретировать значения в памяти (конкретной записи в V)? Авторы предполагают, что каждая запись v задает некоторое распределение на словаре. Если допустить, что состояния между слоями интерпретируемы в том же пространстве что и вход и выход сети в целом (это довольно сильное допущение), можно изучить явное распределение на токенах, посчитав softmax(v*E), где E — матрица эмбеддингов токенов. Это распределение не нормализовано, но позволяет как минимум изучать топ по рангам. Анализ этого выходного распределения получаемого из V показывает, что чем выше слой, тем больше согласованность между предсказанием памяти и ground-truth output токеном.

Затем авторы изучают, как эти распределения, соответствующие разным ключам блока памяти интегрируются в итоговый вектор, соответствующий выходу feed-forward слоя для данного токена. Оказывается, что нижние слои используют одновременно большое число элементов памяти, но по мере роста номера слоя число активных постепенно элементов снижается (и стабилизируется в верхней половине слоёв модели). Дальнейшие замеры показывают, что элементы памяти плохо интерпретируются независимо — т.е. итоговый токен чаще всего получается именно из суммы активаций нескольких ячеек памяти, а не обеспечивается одним доминирующим элементом.

Отдельно следует учесть, что residual связи позволяют модели вообще игнорировать выход feed-forward слоя. Анализ показывает, что чем выше слой, тем больше вес residual связи в итоговом значении, другими словами верхние слои лишь слегка корректируют то, что уже вычислили нижние.

Итоговое впечатление: хотя текст статьи и выглядит немного сырым, она ставит ряд интересных вопросов и даёт богатую пищу для интуиции о процессах, происходящих в feed-forward слоях.