Журнал / герои

Сдать ЕГЭ по русскому с помощью машинного обучения

Интервью с победителями AI Journey 2019.

Коля Зинов и Даня Анастасьев из группы диалоговых систем Алисы приняли участие в соревновании AI Journey. Соревнование заключалось в том, чтобы сдать ЕГЭ при помощи машинного обучения. Их модель заняла первое место, набрав 60 баллов за экзамен по русскому языку. Затем они превратили своё решение в бота для Telegram: с его помощью можно написать сочинение даже по тексту поста в Facebook. Мы поговорили с разработчиками о том, как научить модель выделять в тексте основные проблемы, почему алгоритмы сложно обучить пользоваться «очевидными» фактами (например, тем, что небо голубое) и какие новые модели для работы с текстом появились за последний год.

Расскажите немного про своё образование и работу в Яндексе?

Коля: Мы оба учились на факультете инноваций и высоких технологий МФТИ, я заканчиваю магистратуру в этом году, а Даня на два года старше и выпустился раньше. Я пришёл в Яндекс на четвёртом курсе бакалавриата и сразу оказался в команде Алисы. Сейчас большую часть времени я работаю над «болталкой» — модулем Алисы для разговоров на свободные темы, без конкретной цели.

Даня: Я поступил в Школу анализа данных во время учёбы на ФИВТе и закончил её в этом году. Я тоже в команде Алисы, но занимаюсь в ней обработкой запросов, например, тегированием и квалификацией.

Коля: В общем, более полезными вещами, чем я :)

Как вы придумали бота, генерирующего сочинения?

Даня: Мы создавали его в рамках конференции по машинному обучению, которую проводили Huawei и Сбербанк. На ней устраивали соревнования, чья модель наберет больше баллов при выполнении заданий ЕГЭ по русскому языку. Ответы, полученные при помощи машинного обучения, затем проверяли школьные учителя. Наша модель в среднем набирала 60 баллов за ЕГЭ. 

​Конференция AI Journey 2019
​Конференция AI Journey 2019

Проще всего делать задания, где есть чётко прописанные правила, например, задания на расстановку ударений, для которой нужно выполнить поиск по словарю. Для остальных заданий нужно, чтобы модель «понимала» смысл текста.

У нас было решение для написания сочинений, и на его основе мы сделали бота. Пользователи загружают в него текст, а он выдаёт на выходе эссе с привычной всем структурой (введение, основная часть и заключение). Написание сочинений на ЕГЭ — шаблонный процесс: школьникам нужно сформулировать проблему, которую поднимает автор, обосновать его позицию и выразить свою. Поэтому самая сложная задача для бота — правильно понять, о чём текст.

Как бот выделяет в тексте основную проблему?

Даня: Он выбирает наиболее подходящую из заранее заданного списка встречающиеся в реальных заданиях ЕГЭ проблем. Для определения того, какая проблема — наиболее подходящая, мы использовали готовое решение: Multilingual Universal Sentence Encoder от Google. Он учился переводить тексты в векторы-эмбеддинги таким образом, что векторы близких по смыслу текстов близки. Поэтому в качестве наиболее подходящей проблемы можно использовать ту, чей эмбеддинг ближе всего к данному тексту.

Алгоритм как бы «высасывает проблему из пальца»

Он подстраивает готовую аргументацию под данный текст — и это знакомо многим школьникам, которые сдавали ЕГЭ.

В случае бота такой подход даёт забавные результаты, например, когда берётся пост в Facebook и к нему находятся аргументы из классической литературы.

​Зеленый цвет — исходные данные (текст и его автор); желтый — тема сочинения; синий — параллель с другим литературным произведением.
​Зеленый цвет — исходные данные (текст и его автор); желтый — тема сочинения; синий — параллель с другим литературным произведением.

Для дальнейшего улучшения модели нам нужны бóльшие объёмы данных: даже если бы примеров сочинений было всего вдвое больше, это бы нам очень помогло.

Какую модель вы взяли за основу своего решения?

Коля: Мы использовали BERT — это модель, которая на обширном объеме текстов обучается «понимать», как устроен тот или иной язык. В её основе лежит такая идея: на входе нейросети подаются фразы, в которых часть слов заменена «маской» (*****), и сеть должна предсказывать, что под этой маской скрывается. Например, если нейросети дано предложение «Я пришёл в магазин, чтобы купить пакет ****** со сметаной и зелёным луком», то она должна показать на выходе слово «чипсов».

А чтобы нейросеть научилась понимать связи в тексте, её обучают предсказывать, будет ли вторая фраза логичным продолжением первой. Так, предложения «Я пошёл в магазин» и «Я купил там молоко» взаимосвязаны. А про пару «Я пошёл в магазин» и «Пингвины не умеют летать» модель должна сказать, что они не будут идти подряд.

При использовании BERT для ЕГЭ нам нужно было дообучить её пунктуации: в тесте четыре задания на расстановку запятых. Мы выполняли почти все задания с помощью BERT — либо дообучая её, либо используя «сырые» предсказания модели. Для написания сочинения использовали модель USE — она также предсказывает взаимосвязи между предложениями.

А что подразумевается под «пониманием устройства языка»?

Коля: Это философский вопрос. Мне нравится аналогия с мысленным экспериментом про «китайскую комнату». Представим себе помещение, где находится человек, который не знает ни одного китайского иероглифа. Этот человек может следовать инструкциям вида «Возьмите иероглиф из корзинки номер один и поместите его рядом с иероглифом из корзинки номер два» — как компьютер при машинном переводе. Запертый в «китайской комнате» человек может правильно отвечать на вопросы на китайском языке, и стороннему наблюдателю даже может показаться, что этот человек знает китайский.

Для алгоритмов машинного обучения «понимание» — это умение ответить на вопрос, и оно не требует самосознания

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

Расскажите про развитие работы с текстом в машинном обучении?

Коля: Сейчас возник бум предобученных моделей — «готовых» решений для работы с языком, которые можно улучшить под свои задачи. К ним относится и модель BERT, которую мы использовали. Она хорошо справляется с выучиванием очевидных для человека фактов, например, что вода мокрая, а небо голубое. Для машины это намного сложнее, чем пропарсить Википедию и выяснить, кто был президентом России в 2012 году.

В открытом доступе появились и другие продвинутые решения, например, алгоритм, который дописывает текст по нескольким предложениям.

Здесь можно провести параллель с бумом нейросетей: предобученные модели начинают использовать везде, несмотря на то, что они не являются панацеей. Но это хорошо: появляются хитрые улучшения таких моделей, а классические методы адаптируются к новой реальности.