̶с̶а̶м̶̶о̶изолента мёбиуса
2.4K subscribers
13 photos
2 videos
1 file
189 links
Костыли и технологии для обработки естественных языков. Обзоры статей и личный опыт. by @cointegrated
Download Telegram
̶с̶а̶м̶̶о̶изолента мёбиуса
#sotanlu Пришла очередь статьи про SuperGLUE. Этот бенчмарк выкатили спустя год после GLUE, который уже дорешали до сверх-человеческого уровня. В нём 8 задач: - BoolQ: Дан абзац текста и бинарный вопрос про этот абзац (ответ "да" или "нет"), на который надо…
SuperGLUE вообще-то достоин того, чтобы разобрать его поподробнее. Пойдём прямо по порядочку.

Первая задача взята из статьи The CommitmentBank: Investigating projection in naturally occurring discourse.
Я не до конца уверен, как её правильно объяснить по-русски, но буду пытаться. В датасете даны составные высказывания, типа "Джейн не знает, что идёт снег". Конкретно это высказывание - про Джейн, но, возможно, оно и про снег тоже. Так вот надо понять, уверен ли сам автор высказывания, что снег идёт. И в общем случае: уверен ли автор в истинности определённого подчинённого предложения в рамках своего сложноподчинённого высказывания? Особенно, если это подчинённое предложение "спрятано" под оператором, не означающим логического следования - вопроса, отрицания, "может быть" или "если".

Подобными вопросами занимается довольно мутная часть лингвистики - прагматика, которая изучает контекст и цели высказываний. Рандомный факт: статья опубликована в журнале Sinn und Bedeutung, что переводится как Смысл и Значение. Мутная она, потому что плохо формализуется, но таки именно таких умений хочется от настоящего ИИ, с которым можно не просто разговаривать, а разговаривать по делу. Так что, когда/если подобные задачи алгоритмизировать всё-таки удастся, это будет означать заметный прорыв в NLP.

Датасет CommitmentBank надёрган из новостей, художественной литературы и диалогов автоматически (с помощью синтаксического парсера), почищен вручную, и отдан на разметку механическим тёркерам, которые оценивали уверенность автора в высказывании по шкале от -3 до 3. Авторы заморочились, и для каждого подчинённого предложения подготовили его парафразу, чтобы спрашивать тёркера именно про неё - и удалили вообще нафиг те высказывания, которые не удалось нормально перефразировать. Дополнительно разметили кучу информации - например, смысл кучи модальных глаголов (might, could, allowed to и т.п.), и оценка правдоподобности подчинённого предложения при условии контекста.

Дальше авторы исследуют, от чего зависит степень уверенности автора. Классическое представление - что это определяется "фактивностью" применённого оператора (примеры фактивных - "знать", "забывать", "узнавать", "помнить", и т.п., а вот "полагать", "говорить" или "решить" - не фактивные совсем). Авторы показывают (и в этом во многом цель статьи), что одной только фактивностью всё не решается. Примерно такую же роль играет, например, то, от какого лица высказывание, и в каком оно времени.

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

Что я думаю: похоже, что основная информация о степени коммитмента автора сосредоточена где-то близко на синтаксическом дереве к корню подчинённого предложения. А значит, если у нас есть хороший парсер и по уму извлечённые из него фичи, то натаскаться определять степень комитмента наверняка можно даже слабенькую модельку.
Впрочем, в истинности последнего высказывания я пока не слишком уверен 🤷‍♂️
#sotanlu
Продолжаем расковыривать 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
Третья задача 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
#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 - и возможно ли это вообще?
#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 мне она как-то особенно симпатично - видимо, как раз в силу своей простоты и "натуральности".
#sotanlu послушал умных людей, почитал прошлогоднюю статью про mixout.
Это такая специальная регуляризация для файн-тюнинга моделей, когда в каждом батче некоторые случайно выбранные нейроны дообучаемой модели заменяются на старые. По аналогии с дропаутом, где они бы просто занулялись.
Авторы математически доказывают, что обе эти регуляризации, как и 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%, обогнав кожаных мешков.

