Хороший и объемный туториал по файнтюнингу моделек в NLP.
• Loading data, single or multiple files, csv, txt or dataframes, train/test splits
• Processing data with 11 text processing functions
• Tokenizing data for use with MobileBERT
• Saving processed data to disk
• Datasets tips and tricks along the way
Comprehensive Language Model Fine Tuning
• Loading data, single or multiple files, csv, txt or dataframes, train/test splits
• Processing data with 11 text processing functions
• Tokenizing data for use with MobileBERT
• Saving processed data to disk
• Datasets tips and tricks along the way
Comprehensive Language Model Fine Tuning
ntentional
Comprehensive Language Model Fine Tuning, Part 1: 🤗 Datasets library [Updated]
Get your data ready to train with the 🤗 Datasets library, plus Datasets implementation tips and tricks
Firing a cannon at sparrows: BERT vs. logreg (DataFest 2020)
Презентация от Юры Кашницкого по BERT и тому как использовать его с Catalyst. А так же о том, что логрег всё ещё тащит для простых задач классификации.
Презентация от Юры Кашницкого по BERT и тому как использовать его с Catalyst. А так же о том, что логрег всё ещё тащит для простых задач классификации.
YouTube
Yury Kashnitsky - Firing a cannon at sparrows: BERT vs. logreg (DataFest 2020)
There is a Golden Rule in NLP, at least when it comes to classification tasks: “Always start with a tfidf-logreg baseline”. Elaborating a bit, that’s building a logistic regression model on top of tf-idf (term frequency - inverse document frequency) text…
Рубрика «Читаем статьи за вас». Июль — август 2020 года
Статьи из подборки:
1 High-Resolution Neural Face Swapping for Visual Effects
2. Beyond Accuracy: Behavioral Testing of NLP Models with CheckList
3. Thieves on Sesame Street! Model Extraction of BERT-based APIs
4. Time-Aware User Embeddings as a Service
5. Are Labels Necessary for Neural Architecture Search?
6. GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding
7. Data Shapley: Equitable Valuation of Data for Machine Learning
8. Language-agnostic BERT Sentence Embedding
9. Self-Supervised Learning for Large-Scale Unsupervised Image Clustering
10. Batch-Channel Normalization and Weight Standardization
Статьи из подборки:
1 High-Resolution Neural Face Swapping for Visual Effects
2. Beyond Accuracy: Behavioral Testing of NLP Models with CheckList
3. Thieves on Sesame Street! Model Extraction of BERT-based APIs
4. Time-Aware User Embeddings as a Service
5. Are Labels Necessary for Neural Architecture Search?
6. GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding
7. Data Shapley: Equitable Valuation of Data for Machine Learning
8. Language-agnostic BERT Sentence Embedding
9. Self-Supervised Learning for Large-Scale Unsupervised Image Clustering
10. Batch-Channel Normalization and Weight Standardization
Хабр
Рубрика «Читаем статьи за вас». Июль — август 2020 года
Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше вс...
Возможно, лучшая визуализация того, как работает трансформер. Во всех примерах визуализировано в том числе и батч-измерение. И ноутбучек прилагается.
https://github.com/mertensu/transformer-tutorial
https://github.com/mertensu/transformer-tutorial
QA модельки очень интересные, и классно, что они всё больше просачиваются в реальную жизнь. @sparakhin рассказывает как они разрабатывали такую модель для магазина фотовидеотехники. Собирание датасета, USE, берты, дисстиляция - всё как вы любите. Думаю если будут вопросы, можете даже поспрашивать автора в нашем чате.
Его словами про пост:
"Мы тут рассказываем про то, как применяли QA (MRC) модельки для своего домена — photo & video cameras online store. Рассказываем немного про модельку, как размечали данные, файнтюнили, и ускоряли (деталей возможно не так много как хотелось бы, так как статья в корпоративном блоге).
Возможно что-то будет интересно, например, как мы использовали knowledge distillation для неразмеченных данных + в конце полезные ссылки по теме."
https://blog.griddynamics.com/question-answering-system-using-bert
Его словами про пост:
"Мы тут рассказываем про то, как применяли QA (MRC) модельки для своего домена — photo & video cameras online store. Рассказываем немного про модельку, как размечали данные, файнтюнили, и ускоряли (деталей возможно не так много как хотелось бы, так как статья в корпоративном блоге).
Возможно что-то будет интересно, например, как мы использовали knowledge distillation для неразмеченных данных + в конце полезные ссылки по теме."
https://blog.griddynamics.com/question-answering-system-using-bert
YouTube
Grid Dynamics – Camera Question-Answer Demo
Is it possible for language models to achieve language understanding? My current answer is, essentially, “Well, we don’t currently have compelling reasons to think they can’t.”
То ли это происходит из-за хайпа, то ли из-за действительно необычных результатов BERT и GPT-2, но стало появляться всё больше и больше рассуждений на тему того, могут ли эти модели добиться "понимания языка". Как всегда проблема тут в определениях – мы не знаем, что такое "понимать".
Раньше у нас были какие-то мысленные эксперименты типа теста тьюринга, или китайской комнаты, но сейчас обе эти задачи если и не решены, то довольно хорошо сходятся к своим решениям. GLUE был очередной попыткой оценивать то, насколько модели "понимают" язык, но BERT его досольно быстро сломал, и сейчас датасет по сути просто используется как стандартный бенчмарк. Потом пришёл GPT-2 и выполнил фаталити, тк показал, что в принципе просто большая языковая модель может решать любые NLP задачи без дополнительной тренировки. GPT-3 показал, что мы даже можем добиваться около-SOTA результатов, опять же – без какой-либо дополнительной тренировки.
Сегодня, в ruder newsletter #53 я наткнулся на две интересных статьи. Первая из них (ACL) очень громко утверждает, что языковые модели не могут понимать смысл и приводит мысленный эксперимент, который иллюстрирует их идею. Вторая (Medium) говорит, что у нас может быть и есть какие-то представления о том, что такое "смысл" и понимание, но они слишком расплывчатые и противоречивые, чтобы мы могли утверждать, что язык это что-то большее, чем языковая модель. Например в первой статье авторы сделали то, что я бы назвал "доказательство определением", где сами термины форма и смысл были подобраны так, чтобы языковые модели (которые тренируются только на форме, по опредлению) не могут понять смысл, который в свою очередь (по определению) что-то что нельзя получить из формы.
Несмотря на это странное начало, я бы рекомендовал почитать обе статьи - будет ещё одна тема, на которую можно пофилософствовать за чашечкой кофе или не кофе.
То ли это происходит из-за хайпа, то ли из-за действительно необычных результатов BERT и GPT-2, но стало появляться всё больше и больше рассуждений на тему того, могут ли эти модели добиться "понимания языка". Как всегда проблема тут в определениях – мы не знаем, что такое "понимать".
Раньше у нас были какие-то мысленные эксперименты типа теста тьюринга, или китайской комнаты, но сейчас обе эти задачи если и не решены, то довольно хорошо сходятся к своим решениям. GLUE был очередной попыткой оценивать то, насколько модели "понимают" язык, но BERT его досольно быстро сломал, и сейчас датасет по сути просто используется как стандартный бенчмарк. Потом пришёл GPT-2 и выполнил фаталити, тк показал, что в принципе просто большая языковая модель может решать любые NLP задачи без дополнительной тренировки. GPT-3 показал, что мы даже можем добиваться около-SOTA результатов, опять же – без какой-либо дополнительной тренировки.
Сегодня, в ruder newsletter #53 я наткнулся на две интересных статьи. Первая из них (ACL) очень громко утверждает, что языковые модели не могут понимать смысл и приводит мысленный эксперимент, который иллюстрирует их идею. Вторая (Medium) говорит, что у нас может быть и есть какие-то представления о том, что такое "смысл" и понимание, но они слишком расплывчатые и противоречивые, чтобы мы могли утверждать, что язык это что-то большее, чем языковая модель. Например в первой статье авторы сделали то, что я бы назвал "доказательство определением", где сами термины форма и смысл были подобраны так, чтобы языковые модели (которые тренируются только на форме, по опредлению) не могут понять смысл, который в свою очередь (по определению) что-то что нельзя получить из формы.
Несмотря на это странное начало, я бы рекомендовал почитать обе статьи - будет ещё одна тема, на которую можно пофилософствовать за чашечкой кофе или не кофе.
newsletter.ruder.io
ML and NLP starter toolkit, Low-resource NLP toolkit, "Can a LM understand natural language?", The next generation of NLP benchmarks
Hi all,It has been a while... I hope you're doing well in these crazy and strange times.COVID-19 has affected each of us in unpredictable ways 😷. I'm fortunate to be healthy but my energy has been lower overall ⚡️. Coupled with life and work keeping me busy…
Сбер обучил русский GPT 🎉
Большие модельки потихоньку продвигаются и в русский язык. О цифрах:
1. 600Гб текстов – Omnia Russica+пикабу+22centry+banki.ru
1. GPT-Large на 700млн параметров. Кстати это меньше, чем самый большой GPT-2, но зато помещается в память.
1. 128 V100, тренировали 2 недели на Christophari. В Google Cloud такое стоило бы примерно $100 тысяч.
Из статьи интересно, что оказывается, сбер уже использует GPT в проде для болталки. Очень смело, но зато теперь можно ждать лулзов и историй про то, как кого-то очень изощнённо куда-то послала колонка сбера.
Что грустно, это то, что модельку не поэвалюировали на прикладных задачах классификации/перевода итд (в чём собственно и заключается вся соль GPT-N, N>1).
Пример генерации:
Context: на словах ты лев толстой
ruGPT3Large: а в сущности, - ты тоже не дурак, просто так же, как и твой человек, то есть твоя "жизнь", а также как и ты думаешь по-настоящему "ты" и есть твои "жизнь" или "выбор" в отношении твоего положения.
Всё это добро доступно через Transformers (huggingface.co/sberbank-ai), код есть на гитхабе, в посте ещё сказали про то, что почищенный датасет тоже должен быть доступен, но я его не нашёл.
Большие модельки потихоньку продвигаются и в русский язык. О цифрах:
1. 600Гб текстов – Omnia Russica+пикабу+22centry+banki.ru
1. GPT-Large на 700млн параметров. Кстати это меньше, чем самый большой GPT-2, но зато помещается в память.
1. 128 V100, тренировали 2 недели на Christophari. В Google Cloud такое стоило бы примерно $100 тысяч.
Из статьи интересно, что оказывается, сбер уже использует GPT в проде для болталки. Очень смело, но зато теперь можно ждать лулзов и историй про то, как кого-то очень изощнённо куда-то послала колонка сбера.
Что грустно, это то, что модельку не поэвалюировали на прикладных задачах классификации/перевода итд (в чём собственно и заключается вся соль GPT-N, N>1).
Пример генерации:
Context: на словах ты лев толстой
ruGPT3Large: а в сущности, - ты тоже не дурак, просто так же, как и твой человек, то есть твоя "жизнь", а также как и ты думаешь по-настоящему "ты" и есть твои "жизнь" или "выбор" в отношении твоего положения.
Всё это добро доступно через Transformers (huggingface.co/sberbank-ai), код есть на гитхабе, в посте ещё сказали про то, что почищенный датасет тоже должен быть доступен, но я его не нашёл.
tokenizer = AutoTokenizer.from_pretrained("sberbank-ai/rugpt3large_based_on_gpt2")
model = AutoModel.from_pretrained("sberbank-ai/rugpt3large_based_on_gpt2")
Хабр
Сбер выложил русскоязычную модель GPT-3 Large с 760 миллионами параметров в открытый доступ
Последнее десятилетие в области компьютерных технологий ознаменовалось началом новой «весны искусственного интеллекта». Впрочем, ситуацию в индустрии в наши дни...
mT5: A massively multilingual pre-trained text-to-text transformer
Xue et al. [Google]
arxiv.org/abs/2010.11934
Продолжение идей T5, но теперь не только для английского. Напомним, что T5 это seq2seq моделька обученная на вариации MLM (SpanBERT), которая при файнтюнинге всё ещё остаётся seq2seq даже для задач классификации (моделька учится предсказывать слово, обозначающее класс). Ещё она огромная, до этого уже можно было догадаться.
Так вот для mT5 - мультиязычной версии T5 собрали датасет mC4 размером в 6 триллионов слов, что вроде бы должно весить около 12Tb (а помните, когда One Billion Words считался большим датасетом?). Что важно, это то, что в этом датасете содержится более 100 языков и что там на удивление много неанглийского, а русский вообще стоит на втором месте. В результате на всём этом обучается новая моделька в 13 миллиардов параметров и она обходит все текущие модели на мультиязычных датасетах, даже включая XLM(-R), при тренировке которых использовались параллельные данные и обходит довольно значительно (в среднем на 2-3 пункта).
Сама статья довольно скучная, по сути в этом TL;DR она вся и описана. Зато код выложен и модельки тоже, жалко что не в 🤗-формате. Где вы правда будете их запускать - это отдельный вопрос.
За наводку на статью спасибо @someotherusername
Xue et al. [Google]
arxiv.org/abs/2010.11934
Продолжение идей T5, но теперь не только для английского. Напомним, что T5 это seq2seq моделька обученная на вариации MLM (SpanBERT), которая при файнтюнинге всё ещё остаётся seq2seq даже для задач классификации (моделька учится предсказывать слово, обозначающее класс). Ещё она огромная, до этого уже можно было догадаться.
Так вот для mT5 - мультиязычной версии T5 собрали датасет mC4 размером в 6 триллионов слов, что вроде бы должно весить около 12Tb (а помните, когда One Billion Words считался большим датасетом?). Что важно, это то, что в этом датасете содержится более 100 языков и что там на удивление много неанглийского, а русский вообще стоит на втором месте. В результате на всём этом обучается новая моделька в 13 миллиардов параметров и она обходит все текущие модели на мультиязычных датасетах, даже включая XLM(-R), при тренировке которых использовались параллельные данные и обходит довольно значительно (в среднем на 2-3 пункта).
Сама статья довольно скучная, по сути в этом TL;DR она вся и описана. Зато код выложен и модельки тоже, жалко что не в 🤗-формате. Где вы правда будете их запускать - это отдельный вопрос.
За наводку на статью спасибо @someotherusername
GitHub
GitHub - google-research/multilingual-t5
Contribute to google-research/multilingual-t5 development by creating an account on GitHub.
Data Augmentation in NLP: Best Practices From a Kaggle Master
Очень давно ждал чего-то такого. Готовая библиотека для аугментаций в NLP. Как правило завести аугментации текстов сложно и эффект от них слишком малый, чтобы прямо заниматься этим. А теперь вроде бы можно в пару строчек кода.
Например, если вы хотите докинуть контекстных синонимов с помощью берта, то можете сделать так:
Это может выдать что-то такое:
Так что давайте все выполняем
Ссылка на гитхаб библиотеки
Ссылка на документацию
Очень давно ждал чего-то такого. Готовая библиотека для аугментаций в NLP. Как правило завести аугментации текстов сложно и эффект от них слишком малый, чтобы прямо заниматься этим. А теперь вроде бы можно в пару строчек кода.
Например, если вы хотите докинуть контекстных синонимов с помощью берта, то можете сделать так:
import nlpaug.augmenter.word as naw
aug = naw.ContextualWordEmbsAug(model_path='bert-base-uncased', action='insert')
augmented_text = aug.augment('this is a text')
Это может выдать что-то такое:
this is currently a text
Что довольно неплохо с учётом того, что вы сделали это в три строчки кода включая импорт.Так что давайте все выполняем
pip install nlpaug
и играемся с этим.Ссылка на гитхаб библиотеки
Ссылка на документацию
neptune.ai
Data Augmentation in NLP: Best Practices From a Kaggle Master
Insights on NLP data augmentation techniques, contrasts with vision, and best practices from a Kaggle master.
Example-Driven Intent Prediction with Observers
Mehri et al. [Amazon]
arxiv.org/abs/2010.08684
Интересная статья по классификации текста. В статье две идеи: example-driven prediction и observers.
Example-driven prediction: давайте не будем делать выходной слой сетки (голову BERT) и вместо этого возьмём представление CLS токена и посравниваем его с небольшим числом примеров из нашего датасета. Получим similarity scores, потом засофтмаксим их - таким образом мы получим вероятности того, что input имеет тот же класс, что и каждый из примеров. А классы примеров мы знаем. Последний шаг - сложить one-hot вектора классов каждого примера с весами вероятностей из предыдушего шага. На выходе получим вероятность каждого класса. Идея изображена на картинке снизу.
Почему это интересно, это потому что мы не добавляем параметры в BERT и трениуем только сам трансформер, что забавно. Но вторая причина ещё интереснее - после такого обучения сетки мы можем делать инференс на классах, которых в обучающей выборке не было. По сути сетка ведь просто учит хорошую метрику. Идея подхода похожа на такой "гладкий" KNN.
Observers: мы знаем, что CLS часто смотрит сам на себя. Мы также знаем, что токены слов часто смотрят на CLS (возможно, в случаях, когда они хотят проигнорировать инпут). В результате каждый смотрит на каждого и как то это всё сложно. Авторы предлагают добавить новых вспомогательных токенов в BERT, которые будут как СLS, но, в отличие от CLS токенам слов будет запрещено на них смотреть. Таким образом observers занимаются только аггрегацией информации из векторов слов.
Результаты: используя оба метода вместе получаем SOTA на нескольких intent prediction датасетах в стандартном сетапе и в 10-shot сетапе. Не очень большое улучшение, но стабильное. Более интересные реузльтаты в предсказании интентов, отсутствующих в обучающей выборке - улучшение на десятки пунктов относительно бейзлайнов (хотя бейзлайны, конечно, кривые - нужно было сравнивать с каким-нибудь metric-learning подходом).
Mehri et al. [Amazon]
arxiv.org/abs/2010.08684
Интересная статья по классификации текста. В статье две идеи: example-driven prediction и observers.
Example-driven prediction: давайте не будем делать выходной слой сетки (голову BERT) и вместо этого возьмём представление CLS токена и посравниваем его с небольшим числом примеров из нашего датасета. Получим similarity scores, потом засофтмаксим их - таким образом мы получим вероятности того, что input имеет тот же класс, что и каждый из примеров. А классы примеров мы знаем. Последний шаг - сложить one-hot вектора классов каждого примера с весами вероятностей из предыдушего шага. На выходе получим вероятность каждого класса. Идея изображена на картинке снизу.
Почему это интересно, это потому что мы не добавляем параметры в BERT и трениуем только сам трансформер, что забавно. Но вторая причина ещё интереснее - после такого обучения сетки мы можем делать инференс на классах, которых в обучающей выборке не было. По сути сетка ведь просто учит хорошую метрику. Идея подхода похожа на такой "гладкий" KNN.
Observers: мы знаем, что CLS часто смотрит сам на себя. Мы также знаем, что токены слов часто смотрят на CLS (возможно, в случаях, когда они хотят проигнорировать инпут). В результате каждый смотрит на каждого и как то это всё сложно. Авторы предлагают добавить новых вспомогательных токенов в BERT, которые будут как СLS, но, в отличие от CLS токенам слов будет запрещено на них смотреть. Таким образом observers занимаются только аггрегацией информации из векторов слов.
Результаты: используя оба метода вместе получаем SOTA на нескольких intent prediction датасетах в стандартном сетапе и в 10-shot сетапе. Не очень большое улучшение, но стабильное. Более интересные реузльтаты в предсказании интентов, отсутствующих в обучающей выборке - улучшение на десятки пунктов относительно бейзлайнов (хотя бейзлайны, конечно, кривые - нужно было сравнивать с каким-нибудь metric-learning подходом).
Пост с мотивацией. У OpenAI есть программа OpenAI Scholars, где они набирают около десятка людей каждые полгода, чтобы учить их делать рисёч в DL. Причём людей без опыта в ML.
На страничке OpenAI Scholars Spring 2020: Final Projects можно посмотреть какие проекты можно получить за полгода изучения ML. И они довольно классные, не уровня статей на топовых конференциях, но именно то, что достижимо как отличный курсовой проект. Например probing GPT-2 на синтаксис или получение GraphQL query из описания на английском. Советую посмотреть блогпосты/видео и начинать фигачить что-то такое же, потому что если люди без знания ML смогли выучить всё и сделать такие классные проекты, вы тоже можете.
На страничке OpenAI Scholars Spring 2020: Final Projects можно посмотреть какие проекты можно получить за полгода изучения ML. И они довольно классные, не уровня статей на топовых конференциях, но именно то, что достижимо как отличный курсовой проект. Например probing GPT-2 на синтаксис или получение GraphQL query из описания на английском. Советую посмотреть блогпосты/видео и начинать фигачить что-то такое же, потому что если люди без знания ML смогли выучить всё и сделать такие классные проекты, вы тоже можете.
Openai
OpenAI Scholars
We’re providing 6–10 stipends and mentorship to individuals from underrepresented groups to study deep learning full-time for 3 months and open-source a project.
DeepPavlov Product Roadmap — 2020H2 and Look At 2021
Думаю с диппавловым в той или иной степени знакомы почти все NLP разрабы в России. Так вот, они представили свой роадмап на 2021 и там есть интересные штуки.
1. GUI для создания интентов
1. Дашбоард для аналитики диалогов вашего бота
1. Улучшение поддержки конфигов RASA
1. Упрощение конфигов Agent
1. Миграция кучи всего разработанного для Alexa Challange в либу
Думаю с диппавловым в той или иной степени знакомы почти все NLP разрабы в России. Так вот, они представили свой роадмап на 2021 и там есть интересные штуки.
1. GUI для создания интентов
1. Дашбоард для аналитики диалогов вашего бота
1. Улучшение поддержки конфигов RASA
1. Упрощение конфигов Agent
1. Миграция кучи всего разработанного для Alexa Challange в либу
Medium
DeepPavlov Product Roadmap — 2020H2 and Look At 2021
We’re fast approaching the end of 2020, and we’re excited to share our perspective on this year as well as what lies ahead for DeepPavlov…
The story behind Paranoid Transformer 🔥🔥
GPT generator + BERT filter + hand-writing generation RNN
https://medium.com/altsoph/paranoid-transformer-80a960ddc90a
GPT generator + BERT filter + hand-writing generation RNN
https://medium.com/altsoph/paranoid-transformer-80a960ddc90a
Medium
PARANOID TRANSFORMER
The pre-order of my book, Paranoid Transformer, generated by a bunch of neural networks, is now open. Here is the story…
Residual Energy-Based Models for Text Generation
Deng et al. [FAIR]
arxiv.org/abs/2004.11714
Новая интересная статья по генерации текста. Авторы предлагают вместо стандартного авторегрессионного моделирования перейти к моделированию ненормализованной вероятности (энергии) целого предложения.
Но напрямую это сделать нельзя, тк непонятно, как геренировать примеры плохих последовательностей. Поэтому они параметризуют модель как
То есть E(x) обучается как дискриминатор учащийся различать между реальными текстами и текстами, сгенерированными LM. По сути мы получили GAN, описаный в терминах energy-based models (EBM).
Как всегда, у GAN есть проблема семплирования - как геренировать текст с помощью обученной модели. Для этого авторы (используя немного матана) показывают, что сэмплирование текста длины K из этой EBM эквивалентно тому, если мы 1) сгеренируем несколько текстов длины K из языковой модели; 2) используя получишиеся семплы, оценим матожидание энергии E всей последовательности (там чуть сложнее, но идея такая); 3) используя нашу оценку энергии мы получим "подкорректированное" функцией энергии вероятностное распределение следующего слова и теперь будем семплировать из этих вероятностей. Причём по-идее эта коррекция (тк она смотрит планирует будущее на K-1 токен больше) должна улучшить языковую модель, которая только думает про следующее слово.
В качестве LM использовался обученный трансформер. В качестве дискриминатора использовался BERT (предобученный с нуля, на том же датасете, что и LM, чтобы не было читерства).
Последний момент состоит в том, что оценивать перплексию у такой модели напрямую нельзя, тк мы моделируем ненормализованные вероятности. Авторы придумали метод, который позволяет оценить её с помощью того, что мы геренируем очень много достаточно длинных текстов и вычисляем вероятности для подсчёта перплексии из статистик сгеренированных текстов.
Результаты:
1. чуть лучше перплексия, чем у языковой модели такого же размера как LM + BERT
1. человеческая оценка качества текстов сгеренированных новой моделью тоже выше, чем у всех бейзлайнов
1. чуть более разнообразные n-gram чем у языковых моделей, но ещё далеко до человека
Deng et al. [FAIR]
arxiv.org/abs/2004.11714
Новая интересная статья по генерации текста. Авторы предлагают вместо стандартного авторегрессионного моделирования перейти к моделированию ненормализованной вероятности (энергии) целого предложения.
Но напрямую это сделать нельзя, тк непонятно, как геренировать примеры плохих последовательностей. Поэтому они параметризуют модель как
p(x) = LM(x) * exp(-E(x))
, где LM - обычная (обученная) авторегрессионная языковая модель, оценивающая вероятность следующего слова, а E(x) - функция энергии, оценивающая всю последовательность. И качестве "плохих" последовательностей во время обучения E берут то, что геренирует LM.То есть E(x) обучается как дискриминатор учащийся различать между реальными текстами и текстами, сгенерированными LM. По сути мы получили GAN, описаный в терминах energy-based models (EBM).
Как всегда, у GAN есть проблема семплирования - как геренировать текст с помощью обученной модели. Для этого авторы (используя немного матана) показывают, что сэмплирование текста длины K из этой EBM эквивалентно тому, если мы 1) сгеренируем несколько текстов длины K из языковой модели; 2) используя получишиеся семплы, оценим матожидание энергии E всей последовательности (там чуть сложнее, но идея такая); 3) используя нашу оценку энергии мы получим "подкорректированное" функцией энергии вероятностное распределение следующего слова и теперь будем семплировать из этих вероятностей. Причём по-идее эта коррекция (тк она смотрит планирует будущее на K-1 токен больше) должна улучшить языковую модель, которая только думает про следующее слово.
В качестве LM использовался обученный трансформер. В качестве дискриминатора использовался BERT (предобученный с нуля, на том же датасете, что и LM, чтобы не было читерства).
Последний момент состоит в том, что оценивать перплексию у такой модели напрямую нельзя, тк мы моделируем ненормализованные вероятности. Авторы придумали метод, который позволяет оценить её с помощью того, что мы геренируем очень много достаточно длинных текстов и вычисляем вероятности для подсчёта перплексии из статистик сгеренированных текстов.
Результаты:
1. чуть лучше перплексия, чем у языковой модели такого же размера как LM + BERT
1. человеческая оценка качества текстов сгеренированных новой моделью тоже выше, чем у всех бейзлайнов
1. чуть более разнообразные n-gram чем у языковых моделей, но ещё далеко до человека
The Private AI Series
courses.openmined.org
Пока что непонятно, что это такое, но обещают бесплатный курс, который научит вас differential privacy и другим классным методам работы с данными, без прямого доступа к данным. Выглядит слишком пафосно, чтобы курс был очень глубоким и действительно погружающим в эту тему, но у них есть шансы популяризировать эти подходы и познакомить огромное количество людей с проблемами, которые эти подходы решают.
Запуск в январе, я записался, посмотрим что будет интересного.
И чтобы в этом посте было что-то действительно полезное, вот вам ссылка на вводную лекцию по differential privacy в MIT, которую читает автор openminded.
courses.openmined.org
Пока что непонятно, что это такое, но обещают бесплатный курс, который научит вас differential privacy и другим классным методам работы с данными, без прямого доступа к данным. Выглядит слишком пафосно, чтобы курс был очень глубоким и действительно погружающим в эту тему, но у них есть шансы популяризировать эти подходы и познакомить огромное количество людей с проблемами, которые эти подходы решают.
Запуск в январе, я записался, посмотрим что будет интересного.
И чтобы в этом посте было что-то действительно полезное, вот вам ссылка на вводную лекцию по differential privacy в MIT, которую читает автор openminded.
YouTube
Introducing The Private AI Series
Beginning in January 2021 - OpenMined will begin offering a series of free course on privacy technology. In this video - you will learn about the skills this series can teach you and why they are so important both to the future of AI progress and to society…
Немного TL;DR статей с EMNLP 2020, который идёт прямо сейчас.
With Little Power Comes Great Responsibility
If you have minor improvements, test on big datasets. Do not trust WNLI, MRPC and SST-2 if your improvements are less than +2 points (+5 on WNLI). Trust +1 BLEU point change only if your test set if bigger than 3000.
COGS: A Compositional Generalization Challenge Based on Semantic Interpretation
Nobody expected that :sarcasm:, but it looks like transformers and LSTMs do not generalize well on the out-of-distribution lexical/structural variations.
An Analysis of Natural Language Inference Benchmarks through the Lens of Negation
Transformers also does not seem to understand negation. They also expanded SNLI and MNLI to have more negation (current datasets have 3-20% of sentences with negation while in the wild the numbers should be around 30%). On some of the new datasets model perform worse than random (?).
Dataset Cartography: Mapping and Diagnosing Datasets with Training Dynamics
An interesting way to visualize a dataset. Shows what data in your dataset is easy/hard to learn and allows to inspect for labelling mistakes. Looks nice too 😄
With Little Power Comes Great Responsibility
If you have minor improvements, test on big datasets. Do not trust WNLI, MRPC and SST-2 if your improvements are less than +2 points (+5 on WNLI). Trust +1 BLEU point change only if your test set if bigger than 3000.
COGS: A Compositional Generalization Challenge Based on Semantic Interpretation
Nobody expected that :sarcasm:, but it looks like transformers and LSTMs do not generalize well on the out-of-distribution lexical/structural variations.
An Analysis of Natural Language Inference Benchmarks through the Lens of Negation
Transformers also does not seem to understand negation. They also expanded SNLI and MNLI to have more negation (current datasets have 3-20% of sentences with negation while in the wild the numbers should be around 30%). On some of the new datasets model perform worse than random (?).
Dataset Cartography: Mapping and Diagnosing Datasets with Training Dynamics
An interesting way to visualize a dataset. Shows what data in your dataset is easy/hard to learn and allows to inspect for labelling mistakes. Looks nice too 😄
ACL Anthology
With Little Power Comes Great Responsibility
Dallas Card, Peter Henderson, Urvashi Khandelwal, Robin Jia, Kyle Mahowald, Dan Jurafsky. Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP). 2020.
Forwarded from b b
Хотел бы докинуть в общую копилку всяких интересностей с EMNLP: там был очень интересный обзорный туториал по высокопроизводительному NLP, по которому можно посмотреть слайды (https://gabrielilharco.com/publications/EMNLP_2020_Tutorial__High_Performance_NLP.pdf)
Чего-то сверхнового для тех, кто в теме, там, наверное, нет, но для тех, кто так и не разобрался в разных видах дистилляции и pruning'а (типа меня), может быть познавательно.
Чего-то сверхнового для тех, кто в теме, там, наверное, нет, но для тех, кто так и не разобрался в разных видах дистилляции и pruning'а (типа меня), может быть познавательно.