Сегодня машины без труда “связывают два слова” (1, 2), но пока не умеют гарантированно вести диалог на общие темы. Однако, уже завтра вы будете просить их правильно составить резюме и выбрать для ваших детей лучшую секцию по шахматам недалеко от дома. Хотите разобраться подробней, как в этом направлении работают ученые из Facebook, Google и др? Приходите их послушать.
С 31 января по 5 февраля в Московском физико-техническом институте при научной поддержке Лаборатории нейронных систем и глубокого обучения пройдет второй международный хакатон по глубокому обучению и машинному интеллекту DeepHack.Q&A. В рамках научной школы хакатона ведущие мировые специалисты из Google Brain, Facebook AI Research, OpenAI, Skoltech, University of Oxford, Courant Institute of Mathematical Sciences в NYU, прочтут серию лекций по глубокому обучению и его применению к задачам обработки естественного языка. Большинство из них — удаленно, однако ожидается личное присутствие Роба Фергуса (Rob Fergus) и Фила Блансома (Phil Blunsom).
Про тему. Хакатон будет посвящен задаче The Allen AI Science Challenge. От участников требуется разработать программу, способную самостоятельно обучиться отвечать на вопросы уровня 8 класса американской школы. Для этого участникам даны тренировочный (2 500 вопросов) и валидационный (8 132 вопроса) наборы вопросов в формате csv-файла с 4-мя вариантами ответа. Для тестового набора известны правильные ответы. Валидационный набор необходим для того, чтобы определить уровень точности ответов вашей системы и, соответственно, ранжировать заявленные решения по этому критерию. В наборах присутствуют вопросы по основным предметам школьной программы: физика, биология, география и др.
Постановка задачи выглядит настолько общей, что создается впечатление, что подступиться к ее решению, не обладая глубокой экспертизой в области обработки естественного языка, невозможно. Однако это не совсем так. Можно в несколько строк кода применить уже наработанные нейросетевые методы и получить результат в 32% точности.
Именно это сделали ребята из команды 5vision (кстати, победители летнего хакатона) и опубликовали свое решение на форуме Kaggle и Github. Инструкцию по установке вы найдете здесь. Если вдруг есть непреодолимое желание использовать Linux, но под рукой его у вас нет, то можете бесплатно зарегистрироваться на koding.com (или много еще где) и запустить все там. Теперь хотелось бы подробней остановится на том, что это решение делает.
Оно основано на одной из реализаций представления слов в многомерном векторном пространстве — GloVe (Global Vector for Word Representation), где близким по смыслу словам ставятся в соответствие близкие в евклидовой метрике вектора. Более известная реализация word2vec уже освещалась на Хабре (1,2,3 и др) (а один из авторов этой реализации Томас Миколов (Tomas Mikolov), будет читать лекции на хакатоне).
Применение GloVe (glove_predict.py) к вопросу выглядит следующим образом:
- Предобработка вопроса:
- выкидываем все, кроме заглавных и строчных букв английского алфавита и пробела.
- выкидываем так называемые “стоп”-слова (слова, которые практически не влияют на смысл предложения).
- Задаем нулевое векторное представление вопроса q = 0.
- Проходим циклом по всем оставшимся словам вопроса и прибавляем к q векторное представление каждого слова.
- Проводим аналогичные вычисления векторного представления всех четырех ответов.
- Выбираем тот ответ, расстояние до которого от вектора q наименьшее.
Данная реализация дает 32% точности на валидационном наборе.
У 5vision есть и другая более “классическая” реализация (ck12_wiki_predict.py), основанная на применении меры TF-IDF. Работает она так:
- Парсим ключевые слова по основным темам с сайта www.ck12.org (для примера тема “Физика”: http://www.ck12.org/physics/).
- Скачиваем документы из википедии по собранным ключевым словам.
- Вычисляем меры TF и IDF для данной коллекции документов и слов.
- Для каждого вопроса выбираем наиболее релевантную статью из коллекции.
- Для каждого ответа считаем его релевантность по отношению к данной статьи и выбираем тот, что дает максимальное значение.
Эта реализация дает 36% точности. Для представления масштаба результатов стоит отметить, что на текущий момент первое место в рейтинге отвечает правильно на 56% вопросов.
Конкурс имеет ряд особенностей (здесь можно найти обзор-выжимку с форума конкурса) — например, итоговое решение должно работать без доступа к интернету. И вообще, чтение форума конкурса может дать очень много полезного.
Расписание мероприятие такое же как и на прошлом DeepHack’e.
Воскресенье: сбор участников, организационное собрание, формирование команд, настройка окружения, вводная лекция и первый ночной запуск расчёта.
Понедельник-Пятница: обсуждение промежуточных результатов, программирование новых решений, выработанных в команде, лекции, запуск расчетов.
Суббота: подведение итогов, награждение победителей.
Всем участникам также будет предоставлено проживание и вычислительные ресурсы. Но свой ноутбук надо принести с собой.
В скором времени мы планируем опубликовать обзор нейросетевых архитектур в области обработки естественного языка, из которого можно будет почерпнуть идеи для улучшения текущих решений.
Автор: e777