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

Связь: @dropout05 (рекламы нет)
加入频道
Релиз-кандидат TensorFlow 1.5, который будет последним из TF 1.X (в этот раз уже точно).

Фишки:
1. pip install tensorflow ставит GPU-версию (при этом она будет работать и с CPU)
1. Модуль forward-совместимости с TF2.0

Полностью читать тут:

github.com/tensorflow/tensorflow/releases/tag/v1.15.0-rc0
Моделька для контролируемой генерации текста от команды Einstein.ai
Пока не вникал в суть, но вроде бы просто языковая модель со специальными токенами во время тренировки.

twitter.com/RichardSocher/status/1171847882078470144
Facebook AI Research заопенсорсили новую среду для обучения с подкреплением.
Основная фишка - "планирование" агентом каких-то high-level стратегий с помощью естественного языка.
Ссылка: https://ai.facebook.com/blog/-teaching-ai-to-plan-using-language-in-a-new-open-source-strategy-game/
8 сжатых Бертов из 32
https://www.intel.ai/q8bert/#gs.2srbl2

Intel запилили библиотеку NLP-Architect для квантизации и дистилляции transformer-based моделей. И результат: bert-base, квантизованный до 8bit, притом потери качества на базовых тасках сильно меньше чем у HuggingFace's DistilBERT.
Дистилляция Берта - это странное занятие. Потому что дистилляция нужна для создания разметки, а для Берта она и так берётся автоматически.
Другие способы сжатия, как показывает опыт Интел могут достигать отличных результатов. Ждём больше исследований на эту тему.

За ссылку спасибо @Daniil
Brain2Char: A Deep Architecture for Decoding Text from Brain Recordings
Pengfei Sun et al. Center for Integrative Neuroscience UCSF
arxiv.org/abs/1909.01401

Архитектура Brain2Char декодирует в последовательности символов из записей потенциалов непосредственно с коры головного мозга (метод ECoG) .

Encoder network
▫️ 3D Inception layers фильтры для извлечения пространственно-временных признаков из данных с электродов
▫️ bidirectional recurrent layers для получения эмбедингов, представление которых регуляризуется

Regularization network
Наказывает ембединги дополнительным loss за :
▫️ вариативность сигнала, вызванную различными для сессий записи положениями и качеством контакта электродов на мозге.
▫️ acoustic features (MFCC)
▫️ articulatory kinematic features (AKT)

Decoder Network
▫️ dilated convolution layers для устойчивости к шуму
▫️ language model weighted BeamSearch для декодирования в последовательности символов
▫️ CTC loss

🏆SOTA Тестировали на 3 участниках, получили 10,6%, 8,5% и 7,0% Word Error Rates при размерах словарного запаса от 1200 до 1900 слов.

Если произносить безмолвно, только мимикой, то ошибка всё ещё считается удовлетворительной - 40%, 67%.
Сегодня наткнулся на воскитительный модуль питона, о котором раньше ничего не знал.
docs.python.org/3/library/linecache.html

Linecache позволяет быстро обращаться к произвольным строчкам файлов. Это позволяет не грузить весь 1000000Гб датасет в память и не париться с написанием сложных pytorch Dataset (что я делал весь вчерашний день). Конечно, эта штука будет медленее хорошо реализованного датасета с read buffer и префетчингом, но зато она сильно проще.

Пример использования с просторов формов pytorch:
ссылка

 LazyTextDataset(Dataset):
   def __init__(self, filename):
       self._filename = filename
       self._total_data = 0
       self._total_data = int(subprocess.check_output("wc -l " + filename, shell=True).split()[0])

   def __getitem__(self, idx):
       line = linecache.getline(self._filename, idx + 1)
       csv_line = csv.reader([line])
       return next(csv_line)
     
   def __len__(self):
       return self._total_data
🏆1
NVIDIA Neural Modules: NeMo
https://github.com/NVIDIA/NeMo

Nvidia зарелизили ещё один catalyst обертку для PyTorch, заточенную на nlp и asr ресеч.

Из фишечек:
0) (Вроде бы) достаточно понятная абстракция
1) Куча всякого разного добра, чтобы облегчить жизнь nlp-шникам (например реализация beam search)
2) Интеграция из коробки с apex, pytorch-transformers, YouTokenToMe (bpe токенайзер от команды ВК, который работает за O(n))

Вообще выглядит прикольно, думаю вечерок потыкаться можно.
The #BenderRule: On Naming the Languages We Study and Why It Matters
Ссылка

Мастрид-рекомендация от Рудера для всех, кто занимается nlp.

