Size: a a a

2020 August 31
DL in NLP
Знаете ли вы как генерируются такие анимации? Допустим у вас есть GAN, она генерит что-то из распределения вашего датасета. Но как это анимировать?

У GAN есть свое латентное пространство, смещение в котором ведет к плавным изменениям картинки. Каким? Зависит от направления в котором сместились. Если знать в какую сторону двигаться, можно менять отдельные свойства (например небо) и достигать желаемых результатов. Все как в жизни 🙃

NLP это здорово, но если вы хотите быть ценным специалистом в ИИ и нейросетях, вам желательно также понимать что происходит и в других областях. Так например Трансформеры были успешно использованы для object detection, просто потому что автор был всесторонне развит. Есть такой канал — эйай ньюз — его ведет Леша из Facebook AI Research, который комментирует главные события в мире ML/AI со своей профессиональной точки зрения. Это как раз тот канал который можно смело советовать всем, кто хочет следить за новыми алгоритмами, и начать понимать чуть-лучше как они работают.
источник
DL in NLP
Иннополис зовёт на свой виртуальный семинар. Будут говорить про NLPшечку и не только.

Вот что они говорят про себя:

В этот раз будем общаться про технологии обработки естественного языка (NLP), оптимальные ML-решения, узнаем для чего нужна еще одна библиотека машинного обучения NeoML, а также рассмотрим архитектуру бота от DeepPavlov.ai

Наши спикеры:
- Станислав Ангелюк, Team Lead Common Libraries в ABBYY
- Константин Фролов, Machine Learning Engineer в Контур
- Федор Игнатов, Senior Software Engineer в Deeppavlov.ai

Комментарии от экспертов:
- Михаил Бурцев, руководитель проекта в Deeppavlov.ai
- Александр Мазалов, основатель MutuAlies и mITy.law.
- Влад Виноградов, со-основатель и руководитель направления CV в EORA Data Lab

Когда:Когда: 3 сентября в 18:00
Регистрация и подробности докладов
источник
2020 September 01
DL in NLP
Начался сентябрь а с ним и семинары 🎉
источник
DL in NLP
Переслано от Katya Artemova
Всем привет!

Новый сезон семинаров об NLP в Вышке откроет рассказ о RussianSuperGlue.

Аннотация: In this talk, we introduce an advanced Russian general language understanding evaluation benchmark -- RussianGLUE.
Recent advances in the field of universal language models and transformers require the development of a methodology for their broad diagnostics and testing for general intellectual skills - detection of natural language inference, commonsense reasoning, ability to perform simple logical operations regardless of text subject or lexicon. For the first time, a benchmark of nine tasks, collected and organized analogically to the SuperGLUE methodology, was developed from scratch for the Russian language. We provide baselines, human level evaluation, an open-source framework for evaluating models.
Докладчик: Alena Fenogenova
Chief specialist NLP R&D, CDS office, Sberbank

О докладчике:
Alena Fenogenova has a Master degree in Computational linguistics at the Higher School of Economics, Moscow.
She has a number of publications in NLP field. Now Alena works in Sberbank in NLP research team. Her research interests are language understanding, question answering, etc.

Форма регистрации: https://cs.hse.ru/ai/computational-pragmatics/announcements/394600693.html

Алгоритм регистрации: надо заполнить форму, ближе к семинару вам придет письмо с ссылкой на zoom и паролем.
источник
DL in NLP
PyTorch Performance Tuning Guide - Szymon Migacz, NVIDIA
youtube

TL;DR от Andrey Karpaty:

1. Ставьте num_workers > 0 и pin_memory=True в даталоадерах
1. torch.backends.cudnn.benchmark = True
1. Используйте максимально возможный batch size, который помещается в память
1. Не забудьте ставить bias=False в слоях перед BatchNorm
1. Используйте for p in model.parameters(): p.grad = None вместо model.zero_grad(). Если я правильно понял, то таким образом градиенты зануляются не на уровне кода pytorch, а на уровне кода GPU.
1. Выключайте debug API в проде
1. Всегда используйте DistributedDataParallel вместо DataParallel, даже если вы не destributed
1. Если работаете с последовательностями, балансируйте ваши батчи так, чтобы длина последовательности на разных GPU была примерно одинакова. От себя добавлю, что самый простой способ сделать это - использовать gradient accumulation
1. Используйте fused optimizer из apex, вместо дефолтных pytorch оптимизаторов
1. Используйте чекпоинтинг для memory-intensive операций бэкварда (звучит сомнительно)
1. Используйте @torch.jit.script чтобы фьюзить ваши самописные pointwise функции (e.g. GELU)
источник
2020 September 06
DL in NLP
Хороший пост про GPT-3

