Получи случайную криптовалюту за регистрацию!

DL in NLP

Логотип телеграм канала @dlinnlp — DL in NLP D
Логотип телеграм канала @dlinnlp — DL in NLP
Адрес канала: @dlinnlp
Категории: Технологии , Образование
Язык: Русский
Страна: Россия
Количество подписчиков: 8.30K
Описание канала:

Новости и обзоры статей на тему обработки естественного языка, нейросетей и всего такого.
Связь и реклама: @dropout05

Рейтинги и Отзывы

4.33

3 отзыва

Оценить канал dlinnlp и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

2

3 звезд

0

2 звезд

0

1 звезд

0


Последние сообщения 20

2021-07-29 00:27:42 OpenAI Triton — новый язык программирования (ну почти), заточенный под нейросетки.

Основная мотивация: если ваш кастомный слой в нейросетке очень кастомный, вам сейчас приходится либо страдать от его низкой скорости, либо писать на CUDA (и страдать от CUDA). Причём вариант с кудой не очень классный, потому что если потом захотите портировать на iphone/android/edge/... , то будете страдать снова.

Triton это такой "Си с тайлами". Сверху языка С добавлена абстракция Tile, которая по факту — тензор. Под капотом много оптимизаций для того, чтобы всё это эффективно считалось на GPU.

Из документации видно, что сейчас язык больше продвигают как альтернативу TorchScript. То есть, вы пишете на питоне, добавляете несколько декораторов к вашим функциям и делает ваш говнокод не лучше, но быстрее.

Проект ещё в очень ранней фазе и исходники выглядят не шибко приятно, но если он уменьшит число CUDA kernels в этом мире, я буду рад.
5.3K viewsnlpcontroller_bot, 21:27
Открыть/Комментировать
2021-07-26 06:21:25 Во вторник будет Fireside chat with Geoffrey Hinton and Oriol Vinyals

Я не особый фанат Хинтона (не фанат биологических аналогий), но у Vinyals очень много классных (и более приземленных) статей. Думаю их обсуждение может быть весьма интересным.

https://www.crowdcast.io/e/fireside-chat-with-7
1.2K viewsnlpcontroller_bot, 03:21
Открыть/Комментировать
2021-07-23 00:58:44
609 viewsnlpcontroller_bot, 21:58
Открыть/Комментировать
2021-07-23 00:58:44 OpenAI Codex: Evaluating Large Language Models Trained on Code
Chen et al.
arxiv.org/abs/2107.03374

С одной стороны хайп по GitHub Copilot начал спадать, но с другой я не видел ни одного ревью статьи, которая описывает нейросетку под капотом.

Основная идея: зафайтнюнить GPT-3 генерировать код программы по её докстрингу. Первый вопрос: как эвалюировать? Считать перплексию как-то бессмысленно, поэтому авторы сделали тестовый сет из 164 задачек с юниттестами и смотрели может ли модель сгенерировать код, который их проходит. Также пробовали использовать BLEU и показали, что он бесполезен.

Тк сгенеренный моделью код должен где-то выполняться, чтобы злобный AI не захватил мир, авторы озаботились созданием сендбокса с помощью gVisor и eBPF-правил для файервола (на самом деле на случай, воспроизведения кода malware, которого на гитхабе хватает).

Кроме этого создали "чистый" датасет функций, который намайнили с сайтов типа leetcode, а также из репозиториев с CI, откуда забрали только те функции, которые проходят юниттесты из этих репозиториев. На нём зафайтнютились ещё раз, что сильно улучшило модель. Финальный результат: модель решает 28% задач, если генерируем только одну функцию и 70%, если генерируем 100 функций и ищем хотя бы одну, которая проходит юниттесты.

Интересные детали: GPT-3 в качестве инициализации не улучшает финальное качество по сравнению с обучением с нуля, но сходится быстрее. Также добавили в словарь токенов отвечающих за несколько пробелов подряд, это уменьшило длину на 30%.

Кажется, что мы про Copilot ещё услышим. Мне эта штука не нравится, тк сложность программирования не в том, чтобы код писать, а в том, чтобы его читать, и Copilot с этим не помогает и даже делает хуже.
647 viewsnlpcontroller_bot, edited  21:58
Открыть/Комментировать
2021-07-15 23:41:16
1.0K viewsnlpcontroller_bot, 20:41
Открыть/Комментировать
2021-07-15 23:41:16 Pay Attention to MLPs
Liu et al, [Google]
arxiv.org/abs/2105.08050