Чё, клёво.
Недавняя статья [DeBERTa: Decoding-enhanced BERT with Disentangled Attention](https://arxiv.org/abs/2006.03654) примечательна тем, что модель из нее сейчас сидит на верхушке лидерборда SuperGLUE, обогнав кожаных мешков на пол процентных пункта. Удалось это сделать за счёт пары небольших архитектурных изменений. Про классический BERT известно, что он не очень хорошо учитывает порядок слов. Чтобы справиться с этим, исследователи из Microsoft:

1) Добавили в атеншн веса для позиций токенов относительно друг друга. В ванильном берте позиция учитывается единожды, когда к эмбеддингу токена на самом первом слое добавляется эмбеддинг его абсолютной позиции, и дальше все self-attentions считаются примерно как softmax(Q*K). А в деберте атеншны считаются как softmax(Qc*Kc + Qc*Kp+QpKc), где матрицы с префиксами c учитывают активации на предыдущем слое, т.е. "контент" токена, а матрицы с префиксами p учитывают только позиции токенов относительно друг друга. Таким образом, модель гораздо охотнее выучивается смотреть на определенных соседей слова. И ещё, как бонус, мы получаем возможность обрабатывать неограниченно длинные тексты, т.к. эти самые относительные позиции считаются только по окну ограниченной ширины.

2) Абсолютные позиции токенов добавляются только на самом последнем слое, перед финальным софтмаксом. Не очень понятно, почему именно, но оказалось, что в таком виде их скармливать в модель лучше, чем на самом первом слое, и чем вообще не скармливать. Почему - не очень понятно; может быть, это заставляет модель больше обращать внимания на относительные позиции, а значит, лучше справляться с синтаксическими наворотами.

3) Кроме этого, при файнтюнинге модели на финальные задачи применяется новая (?) регуляризация: ко всем входным эмбеддингам добавляется адверсариально подобранная добавка, пропорциональная их норме. Подробностей в статье не объясняют, но почему-то это тоже докидывает.

В итоге: мы получаем чуть более крутой BERT, чем раньше, и SuperGLUE, продержавшийся два года, уже тоже пора чем-то заменять.
#sotanlu
The Winograd Schema Challenge - задача по разрешению кореференции в предложениях. По сути, надо понять, к какому слову относится местоимение.
Например: "Кубок не помещается в коричневый чемодан, потому что он слишком большой". Верно ли, что слово "он" относится к слову "чемодан"? Неверно.

Прикол WSD в том, что в тестовой выборке может содержаться похожее предложение: "Кубок не помещается в коричневый чемодан, потому что он слишком маленький". И вот в таком предложении "он" уже относится к "чемодану". И оказывается, что ML алгоритмы к такому повороту не очень готовы.

На русскоязычном лидерборде наилучшая моделька выдаёт точность 67% на таких предложениях - то есть столько же, сколько и рандомный бейзлайн. На английском SuperGLUE точность выше, но разрыв с человеческим перформансом (равным 100%) пока заметный.

Мне это кажется довольно удивительным. Задача разрешения кореференции для местоимений - супер важная, и кажется очень базовой. И до сих пор она решена весьма так себе.
#sotanlu
#sotanlu Ещё одна задача из SuperGLUE, RTE, (Recognizing Textual Entailment) - задача классификации, следует ли второе предложение из первого. Например, "Автор поста написал в комментарии, что прорвалась канализация." и "Автор поста написал про канализацию." - здесь второе предложение вытекает из первого.

Это - самая частая формулировка более общей задачи NLI (natural language inference). А ещё её можно рассматривать как обобщение задачи детекции парафраз, ибо если пара предложений друг друга перефразирует, то они взаимно друг из друга следуют. Ещё с помощью моделей RTE удобно оценивать качество суммаризации: саммари, если оно не врёт, должно следовать из исходного текста. А одна недавняя статья от FAIR вообще предлагает все задачи на классификацию предложений и их пар переформулировать в NLI, и утверждают, что это помогает на новые задачи дообучаться быстрее. В общем-то, и zero shot classification можно как NLI сформулировать, типа следует ли из фразы "Еда была очень вкусная, и сервис хороший" фраза "Отзыв положительный".

Для задачи RTE хорошо работает классическая архитектура для классификации пар: сконкатенировать два предложения с каким-то разделителем, прогнать через BERT-подобный энкодер, классифицировать по эмбеддингу CLS токена. На huggingface есть куча готовых моделей для NLI и zero-shot classification для английского, а вот для русского я с ходу не нашёл. Но тоже, наверное, должны быть)

Задача в стиле RTE входит и в RussianSuperGLUE, и скор на ней (87% у ансамбля, 73% у лучшей одиночной модели) пока что сильно ниже человеческого (92%). И даже на англоязычном лидерборде кожаные мешки пока что держат оборону, хоть разрыв с лучшей моделью уже и небольшой. Потому что, хоть на первый взгляд задача RTE и кажется простой и бесполезной, чтобы решить её хорошо, тексты нужно реально понимать.