От себя ещё добавлю ссылочку на обсуждение прайсинга.
Говорят платишь за число токенов, меньше 100к - бесплатно, потом от $100/мес за 2млн токенов и 8с за каждую следующую тысячу.

Конечно с одной стороны это дорого, но с другой стороны OpenAI нужно покрывать стоимость разработки + железа + часть рисёча. Так что неудивительно.

https://twitter.com/hardmaru/status/1301362995356774401
источник
DL in NLP
Почитал на досуге больше о GPT-3 и только сейчас осознал всю крутость принципа ее работы. Примеры примерами, они не сильно поражают когда знаешь, что с хорошим датасетом современные модели можно натренировать генерировать что-угодно достаточно успешно. Но вот GPT-3 никто не тренирует и не fine-tune'ит. Тренировочные примеры это просто часть инпута который скармливается модели при каждом запуске. В общем, почитайте лучше оригинальную статью, там много иллюстраций.

Еще нашел интересный пост с нюансами ее применения и небольшим срывом покровов:

- The API is slow. This is expected: the model has 175 billion parameters; it's too big to fit on a GPU (the largest GPU in the world has 48 GB of VRAM). There is currently no information about the infrastructure running GPT-3.
- The demos you're seeing around the internet are highly biased. The vast majority of output is of significantly lower quality.
- The author trained GPT-3 on his tweets; he estimates that only 30-40% were usable. This implies a 60-70% failure rate.
- If it takes three tries to generate a usable React component, it's probably more practical to just write the code yourself.
- Everyone is using the same model, so there's no competitive advantage.
- With the wrong prompt, you might get racist or sexist output. (Похуй)
- There is still no information on API pricing/cost.
источник
2020 September 11
DL in NLP
REALM: Retrieval-Augmented Language Model Pre-Training
Guu et al. [Google Research]
arxiv.org/abs/2002.08909

TL;DR: добавили retreival-шаг перед MLM в предобучение, хорошо улучшили open domain question answering SOTA

Наконец-то почитал про REALM и оказалось что это ещё более интересная штука, чем я думал изначально. Основная идея простая: давайте помогать MLM дополнительным контекстом. Для этого будем использовать эмбеддинги BERT для поиска релевантных документов по нашему корпусу и использовать их в качестве контекста (см. картинку). При этом в качестве лосса берём взвешенное на предсказанные вероятности релевантности документа среднее по top8 документов. Трансформер делающий MLM и трансформер отвечающий за retreival - это две разные модели, но учатся вместе end-to-end. Зачем это нужно? Потому что это очень близко к ODQA-сетапу, когда мы просто хотим задать вопрос и получить ответ. И это действительно улучшает результаты T5 (которая сильно больше, чем REALM) с 35 до 40 пунктов.

Интересные детали.
1. Иногда дополнительного контекста для MLM не нужно (например, грамматическая конструкция) и для этого среди topk документов всегда есть нулевой документ и его эмбеддинг тоже обучается.
1. Иногда нужные токены содержатся прямо в найденном документе, но мы бы хотели, чтобы моделька сама их предсказала, а не просто скопировала бы свой вход. Для этого все именованные сущности во вспомогательном документе (но не во вохде в MLM) типа дат и имён меняют на generic токены типа имя, дата. Их находят перед началом обучения с помощью готовой модели NER.
1. Иногда самый ближайший к MLM-инпуту документ содержит MLM-инпут, но без маски. Эти документы отсеиваются при ретриве.
1. В самом начале обучения BERT плохо ретривит (там после BERT есть доп линейный слой) и поэтому REALM может начать игнорировать вспомогательные документы. Для этого ретривер немножпо предобучается на задаче, где нужно найти документ по отрывку из этого документа.

