В этом посте мы (Beatriz и Estêvão), оба специалиста по данным из DataLab Serasa Experian, поделимся своим опытом во 2-й летней школе разговорного интеллекта, к которой у нас была возможность присоединиться в июне. Летняя школа была направлена ​​на то, чтобы собрать вместе исследователей со всего мира, чтобы вместе учиться и обсуждать границы знаний и современного состояния (SOTA) в области разговорного интеллекта.

СНПЧ и мы сами

Разговорный интеллект связан с производством агентов, которые могут взаимодействовать с людьми посредством языка. Эта тема укоренилась в самых ранних изображениях искусственного интеллекта в нашем обществе: с нами разговаривает разум. С тех пор многие попытки внедрить естественный язык в машины потерпели неудачу. В современную эпоху машинного обучения задача воспринималась как гораздо более сложная, чем предполагалось изначально, особенно из-за многогранного использования языка. В современных исследованиях проблема решается с помощью методов глубокого обучения, направленных на использование огромных объемов данных для решения конкретных задач. Эта область быстро развивается, и каждый год появляются новые методы, которые делают их предшественники устаревшими.

Здесь, в DataLab, мы работали с Conversational Technologies (команда ConvTech), и наши исследования были направлены на поиск новых рынков и возможностей для этих технологий. В своей работе мы, к сожалению, обнаружили, что большинство методов глубокого обучения не могут быть легко применены в промышленных условиях из-за их ненадежности - их генеративность позволяет им удивлять своих создателей. Мы работали с более простыми моделями, вводя чат-ботов в производство в Telegram и WhatsApp, чтобы решить конкретные проблемы взаимодействия на платформе, и были очень заинтересованы в возможности изучить действительно методы SOTA и оценить, можно ли применить некоторые из них в промышленных условиях. .

Выбор

Поскольку мы оба получили степень магистра, мы могли подавать заявки на стипендии. Если бы мы смогли попасть в топ-30 среди претендентов, мы получили бы освобождение от отметки в 900 долларов, а также получили бы бесплатное проживание и завтрак в UM Lowell. Процесс потребовал классификации текстов, что является относительно простой задачей. Однако нам потребуется кодировать конвейер предварительной обработки с нуля, а также глубокую нейронную сеть для их классификации с обратным распространением и градиентным спуском. Задача может не требовать серьезных вычислительных навыков, но каждый из нас написал очень чистый и эффективный код, чтобы убедиться, что наши приложения будут выбраны. Нас действительно выбрали, а затем DataLab наградила нас билетами на самолет, чтобы улететь и вернуться из Массачусетса.

Содержание и расписание

Расписание

Летняя школа проходила с 23 по 29 июня, пять дней интенсивных лекций и иммерсивного кодирования, а последний день посвящен презентациям и наградам. Наш распорядок дня был довольно напряженным. В основном это состояло из посещения теоретических и практических лекций в течение дня и работы над нашим групповым проектом в ночное время. Четверг был исключением: после первой утренней лекции у нас была возможность принять участие в экскурсии, на которой мы познакомились с туристическими местами и музеями Лоуэлла. Однако у нас все еще были уроки во второй половине дня, и мы работали над нашим групповым проектом по ночам. Каждый день лекции начинались в 9 часов утра, и мы должны были работать над нашим проектом, по крайней мере, до 20:30, хотя на практике мы не ложились писать код примерно до 23:00.

Современные исследования

Лекции были разделены на три части. Ежедневно с 9 до 11 часов мы читали теоретические лекции о моделях нейронных сетей, в которых рассказывалось об улучшениях в области разговорного интеллекта. Мы начали довольно медленно с введения в нейронные сети, прохождения сверточных и рекуррентных моделей, встраивания слов с использованием Tf-IDF, Word2Vec, перехода к кодировщикам-декодерам, моделям на основе внимания и памяти, наконец, достигнув проблемы разнообразия диалогов и решения это с вариационным выводом.