Новая архитектура, которая работает так же хорошо, как и self-attention в CV и лишь немного хуже self-attention в NLP. Основая идея (на картинке) следующая: используем MLP с skip-connection, а для того, чтобы токены могли взаимодействовать друг с другом используем spatial gating unit. Никакого self-attention или свёрток.

Spatial gating unit это мега простая штука. Вот обычно мы применяем линейный слой по hidden-размерности, т.е. [seq_len, hidden] @ W, а тут будем применять его по пространственной [hidden, seq_len] @ W, да ещё и гейт добавим и получим GeLU(x) * [x @ W], где * — поэлементное произведение, а @ - матричное умножение по пространственной размерности seq_len.

На удивление показыает неплохие результаты на задачах с парой текстов: SST (схожесть текстов), MNLI (логческое следствие) и SQuAD.
Главная грусть в том, что число параметров матрицы W = seq_len * seq_len, и что никакой тебе вариативной длины текста. Зафиксировали 128 (или 512) и только на такой длине и работаем.
1.1K viewsnlpcontroller_bot, 20:41
Открыть/Комментировать
2021-07-08 19:17:43
1.3K viewsnlpcontroller_bot, 16:17
Открыть/Комментировать
2021-07-08 19:17:43 Charformer: Fast Character Transformers via Gradient-based Subword Tokenization
Tay et al. [Google]
arxiv.org/abs/2106.12672

Задача токенизации выглядит решённой (используйте BPE), однако последнее время я стал замечать больше статей, которые придумают новые методы. В этой статье сновная идея такая: учить метод токенизации одновременно с нейросетью. Для этого применяют следующий алгоритм:

1. Строку размера L разбивают на непересекающиеся n-граммы байтов начиная с n=1 и до n=M (см картинку для M=4). Эти n-gram называют блоками.
2. У каждого байта свой эмбеддинг, всего их 256 (байт=8 бит, 2^8=256). Эмбеддинг блока получается пулингом эмбеддингов соответствующей ему последовательности байтов.
3. Подсчитываются block stores — к каждому эмбеддингу блока применяется линейный слой, который оценивает "полезность" блока.
4. К скорам применяется softmax по размерности соответствующей размеру блока (сложно описать словами, на картинке это вертикальная линия). Дальше блоки складываются согласно этим скорам.
5. Обратите внимание, что наша последовательность всё ещё размера L. Теперь мы хотим уменьшить её длину, в чём и есть главная цель токенизации. Для этого применяется обычный mean-pooling с размером кернела и страйдом = d. На выходе получаем последовательность псевдотокенов в d раз меньше, чем оригинальаня последовательность.
7. Теперь эти псевдо-токены кормятся в обычный трансформер.

Такая хитрая токенизация показыает заметное улушчение в мультиязычных датасетах, где ты тренируешься на английском, а эвалюируешься на других языках. На чисто английских задачах (GLUE) улучшает результаты Byte-level T5 и сокращает отрыв от BERT почти до нуля.
1.3K viewsnlpcontroller_bot, edited  16:17
Открыть/Комментировать
2021-06-12 05:22:04
Китайцы очень любят делать объёмные обзоры той или иной подобласти машинного обучения с перечислением основных работ и главными прорывными идеями. Статей выходит очень много каждый день, и невозможно все прочесть. Поэтому такие обзоры ценны (если качественно написаны, конечно, что довольно редко).

Недавно вышла очень неплохая статья-обзор различных вариантов Трансформеров с фокусом на моделировании языка (NLP). Это мастр-рид для всех, кто начинает работать с NLP и интересуется Трансформерами. В статье рассматриваются базовые принципы работы self-attention и такие подробности современных вариантов Трансформеров как модификации архитектуры, претрейнинг и их приложения.

Статья: A Survey of Transformers.
762 viewsVlad Lialin, 02:22
Открыть/Комментировать
2021-05-31 19:27:31 True Few-Shot Learning with Language Models
Perez et al.
arxiv.org/abs/2105.11447

Мы буквально несколько недель назад восхищались PET, iPET, ADAPET и другими штуками, например ещё "how many data points is a prompt worth". Perez et al в своей новой статье указывают на один косяк во всех предыдущих статьях по few-shot — наличие валидационного сета, который далеко не few-shot и на котором вы тюните ваши гиперпараметры и подбираете промты.
В статье показывают, что качество ADAPET очень сильно зависит от всего этого и в случае, когда у вас действительно мало размеченных (валидационных) данных вы можете быть очень далеко от близких к SOTA (да и вообще к применимым на практике) решениям.

В общем вывод стандартный: размечайте данные (хотя бы небольшую валидационную выборку), это единственый надёжный метод получить хорошую модель.
831 viewsnlpcontroller_bot, edited  16:27
Открыть/Комментировать