Как ускоряли KNN:
KNN на нескольких миллионах документов будет работать очень долго. А нам нужно только top8. Для этого использовали построение индекса и приблизительный поиск.
Но тк моделька ретрива тоже обновляется с каждым батчом, индекс по-идее становится нерелевантным и его нужно обновлять. Вместо того, чтобы обновлять его каждый батч, индекс обновляли каждые 500 итераций да ещё и асинхронно. Тк идея в том, что топ очень сильно не поменяется за 500 батчей.

По железу:
С одной стороны авторы говорят, что вся моделька поместится в 12Гб оперативки. Но с другой стороны они использовали 64 TPU для обучения и 16TPU для построения индекса. Вроде бы сопостовимо с BERT по объёмом, ничего особенно безумного, но кажется про времена, когда 8GPU было большой мощью уже в далёком прошлом.
источник
DL in NLP
источник
2020 September 15
DL in NLP
Всем привет!

Очередной семинар состоится 17 сентября в 19-00.

Тема семинара: "Machine Reading Comprehension and Russian Language"

Аннотация: First, I will briefly survey machine reading comprehension (RC) and its flavors, as well as methods and datasets used to leverage the task. Then I will focus on RC datasets for non-English languages.

I will pay special attention to Russian RC dataset — Sberbank Question Answering Dataset (SberQuAD). SberQuAD has been widely used since its inception in 2017, but it hasn't been described and analyzed properly in the literature until recently. In my presentation, I will provide a thorough analysis of SberQuAD and report several baselines.

О докладчике: Pavel Efimov earned his Master degree in Computer Science at Saint Petersburg State University. Now he is a PhD student at ITMO University. His research interests include question answering, multilingual learning, and learning with limited labelled data.

Форма регистрации: https://cs.hse.ru/ai/computational-pragmatics/announcements/399072143.html

Алгоритм регистрации: надо заполнить форму, ближе к семинару вам придет письмо с ссылкой на zoom и паролем.

Язык: английиский, запись будет в открытом доступе.