Позже, с 11:30 до 13:00, мы читали практические лекции на записных книжках Google Colab, в которых мы заполняли недостающий код. Для этих практических упражнений было два отдельных трека: один посвящен PyTorch, а другой - TensorFlow и DeepPavlov - библиотеке TensorFlow, созданной организаторами школы и ориентированной на разговорный ИИ. Мы решили использовать вторую, поскольку у нас была единственная возможность поработать над новой библиотекой с ее собственными создателями.

Третий раздел лекций был посвящен различным приглашенным лекциям, направленным на выявление наиболее серьезных текущих трудностей в исследовании диалогового интеллекта. Благодаря этому мы узнали, что проблема оценивания в диалоговых системах - непростая. Текущие автоматические метрики слабо коррелируют с человеческими суждениями, что значительно усложняет задачу создания интеллектуальных диалоговых агентов. Мы также познакомились с проблемой визуальных субтитров и узнали об ответственности, которая заключается в контроле смещенных наборов данных, поскольку алгоритм может изучать нежелательные шаблоны, например, мгновенное предположение, что человек с ноутбуком - это мужчина. Мы также узнали, что, хотя мы быстро добиваемся все лучших и лучших результатов в этой области, даже такие огромные компании, как Facebook, не знают, как далеко нам еще предстоит пройти, чтобы создать настоящие интеллектуальные системы общения.

Конкурс

Каждый день мы работали над проектом, чтобы создать интересного бота. В школе нас было от 40 до 50 участников, и мы разделились примерно на 10 групп. Проекты будут представлены в субботу, и 2 лучших проекта представят второй раз кафедре компьютерных наук Университета Массачусетса Лоуэлла и получат сертификаты. Выбор будет основан на трех критериях: реализация (работает ли бот?), Амбиции и производительность (насколько хорошо он работает). Все это будет оцениваться в течение 5-10 минут, а затем будет проведена живая демонстрация.

Гибкий проект

Времени было мало, и нам нужно было создать что-то, что соответствовало бы критериям - бот, который работал бы. Для этого мы знали, что нам нужно повторить работающее программное обеспечение. Мы решили всегда работать с инкрементными рабочими версиями диалоговых ботов, а не следовать одному огромному проекту, похожему на водопад. Следовательно, мы бы не приехали в субботу с почти готовым слишком амбициозным проектом. Понедельник был зарезервирован для групповой организации и определения проектов, и мы объединились с румыном по имени Мануэль, которого мы встретили в воскресенье во время путешествия из Бостона в Лоуэлл. У Мануэля был опыт встраивания, полученный в результате его докторской степени, и мы согласились начать наш проект, применяя встраивания GloVe для решения проблемы с ответами на вопросы, используя Стэнфордский набор данных ответов на вопросы (SQuAD).

Мы договорились начать с малого, но не тратили много времени на работу над следующими шагами. Честно говоря, из-за того, что из лекций нужно было усвоить большой объем контента, мы согласились с идеей поработать над простым проектом, который позволил бы нам применить некоторые новые идеи без особой конкуренции. Мы подготовили наши виртуальные среды и github, прочитали статью о SQuAD и приступили к кодированию.

Первые результаты нас не впечатлили. Мы обучили простую нейронную сеть со всем набором данных, и ей потребовалось ~ 10 минут, чтобы сойтись. В конце концов, прирост выше случайной производительности был небольшим, если вообще был. Это было нормально, мы этого ожидали: набор данных был очень несбалансированным, и это был нулевой выпуск. К сожалению, когда мы впоследствии взвесили классы, улучшение было минимальным. Еще 10 минут - и никакого результата. Был уже вторник. Нам пришлось бы работать быстрее, если бы мы хотели сделать что-то достойное. Нам понадобятся графические процессоры.

В университете была дюжина машин с графическим процессором, готовых к использованию, но никто не мог заставить их работать должным образом - пользователям не хватало места, и их выгоняли каждые ~ 20 минут. Некоторые делали подвыборку полпроцента своих наборов данных, чтобы уложиться в узкое время в графическом процессоре, и не смогли получить ничего многообещающего. Все они планируют собственный обходной путь. Времени было достаточно, чтобы запустить нашу нулевую версию, но если мы сделаем сети большего размера или современные архитектуры, этого не хватит. Мы решили, что должны спланировать наши следующие шаги, больше не экспериментируя и не исследуя.