TL;DR
Do state the name of the language that is being studied, even if it's English. Acknowledging that we are working on a particular language foregrounds the possibility that the techniques may in fact be language specific. Conversely, neglecting to state that the particular data used were in, say, English, gives [a] false veneer of language-independence to the work. (Bender 2011:18)
The Bottom-up Evolution of Representations in the Transformer:
A Study with Machine Translation and Language Modeling Objectives
Voita et al.
arxiv.org/abs/1909.01380

Статья про теоретикоинформационный анализ трансформера при различных способах его тренировки. Сравнивают машинный перевод, языковое моделирование и masked language modelling. Анализ делают с помощью измерения mutual information и PWCCA.

К статье есть отличный блогпост от одного из авторов - Елены Войты из Яндекса
Evolution of Representations in the Transformer
ссылка

TL;DR
1. with the LM objective, as you go from bottom to top layers, information about the past gets lost and predictions about the future get formed;
1. for MLMs, representations initially acquire information about the context around the token, partially forgetting the token identity and producing a more generalized token representation; the token identity then gets recreated at the top layer;
1. for MT, though representations get refined with context, less processing is happening and most information about the word type does not get lost.
Забавное соревнование по NLP - вам нужно научить модельку решать ЕГЭ. И iPavlov в лице @alexeysorokin89 собирает команду на участие в нём (если желающих будет много, то даже несколько команд). По всем вопросам обращаться к @alexeysorokin89

contest.ai-journey.ru/ru/competition
Неделю назад Richard Socher (один из соавторов GloVe, кстати) из Salesforce объявил о публикации крупнейшей на данный момент известной языковой модели CTRL c 1.6B параметров (против 1.5B у OpenGPT-2 и 774M у OpenAI GPT-2, про которые я уже писал). Научной новизны в предлагаемой модели никакой, кажется, нет, и, в общем-то, это продолжение гонки вооружений было бы совсем скучным, но есть несколько интересных моментов:

1. Это, кажется, первая из таких публичных монстро-моделей, обученная с явным обусловливанием (conditioning).
2. Помимо стилей/жанров/сабреддитов они неплохо придумали использовать в conditioning значение URL страницы-источника (при генерации -- необязательно настоящей). Например, ссылка в духе
https://www.cnn.com/2018/09/20/us-president-meets-british-pm позволяет сетке настроиться на стиль сайта CNN, на указанную тему и на конкретную дату (что позволяет ей правильно решить, кто в данный момент был президентом и премьером).
3. Они придумали развернуть расчёт conditioning для решения обратной задачи атрибуции источника: считают для заданного текста perplexity при различных conditioning параметрах, определяют, в каких условиях такой текст наиболее вероятен. Выглядит забавно.

Немного полезных ссылок: код и модель, статья, блогопост, инструкция по разворачиванию на Google Compute Engine (для бесплатного колаба модель слишком большая), тред с разными смешными примерами.
TinyBERT: Distilling BERT for Natural Language Understanding
Jiao et al. Huawei
arxiv.org/abs/1909.10351

Внезапно, очень хорошая статья по дисстиляции берта с очень интересными результатами. Основные идеи следующие:

1. Два этапа дистилляции - general (self-supervised) и task-specific (supervised) с аугментациями; абляционные исследования показывают, что всё из этого очень важно
1. Дистиллировать нужно не только финальное вероятностное распределение (его даже не нужно), а матрицы аттеншена и hidden’ы.
1. Перенос лучше производить не с последних/первых N слоёв, а равномерно (каждый второй слой / каждый третий)
1. Результаты других методов дисстиляции (в особенности DIstillBERT) слабо превосходят результаты BERTsmall сопоставимого размера

Код и обученные модели “will be made publicly available”.

В общем я был неправ, говоря что дистилляция BERT - это странное занятиие. Просто нужно делать её довольно хитро.
TINYBERT_highlited.pdf
1.8 MB
Ещё у меня возникла идея делиться с вами своими заметками по статье - если я читаю её полностью, то выделяю основные/интересные части. Вдруг кому-то будет полезно.
Спасибо @BobaZooba за ссылку на статью про ALBERT, твит про которого недавно был в канале

ALBERT: A lite BERT for self-supervised learning of language representations
Anonymous authors [Но на самом деле это Google]

пока не успел прочитать, но абстракт абстракта такой:

1. SOTA: GLUE, RACE, SQUAD
1. Two parameter-reduction techniques to lower memory consumption and increase the training speed of BERT
1. Comprehensive empirical evidence shows that our proposed methods lead to models that scale much better compared to the original BERT
1. Self-supervised loss that focuses on modeling inter-sentence coherence, and show it consistently helps downstream tasks with multi-sentence inputs

openreview.net/pdf?id=H1eA7AEtvS
Вышка приглашает на семинар - всем регистрироваться