Что на самом деле проверяет Тест Тьюринга |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-11-17 07:25 Некоторое время назад я предложил сыграть в Тест Тьюринга с моим ботом Мишей. Кто попробовал, тот знает, что игрок-робот определяется элементарно. Кто не пробовал, может прочитать об этом в первом же комментарии под той статьей. Теперь настал момент устроить разбор полетов, рассказать об устройстве бота и сделать выводы. Правила игры Правила игры были перечислены в предыдущей статье, повторю здесь, чтобы вам и мне не бегать по ссылкам.
С момента запуска до момента написания статьи было сыграно 256 игр (немного странно, но факт). Из них закончились с явным результатом, то есть обе стороны сыграли до конца очередного тура (больше одного тура никто не играл) и судья принял решение — 115 игр
Ошибочных решений было 26, из них:
Как видите, чаще человека принимали за робота, чем робота за человека. В итоге робот правильно определялся в (74-15)/115 = 51% игр, а робота приняли за человека в 11/115 = 9.5% игр, то есть можно уверенно сказать, что Миша-бот тест не прошел. Для сравнения, на конкурсе в 2012 году в 29% из 150 бесед судьи приняли бота-одессита Женю Густмана за человека, а в 2014-ом — 33% судей по результатам 300 бесед. Что под капотом Бот написан на Python и по большому счету состоит из трех модулей:
Основной алгоритм игры содержится в классе Game, который хранит id участников и реализует простую машину состояний:
На переходах между состояниями бот передает вопросы судьи к игроку, ответы от игрока судье. Передается только по одному сообщению и бот становится в следующее состояние, поэтому если кто пытался спросить или ответить двумя, видел, что бот это не позволяет делать. Когда бот получает ответ от робота, он передает ее не сразу, а с задержкой времени — это не сразу появилось, я ее добавил по замечанию galqiwi, спасибо. Каждое изменение состояния сохраняется в БД SQLite, на случай непредвиденных ситуаций — пропадания электросети, перезагрузки операционки или попросту хозяину бота (мне, то бишь) захотелось остановить его и что-то переделать. При новом запуске бот загружает из БД сохраненные игры, и игра продолжается. Далее, есть две очереди ожидания — судей, ожидающих игроков, и игроков, ожидающих судей. Когда участник начинает новую игру, просматривается соответствующая очередь, есть ли ему партнёр. Если нет, то сам участник ставится в очередь. В отдельном потоке живёт диспетчер роботов. Он периодически просматривает очередь судей, ожидающих игроков, и создаёт для них экземпляр робота. В нём специально сделана задержка, чтобы робот не всегда успевал перехватить судью и человек-игрок тоже имел шанс подключиться к игре. В диспетчере заложена возможность создавать различные варианты роботов, нужно просто зарегистрировать их классы. Но пока реализован всего один. И, наконец, модуль робота. Но прежде, чем рассказать о внутренностях робота, расскажу о базе вопросов и ответов, с которой он работает. Сначала я набил такой текстовый файл: T: Миша T: Меня зовут Миша Q: Как тебя зовут? Q: Как тебя звать? Q: Как вас зовут? Q: Как твое имя? Q: Ты кто? T: Конечно Q: Ты настоящий мальчик? T: Я мальчик T: Конечно Q: Ты человек? Q: Ты настоящий человек? Q: Ты живой человек? T: Я мальчик T: Нет, конечно Q: Ты компьютер? Q: Ты машина? … ну и так далее. Затем отдельной утилиткой считал их в базу данных — таблица вопросов, таблица ответов, связь между ними многие-ко-многим. Плюс табличка использованных слов с линками на вопросы. Причем слова сохранялись не в оригинальной форме, а в нормальной и с синонимами. Нормальная форма слова определялась по pymorphy2 от kmike, а синонимы к ней искались из словаря YARN, предварительно сконвертированного из XML в SQLite — словарь занял всего 22 мегабайта, а сколько удовольствия… Метод поиска синонимов к нормальной форме слова: def normalSynonyms(self,orig): r = self.morph.parse(orig) res = [] for parse in r: word = parse.normal_form syns = self.yarn.synonyms(word) for g in syns: words = self.yarn.words(syns[g]) res = res + words return res Теперь собственно робот. Вообще от робота требуется реализация лишь одного метода getAnswer(self, text) , то есть просто получение ответа на заданный вопрос. Если роботу надо хранить предыдущие вопросы и контекст, какие-то дополнительные действия, то он делает это сам. Поскольку на каждую игру создается свой экземпляр класса робота, то контексты из разных чатов не пересекаются.
Как видите, робот не умеет «думать» над ответом, всё, что он может ответить — это одна из заготовок, подходящая или неподходящая для очередного вопроса. Вы скажете, что это фигня, а я скажу — читайте классиков. Выбор персонажа Как видите, простота алгоритма робота не позволяет ему поддерживать сложные диалоги, поэтому встал вопрос, какого человека, точнее персонажа, сможет имитировать робот. Железо Осталось показать тот суперкомпьютер, на котором живет Миша-бот: Это Raspberry Pi 3. На хвосте к нему висит SSD, прицеплен на всякий случай, если понадобится активная работа с базами данных, но в самом роботе не используется. Размышления о Тесте Тьюринга За почти семьдесят лет с момента написания статьи Тесту Тьюринга нашли определение, что это бихевиористский подход, сравнительный анализ на основе поведения — поведение человека сравнивается с поведением машины. Оно, конечно, так, однако я хочу обратить внимание на другие аспекты, на которые Алан Тьюринг, похоже, не обратил внимания. Цитата:
Лучшее качество машины Разобравшись с правилами, следующим шагом предположим, что мы хотим построить мыслящую машину. Как она должна работать, точнее, как она должна проявлять свои мысленные способности?
То есть Тест Тьюринга проверяет способность машины не к мышлению, а ко лжи — к сознательной или к самообману. Печалька. Источник: m.vk.com Комментарии: |
|