Size: a a a

2019 September 12
DL in NLP
8 сжатых Бертов из 32
https://www.intel.ai/q8bert/#gs.2srbl2

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

За ссылку спасибо @Daniil
источник
2019 September 13
DL in NLP
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%.
источник
DL in NLP
источник
DL in NLP
источник
DL in NLP
Сегодня наткнулся на воскитительный модуль питона, о котором раньше ничего не знал.
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
источник
2019 September 15
DL in NLP
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))

Вообще выглядит прикольно, думаю вечерок потыкаться можно.
источник
2019 September 16
DL in NLP
The #BenderRule: On Naming the Languages We Study and Why It Matters#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)
источник
2019 September 17
DL in NLP
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.
источник
DL in NLP
источник
2019 September 18
DL in NLP
источник
2019 September 19
DL in NLP
Забавное соревнование по NLP - вам нужно научить модельку решать ЕГЭ. И iPavlov в лице @alexeysorokin89 собирает команду на участие в нём (если желающих будет много, то даже несколько команд). По всем вопросам обращаться к @alexeysorokin89

contest.ai-journey.ru/ru/competition
источник
2019 September 20
DL in NLP
Неделю назад 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 (для бесплатного колаба модель слишком большая), тред с разными смешными примерами.
источник
2019 September 24
DL in NLP
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 - это странное занятиие. Просто нужно делать её довольно хитро.
источник
DL in NLP
Ещё у меня возникла идея делиться с вами своими заметками по статье - если я читаю её полностью, то выделяю основные/интересные части. Вдруг кому-то будет полезно.
источник
2019 September 25
DL in NLP
Спасибо @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
источник
2019 September 26
DL in NLP
Вышка приглашает на семинар - всем регистрироваться
источник
DL in NLP
Переслано от Katya Artemova
Всем привет!
3 октября 2019, в четверг, 19:00 приглашаем на заседание семинара Научно-учебной лаборатории  моделей и методов вычислительной прагматики Департамента анализа данных и искусственного интеллекта ВШЭ.
Тема: "Соревнование по решению школьных тестов по русскому языку и базовое решение для него"
Докладчик: Валентин Малых (научный сотрудник Huawei Noah's Ark lab)
Аннотация: В докладе будет рассказано про проходящее соревнование https://contest.ai-journey.ru, в чем состоит его сложность и почему оно интересно. Будет рассмотрено базовое решение для этого соревнования, которое набрало бы "тройку" на настоящем экзамене. Если вы заинтересовались, то может быть у вас получится сделать решение на "отлично".
Место проведения: Покровский бульвар, д. 11, D502, 19:00

ссылка для регистрации https://www.hse.ru/expresspolls/poll/308207309.html
источник
2019 September 27
DL in NLP
NeMo: a toolkit for building AI applications using Neural Modules
Oleksii Kuchaiev et al. NVIDIA
arxiv.org/abs/1909.09577

Тулкит для быстрого стакания монструозных архитектур из высокоуровневых фреймворк-агностичных блоков.

Боль:
- Стандартный подход переиспользования компонентов в комплексных архитектурах - стекать предобученные опенсорсные модели.

- Определение архитектуры и обучение модели могут быть трудноразделимы в одном скрипте.

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

Болеутоляющее:
- Декомпозиция на высокоуровневые функциональные building blocks (такие, как language model, encoder, decoder, data augmentation algorithm, a loss function и т.д.) с фиксированными input и output интерфейсами.

- Разделение на описание  архитектуры, обучение, алгоритм оптимизации, выбор фреймворков backend.  

- Интерфейсы блоков определены статическими типами данных с описанием семантики данных для каждой оси тензора (такой, как WordEmbedding, ImageEmbeddingTag, Spectrogram), между building blocks выполняется проверка на совместимость.

- Building blocks фреймворк-агностичны, сейчас могут конвертироваться из любой PyTorch nn.Module, а после добавления поддержки, - и из других фреймворков. Кроме базовых блоков уже есть коллекции высокоуровневых: модели распознавания речи, машинного перевода, BERT.

▫️ Python
▫️ Distributed training
▫️ Mixed precision training
▫️ Multi-GPU
▫️ Open Source https://github.com/NVIDIA/NeMo
▫️ Видос с примером использования  https://drive.google.com/file/d/1CF-buP_Y1qCAefzoyvOUCXl_3v2vO5P-/preview
источник
DL in NLP
источник