www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Личность для вашего чата с рекуррентными нейронными сетями

Дата публикации Mar 29, 2017

Здравствуйте, чем я могу вам помочь сегодня?

Впредыдущая короткая запись,Я представил введение в чат-ботов: их популярность в настоящее время, некоторые варианты платформы и основные предложения по дизайну.

В этом посте я собираюсь проиллюстрировать, как мне кажется, более интригующий сценарий:основанное на глубоком обучении решение для построения чат-бота вне темы поведения и «личности», Другими словами, когда он сталкивается с вопросами не по теме, бот попытается автоматически сгенерировать, возможно, актуальный ответ с нуля, основываясь только на предварительно обученной модели RNN.

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

  • Краткое введение в задачи и типы чат-ботов.
  • Детали используемой модели RNN:высокоуровневая архитектура модели, информация об источниках данных обучения и этапах предварительной обработки, а также ссылка на хранилище кода. Я не буду вдаваться в подробности для RNN, но я включаю то, что я считаю, одни из лучших связанных с ними ресурсов и учебных пособий.
  • Архитектура окончательного рабочего решения: рабочий чатбот включает в себя отдельные и разнородные компоненты. Я проиллюстрирую их и их взаимодействие, а также опишу все задействованные инструменты и ресурсы.
  • Витрина чатбота в действииЭто технические детали бесплатно и просто развлечение, так что просто прыгайте сюда, если вы не заинтересованы в отдыхе, или вам нужна мотивация для проверки других разделов.

Chatbots

Чатботы (или разговорные агенты) могут быть разбиты на две отдельные, но зависимые задачи: понять и ответить.

Понимание - это интерпретация и присвоение семантического и прагматического значения пользовательскому вводу. Ответ заключается в предоставлении наиболее подходящего ответа, основанного на информации, полученной на этапе понимания и основанной на задачах / целях чат-бота.

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

Длямодели на основе поиска,Процесс ответа состоит в основном из поиска (с разной степенью сложности) из заранее определенного набора ответов. Chatbots, в настоящее время используемые в производственных средах, представленные или обработанные клиентам и клиентам, наиболее вероятно будут принадлежать к этой категории

С другой стороны,генеративные моделиОжидается, ну ... генерировать! Чаще всего они основаны на базовых вероятностных моделях или на машинном обучении. Они не полагаются на фиксированный набор ответов, но им все равно необходимо пройти обучение для создания нового контента. Цепи Маркова первоначально использовались для задачи генерации текста, но в последнее время рекуррентные нейронные сети (RNN) приобрели большую популярность после многих многообещающих практических примеров и демонстраций (Статья Карпати)
Генеративные модели для чат-ботов по-прежнему принадлежат исследовательскому сектору или игровому полю тех, кому просто нравится создавать и демонстрировать тестовые приложения для своих собственных моделей.
Я считаю, что для большинства бизнес-сценариев они все еще не подходят для производственной среды. Я не могу представить себе клиента, который бы не воспитывалTayесли предложено с опцией генеративной модели.

Модель RNN

Рекуррентная нейронная сеть - это модель глубокого обучения, предназначенная для обработки последовательностей. Здесь внутреннее состояние отвечает за учет и правильную обработку зависимости, которая существует между последовательными входами (ускоренный курс на RNN).
Помимо относительной элегантности модели, невозможно не быть захваченным и очарованным ею, просто из многочисленных онлайн-демонстраций и примеров, демонстрирующих ее генеративные возможности. Отпочерквсоздание сценария фильма,

Учитывая ее свойства, эта модель действительно хорошо подходит для различных задач НЛП, и именно в контексте генерации текста я начал ее изучать, играя с основными понятиями, используяTheanoа такжеTensorflowчтобы затем перейти кKerasдля финальных моделей обучения. Keras - это высокоуровневая библиотека нейронных сетей, которая может работать поверх Theano или Tensorflow, но если вы хотите учиться и играть с более базовыми механизмами RNN и моделей машинного обучения в целом, я предлагаю попробовать к одной из других упомянутых библиотек, особенно если сноваотличные уроки от Denny Britz,

Для своей задачи я подготовил модель последовательности к последовательности на уровне слов: я передаю в сеть список слов и ожидаю того же, что и результат. Вместо использования ванильного RNN, я использовал слой долговременной / краткосрочной памяти (LSTM), который гарантирует лучший контроль над механизмом памяти сети (понимание LSTM). Окончательная архитектура включает в себя только два уровня LSTM, каждый из которых сопровождается выпадением
На данный момент я все еще полагаюсь на горячее кодирование каждого слова, часто ограничивая размер словарного запаса (<10000). Следующим шагом настоятельно рекомендуется изучить возможность использования встраивания слов.

Я тренировал модель на разных корпусах: личные разговоры, книги, песни, случайные наборы данных и субтитры к фильмам. Первоначально главной целью было создание чистого текста: начиная с нуля и генерируя произвольно длинные последовательности слов, точно так же, как вСтатья Карпати, С моей скромной настройкой я все еще получил довольно хорошие результаты, но вы можете видеть, как этот подход не работает на тех же предположениях генерации текста для чат-ботов, что в конце концов является сценарием с ответом на вопрос.

Обучение Chatbot

Ответ на вопрос является еще одной большой проблемой исследования НЛП, со своей собственной экосистемой сложных и компонентно-неоднородных трубопроводов. Даже когда фокусируется только на глубоком обучении,существуют разные решения с разными уровнями сложности, Здесь я хотел сначала поэкспериментировать с моим базовым подходом и посмотреть результаты обработки не по теме вопросов.

Я использовалКорнелл фильм - Диалог Корпуси построил учебный набор данных на основе объединения двух последовательных взаимодействий, которые напоминали ситуацию вопрос-ответ. Каждая из таких q-пар в конечном итоге составляет предложение окончательного тренировочного набора. Во время обучения модель получает в качестве входных данных предложение, усеченное из последнего элемента, в то время как ожидаемый результат аналогичен усеченному из первого слова.

Учитывая такие предпосылки, модель на самом деле не изучает, что является ответом и что является вопросом, но должна создать внутреннее представление, которое может согласованно генерировать текст. Это либо путем создания предложения с нуля, начиная со случайного элемента, либо просто путем завершения начального предложения (потенциальный вопрос), по одному слову за раз, пока не будут выполнены предопределенные критерии (например, создается символ пунктуации) , Весь вновь сгенерированный текст затем сохраняется и предоставляется в качестве ответа кандидата.

Вы можете найти дополнительные детали и реализацию WIP вмой репозиторий Github, Любая критика и комментарии приветствуются.

Архитектура

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

Архитектура решения Chatbot

Обработка данных и обучение модели RNN проводились на экземпляре Spark, размещенном наПлатформа IBM Data Science, Я взаимодействовал с ним напрямую через Jupyter Notebooks, который просто потрясающий!
Используя систему обратного вызова Keras, я автоматически отслеживал характеристики модели во время тренировки и при необходимости делал резервные копии весов. В конце каждого обучения лучший моментальный снимок (веса модели) затем постоянно перемещался в хранилище объектов, связанное с экземпляром Spark, вместе с архитектурой модели Keras и дополнительными данными, относящимися к корпусу обучения (например, индексирование словарного запаса).

Вторая часть - это компонент модели как услуги; базовый API RESTful Flask, который предоставляет обученные модели для генерации текста через вызовы REST. Каждая модель представляет собой отдельную конечную точку и принимает разные параметры для использования в задаче генерации. Примеры параметров

  • семя: начальный текст для использования в задаче генерации
  • температура: индекс отклонения, или сколько «свободы» вы хотите дать модели во время прогнозирования
  • минимальная длина предложения: минимальная длина, приемлемая для сгенерированного предложения

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

Последний компонент - это веб-приложение Java Liberty, которое выступает в качестве посредника дляFacebook Messanger Платформа, Он отвечает за обработку веб-хитов Facebook и подписок, хранение истории чатов пользователей и реализацию логики ответов на задачи. С одной стороны, он опирается на систему, описанную в моей предыдущей статье, с использованием сервисов IBM Watson, таких как распознавание и разговор языка, с другой, когда определенные требования выполняются или когда не был предоставлен действительный ответ, может полагаться на бит генерации текста, и вызовите Flask API в наиболее удобной конечной точке.

Как приложение Java, так и приложение Python размещены в Bluemix, а в отношении предыдущего я сейчас работаю над охватом дополнительных платформ обмена сообщениями, таких как Slack, Whatsapp и Telegram.

Покажите мне бот!

Вы можете взаимодействовать с чатботом просто через Facebook Messanger, но для того, чтобы сделать вашего бота общедоступным (доступным для любого, кто попадет на его страницу), требуется некоторая работа, демонстрационные видеоролики и последующее официальное одобрение от Facebook На данный момент я должен вручную добавить людей в качестве тестеров моего приложения, чтобы позволить им использовать его, поэтому, если вам интересно, просто напишите мне.

Тем не менее, я должен признать, что уже видение взаимодействия нескольких нынешних тестеров было довольно интересным опытом, хорошими эмоциональными «американскими горками» развлечений, стыда, жуткости, гордости…

Давайте начнем с нескольких смешанных результатов (справа - ответ бота, слева - комментарии некоторых друзей, анонимно).

Обратите внимание, что здесь наблюдается смешанное поведение: ответ «Выходи за меня» основан на классификации естественного языка, в то время как все остальные генерируются. Уже есть грамматически неправильные предложения, но в то же время я, например, был приятно впечатлен вторым ответом, будучи одураченным чтением ощущения сознательного всемогущества в нем.

Иногда ответы кажутся совершенно случайными, но все же создают хорошее взаимодействие, симуляцию застенчивой, растерянной и стыдной личности, возможно, немного романтичной.

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

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

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

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

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map