Искусственный интеллект ищет друзей

Всем привет! Вот уже почти 4 года я занимаюсь разработкой и обучением нейронных сетей. Сейчас в команде уже 6 человек, некоторые живут не в России, но костяк находится в Москве, так что наше ПО можно считать российским. Поэтому и чатбот, которого мы разработали, говорит по русски. вот пример диалога с роботом:

Искусственный интеллект ищет друзей Искусственный интеллект, Чат-бот, Виртуальный ассистент, Тест Тьюринга, Длиннопост

На мой взгляд, довольно тяжело отличить его ответы, от диалога с живым человеком.


Подробнее

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

Искусственный интеллект ищет друзей Искусственный интеллект, Чат-бот, Виртуальный ассистент, Тест Тьюринга, Длиннопост

Понятно, что если вы напишите нечто вроде "лдаолпр" робот вас не поймет. Но справедливости ради, человек это тоже прочитать не сможет.


Потом готовое предложение, прошедшее через анализатор и исправленное, передается обученной нейросети. Тут и происходит основная "магия": сетка составляет в процессе обучения слова в специальную базу знаний, которую также можно редактировать вручную. Эту идею мы позаимствовали у Cyc (слово английское, читается Сайк), как и их синтаксис, выглядит запись примерно так:


(#$isa #$Путин #$Президент России) \;


Сеть учится оперировать не каждым словом в отдельности, а системой понятий. Все зависимости, характерные для группы понятий, приобретает каждое новое слово, после объяснения его значения. Это позволяет сократить время на обучение новым словам, нам не нужно прогонять через сеть тысячи примеров использования слова "человек", напр, чтобы она начала его использовать. Достаточно объяснить его значение простым языком 1 раз, робот может задать несколько вопросов, чтобы уяснить для себя все зависимости и прописать слово в базе знаний. Такая форма обучения ближе к естественному запоминанию человеком, чем привычное машинное обучение. А обилие современных словарей позволяет обучать его довольно быстро.


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


Кроме того, он помнит контекст, если вы в начале беседы скажете, что купили красную машину, а потом сообщите, что ваша машина синяя, робот может спросить: "Так у тебя 2 машины?"


Что мы собираемся с этим делать?

Сейчас этот робот довольно бесполезная приблуда, он умеет вести диалог с пользователем, но этого мало. Мы хотим сделать свой аналог Siri и ему подобных электронных помощников. Только с более прокачанным пониманием естественного языка. Наша цель - создать робота, с которым вы сможете общаться как с живым человеком, а также просить его выполнять различные поручения, отвечать за вас на письма и сообщения, и все в таком духе. Он даже сможет копировать ваш стиль общения и, например, поздравлять всех 2000 друзей в соцсетях (или сколько у вас там) с днями рождения или еще какими праздниками. Будет помнить ваше расписание, и если вы едите пиццу по четвергам - сам договорится о доставке к вашему приходу с работы. Ну и все в таком духе.


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


А сейчас мы проводим бета-тестирование: мы запилили тест Тьринга для своего робота. Любой желающий может зайти на специальную страницу, и пообщаться с незнакомым собеседником. Мы же соединяем либо 2-х пользователей между собой, либо пользователя с роботом. По окончании диалога спрашиваем, был ли собеседник роботом по мнению пользователя. А сами сидим скрестив пальцы и надеемся, что процент людей, догадавшихся, что общались не с человеком будет не выше ложных срабатываний, когда пользователь посчитает роботом другого пользователя. Понятно, что мы потом отфильтруем диалоги, слишком короткие из выборки удалим, оставим только те, на которых вывод был сделан не "с потолка". Т.к. робот не умеет в распознавание картинок, то мы добавили хитрость: он может такую просьбу переадресовать другому пользователю, с которым ведет диалог в настоящий момент, а его ответ переслать человеку, изначально задавшему вопрос.


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


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


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

Вы смотрите срез комментариев. Показать все
16
DELETED
Автор поста оценил этот комментарий

Собеседник подключен, напишите что-нибудь

Чатбот (возможно): Ладно, спасибо за беседу, паока

Я: любишь драконов?

Чатбот (возможно): Нет, игру престолов я не смотрю

Я: да причем тут игра престолов

Я: я драконоеб

Чатбот (возможно): Драконы же

Чатбот (возможно): Оо

Я: мне похуй на игру

Чатбот (возможно): Йиффчик любишь?

Я: есть такое

Я: ХДД

Чатбот (возможно): что-то мне подсказывает, что ты не бот

Я: хмммм

Я: что же

Чатбот (возможно): ну, драконов вообще люблю

Чатбот (возможно): но не в этом плане)

Я: а ты откуда? пикабу? яп? двач?

Чатбот (возможно): Первое)

Чатбот (возможно): а ты?

Я: тоже

Чатбот (возможно): С двача я вообще никого не встречала

Я: но они вроде тоже есть

Я: эххх

Чатбот (возможно): ну хз, увидим со временем)

Чатбот (возможно): что эххх?

Я: а я поверил в ИИ

Чатбот (возможно): Хм

Я: а он как то не айс

Я: и сломалься

