DL in NLP
12.5K subscribers
547 photos
13 videos
27 files
1.1K links
Новости и обзоры статей на тему обработки естественного языка, нейросетей и всего такого.

Связь: @dropout05 (рекламы нет)
加入频道
Некоторые статьи по анализу того, как работает BERT. Наверное, неплохо было бы их разобрать.

Visualizing and Measuring the Geometry of BERT
arxiv.org/pdf/1906.02715.pdf

Right for the Wrong Reasons: Diagnosing Syntactic Heuristics in Natural Language Inference
arxiv.org/abs/1902.01007

Probing Neural Network Comprehension of Natural Language Arguments
arxiv.org/abs/1907.07355

How multilingual is Multilingual BERT?
arxiv.org/pdf/1906.01502.pdf

BERT Rediscovers the Classical NLP Pipeline
arxiv.org/abs/1905.05950

What Does BERT Look At? An Analysis of BERT's Attention
arxiv.org/abs/1906.04341
Скидывайте ещё статьи по бертологии в чатик
В cs224u есть очень крутые видео. Например, вот тут хорошо рассказывают про Элмо, Берта, трансформеры и всё вот это. Гораздо лучше, чем в cs224n.

https://twitter.com/sannykimchi/status/1156985470275821573
Очень локальная новость, но всё же.

Все мы любим PyTorch, но к сожалению он неидеален (пока). Одна из ключевых проблем, с которой часто сталкиваются pytorch’исты - внезапный и труднообъяснимый deadlock при использовании нескольких num_workers в dataloader’е

В треде этого тикета несколько часов назад появилось возможное объяснение, почему это происходит.

You need to set num_workers lower than the number of CPUs in the machine (or pod if you are using Kubernetes), but high enough that the data is always ready for the next iteration. Unfortunately, if Dataloader uses any library that uses K threads, then the number of processes spawned becomes num_workers*K = N*K.

В общем внимательнее следите за своим числом процессов.
Конечно, объяснение так себе, но это уже лучше, чем «после того, как я сделал num_workers=0 и pin_memory=True, у меня заработало»

https://github.com/pytorch/pytorch/issues/1355#issuecomment-517955232
Тренды NLP с ACL
https://www.mihaileric.com/posts/nlp-trends-acl-2019/

TL;DR
1. Reducing Bias in NLP
1. Новые приложения NLP (fake news, medical letters simplification, biological applications)
1. Стандартизация парадигмы: предтренируй и файнтюнь
1. Попытки слияния knowledge graph и NN (но я всё ещё скептичен здесь)
1. Интерпретация моделей
1. Новые метрики для генерации текстов (и критика старых)
1. Критика текущих SOTA-моделей и датасетов (модели учат довольно простые фичи, которых достаточно для достижения высоких результатов на датасетах) - по-моему это больше проблема датасетов, чем моделей

за ссылку спасибо Юрию Кашницкому
Посмотрел на PytorchTransformers в SpaCy

Не понимаю зачем это надо. Интерфейсы 🤗 очень простые и гибкие. К интерфейсам SpaCy есть вопросы по обоим пунктам и не очень понятно зачем это нужно. Может быть это чисто для фанатов SpaCy.

https://github.com/explosion/spacy-pytorch-transformers/blob/master/README.md
Тут в чате говорят, новую соту завезли 🎉 (на самом деле нет, RoBERTa всё равно лучше на GLUE).

Но если серьёзнее, то Baidu (не путать с Badoo) Research несколько дней назад представила свою модель ERNIE (Enhanced Representation through kNowledge IntEgration) 2.0.

Идея метода предобученния состоит примерно в следующем:
0. Толстый трансформер (как и у всех)
1. Continual pre-training: сразу несколько self-supervised (или weak-supervised) задач на уровне слов, синтаксиса и семантики
2. ERNIE стартует с одной из этих задач и постепенно во время обучения добавляются новые, более сложные
3. К каждому слову добавляется специальный эмбеддинг в зависимости от задачи

Подробнее про задачи:
1. Word-aware Pre-training Tasks:
1.1 Knowledge Masking - masked language model++, в котором маскируются фразы и именованные сущности, подробнее в статье про ERNIE 1.0
1.2 Capitalization Prediction - да, просто предсказывать, является ли это слово капитализированным. Забавная идея.
1.3 Token-Document Relation Prediction - предсказывается, появляется ли данное слово хотя бы ещё раз в данном документе. Тоже очень интересная идея - таким образом можно пытаться извлекать ключевые слова.

2. Structure-aware Pre-training Tasks
2.1 Sentence Reordering - N предложений случайно шаффлятся, после чего нужно предсказать их оригинальный порядок.
2.2 Sentence Distance - классификация пар предложений на три класса: идут подряд / находятся в одном документе / находятся в разных документах

3. Semantic-aware Pre-training Tasks
3.1 Discourse Relation - если я правильно понял, то это дисстиляция semantic relation модели
3.2 IR Relevance - тк Baidu это поисковик, у них есть логи поиска. Они и используются в этой задаче. По query и title нужно предсказать один из трёх классов: 0 - the title is clicked by the users after they input the query, 1 - these titles appear in the search results but failed to be clicked by users, 2 - the query and title are completely irrelevant

за ссылку на статью спасибо @Cookie_thief

Статья довольно неплохо написана, советую почитать
UPD: нету абляционных исследований 😫

ERNIE 2.0: A Continual Pre-Trainining Framework for Language Understanding
Sun et al. [Baidu]
arxiv.org/pdf/1907.12412v1.pdf
Подробности предобучения:
1. 64 V100
1. float16
1. Adam(eta=5e-5, beta1=0.9, beta2=0.98), прогрев в течение первых 4 000 батчей
1. число токенов в батче: 393 216 (наверное что-то близкое к maxseqlen=512, batch_size=768)
Красивая картинка, по которой всё сразу понятно (ну почти)
Размеры датасетов для английского и китайского
GLUE
#rl
Последнее занятие близится. Темы жёсткие, но давайте попробуем успеть как можно больше:

1. TRPO, PPO (затронули на прошлом семинаре)
1. DDPG, TD3, SAC (скорее всего только теория)

Ещё, если успеем:
1. Planning, model-based RL
1. Imitation learning

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

Для PPO ближе к середине недели появится более простая версия задания. TD3 и SAC в яндексовом курсе нет, но мы что-нибудь придумаем, это очень крутые алгоритмы. Каждый день буду постить доп. материалы, чтобы было проще.
#rl

По-моему мы это затрагивали на занятиях, но хочу рассказать про OpenAI Spinnig Up in Deep RL
Он состоит из двух частей - кодовой базы и документации к ней. Код - это довольно понятно написанные реализации самых популярных алгоритмов RL. В документации есть довольно подробное описание каждого из них и на моём опыте он очень помог мне осознать TRPO и PPO. Тут их и советую почитать, сразу после лекции по TRPO CS294-112.

Этот сайт, по-моему, не очень подходит для изучения RL с нуля, но в качестве справочника просто идеален.
Только что закончился первый NLP митап Huawei. Поговорили про document-level машинный перевод, мультиязычность BERT и про BERT в проде. Как смогу добыть презентации и записи, ссылки на них появятся тут.