DeBERTa: Decoding-enhanced BERT with Disentangled Attention
He et al. [Microsoft]
arxiv.org/abs/2006.03654
Уже довольно старая статья, но наконец-то дошли до неё руки. DeBERTa до сих пор в топе по SuperGLUE, так что думаю она стоит обсуждения.
Три основных идеи:
1. Disentangled Attention (DA) – вместо складывания positional embedding и word embedding и рассчёта attention score на нём, мы считаем три attention score: word2word, word2position, posiiton2word. После чего складываем их.
2. Enhanced Mask Decoder – ужасное название, тк вообще не отражает сути метода. Идея в том, что так как DA учитывает только относительные позиции слов, было бы неплохо дополнительно дать модели и знание об абсолютных позициях. Это делают тем, что positional embeddings добавляют к хидденам последнего слоя DeBERTa прямо перед softmax.
3. Scale Invariant Fine-Tuning – нормализовыывать хиддены последнего слоя и добавлять в них шум. Используется при файнтюнинге, улучшает генерализацию на SuperGLUE. Описание очень неподробное и код для SIFT так и не зарелижен, может быть есть ещё какие-то детали.
Кстати DeBERTa доступна в 🤗 по
He et al. [Microsoft]
arxiv.org/abs/2006.03654
Уже довольно старая статья, но наконец-то дошли до неё руки. DeBERTa до сих пор в топе по SuperGLUE, так что думаю она стоит обсуждения.
Три основных идеи:
1. Disentangled Attention (DA) – вместо складывания positional embedding и word embedding и рассчёта attention score на нём, мы считаем три attention score: word2word, word2position, posiiton2word. После чего складываем их.
2. Enhanced Mask Decoder – ужасное название, тк вообще не отражает сути метода. Идея в том, что так как DA учитывает только относительные позиции слов, было бы неплохо дополнительно дать модели и знание об абсолютных позициях. Это делают тем, что positional embeddings добавляют к хидденам последнего слоя DeBERTa прямо перед softmax.
3. Scale Invariant Fine-Tuning – нормализовыывать хиддены последнего слоя и добавлять в них шум. Используется при файнтюнинге, улучшает генерализацию на SuperGLUE. Описание очень неподробное и код для SIFT так и не зарелижен, может быть есть ещё какие-то детали.
Кстати DeBERTa доступна в 🤗 по
AutoModel.from_pretrained("microsoft/deberta-base")
Forwarded from Denis Sexy IT 🤖
Тут кто-то выложил веб-интерфейс чтобы мучать GPT модель от сбера, го генерировать глупые топ-10 списки: https://russiannlp.github.io/rugpt-demo/
Do sequence-to-sequence VAEs learn global features of sentences?
Bosc and Vincent, [MILA]
arxiv.org/abs/2004.07683
Короткий ответ на вопрос из заголовка: нет.
А теперь подбробнее. В NLP принятно считать, что если вы делаете автокодировщик, сжимающий ваше предложение в один вектор, а потом разжимающий его обратно, но лучше использовать VAE. Интуитивно это выходит из того, что дополнительная регуляризация в ELBo и семплирование из пространства латентных переменных позволят сделать вектора, лучше описывающие глобальные фичи предложения.
Авторы этой статьи показывают противоречащие этой интуиции результаты. Они показывают, что VAE склонны запоминать только первые несколько слов, а дальше пологаться на то, что декодер сможет правильно угадать остальные. Возможно, это в том числе следует из хака под названием free bits, который борется с локальным минимумом VAE, когда KL-tem равен нулю и модель просто производит шум и ничего не учит.
В конце статьи они предлагают исспользовать альтернативные энкодеры (Bag of Words (BoW) или предобученную LM с фиксированными весами) и альтарнативный декодер, который довольно хитрый и если я правильно понял, предсказывает BoW-вероятности слов предложения. На некоторых датасетах по классификации эти варианты улучшают F меру вплоть до 5 пунктов по сравнению с обычным VAE, это намекает на то, что BoW заметно улучшает представления VAE, а ещё точнее показывает, что VAE настолько плохо учит фичи, что даже BoW может быть лучше.
Bosc and Vincent, [MILA]
arxiv.org/abs/2004.07683
Короткий ответ на вопрос из заголовка: нет.
А теперь подбробнее. В NLP принятно считать, что если вы делаете автокодировщик, сжимающий ваше предложение в один вектор, а потом разжимающий его обратно, но лучше использовать VAE. Интуитивно это выходит из того, что дополнительная регуляризация в ELBo и семплирование из пространства латентных переменных позволят сделать вектора, лучше описывающие глобальные фичи предложения.
Авторы этой статьи показывают противоречащие этой интуиции результаты. Они показывают, что VAE склонны запоминать только первые несколько слов, а дальше пологаться на то, что декодер сможет правильно угадать остальные. Возможно, это в том числе следует из хака под названием free bits, который борется с локальным минимумом VAE, когда KL-tem равен нулю и модель просто производит шум и ничего не учит.
В конце статьи они предлагают исспользовать альтернативные энкодеры (Bag of Words (BoW) или предобученную LM с фиксированными весами) и альтарнативный декодер, который довольно хитрый и если я правильно понял, предсказывает BoW-вероятности слов предложения. На некоторых датасетах по классификации эти варианты улучшают F меру вплоть до 5 пунктов по сравнению с обычным VAE, это намекает на то, что BoW заметно улучшает представления VAE, а ещё точнее показывает, что VAE настолько плохо учит фичи, что даже BoW может быть лучше.
А для тех, кто ничего не понял из прошлого поста (не бескойтесь, вы неодиноки и вас много), я покидаю хорошие материалы по погружению в VAE для NLP.
1. Must read: VI туториал от Wilker Aziz и Phil Schulz: github.com/vitutorial/VITutorial
1. Оригинальная статья по VAE для NLP: Generating Sentences from a Continuous Space
1. Не самый ужасный код: github.com/rohithreddy024/VAE-Text-Generation
1. Berkeley, Unsupervised DL, Latent Variable Models
1. Must read: VI туториал от Wilker Aziz и Phil Schulz: github.com/vitutorial/VITutorial
1. Оригинальная статья по VAE для NLP: Generating Sentences from a Continuous Space
1. Не самый ужасный код: github.com/rohithreddy024/VAE-Text-Generation
1. Berkeley, Unsupervised DL, Latent Variable Models
На выходных делал небольшой pet-project. Реимплементировал Learning Neural Network Subspaces. Держите поиграться, пишите про баги в комментариях.
gist.github.com/Guitaricet/cbad86efe1a919ef79cfb8814aa1f10b
gist.github.com/Guitaricet/cbad86efe1a919ef79cfb8814aa1f10b
Давно у нас не было постов вида "держите кучу ссылок"
1. Applied PyTorch 101 от Abhishek Thakur — самые основы пайторча начиная с тензоров и заканчивая даталоадерами (будут ещё видео). Выглядит неплохо, буду советовать студентам.
1. Language Interpretability Tool — тулза для визуализации и интерпретации трансформеров, кроме этого позволяет анализировать ошибки модели и прочие вещи. Выглядит куда более проработанной чем всё, что я видел раньше (демо, гитхаб)
1. NLP In Video Games — мне очень нравится эта идея в принципе, тк она может позволить упростить какие-то моменты геймдева, но NLP всё-таки ещё сыроват. Несмотря на это можно уже посмотреть на первые попытки что-то такое сделать.
1. What Will it Take to Fix Benchmarking in Natural Language Understanding? — рассуждения на тему того, почему текущие бенчмарки плохи и как делать более хорошие.
1. torchtyping — попытка решить проблему документации шейпов тензоров, а заодно и проверять это всё на лету. Надо будет попробовать.
1. MLOps: жизненный цикл ML-моделей — как известно, обучение моделек это 5% работы, в этом выступлении обсуждают остальные 95%.
1. Why Do Local Methods Solve Nonconvex Problems — современный обзор текущей теории обучения в диплёрнинге или попытки ответить на вопрос почему в нейросетках почти все локальные минимумы близки к глобальному.
1. Applied PyTorch 101 от Abhishek Thakur — самые основы пайторча начиная с тензоров и заканчивая даталоадерами (будут ещё видео). Выглядит неплохо, буду советовать студентам.
1. Language Interpretability Tool — тулза для визуализации и интерпретации трансформеров, кроме этого позволяет анализировать ошибки модели и прочие вещи. Выглядит куда более проработанной чем всё, что я видел раньше (демо, гитхаб)
1. NLP In Video Games — мне очень нравится эта идея в принципе, тк она может позволить упростить какие-то моменты геймдева, но NLP всё-таки ещё сыроват. Несмотря на это можно уже посмотреть на первые попытки что-то такое сделать.
1. What Will it Take to Fix Benchmarking in Natural Language Understanding? — рассуждения на тему того, почему текущие бенчмарки плохи и как делать более хорошие.
1. torchtyping — попытка решить проблему документации шейпов тензоров, а заодно и проверять это всё на лету. Надо будет попробовать.
1. MLOps: жизненный цикл ML-моделей — как известно, обучение моделек это 5% работы, в этом выступлении обсуждают остальные 95%.
1. Why Do Local Methods Solve Nonconvex Problems — современный обзор текущей теории обучения в диплёрнинге или попытки ответить на вопрос почему в нейросетках почти все локальные минимумы близки к глобальному.
YouTube
PyTorch 101: An Applied Tutorial
Revisiting Simple Neural Probabilistic Language Models
Sun and Iyyer [UMass Amherst]
arxiv.org/abs/2104.03474
Помните на курсе по NLP мы говорили, что просто конкатенировать эмбеддинги текста и пихать их в полносвязную сетку — это тупо и не работает? И что лучше использовать RNN/Трансфрмеры.
В общем это не совсем так. Если сделать полносвязную сетку из 16 слоёв с layer norm, dropout и skip connections, то на коротких контекстах (<20 токенов) она работает сопоставимо с трансформерами на языковом моделировании 🤯
Кажется, мне нужно будет переделать пару слайдов...
Sun and Iyyer [UMass Amherst]
arxiv.org/abs/2104.03474
Помните на курсе по NLP мы говорили, что просто конкатенировать эмбеддинги текста и пихать их в полносвязную сетку — это тупо и не работает? И что лучше использовать RNN/Трансфрмеры.
В общем это не совсем так. Если сделать полносвязную сетку из 16 слоёв с layer norm, dropout и skip connections, то на коротких контекстах (<20 токенов) она работает сопоставимо с трансформерами на языковом моделировании 🤯
Кажется, мне нужно будет переделать пару слайдов...
Неделя начинается с NVIDIA GTC, блогпостов по prompt enginering и рассуждений на тему того, почему 🔥 лучше 💩
1. NVIDIA GTC 2021 — бесплатная конфа, много интересных спикеров начиная с Hinton, Bengio, LeCun и продолжая более локальными коммьютини, например Lightning и DeepPavlov там тоже будут
1. How many data points is a prompt worth? — от 100 до 3000, если верить 🤗
1. How usability improves performance in PyTorch
1. Блогпост на тему Approximating How Single-Head Attention Learns; статью мы недавно обозревали в канале
1. Интересный взгляд на ADAM от Tim Dettmers: по сути это такой фильтр Калмана для градиентов
1. PyTorch in Tesla — чтобы вы потом могли ответить, а где его используют в проде
1. Efficient Large-Scale Language Model Training on GPU Clusters — про то, как тяжело жить, когда у вас 3 тысячи GPU
1. NVIDIA GTC 2021 — бесплатная конфа, много интересных спикеров начиная с Hinton, Bengio, LeCun и продолжая более локальными коммьютини, например Lightning и DeepPavlov там тоже будут
1. How many data points is a prompt worth? — от 100 до 3000, если верить 🤗
1. How usability improves performance in PyTorch
1. Блогпост на тему Approximating How Single-Head Attention Learns; статью мы недавно обозревали в канале
1. Интересный взгляд на ADAM от Tim Dettmers: по сути это такой фильтр Калмана для градиентов
1. PyTorch in Tesla — чтобы вы потом могли ответить, а где его используют в проде
1. Efficient Large-Scale Language Model Training on GPU Clusters — про то, как тяжело жить, когда у вас 3 тысячи GPU
NVIDIA
NVIDIA CEO Jensen Huang Keynote at GTC 2025
Watch NVIDIA CEO Jensen Huang deliver a truly ground-breaking GTC keynote happening on March 17-21, 2025.
Generating Datasets with Pretrained Language Models
Schick and Schütze, [LMU Munich]
arxiv.org/abs/2104.07540
У нас есть классные генеративные языковые модели, которые могут решать (с каким-то качеством) любые NLP задачи. Но такие большие модели и в прод их не покатишь. Очевидным решением будет использовать такие модели для грязной разметки ваших данных — придумать несклько примеров и устроить few-show классификацию с помощью GPT-2/3. Schick and Schütze пошли дальше и предлагают геренировать не только лейблы, но и примеры. После чего обучать на этом модельку. К сожалению делают это только для задачи semantic similarity (было бы интересно посмотреть на NER), но результаты очень неплохи. Их моделька обходит InferSent, USE, SentenceBERT/SentenceRoBERTa на 7 датасетах.
Schick and Schütze, [LMU Munich]
arxiv.org/abs/2104.07540
У нас есть классные генеративные языковые модели, которые могут решать (с каким-то качеством) любые NLP задачи. Но такие большие модели и в прод их не покатишь. Очевидным решением будет использовать такие модели для грязной разметки ваших данных — придумать несклько примеров и устроить few-show классификацию с помощью GPT-2/3. Schick and Schütze пошли дальше и предлагают геренировать не только лейблы, но и примеры. После чего обучать на этом модельку. К сожалению делают это только для задачи semantic similarity (было бы интересно посмотреть на NER), но результаты очень неплохи. Их моделька обходит InferSent, USE, SentenceBERT/SentenceRoBERTa на 7 датасетах.
Пачка ссылок:
1. ADAPET — новый метод few-shot learning основанный на GPT-2/3 и prompts. Обходит PET и iPET без дополнительных даннных.
1. Scaling up BERT-like model Inference on modern CPU - Part 1
1. Controllable Text Generation — презентация PhD-диссера
1. 🤗 Accelerate — единая обёртка для CPU/GPU/distributed/TPU. Поделитесь в группе впечатлениями, кто уже пробовал.
1. How to Train BERT with an Academic Budget — TL;DR используйте LARGE вместо BASE, maxlen=128 и DeepSpeed.
1. XTREME-R: Towards More Challenging and Nuanced Multilingual Evaluation — более экстремальная эвалюация мультизяычных моделек, плюс овервью текущего состояния этой области. Тепрь включает и аналог Checklist
1. ADAPET — новый метод few-shot learning основанный на GPT-2/3 и prompts. Обходит PET и iPET без дополнительных даннных.
1. Scaling up BERT-like model Inference on modern CPU - Part 1
1. Controllable Text Generation — презентация PhD-диссера
1. 🤗 Accelerate — единая обёртка для CPU/GPU/distributed/TPU. Поделитесь в группе впечатлениями, кто уже пробовал.
1. How to Train BERT with an Academic Budget — TL;DR используйте LARGE вместо BASE, maxlen=128 и DeepSpeed.
1. XTREME-R: Towards More Challenging and Nuanced Multilingual Evaluation — более экстремальная эвалюация мультизяычных моделек, плюс овервью текущего состояния этой области. Тепрь включает и аналог Checklist
Pattern-exploiting training
Сегодня на reading group презентовал маленький обзор по методам, использующим prompts. GPT-3, PET, iPET, ADAPET, LM-BFF, p-tuning. Получилось нелпохо, держите посмотреть, не стесняйтесь что-то спрашивать в чате.
https://docs.google.com/presentation/d/1b59JIrBdIhwbz1A3yzQ_c2Rexte4xFX_0AHOtp6zkNM/edit#slide=id.p
Сегодня на reading group презентовал маленький обзор по методам, использующим prompts. GPT-3, PET, iPET, ADAPET, LM-BFF, p-tuning. Получилось нелпохо, держите посмотреть, не стесняйтесь что-то спрашивать в чате.
https://docs.google.com/presentation/d/1b59JIrBdIhwbz1A3yzQ_c2Rexte4xFX_0AHOtp6zkNM/edit#slide=id.p
Google Docs
Pattern-exploiting training
Pattern-exploiting training (a short overview) Apr 20, 2021
Samsung Innovation Campus - AI Lectorium
youtube.com/playlist?list=PLJEYfuHbcEIB-DdeoWaQ6Bzt0903kbmWK
Внезапно обнаружил много лекций от московского Samsung AI Center. Уроверь скорее advanced и ожидает, что вы уже хорошо знакомы с нейростеками. По большей части лекции ближе по тематике к CV, но есть и более общие темы: например о том, как ускорять инференс и ставить эксперименты. Ещё очень хочу выделить лекцию про GAN, где они рассматриваются достаточно абстрактно и не присязаны сильно к изображениям — получилось просто 🔥.
Кстати у них в конце плейлиста видно запланированную на 28 апреля лекцию по суммаризации текста, так что можно ожидать больше NLP.
youtube.com/playlist?list=PLJEYfuHbcEIB-DdeoWaQ6Bzt0903kbmWK
Внезапно обнаружил много лекций от московского Samsung AI Center. Уроверь скорее advanced и ожидает, что вы уже хорошо знакомы с нейростеками. По большей части лекции ближе по тематике к CV, но есть и более общие темы: например о том, как ускорять инференс и ставить эксперименты. Ещё очень хочу выделить лекцию про GAN, где они рассматриваются достаточно абстрактно и не присязаны сильно к изображениям — получилось просто 🔥.
Кстати у них в конце плейлиста видно запланированную на 28 апреля лекцию по суммаризации текста, так что можно ожидать больше NLP.
YouTube
Лекции по AI
Share your videos with friends, family, and the world
Яндекс.Толока проводит воркшоп на конференции VLDB 2021: https://crowdscience.ai/conference_events/vldb21
В рамках него проходит соревнование:
https://crowdscience.ai/challenges/vldb21
где участникам предлагается построить модели, которые дают лучшую speech-to-text транскрипцию.
Призовой фонд - $6000
В рамках него проходит соревнование:
https://crowdscience.ai/challenges/vldb21
где участникам предлагается построить модели, которые дают лучшую speech-to-text транскрипцию.
Призовой фонд - $6000
Which transformer architecture fits my data? A vocabulary bottleneck in self-attention
Wies et al.
arxiv.org/abs/2105.03928
Авторы пытаются понять как подбирать гиперпараметры для трансформера и приходят к выводу, что размер словаря очень важен и зачастую ограничивает capacity архитектуры.
Wies et al.
arxiv.org/abs/2105.03928
Авторы пытаются понять как подбирать гиперпараметры для трансформера и приходят к выводу, что размер словаря очень важен и зачастую ограничивает capacity архитектуры.
Rethinking Positional Encoding in Language Pre-training
Ke, He, and Liu, [Microsoft]
arxiv.org/abs/2006.15595
Последнее время видно всё больше статей, которые пытаются разобраться в том, как работает / как улучшить positional encoding в трансформерах. В этой статье авторы рассуждают, что трансформер улавливает корреляции между словами и между позициями слов. Предлагают модифицировать архитекутуру, чтобы явно разделить эти две штуки. Если по классике на вход в attention приходит word emb + pos emb, то авторы предлагают считать два attention: число для word и чисто для pos, а потом их скоры (перед софтмаксом) складывать. Второй хак, который придумали авторы: это убрать из векторов CLS-токена информацию об абсолютных позициях: просто заменив в positional scores скоры CLS на выучиваемую константу.
По результатам: обучили BERT с такой архитектурой, улучшили GLUE, красивые виуализации positional scores.
Было бы интересно сравнить картинки word scores с attention scores в обычном BERT, но такого в статье нету =(
Ke, He, and Liu, [Microsoft]
arxiv.org/abs/2006.15595
Последнее время видно всё больше статей, которые пытаются разобраться в том, как работает / как улучшить positional encoding в трансформерах. В этой статье авторы рассуждают, что трансформер улавливает корреляции между словами и между позициями слов. Предлагают модифицировать архитекутуру, чтобы явно разделить эти две штуки. Если по классике на вход в attention приходит word emb + pos emb, то авторы предлагают считать два attention: число для word и чисто для pos, а потом их скоры (перед софтмаксом) складывать. Второй хак, который придумали авторы: это убрать из векторов CLS-токена информацию об абсолютных позициях: просто заменив в positional scores скоры CLS на выучиваемую константу.
По результатам: обучили BERT с такой архитектурой, улучшили GLUE, красивые виуализации positional scores.
Было бы интересно сравнить картинки word scores с attention scores в обычном BERT, но такого в статье нету =(