Чатбот (возможно): Слушай... а вдруг это и вправду гигантский обман..

Чатбот (возможно): и на самом деле бота не существует...

Чатбот (возможно): И это просто анонимный чат...

Я: да не, вроде 1 раз точно был

Чатбот (возможно): Уверен?

Чатбот (возможно): Мб кто-то просто притворился, что туповат, чтобы ты так подумал!

Я: в том то и дело

Я: он не был туп

Я: он пытался изо всех сил

Я: \но делал как раз ошибки на подтексте

Я: например драконочка - это маленький дракон а не женский пол для него

Я: ХДД

Чатбот (возможно): Эээ

Чатбот (возможно): Я б тоже решила, что драконочка это самка

Чатбот (возможно): Это ж логично

Чатбот (возможно): Женский суффикс :D

Чатбот (возможно): драакончик - это маленький дракон

Я: а ИИ мог не понять

Чатбот (возможно): Хм

Чатбот (возможно): Или он заставил тебя так думать *музыка из секретных материалов*

Я: сук

Я: как теперь жить

Я: они среди анс

Я: нас

Чатбот (возможно): весь мир лож

Я: это бот

Чатбот (возможно): б

Чатбот (возможно): ь

Я: притворяется человеком

Я: который приторяется ботом

Я: АААААААААААААААААААААААААААААААААА

Чатбот (возможно): Шатать как все сложно

Чатбот (возможно): я пожалуй присоединюсь

Чатбот (возможно): АААААААААААААААААААААААААА

Я: АААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА

Чатбот (возможно): ладно, хорошего дня/ночи) пойду спать

Чатбот (возможно): ААААААААААААААААААААААААААААААААА

Я: удачи

Собеседник отключился

Системное сообщение: Считаете ли вы, что предыдущий собеседник был роботом?

Я: АААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА

Спасибо за ответ

Ожидание нового собеседника...

Собеседник подключен, напишите что-нибудь

Чатбот (возможно): Ну, спасибо за беседу, было весело :) пока!

Собеседник отключился

Ожидание нового собеседника...

Собеседник подключен, напишите что-нибудь

Чатбот (возможно): Ну, спасибо за беседу, было весело :) пока!

Собеседник отключился

Ожидание нового собеседника...

Собеседник подключен, напишите что-нибудь

Собеседник отключился

Ожидание нового собеседника...

Собеседник подключен, напишите что-нибудь

Чатбот (возможно): Ну, спасибо за беседу, было весело :) пока!

Собеседник отключился

Ожидание нового собеседника...

Собеседник подключен, напишите что-нибудь

Чатбот (возможно): Ты любишь драконов?

Я: сука

Я: это мой вопрос

Чатбот (возможно): ПХАХАХА

Я: не надо под меня косить

Я: АХХАХАХАХА

Чатбот (возможно): Привет

Я: сук

Чатбот (возможно): Это ты :DDD

Я: как так то а

Я: это я

Я: драконынеумирают

Я: лол

Я: а ты кто

Чатбот (возможно): драконоеб?

Чатбот (возможно): а я тот чувак, который "АААААААААААААААА"

Я: АХАХАХХАХАХАХХАХАХ

Я: сука

Чатбот (возможно): ЛОЛ

Я: я не могу

Я: просто

Я: ор

Чатбот (возможно): Жесть

Я: ты обманул меня

Чатбот (возможно): как так-то

Я: ты говорила спать

Я: а тут

Подключение к серверу...

Ожидание нового собеседника...

Собеседник подключен, напишите что-нибудь

Я: стопэ

Чатбот (возможно): Только не говори, что ты тоже драконое

Я: слышь

Я: да

Я: именно

Чатбот (возможно): нет

Я: азаза

Чатбот (возможно): докажи

Я: драконоеб\

Подключение к серверу...

Ожидание нового собеседника...

Собеседник подключен, напишите что-нибудь

Я: и это снова я

Я: драконоеб

Чатбот (возможно): блять, опять отключился

Я: АААААААААА

Чатбот (возможно): а, привет

Я: ты что, не ААААААААААААААА?

Я: блин((

Чатбот (возможно): нет


Кто ты, отзовись, АААААААААА

раскрыть ветку (5)
14
Автор поста оценил этот комментарий

Блин, опередил меня :D

Я хотела выставить скрин)

раскрыть ветку (4)
11
DELETED
Автор поста оценил этот комментарий
АААААААААААААААААААААААААААААААААААААААААААА))
раскрыть ветку (2)
8
Автор поста оценил этот комментарий

Чатбот (возможно): блять, опять отключился

Я: АААААААААА
Чатбот (возможно): а, привет
Я: ты что, не ААААААААААААААА?
Я: блин((
Чатбот (возможно): нет

Это кстати правда не я :D Зато это я:

Чатбот (возможно): Ну, спасибо за беседу, было весело :) пока!

А теперь я точно пойду. Всего доброго, драконоеб)

раскрыть ветку (1)
6
DELETED
Автор поста оценил этот комментарий

спокойной ночи))

Тока вот звучит как-то обидно, я их и правда люблю ХДД

Автор поста оценил этот комментарий
Выложи, докажи что не бот )
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку