НЕЙРОСЕТЕВОЙ ЧАТ - БОТ.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Motaro, 22 Sep 2016.

  1. Motaro

    Motaro New Member

    Joined:
    15 Jul 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Предлагаю осудить проблему создания Чат-бота нового поколения ,на базе рекуррентной сети.
    Данная схема была реализована в Чат-Боте от Gooogle . Эта система яко бы дает более интересные данные чем база вопрос-ответ. Сам я тему понял слабова-то . Поэтому привожу фрагмент из чужой статьи. Давайте обсудим как подобное реализовать в алгоритмах ,которые в последсвии можно будет перевести в коды программные.
    Потому как статья написана в общем виде. Может кто-то пытался сделать такое. В общем пора и русским сделать Хорошего Чат- Бота ,а не только забугрцам)



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

    Самая простая модель берет соединение последовательности векторов слов контекста и ответа и подает все это на обычный полностью соединенный слой. Поскольку ответ бывает разной длины, его записываем в вектор длины фиксированной, заполняя “лишнее” место нулями. Считается, что это плохо. Посмотрим.

    Второй вариант отличается тем, что до “смешивания” контекста и ответа им дан “свой собственный” слой для формирования представления. Ну и дальше может быть несколько слоев обработки, на рисунке показано два.

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

    [​IMG]



    Результаты
    По способности выбирать правильный ответ из нескольких предложенных вариантов (случайно взятых ответов), самый лучший результат показала модель номер 2, с пятью слоями для анализа данных по 700 нейронов в каждом (+1 слой репрезентации входных данных, тоже из 700 нейронов). Чтобы обучить такую глубокую сеть, пришлось использовать Хайвей (Highway) слои, которые позволяют информации проще распространятся от нижних слоев к верхним, также подождать несколько дней пока модель рассчитывалась на GPU. Модель номер 1 явно недообучилась, а номер 3 долго думала, и тоже не добрала до результатов модели номер 2 несколько процентов. Что напоминает нам о том, хотя самые простые модели не годятся для больших объемом данных, все же никогда не следует умножать сущности сверх необходимости.

    Получившаяся система располагает базой в 30 миллионов пар реплик, а нейронная сеть имеет около 3 млн. обучаемых параметров.

    Какие же диалоги можно в результате получить?

    Ч: Привет
    К: привет.
    Ч: Как твои дела?
    К: Не знаю.
    Ч: Как тебя зовут?
    К: меня зовут юнис.
    Ч: Сколько тебе лет?
    К: Пятнадцать.
    Ч: Где ты живешь?
    К: Дома.
    Ч: ты учишься в школе?
    К: Нет
    Ч: а где ты учишься?
    К: в бундесвере.
    Ч: Ты любишь музыку?
    К: да, я люблю музыку.
    Ч: Какая музыка тебе нравится?
    К: в основном я слушаю r&b, фанк.
    Ч: Ты веришь в бога?
    К: я и сейчас верю в бога, старина
    Ч: что такое мораль?
    К: два человека вместе — разве это не мораль?
    Ч: какого цвета море?
    К: цвета океана после шторма.

    Достаточно хорошо, на мой взгляд. Вот еще пример:

    Ч: Где живет бегемот?
    К: Жил
    Ч: а что, сейчас не живет?
    К: Я не знаю.
    Ч: тогда где он жил раньше?
    К: у парка, на мэйпл стрит.
    Ч: куда же он пропал?
    К: куда он пропал?
    Ч: я тебя спрашиваю, куда он пропал?
    К: я не понимаю, почему я снова в больнице.
    Ч: потому что ты болеешь
    К: я просто хочу помогать людям.
    Ч: Тогда скажи мне, где бегемот!
    К: почему ты так сильно хочешь это знать?
    Ч: просто ответь мне
    К: ты хочешь, чтобы я помогла тебе попрощаться с родными?
    Ч: Это угроза?
    К: Наблюдение
    Ч: Так где же все-таки бегемот?
    К: он на гавайях, но радж управляет отсюда
    Ч: Кто такой радж?
    К: не встречалась с ним?
    Ч: Нет, никогда
    К: жили-были муж с женой, только муж каждую ночь исчезал.
     
    #1 Motaro, 22 Sep 2016
    Last edited: 22 Sep 2016