#sotanlu
Решил в ближайший месяц сделать обзор бенчмарков основных NLU задач: датасетов, на которых меряются, и моделек, которые на них лидируют.
Начал с русского бенчмарка sentence embeddings на четырёх задачках от DeepPavlov: https://github.com/deepmipt/deepPavlovEval
1) Paraphraser - определить, являются ли пара предложений одинаковыми по смыслу
2) MSRVid - определить, на сколько шакалов два предложения похожи друг на друга
3) XNLI - правильно классифицировать логическую связь между двумя предложениями
4) Rusentiment (уже закрытый датасет, но его можно найти) - классификация тональности комментов из VK
Код из этой репы вполне запускается.
Завтра попробую прогнать через него современные эмбеддеры. Должно получиться ощутимо лучше, чем модельки из самого репозитория.
Решил в ближайший месяц сделать обзор бенчмарков основных NLU задач: датасетов, на которых меряются, и моделек, которые на них лидируют.
Начал с русского бенчмарка sentence embeddings на четырёх задачках от DeepPavlov: https://github.com/deepmipt/deepPavlovEval
1) Paraphraser - определить, являются ли пара предложений одинаковыми по смыслу
2) MSRVid - определить, на сколько шакалов два предложения похожи друг на друга
3) XNLI - правильно классифицировать логическую связь между двумя предложениями
4) Rusentiment (уже закрытый датасет, но его можно найти) - классификация тональности комментов из VK
Код из этой репы вполне запускается.
Завтра попробую прогнать через него современные эмбеддеры. Должно получиться ощутимо лучше, чем модельки из самого репозитория.
#sotanlu
Вернулся к теме NLU-бенчмарков, продолжаю расковыривать русскоязычные sentence embeddings.
На четырёх задачках от DeepPavlov Laser ожидаемо отработал лучше, чем все берты и элмы, которые DP пробовал (ну, кроме парочки подогнанных под домен).
Маленький, свёрточный USE обогнал Laser на MSRVid (какой-то странный этот датасет, конечно). Большой USE обогнал Laser на всех задачах, кроме XNLI.
И да, я нашёл ещё один набор задач для бенчмарка, на этот раз от Вышки, и у них даже есть пейпер. Жаришка!
Удивительно, правда, что и вышкинские ребята не включили в свои бенчмарки ни Laser, ни USE. Чё-то падазрительна.
Вернулся к теме NLU-бенчмарков, продолжаю расковыривать русскоязычные sentence embeddings.
На четырёх задачках от DeepPavlov Laser ожидаемо отработал лучше, чем все берты и элмы, которые DP пробовал (ну, кроме парочки подогнанных под домен).
Маленький, свёрточный USE обогнал Laser на MSRVid (какой-то странный этот датасет, конечно). Большой USE обогнал Laser на всех задачах, кроме XNLI.
И да, я нашёл ещё один набор задач для бенчмарка, на этот раз от Вышки, и у них даже есть пейпер. Жаришка!
Удивительно, правда, что и вышкинские ребята не включили в свои бенчмарки ни Laser, ни USE. Чё-то падазрительна.
#sotanlu
По NLP начал разбирать статью про GPT-3. Она чё-то здоровая, и до конца пока не дошёл. Но смысл в том, что новый GPT ещё пизже, чем предыдущие, решает новые задачи чисто по тестовому описанию, без дообучения на них.
Upd. Дочитал. Архитектура нейронки та же самая, что и в GPT-2, но размер ещё больше. Обучались на common crawl и нескольких датасетах почище. И попробовали больше разных применений.
Основная идея - показать, что достаточно большая языковая модель может "адаптироваться" к новым задачам без файн-тюнинга (т.е. без изменения весов), принимая примеры вопросов и ответов на вход, просто как префикс текста. В итоге по некоторым задачкам (собственно языковое моделирование, пара задач на reading comprehension) удалось побить SOTA, зафайнтюненные под эти задачи, и ещё по нескольким - подойти к этому уровню достаточно близко. Отдельно авторы показывают, что таким макаром можно решить задачи, не очень похожие на обучающие данные - перевод, арифметику, расшифровку анаграмм (последнее особенно удивительно, учитывая большой BPE словарь).
Понятно, зачем это нужно: хочется не создавать зафайнтюненную модель под каждую новую задачу (это сложненько, и легко переобучиться), а иметь one model to rule them all. И демонстрация, что так можно, конечно, впечатляет. Но для индустрии этот результат примерно бесполезный: одна огроменная модель, которая перформит неидеально, всё-таки менее привлекательно, чем набор маленьких и наилучших на своей задаче моделек. Конечно, то, что сейчас SOTA, маленьким и так в основном не назовёшь, но это уже отдельная проблема.
По NLP начал разбирать статью про GPT-3. Она чё-то здоровая, и до конца пока не дошёл. Но смысл в том, что новый GPT ещё пизже, чем предыдущие, решает новые задачи чисто по тестовому описанию, без дообучения на них.
Upd. Дочитал. Архитектура нейронки та же самая, что и в GPT-2, но размер ещё больше. Обучались на common crawl и нескольких датасетах почище. И попробовали больше разных применений.
Основная идея - показать, что достаточно большая языковая модель может "адаптироваться" к новым задачам без файн-тюнинга (т.е. без изменения весов), принимая примеры вопросов и ответов на вход, просто как префикс текста. В итоге по некоторым задачкам (собственно языковое моделирование, пара задач на reading comprehension) удалось побить SOTA, зафайнтюненные под эти задачи, и ещё по нескольким - подойти к этому уровню достаточно близко. Отдельно авторы показывают, что таким макаром можно решить задачи, не очень похожие на обучающие данные - перевод, арифметику, расшифровку анаграмм (последнее особенно удивительно, учитывая большой BPE словарь).
Понятно, зачем это нужно: хочется не создавать зафайнтюненную модель под каждую новую задачу (это сложненько, и легко переобучиться), а иметь one model to rule them all. И демонстрация, что так можно, конечно, впечатляет. Но для индустрии этот результат примерно бесполезный: одна огроменная модель, которая перформит неидеально, всё-таки менее привлекательно, чем набор маленьких и наилучших на своей задаче моделек. Конечно, то, что сейчас SOTA, маленьким и так в основном не назовёшь, но это уже отдельная проблема.
#sotanlu
В своём путешествии по SOTA NLU решил заглянуть на бенчмарк GLUE от 2018 года, который уже успели сильно (и за дело) закритиковать, но который таки породил кучу всего полезного. В частности, BERT стал известен во многом благодаря прорыву именно на этом бенчмарке.
Итак, из чего сделан GLUE? Это 9 задачек, в каждой из которых надо классифицировать или одно предложение, или их пару. То есть в принципе, казалось бы, бенчмарк можно решить, имея очень крутой sentence encoder. Но на самом деле история пошла другим путём, путём кросс-атеншна, который по понятным причинам заводится на парах предложений сильно проще.
Итак, задачки:
- CoLA: является ли предложение грамматически корректным;
- SST-2: двухклассовый анализ тональности (позитивно/негативно окрашенные предложения);
- MRPC, QQP: классификация пар предложений - являются ли они семантически эквивалентными;
- STS-B: то же самое, только предложения разделены на 5 классов похожести.
- MNLI, RTE: классификация отношения между парой предложений: второе следует из первого, или противоречит ему, или ни то ни другое.
- QNLI: содержит ли первое предложение ответ на вопрос, заданный во втором
- WNLI: тоже классификация, следует ли второе предложение из первого, но особого вида: второе предложение - это первое, в котором местоимение заменили объектом, который оно обозначает, либо неподходящим объектом. То есть это попытка загнать winograd schema challenge в формат классификации предложений.
На момент публикации бенчмарка наилучший средний скор по всем моделькам был 0.7 - у BiLSTM поверх ELMO-эмбеддингов. BERT поднял его до 0.8, а сейчас он уже 0.9. Так что можно действительно считать, что GLUE практически решён. Тем более что кожаные мешки, и не просто мешки, а лингвисты, решили его всего лишь на 0.87.
Именно поэтому в прошлом году выкатили новый бенчмарк - SuperGLUE. Хотя и на нём модель T5 от Google уже почти догнала своих белковых создателей. Но пока только "почти".
В своём путешествии по SOTA NLU решил заглянуть на бенчмарк GLUE от 2018 года, который уже успели сильно (и за дело) закритиковать, но который таки породил кучу всего полезного. В частности, BERT стал известен во многом благодаря прорыву именно на этом бенчмарке.
Итак, из чего сделан GLUE? Это 9 задачек, в каждой из которых надо классифицировать или одно предложение, или их пару. То есть в принципе, казалось бы, бенчмарк можно решить, имея очень крутой sentence encoder. Но на самом деле история пошла другим путём, путём кросс-атеншна, который по понятным причинам заводится на парах предложений сильно проще.
Итак, задачки:
- CoLA: является ли предложение грамматически корректным;
- SST-2: двухклассовый анализ тональности (позитивно/негативно окрашенные предложения);
- MRPC, QQP: классификация пар предложений - являются ли они семантически эквивалентными;
- STS-B: то же самое, только предложения разделены на 5 классов похожести.
- MNLI, RTE: классификация отношения между парой предложений: второе следует из первого, или противоречит ему, или ни то ни другое.
- QNLI: содержит ли первое предложение ответ на вопрос, заданный во втором
- WNLI: тоже классификация, следует ли второе предложение из первого, но особого вида: второе предложение - это первое, в котором местоимение заменили объектом, который оно обозначает, либо неподходящим объектом. То есть это попытка загнать winograd schema challenge в формат классификации предложений.
На момент публикации бенчмарка наилучший средний скор по всем моделькам был 0.7 - у BiLSTM поверх ELMO-эмбеддингов. BERT поднял его до 0.8, а сейчас он уже 0.9. Так что можно действительно считать, что GLUE практически решён. Тем более что кожаные мешки, и не просто мешки, а лингвисты, решили его всего лишь на 0.87.
Именно поэтому в прошлом году выкатили новый бенчмарк - SuperGLUE. Хотя и на нём модель T5 от Google уже почти догнала своих белковых создателей. Но пока только "почти".
Gluebenchmark
GLUE Benchmark
The General Language Understanding Evaluation (GLUE) benchmark is a collection of resources for training, evaluating, and analyzing natural language understanding systems
̶с̶а̶м̶̶о̶изолента мёбиуса
#sotanlu В своём путешествии по SOTA NLU решил заглянуть на бенчмарк GLUE от 2018 года, который уже успели сильно (и за дело) закритиковать, но который таки породил кучу всего полезного. В частности, BERT стал известен во многом благодаря прорыву именно на…
#sotanlu
Пришла очередь статьи про SuperGLUE. Этот бенчмарк выкатили спустя год после GLUE, который уже дорешали до сверх-человеческого уровня. В нём 8 задач:
- BoolQ: Дан абзац текста и бинарный вопрос про этот абзац (ответ "да" или "нет"), на который надо ответить;
- CB: Дан абзац текста и отдельное утверждение из текста, и надо определить, считает ли автор текста это утверждение истинным или ложным;
- COPA: Дано предложение и ещё два, и надо определить, какое из этих двух является причиной либо следствием данного;
- MultiRC: Дан абзац, вопрос по нему, и список ответов, которые надо разметить как истинные или ложные;
- ReCoRD: Дан абзац и вопрос по нему с пропущенным словом, которое надо восстановить из предложенных вариантов;
- RTE - как и в GLUE, надо определить, следует ли второе предложение из первого;
- WiC - даны два предложения, в которых используется одно и то же слово, и надо предсказать, в одном и том же смысле ли оно использовано;
- WSC - надо выбрать, относится ли местоимение в тексте к предложенной сущности из этого же текста.
Прокачанны BERTовый бейзлайн набрал на этих задачах в среднем 71.5 балл из 100, а живые люди - 89.8. Из чего авторы статьи сделали заключение, что задачи в целом сложные, и нужно ещё много ботать, прежде чем человечество научит машины их решать.
А потом ребята из Фейсбука обучили свой BERT c парой улучшений, RoBERTa, и набрали 84.6 балла тупо за счёт аккуратности.
А ещё потом гугловский T5 (seq2seq трансформер, обобщение BERT и GPT) набрал уже 89.3 балла, а NLU всё ещё не "решён". Так что, похоже, человечеству нужен новый бенчмарковый датасет.
Пришла очередь статьи про SuperGLUE. Этот бенчмарк выкатили спустя год после GLUE, который уже дорешали до сверх-человеческого уровня. В нём 8 задач:
- BoolQ: Дан абзац текста и бинарный вопрос про этот абзац (ответ "да" или "нет"), на который надо ответить;
- CB: Дан абзац текста и отдельное утверждение из текста, и надо определить, считает ли автор текста это утверждение истинным или ложным;
- COPA: Дано предложение и ещё два, и надо определить, какое из этих двух является причиной либо следствием данного;
- MultiRC: Дан абзац, вопрос по нему, и список ответов, которые надо разметить как истинные или ложные;
- ReCoRD: Дан абзац и вопрос по нему с пропущенным словом, которое надо восстановить из предложенных вариантов;
- RTE - как и в GLUE, надо определить, следует ли второе предложение из первого;
- WiC - даны два предложения, в которых используется одно и то же слово, и надо предсказать, в одном и том же смысле ли оно использовано;
- WSC - надо выбрать, относится ли местоимение в тексте к предложенной сущности из этого же текста.
Прокачанны BERTовый бейзлайн набрал на этих задачах в среднем 71.5 балл из 100, а живые люди - 89.8. Из чего авторы статьи сделали заключение, что задачи в целом сложные, и нужно ещё много ботать, прежде чем человечество научит машины их решать.
А потом ребята из Фейсбука обучили свой BERT c парой улучшений, RoBERTa, и набрали 84.6 балла тупо за счёт аккуратности.
А ещё потом гугловский T5 (seq2seq трансформер, обобщение BERT и GPT) набрал уже 89.3 балла, а NLU всё ещё не "решён". Так что, похоже, человечеству нужен новый бенчмарковый датасет.
#sotanlu
Начал разбираться с вышкинским бенчмарком, и вижу, что всё плохо. 🤦
Но начнём с конструктивного. Речь идёт об этой статье: https://arxiv.org/abs/1910.13291
Ребята взяли три GLUE-подобных датасета, и бенчмаркают эмбеддинги предложений на них:
1) MCQA: ребята наскрапали вопросы из части А ЕГЭ по разным предметам, и задача для модельки - выбрать правильный ответ из четырёх предложенных. Правильный ответ - обычно короткая именная фраза; иногда она является продолжением предложения-вопроса, иногда - отдельным предложением. В целом задача дофига сложная: для её решения нужно шарить не только в русском языке, но и в школьных предметах.
2) NSP: из датасета Ленты взяли коротких абзацев, разрезали каждый пополам в случайном месте, и к каждой левой половинке нашли три отрицательных примера, заканчивающихся на те же три слова. Задача - из четырёх продолжений левой половинки выбрать то, которое следовало именно за ней. Задачка кажется полегче предыдущей (по крайней мере, для человека), но именно sentence embedder может с ней не очень хорошо справляться, т.к. сами предложения - рваные. Если в обучающей выборке такого не было, моделька может начать выдавать хрень.
3) PI: всё тот же мой любимый датасет paraphraser.ru, который использовали и в deepPavlovEval, собранный из заголовков новостей.
Вышкинцы, как и диппавловские физтехи, сравнивают fasttext, ELMO и BERT, забывая почему-то и про ванильные w2v, и про клёвые мультиязычные USE и Laser. Я честно не понимаю, почему.
Теперь о плохом:
Во-первых, код писали студенты, и он не запускается. До того, что в разных файлах сигнатуры одной и той же функции разные. Попробую их помучить, конечно. Но, возможно, попытка воспроизведения этого добра - дурацкая затея.
Во-вторых, (1) и (2) задачи - конечно, интересные, но не очень похожи на те прикладные задачи, для которых мне на самом деле хотелось бы использовать эмбеддинги предложений. И потому не очень понятно, насколько они вообще полезны для оценки тех моделек, которые я собираюсь изучать.
Впрочем, мне настолько нравится само намерение вышкинских ребят, что его стрёмную реализацию я готов простить 🙂
Начал разбираться с вышкинским бенчмарком, и вижу, что всё плохо. 🤦
Но начнём с конструктивного. Речь идёт об этой статье: https://arxiv.org/abs/1910.13291
Ребята взяли три GLUE-подобных датасета, и бенчмаркают эмбеддинги предложений на них:
1) MCQA: ребята наскрапали вопросы из части А ЕГЭ по разным предметам, и задача для модельки - выбрать правильный ответ из четырёх предложенных. Правильный ответ - обычно короткая именная фраза; иногда она является продолжением предложения-вопроса, иногда - отдельным предложением. В целом задача дофига сложная: для её решения нужно шарить не только в русском языке, но и в школьных предметах.
2) NSP: из датасета Ленты взяли коротких абзацев, разрезали каждый пополам в случайном месте, и к каждой левой половинке нашли три отрицательных примера, заканчивающихся на те же три слова. Задача - из четырёх продолжений левой половинки выбрать то, которое следовало именно за ней. Задачка кажется полегче предыдущей (по крайней мере, для человека), но именно sentence embedder может с ней не очень хорошо справляться, т.к. сами предложения - рваные. Если в обучающей выборке такого не было, моделька может начать выдавать хрень.
3) PI: всё тот же мой любимый датасет paraphraser.ru, который использовали и в deepPavlovEval, собранный из заголовков новостей.
Вышкинцы, как и диппавловские физтехи, сравнивают fasttext, ELMO и BERT, забывая почему-то и про ванильные w2v, и про клёвые мультиязычные USE и Laser. Я честно не понимаю, почему.
Теперь о плохом:
Во-первых, код писали студенты, и он не запускается. До того, что в разных файлах сигнатуры одной и той же функции разные. Попробую их помучить, конечно. Но, возможно, попытка воспроизведения этого добра - дурацкая затея.
Во-вторых, (1) и (2) задачи - конечно, интересные, но не очень похожи на те прикладные задачи, для которых мне на самом деле хотелось бы использовать эмбеддинги предложений. И потому не очень понятно, насколько они вообще полезны для оценки тех моделек, которые я собираюсь изучать.
Впрочем, мне настолько нравится само намерение вышкинских ребят, что его стрёмную реализацию я готов простить 🙂
#sotanlu
Я в марте писал про многофункционального чатбота от Фейсбука, и один из датасетов, на которых он учился - Empathetic Dialogue.
Этот датасет собрали тоже в Facebook Research и написали про него пейпер: https://arxiv.org/abs/1811.00207
Сам датасет - 25К коротеньких диалогов, собранных на MechanicalTurk, где один спикер ("рассказчик") изображает определенную эмоцию и жизненную ситуацию, с которой она связана, а другой ("слушатель") его активно слушает и эмпатично отвечает. Типа такого:
Ребята попробовали пообучать на этих данных разные болталки, и оказалось, что retrieval-болталки по-прежнему работают лучше генеративных, и что сильно помогает перед искомым текстом довписать теги: выделенные из него отдельными классификаторами эмоцию или тему. И что в целом болталки справляются неплохо - эмпатичность и релевантность оцениваются людьми на 4 балла из 5, а fluencу на все 4.6 (как у хьюманов - но это и неудивительно, если ты отвечаешь готовыми фразами).
Прочитав эту статью, я предпринял героическую попытку перевести этот датасет на русский, чтобы встроить в своего бота. Конечно же, не вышло - API яндекс.переводчика выдаёт какой-то трэш, а другие онлайн переводчики чё-то дороговаты.
Надеюсь, удастся с кем-нибудь скооперироваться и перевести этот датасет вскладчину)
Я в марте писал про многофункционального чатбота от Фейсбука, и один из датасетов, на которых он учился - Empathetic Dialogue.
Этот датасет собрали тоже в Facebook Research и написали про него пейпер: https://arxiv.org/abs/1811.00207
Сам датасет - 25К коротеньких диалогов, собранных на MechanicalTurk, где один спикер ("рассказчик") изображает определенную эмоцию и жизненную ситуацию, с которой она связана, а другой ("слушатель") его активно слушает и эмпатично отвечает. Типа такого:
- Got a bag of candy I'm polishing off. Diabetes be damned
- uh oh! Have you checked your sugar lately?
- I haven't gotten a physical in over a year.
- After that bag of candy, you may want to!
Ребята попробовали пообучать на этих данных разные болталки, и оказалось, что retrieval-болталки по-прежнему работают лучше генеративных, и что сильно помогает перед искомым текстом довписать теги: выделенные из него отдельными классификаторами эмоцию или тему. И что в целом болталки справляются неплохо - эмпатичность и релевантность оцениваются людьми на 4 балла из 5, а fluencу на все 4.6 (как у хьюманов - но это и неудивительно, если ты отвечаешь готовыми фразами).
Прочитав эту статью, я предпринял героическую попытку перевести этот датасет на русский, чтобы встроить в своего бота. Конечно же, не вышло - API яндекс.переводчика выдаёт какой-то трэш, а другие онлайн переводчики чё-то дороговаты.
Надеюсь, удастся с кем-нибудь скооперироваться и перевести этот датасет вскладчину)
̶с̶а̶м̶̶о̶изолента мёбиуса
#sotanlu Пришла очередь статьи про SuperGLUE. Этот бенчмарк выкатили спустя год после GLUE, который уже дорешали до сверх-человеческого уровня. В нём 8 задач: - BoolQ: Дан абзац текста и бинарный вопрос про этот абзац (ответ "да" или "нет"), на который надо…
SuperGLUE вообще-то достоин того, чтобы разобрать его поподробнее. Пойдём прямо по порядочку.
Первая задача взята из статьи The CommitmentBank: Investigating projection in naturally occurring discourse.
Я не до конца уверен, как её правильно объяснить по-русски, но буду пытаться. В датасете даны составные высказывания, типа "Джейн не знает, что идёт снег". Конкретно это высказывание - про Джейн, но, возможно, оно и про снег тоже. Так вот надо понять, уверен ли сам автор высказывания, что снег идёт. И в общем случае: уверен ли автор в истинности определённого подчинённого предложения в рамках своего сложноподчинённого высказывания? Особенно, если это подчинённое предложение "спрятано" под оператором, не означающим логического следования - вопроса, отрицания, "может быть" или "если".
Подобными вопросами занимается довольно мутная часть лингвистики - прагматика, которая изучает контекст и цели высказываний. Рандомный факт: статья опубликована в журнале
Датасет CommitmentBank надёрган из новостей, художественной литературы и диалогов автоматически (с помощью синтаксического парсера), почищен вручную, и отдан на разметку механическим тёркерам, которые оценивали уверенность автора в высказывании по шкале от -3 до 3. Авторы заморочились, и для каждого подчинённого предложения подготовили его парафразу, чтобы спрашивать тёркера именно про неё - и удалили вообще нафиг те высказывания, которые не удалось нормально перефразировать. Дополнительно разметили кучу информации - например, смысл кучи модальных глаголов (might, could, allowed to и т.п.), и оценка правдоподобности подчинённого предложения при условии контекста.
Дальше авторы исследуют, от чего зависит степень уверенности автора. Классическое представление - что это определяется "фактивностью" применённого оператора (примеры фактивных - "знать", "забывать", "узнавать", "помнить", и т.п., а вот "полагать", "говорить" или "решить" - не фактивные совсем). Авторы показывают (и в этом во многом цель статьи), что одной только фактивностью всё не решается. Примерно такую же роль играет, например, то, от какого лица высказывание, и в каком оно времени.
В целом, авторы надеются, что дальнейший анализ поможет разобраться, как же всё-таки выявлять степень уверенности спикеров. Я не знаю, какие в итоге explainable фичи вылезли, но вот непрозрачный T5 справляется с задачей весьма неплохо.
Что я думаю: похоже, что основная информация о степени коммитмента автора сосредоточена где-то близко на синтаксическом дереве к корню подчинённого предложения. А значит, если у нас есть хороший парсер и по уму извлечённые из него фичи, то натаскаться определять степень комитмента наверняка можно даже слабенькую модельку.
Впрочем, в истинности последнего высказывания я пока не слишком уверен 🤷♂️
#sotanlu
Первая задача взята из статьи The CommitmentBank: Investigating projection in naturally occurring discourse.
Я не до конца уверен, как её правильно объяснить по-русски, но буду пытаться. В датасете даны составные высказывания, типа "Джейн не знает, что идёт снег". Конкретно это высказывание - про Джейн, но, возможно, оно и про снег тоже. Так вот надо понять, уверен ли сам автор высказывания, что снег идёт. И в общем случае: уверен ли автор в истинности определённого подчинённого предложения в рамках своего сложноподчинённого высказывания? Особенно, если это подчинённое предложение "спрятано" под оператором, не означающим логического следования - вопроса, отрицания, "может быть" или "если".
Подобными вопросами занимается довольно мутная часть лингвистики - прагматика, которая изучает контекст и цели высказываний. Рандомный факт: статья опубликована в журнале
Sinn und Bedeutung
, что переводится как Смысл и Значение
. Мутная она, потому что плохо формализуется, но таки именно таких умений хочется от настоящего ИИ, с которым можно не просто разговаривать, а разговаривать по делу. Так что, когда/если подобные задачи алгоритмизировать всё-таки удастся, это будет означать заметный прорыв в NLP. Датасет CommitmentBank надёрган из новостей, художественной литературы и диалогов автоматически (с помощью синтаксического парсера), почищен вручную, и отдан на разметку механическим тёркерам, которые оценивали уверенность автора в высказывании по шкале от -3 до 3. Авторы заморочились, и для каждого подчинённого предложения подготовили его парафразу, чтобы спрашивать тёркера именно про неё - и удалили вообще нафиг те высказывания, которые не удалось нормально перефразировать. Дополнительно разметили кучу информации - например, смысл кучи модальных глаголов (might, could, allowed to и т.п.), и оценка правдоподобности подчинённого предложения при условии контекста.
Дальше авторы исследуют, от чего зависит степень уверенности автора. Классическое представление - что это определяется "фактивностью" применённого оператора (примеры фактивных - "знать", "забывать", "узнавать", "помнить", и т.п., а вот "полагать", "говорить" или "решить" - не фактивные совсем). Авторы показывают (и в этом во многом цель статьи), что одной только фактивностью всё не решается. Примерно такую же роль играет, например, то, от какого лица высказывание, и в каком оно времени.
В целом, авторы надеются, что дальнейший анализ поможет разобраться, как же всё-таки выявлять степень уверенности спикеров. Я не знаю, какие в итоге explainable фичи вылезли, но вот непрозрачный T5 справляется с задачей весьма неплохо.
Что я думаю: похоже, что основная информация о степени коммитмента автора сосредоточена где-то близко на синтаксическом дереве к корню подчинённого предложения. А значит, если у нас есть хороший парсер и по уму извлечённые из него фичи, то натаскаться определять степень комитмента наверняка можно даже слабенькую модельку.
Впрочем, в истинности последнего высказывания я пока не слишком уверен 🤷♂️
#sotanlu
GitHub
GitHub - mcdm/CommitmentBank: Materials related to our Sinn und Bedeutung 23 paper
Materials related to our Sinn und Bedeutung 23 paper - mcdm/CommitmentBank
Продолжаем расковыривать SuperGLUE. Вторая задача - COPA по статье Choice of Plausible Alternatives: An Evaluation of Commonsense Causal Reasoning.
Смысл задачи - понимание причинно-следственной связи. Это опять-таки довольно зыбкое понятие, поэтому вместо типичной задачи natural language inference "следует ли второе утверждение из первого?" вопрос формулируется как "какое из двух предложений - наиболее правдоподобная причина (либо следствие) данного утверждения?". Например:
- Гости вечеринки прятались за диваном. Что больше похоже на причину этого?
- Вариант 1: это была вечеринка-сюрприз
- Вариант 2: это был день рождения
Для правильного ответа на такие вопросы нужно уметь строить "логические" цепочки, основанные на здравом смысле, типа cюрприз->секрет->прятаться.
Оригинальный датасет состоит из 1000 вопросов, которые авторы сгенерировали самостоятельно и очень заморочившись. Сначала они составили собственную карту различных предметных областей и тем, чтобы сделать датасет максимально разнообразным, потом вручную нагенерировали пары причина-следствие для каждой предметной области, стараясь основывать их на каком-то прозрачном рассуждении. Дальше самое творческое - сгенерировать негативные примеры; они должны быть структурно и тематически похожи на позитивные примеры, и возможно даже иметь какую-то связь с утверждениями - но не прямую причинно-следственную. Отдельно авторы проконтролировали язык: максимально краткие и содержательные высказывания, без сленга, зато с анафорами.
Собранный датасет прогнали на волонтёрах, и после некоторой фильтрации получили 100% точность человеков. А бейзланы (из 2011 года, основанные даже не на эмбеддингах, а на попарной совстречаемости слов) дали точность меньше 60%. Впрочем, уже BERT дал все 70%, а T5 сейчас даёт почти 95%.
Что мне кажется. Задача определения причинно-следственной связи - действительно дофига сложная, и если машины научились её решать честным образом, это очень круто. Но проверять это, наверное, нужно на adversarial примерах, потому что даже очень творческие и умные авторы, генерируя датасет, могут дать много нечаянных подсказок. История про BERT и коня по имени Умный Ганс - тому пример, и вроде как поэтому и собрали суперклей.
Возможно, имеет смысл собрать датасет с причинами и следствиями автоматически, ориентируясь на ключевики типа "потому что", и посмотреть, как справляются модели на нём. Но майнинг негативных примеров, кажется, всё равно остается черной магией.
#sotanlu
Смысл задачи - понимание причинно-следственной связи. Это опять-таки довольно зыбкое понятие, поэтому вместо типичной задачи natural language inference "следует ли второе утверждение из первого?" вопрос формулируется как "какое из двух предложений - наиболее правдоподобная причина (либо следствие) данного утверждения?". Например:
- Гости вечеринки прятались за диваном. Что больше похоже на причину этого?
- Вариант 1: это была вечеринка-сюрприз
- Вариант 2: это был день рождения
Для правильного ответа на такие вопросы нужно уметь строить "логические" цепочки, основанные на здравом смысле, типа cюрприз->секрет->прятаться.
Оригинальный датасет состоит из 1000 вопросов, которые авторы сгенерировали самостоятельно и очень заморочившись. Сначала они составили собственную карту различных предметных областей и тем, чтобы сделать датасет максимально разнообразным, потом вручную нагенерировали пары причина-следствие для каждой предметной области, стараясь основывать их на каком-то прозрачном рассуждении. Дальше самое творческое - сгенерировать негативные примеры; они должны быть структурно и тематически похожи на позитивные примеры, и возможно даже иметь какую-то связь с утверждениями - но не прямую причинно-следственную. Отдельно авторы проконтролировали язык: максимально краткие и содержательные высказывания, без сленга, зато с анафорами.
Собранный датасет прогнали на волонтёрах, и после некоторой фильтрации получили 100% точность человеков. А бейзланы (из 2011 года, основанные даже не на эмбеддингах, а на попарной совстречаемости слов) дали точность меньше 60%. Впрочем, уже BERT дал все 70%, а T5 сейчас даёт почти 95%.
Что мне кажется. Задача определения причинно-следственной связи - действительно дофига сложная, и если машины научились её решать честным образом, это очень круто. Но проверять это, наверное, нужно на adversarial примерах, потому что даже очень творческие и умные авторы, генерируя датасет, могут дать много нечаянных подсказок. История про BERT и коня по имени Умный Ганс - тому пример, и вроде как поэтому и собрали суперклей.
Возможно, имеет смысл собрать датасет с причинами и следствиями автоматически, ориентируясь на ключевики типа "потому что", и посмотреть, как справляются модели на нём. Но майнинг негативных примеров, кажется, всё равно остается черной магией.
#sotanlu
Третья задача SuperGLUE - MultiRC из статьи Looking Beyond the Surface:A Challenge Set for Reading Comprehension over Multiple Sentences.
Авторы задачи недовольны тем, что классические вопросно-ответные датасеты типа SQuAD - довольно простые, и решаются лексическим матчингом, но решения плохо обобщаются. Задача MulitRC похожа на SQuAD - в ней дан параграф и вопрос к нему с предложенными вариантами ответов. Но она специально создавалась как сложная:
- Для ответа на каждый вопрос необходимо скомбинировать информацию минимум из двух предложений входного текста;
- Вместе с вопросом есть предложенные ответы, но сколько из них верные - заранее неизвестно. То есть решение надо принимать для каждого варианта ответа по-отдельности;
- Верный ответ не обязательно является подстрокой текста, а может содержать различные его фрагменты или даже их парафразы;
- Тексты взяты из 7 разных доменов, так что узкоспециализированная модель такую задачу не решит.
Авторы набрали тыщу абзацев из разных корпусов, отфильтровав их по разным количественным статистикам, и посадили тёркеров сначала генерировать вопросы, потом проверять, что вопросы требуют несколько предложений для ответа, потом генерировать сами варианты ответов (включая неправильные!), потом валидировать и ответы тоже. В итоге набралось 6К "чистых" вопросов и ещё несколько тысяч отбракованных. Оказалось, что и тип вопросов достаточно разнообразен, и ответы на них требуют разных типов мышления: разрешения анафор, понимания парафраз, здравого смысла, и даже немножко разной математики.
В статье люди в итоге набрали F-скор 86% на этом датасете; простые бейзлайны - существенно меньше, но авторы презентовали их как-то неуверенно. А в рамках SuperGLUE люди набрали только 82%, а RoBERTa - уже 84%. T5 все 88%. Так что похоже, что эта задача тоже уже решена. То ли она с самого начала не была такой уж сложной, то ли для ответа на многопредложЕнные вопросы идеально подходят трансформеры с их многоголовым селф-атеншном, если их правильно готовить.
В этом смысле, кстати, прикольно было бы попробовать запустить модельку попроще, но где при этом каждое слово так же "видит" каждое. Я не удивлюсь, если секрет успеха именно в этом.
#sotanlu
Авторы задачи недовольны тем, что классические вопросно-ответные датасеты типа SQuAD - довольно простые, и решаются лексическим матчингом, но решения плохо обобщаются. Задача MulitRC похожа на SQuAD - в ней дан параграф и вопрос к нему с предложенными вариантами ответов. Но она специально создавалась как сложная:
- Для ответа на каждый вопрос необходимо скомбинировать информацию минимум из двух предложений входного текста;
- Вместе с вопросом есть предложенные ответы, но сколько из них верные - заранее неизвестно. То есть решение надо принимать для каждого варианта ответа по-отдельности;
- Верный ответ не обязательно является подстрокой текста, а может содержать различные его фрагменты или даже их парафразы;
- Тексты взяты из 7 разных доменов, так что узкоспециализированная модель такую задачу не решит.
Авторы набрали тыщу абзацев из разных корпусов, отфильтровав их по разным количественным статистикам, и посадили тёркеров сначала генерировать вопросы, потом проверять, что вопросы требуют несколько предложений для ответа, потом генерировать сами варианты ответов (включая неправильные!), потом валидировать и ответы тоже. В итоге набралось 6К "чистых" вопросов и ещё несколько тысяч отбракованных. Оказалось, что и тип вопросов достаточно разнообразен, и ответы на них требуют разных типов мышления: разрешения анафор, понимания парафраз, здравого смысла, и даже немножко разной математики.
В статье люди в итоге набрали F-скор 86% на этом датасете; простые бейзлайны - существенно меньше, но авторы презентовали их как-то неуверенно. А в рамках SuperGLUE люди набрали только 82%, а RoBERTa - уже 84%. T5 все 88%. Так что похоже, что эта задача тоже уже решена. То ли она с самого начала не была такой уж сложной, то ли для ответа на многопредложЕнные вопросы идеально подходят трансформеры с их многоголовым селф-атеншном, если их правильно готовить.
В этом смысле, кстати, прикольно было бы попробовать запустить модельку попроще, но где при этом каждое слово так же "видит" каждое. Я не удивлюсь, если секрет успеха именно в этом.
#sotanlu
#sotanlu разбираем SuperGLUE дальше, с задачей WiC: the Word-in-Context Dataset for Evaluating Context-Sensitive Meaning Representations.
Это первый датасет в подобном формате: дана пара предложений с общим словом, и надо определить, употреблено ли это слово в одном смысле, или в разных. Все предложения и смыслы были надёрганы из WordNet (там это примеры словоупотреблений) и пары других подобных тезаурусов. Пары предложений были пофильтрованы так, чтобы негативные смыслы не были слишком похожи друг на друга (не было соседями в wordNetовской таксономии), и ещё немножко пофильтрованы вручную.
Тёркеры показали согласованность 80% с получившейся разметкой и друг с другом. Классификатор, разделяющий пары слов по косинусному расстоянию между контекстными эмбеддингами из BERT, дал точность 65%. Ни один другой бейзлайн не дотянул даже до 60%. Поэтому задачу признали сложной и взяли в SuperGLUE, но T5 уже сейчас даёт 77% на ней.
В целом, кажется, что файн-тюнинг T5 для такой задачи - овершут, а вот self-supervised контекстные словные эмбеддинги типа BERT на таком датасете мерять очень клёво. Интересно, что нужно сделать с BERT'ом, чтобы он научился воссоздавать WordNet - и возможно ли это вообще?
Это первый датасет в подобном формате: дана пара предложений с общим словом, и надо определить, употреблено ли это слово в одном смысле, или в разных. Все предложения и смыслы были надёрганы из WordNet (там это примеры словоупотреблений) и пары других подобных тезаурусов. Пары предложений были пофильтрованы так, чтобы негативные смыслы не были слишком похожи друг на друга (не было соседями в wordNetовской таксономии), и ещё немножко пофильтрованы вручную.
Тёркеры показали согласованность 80% с получившейся разметкой и друг с другом. Классификатор, разделяющий пары слов по косинусному расстоянию между контекстными эмбеддингами из BERT, дал точность 65%. Ни один другой бейзлайн не дотянул даже до 60%. Поэтому задачу признали сложной и взяли в SuperGLUE, но T5 уже сейчас даёт 77% на ней.
В целом, кажется, что файн-тюнинг T5 для такой задачи - овершут, а вот self-supervised контекстные словные эмбеддинги типа BERT на таком датасете мерять очень клёво. Интересно, что нужно сделать с BERT'ом, чтобы он научился воссоздавать WordNet - и возможно ли это вообще?
#sotanlu
Ещё одна задача из SuperGLUE зовётся BoolQ: Exploring the Surprising Difficulty of Natural Yes/No Questions.
Основная её клёвость в том, что вопросы действительно "естественные": это реальные запросы реальных людей в гугл. А значит, задача супер прикладная. Авторы датасета пофильтровали запросы тёркерами по "да-нетности" и по хорошести (вопрос понятен и на него можно дать ответ, основанный на фактах), подтянули к вопросам релевантные абзацы из Википедии, и оставили только те вопросы, для ответа на которые достаточно такого абзаца. Оказалось, что вопросы в целом сложненькие, в них куча именованных сущностей и неочевидных логических ходов.
Авторы попробовали сделать transfer learning, дообучая на своём датасете модельки, натасканные на reading comprehension или natural language inference. Удивительно, но RC-подобные задачи типа SQuAD оказались не особо релевантными, а вот задачи на определение entailment - вполне. Моделька, предобученная только на MultiNLI, после файн-тюнинга дала точность 75.5%, тогда как BERT - 77%. А если уменьшить обучающую выборку для файн-тюнинга, то модель, предобученная на MultiNLI, справляется даже заметно лучше берта. Возможно, говорят авторы, это потому, что в MultiNLI есть примеры противоречий.
Для справки, люди справились с этой задачей на 89%, а бейзлайн "всегда говори да" дал точность 62%. T5 сейчас решает её на 91.5%, так что уже и эту задачу можно считать "хакнутой". Но из множества других задач SuperGLUE мне она как-то особенно симпатично - видимо, как раз в силу своей простоты и "натуральности".
Ещё одна задача из SuperGLUE зовётся BoolQ: Exploring the Surprising Difficulty of Natural Yes/No Questions.
Основная её клёвость в том, что вопросы действительно "естественные": это реальные запросы реальных людей в гугл. А значит, задача супер прикладная. Авторы датасета пофильтровали запросы тёркерами по "да-нетности" и по хорошести (вопрос понятен и на него можно дать ответ, основанный на фактах), подтянули к вопросам релевантные абзацы из Википедии, и оставили только те вопросы, для ответа на которые достаточно такого абзаца. Оказалось, что вопросы в целом сложненькие, в них куча именованных сущностей и неочевидных логических ходов.
Авторы попробовали сделать transfer learning, дообучая на своём датасете модельки, натасканные на reading comprehension или natural language inference. Удивительно, но RC-подобные задачи типа SQuAD оказались не особо релевантными, а вот задачи на определение entailment - вполне. Моделька, предобученная только на MultiNLI, после файн-тюнинга дала точность 75.5%, тогда как BERT - 77%. А если уменьшить обучающую выборку для файн-тюнинга, то модель, предобученная на MultiNLI, справляется даже заметно лучше берта. Возможно, говорят авторы, это потому, что в MultiNLI есть примеры противоречий.
Для справки, люди справились с этой задачей на 89%, а бейзлайн "всегда говори да" дал точность 62%. T5 сейчас решает её на 91.5%, так что уже и эту задачу можно считать "хакнутой". Но из множества других задач SuperGLUE мне она как-то особенно симпатично - видимо, как раз в силу своей простоты и "натуральности".
#sotanlu послушал умных людей, почитал прошлогоднюю статью про mixout.
Это такая специальная регуляризация для файн-тюнинга моделей, когда в каждом батче некоторые случайно выбранные нейроны дообучаемой модели заменяются на старые. По аналогии с дропаутом, где они бы просто занулялись.
Авторы математически доказывают, что обе эти регуляризации, как и weight decay, примерно эквивалентны L2-штрафу за отдаление новых параметров от старых, и экспериментально показывают, что для файн-тюнинга BERT на GLUE mixout работает лучше аналогичного dropoutа. В принципе, очень понятно, почему так.
Простенький код для pytorch к статье прилагается)
Это такая специальная регуляризация для файн-тюнинга моделей, когда в каждом батче некоторые случайно выбранные нейроны дообучаемой модели заменяются на старые. По аналогии с дропаутом, где они бы просто занулялись.
Авторы математически доказывают, что обе эти регуляризации, как и weight decay, примерно эквивалентны L2-штрафу за отдаление новых параметров от старых, и экспериментально показывают, что для файн-тюнинга BERT на GLUE mixout работает лучше аналогичного dropoutа. В принципе, очень понятно, почему так.
Простенький код для pytorch к статье прилагается)
#sotanlu ещё один датасет из SuperGLUE - ReCoRD, то бишь Reading Comprehension with Commonsense Reasoning Dataset
Этот датасет придумывался как сложная задача на понимание текстов. Решаемая боль была в том, что многие подобные задачи, типа SQuAD - довольно простые, и для их решения достаточно не очень сложных когнитивных навыков, типа детекции парафраз.
Выглядит задача так: дан новостной текст и одно предложение после него, и в этом предложении одна именованная сущность пропущена. Нужно понять, какой из сущностей, упомянутых в тексте, этот пропуск уместнее всего заполнить.
Тройки (текст, фраза, правильный ответ) были намайнены автоматически из новостных корпусов и отфильтрованы простыми правилами. То, что осталось, авторы пофильтровали моделькой типа Stochastic Answer Networks (текст и вопрос к нему энкодятся, вопрос с помощью атеншна подтягивается к тексту, и дальше для каждого токена текста предсказывается вероятность того, что на нем начинается или заканчивается верный ответ, и всё это с кучей дропаута). Оставили только треть троек, с которыми нейросетка не справилась, и из них отобрали ту половину, с которой справился хотя бы один адекватный тёркер. В результате осталось 100 тысяч обучающих троек, и 20 тысяч дополнительно провалидированных тестовых.
Авторы разметили часть заданий по тому, какой тип мышления нужен для получения ответа - в 3/4 случаев это "здравый смысл", который в свою очередь в основном сводится к работе с понятиями, пониманию причинно-следственных связей, и базовой психологии.
Люди корректно решили 91% задач, случайный выбор и простые языковые модели - 19%, а модель DocQA с ELMO-векторами (BERT'а тогда ещё не было), наилучшая из попробованных - 45%. После чего датасет рекомендовали как сложный. BERT впоследствии решил эту задачу на 72%, RoBERTa - на 84%, а T5 уже на 94%, обогнав кожаных мешков.
Чё, клёво.
Этот датасет придумывался как сложная задача на понимание текстов. Решаемая боль была в том, что многие подобные задачи, типа SQuAD - довольно простые, и для их решения достаточно не очень сложных когнитивных навыков, типа детекции парафраз.
Выглядит задача так: дан новостной текст и одно предложение после него, и в этом предложении одна именованная сущность пропущена. Нужно понять, какой из сущностей, упомянутых в тексте, этот пропуск уместнее всего заполнить.
Тройки (текст, фраза, правильный ответ) были намайнены автоматически из новостных корпусов и отфильтрованы простыми правилами. То, что осталось, авторы пофильтровали моделькой типа Stochastic Answer Networks (текст и вопрос к нему энкодятся, вопрос с помощью атеншна подтягивается к тексту, и дальше для каждого токена текста предсказывается вероятность того, что на нем начинается или заканчивается верный ответ, и всё это с кучей дропаута). Оставили только треть троек, с которыми нейросетка не справилась, и из них отобрали ту половину, с которой справился хотя бы один адекватный тёркер. В результате осталось 100 тысяч обучающих троек, и 20 тысяч дополнительно провалидированных тестовых.
Авторы разметили часть заданий по тому, какой тип мышления нужен для получения ответа - в 3/4 случаев это "здравый смысл", который в свою очередь в основном сводится к работе с понятиями, пониманию причинно-следственных связей, и базовой психологии.
Люди корректно решили 91% задач, случайный выбор и простые языковые модели - 19%, а модель DocQA с ELMO-векторами (BERT'а тогда ещё не было), наилучшая из попробованных - 45%. После чего датасет рекомендовали как сложный. BERT впоследствии решил эту задачу на 72%, RoBERTa - на 84%, а T5 уже на 94%, обогнав кожаных мешков.
Чё, клёво.
Недавняя статья [DeBERTa: Decoding-enhanced BERT with Disentangled Attention](https://arxiv.org/abs/2006.03654) примечательна тем, что модель из нее сейчас сидит на верхушке лидерборда SuperGLUE, обогнав кожаных мешков на пол процентных пункта. Удалось это сделать за счёт пары небольших архитектурных изменений. Про классический BERT известно, что он не очень хорошо учитывает порядок слов. Чтобы справиться с этим, исследователи из Microsoft:
1) Добавили в атеншн веса для позиций токенов относительно друг друга. В ванильном берте позиция учитывается единожды, когда к эмбеддингу токена на самом первом слое добавляется эмбеддинг его абсолютной позиции, и дальше все self-attentions считаются примерно как
2) Абсолютные позиции токенов добавляются только на самом последнем слое, перед финальным софтмаксом. Не очень понятно, почему именно, но оказалось, что в таком виде их скармливать в модель лучше, чем на самом первом слое, и чем вообще не скармливать. Почему - не очень понятно; может быть, это заставляет модель больше обращать внимания на относительные позиции, а значит, лучше справляться с синтаксическими наворотами.
3) Кроме этого, при файнтюнинге модели на финальные задачи применяется новая (?) регуляризация: ко всем входным эмбеддингам добавляется адверсариально подобранная добавка, пропорциональная их норме. Подробностей в статье не объясняют, но почему-то это тоже докидывает.
В итоге: мы получаем чуть более крутой BERT, чем раньше, и SuperGLUE, продержавшийся два года, уже тоже пора чем-то заменять.
#sotanlu
1) Добавили в атеншн веса для позиций токенов относительно друг друга. В ванильном берте позиция учитывается единожды, когда к эмбеддингу токена на самом первом слое добавляется эмбеддинг его абсолютной позиции, и дальше все self-attentions считаются примерно как
softmax(Q*K)
. А в деберте атеншны считаются как softmax(Qc*Kc + Qc*Kp+QpKc)
, где матрицы с префиксами c
учитывают активации на предыдущем слое, т.е. "контент" токена, а матрицы с префиксами p
учитывают только позиции токенов относительно друг друга. Таким образом, модель гораздо охотнее выучивается смотреть на определенных соседей слова. И ещё, как бонус, мы получаем возможность обрабатывать неограниченно длинные тексты, т.к. эти самые относительные позиции считаются только по окну ограниченной ширины.2) Абсолютные позиции токенов добавляются только на самом последнем слое, перед финальным софтмаксом. Не очень понятно, почему именно, но оказалось, что в таком виде их скармливать в модель лучше, чем на самом первом слое, и чем вообще не скармливать. Почему - не очень понятно; может быть, это заставляет модель больше обращать внимания на относительные позиции, а значит, лучше справляться с синтаксическими наворотами.
3) Кроме этого, при файнтюнинге модели на финальные задачи применяется новая (?) регуляризация: ко всем входным эмбеддингам добавляется адверсариально подобранная добавка, пропорциональная их норме. Подробностей в статье не объясняют, но почему-то это тоже докидывает.
В итоге: мы получаем чуть более крутой BERT, чем раньше, и SuperGLUE, продержавшийся два года, уже тоже пора чем-то заменять.
#sotanlu