Анонсы семинаров по NLP в ВШЭ: https://t.me/nlp_seminar
источник
DL in NLP
Catalyst запускает курс по диплёрнингу. CV, NLP, RecSys, 12-14 недель, Stepik, #dl-course-2020
Первая неделя будет доступна уже завтра.
источник
DL in NLP
I am thrilled to announce, that we are starting a Deep Learning course on Catalyst in collaboration with our academia (https://dlschool.org) and industry (https://tinkoff.ru/) friends!

For more information, please follow the link below,
https://vk.com/@dlschool_mipt-kurs-deep-learning-na-catalyst
источник
2020 September 16
DL in NLP
Efficient Transformers: A Survey
Tay et al. [Google Research]
arxiv.org/abs/2009.06732

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

Google Research решил сделать небольшую статью с обзором этих X-former. Они суммаризируют, что изначально люди активно занимались фиксированными паттернами atttention (Sparse Transformer et al.), потом начали заниматься факторизацией этих паттернов (Axial transformer et al.) и постепенно сдвинулись в хитрые тренируемые паттерны (Reformer et al.). Сейчас же появляется всё больше работ, в которых пытаются использовать ризкоранговую аппроксимацию матриц attention (Linformer).
В параллель к этому появилось пара реккурентрых подходов удлинения трансформеров - Transformer-XL и Compressive Transformer.

Как всегда в таких обзорах, они заканчиваются тем, что нету никакого стандартного метода сравнения методов друг с другом, кто-то использует генеративные задачи (LM), кто-то GLUE и что в конце-концов не ясно какой подход работает лучше остальных.

Мне из статьи очень понравилась вот эта картинка, которая хорошо суммаризирует основные подходы.
источник
DL in NLP
источник
2020 September 21
DL in NLP
Replika на Data Fest 2020
Replika на Data Fest 2020

На этих выходных проходил Data Fest 2020 и одним из самых классных выступлений в секции #nlp было выступление о том, как сделана Replika. Они делают чатбота, который просто разговаривает с вами и может поднять вам настроение, помочь справиться с стрессом. И работает бот довольно классно.

Теперь о том, как он сделан. Если коротко: ранжирование на берте + генерация на GPT-3 (Replika одной из первых получила доступ к OpenAI API) + очень много всего остального включая CV модельки и AR. Подробнее можете посмотреть в записи доклада или, если совсем нет времени, просмотреть слайды.

А если хотите сами поговорить с ботом, то можете скачать их приложение.
источник
DL in NLP
источник
DL in NLP
Understanding the Difficulty of Training Transformers
Understanding the Difficulty of Training Transformers
Liu et al. [Microsoft]
arxiv.org/abs/2004.08249

Всё больше статей про анализ трансформеров, мне нравится эта тенденция.
В этой статье рассказывают про два интересных момента.

1. Вроде бы трансформеры не страдают от gradient vanishing/explosion, скорее всего благодаря residual connections (см. картинку)
2. Из-за этих же redidual connections трансформеры могут быт очень неустойчивы по параметрам. То есть небольшое изменение параметров может вызывать большое изменение предсказаний трансформера. Авторы называют это amplificaiton effect и показывают, что он сильно мешает обучению.

Также в статье предлагается хитрый способ инициализации (Admin), чтобы уменьшить amplification effect в начале обучения. Этот метод позволяет улучшить финальное качество модельки и тренировать более глубокие сети.
Статья читается не очень легко, но наверняка если закопаться поглубже можно найти ещё пару интересных вещей.
источник
2020 October 02
DL in NLP
A Simple but Tough-to-Beat Data Augmentation Approach for Natural Language Understanding and Generation
Shen et al. [Microsoft]
arxiv.org/abs/2009.13818

В NLP аугментации как-то до сих пор не заходят, я виню в этом людей, которые считают, что аугментированные тексты должны быть грамматически корректными. Но Shen et. al решили что это bs и попробовали следующее. Возьмём входные в BERT эмбеддинги, матричку размера seq_len x emb_dim и будем случайно занулять в ней (вектора целых слов) или строки (фичи). В качестве третьего подходя предлогают занулять несколько последовательно идущих слов. Идея мега простая, однако в среднем этот метод добавляет примерно 0.5 пункта на GLUE. В случае маленького датасета RTE аугментации улучили 78.7 до 82.3, что очень заметно. И главное, почти бесплатно.

Теперь немного про подробности. В отличие от обычных аугментаций в CV в этой статье использовали несколько аугментаций каждого примера внутри батча. То есть у вас есть K примеров на входе, вы аугментируете их каждый N раз и получаете батч размера K*N, который вы и прогоняете через вашу нейросетку. Плюс к этому ауторы добавили регуляризатор, который заставлял модель предсказывать одинаковые распределения у различных аугментаций одного и того же примера (но судя по ablation studies эта штука очень мало докидывает).
источник
DL in NLP
источник
2020 October 05
DL in NLP
It’s Not Just Size That Matters: Small Language Models Are Also Few-Shot Learners
Schick and Schütze, [LMU Munich]
arxiv.org/abs/2009.07118

🔥статья. Идея довольно простая: что если мы попробуем использовать языковые модели для few-shot learning более изощрённым образом? Авторы GPT-3 предлагали делать следующее: подавать несколько примеров в максимально простом виде вопрос1-ответ1 вопрос2-ответ2 вопрос3- и вот "ответ3" и должна была сгенерить LM. Очень просто и красиво, но наверняка неэффективно;

Авторы этой статьи предлагают многоступенчатый подход:
1. Под нашу задачку мы составляем несколько pattern-verbalizer pairs. Паттерн это по сути какой-то вопрос, а verbalizer - это ограниченный сет ответов на этот вопрос (e.g. yes/no). Например под задачу entailment паттерн может быть <sentence1>? \[MASK], <sentence2>, а в качестве verbalizer класс entailment мапится на yes, а not-entailment мапится на no (пример на картинке). MLM выдаёт вам вероятности слов на месте [MASK] и вы сравниваете вероятность слов yes и no.
2. Дальше мы используя размеченные примеры и составленные патерны файнтюним MLM. А точнее даже несколько MLM, чтобы потом составить ансамбль.
3. Проводим дистилляцию этого ансамбля на soft лейблах (вероятностях, а не классах). Получаем перфоманс сопоставимый с самым большим GPT-3 🦾

От себя хочу добавить идеологических отличий от GPT:
1. Надо обучать модельку (даже несколько моделек)
1. Есть ручная работа по созданию PVP pairs
1. Нужны дополнительные тексты на которых вы будете дисстилировать

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