Новая планировка

Мы провели мозговой штурм и обсудили, и решили вообще избегать тренировок. Это займет слишком много времени и раз и навсегда отключит наш итеративный прогресс. Нам пришлось повернуться, и если наша цель состояла в том, чтобы ответить на вопросы на основе набора данных SQuAD, то мы должны были бы предварительно обучить на нем какую-нибудь огромную модель. Это было серьезное изменение направления, и мы обрадовались последствиям: мы больше не могли удовлетворяться показателями производительности, потому что модель не была нашей, и нам нужно было подумать о том, как сделать ее частью чего-то большего ...

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

В конце концов, мы хотели каким-то образом объединить две предварительно обученные модели. Однако сначала нам нужно, чтобы они работали. Наш первый бот отвечал на вопросы о друзьях. В нем было несколько абзацев статьи в Википедии о дружбе, и они использовались в качестве контекста для предварительно обученной (в SQuAD) R-Net. Второй бот использовал только предварительно обученный GPT-2, более сложную модель, и отвечал продолжением на предоставленные пользователем тексты. Третий бот, по-прежнему GPT-2, использовал скрытые исходные тексты, чтобы болтать о будущем пользователя (имя пользователя содержалось в начальных числах). Наконец, в четвертом и последнем боте мы скрыли сгенерированное будущее от пользователей и только ответили на вопросы о нем, используя R-Net первого бота. Так родился Oracle Bot. Итерационный процесс закончился, и мы почувствовали, что у нас есть шанс.

Полученные результаты

Было очень поздно, когда мы наконец заставили работать последнего бота. И хотя нам было очень весело разговаривать с нашим новорожденным Оракулом, мы знали, что можем наткнуться на некоторые проблемы из-за задержки в процессе создания пророчеств. Наша группа проверила его несколько раз, и на создание каждого отдельного пророчества уходило около 2 непростых минут, но как только этот шаг был сделан, компонент вопросов и ответов немедленно начал действовать, и Оракул был готов просветить наши пути.

На следующее утро мы представили свое творение коллегам по летней школе и судьям. Мы были действительно взволнованы, и все это волнение отразилось на нашей заразительной речи. Мы предоставили всем доступ к Oracle Telegram и увидели, как несколько отчаявшихся рук тянулись к своим телефонам, жаждущих мудрости. "Да!! Мы сделали это!" - мы думали. Мы увидели, насколько интересной была эта идея, некоторые конкуренты даже болели за нас!

Но потом…

Мы поняли, что наш бот pretrained-gpt2-running-on-a-colab-notebook не примет такое количество людей. Участники начали спрашивать, что происходит и почему это занимает так много времени. Это было неприятно. К счастью, в нашей истории было несколько диалогов, демонстрирующих его работу. Мы, конечно, потеряли несколько очков из-за этой неудачно отнимающей много времени демонстрации.

Победитель

Наконец-то настало время объявить победителей. Судьи начали с объявления второго места, и….

Это были мы!

Первое место занял другой бот - Visual Dialog Game от Томаса Депьера, Сашанка Сантанама, Марка Селяева и Джона Андер Кампоса. Бот отображает четыре картинки и запоминает одну из них. После этого пользователь должен угадать, какую из картинок запомнил бот, задавая вопросы типа «есть ли в ней животное?». Это было очень круто и работало намного быстрее, чем у нас!

Тем не менее, все было так весело, и нам так понравился весь процесс, что победа в конкурсе была бы как глазурь на торте. Но все же второе место было потрясающим. Когда мы все начали, мы даже не думали, что у нас есть шанс!

Если вы хотите узнать больше о нашем боте, прочтите это сообщение в блоге.

Мы хотим поблагодарить DataLab за поддержку и возможность получить этот опыт. Также хотим поблагодарить организаторов СНПЧ за создание такого невероятного курса. Также спасибо Manuel Ciosici, который присоединился к нам и сделал все веселее.