Какой алгоритм стоит за игрой Akinator?

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

Ответ 1

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

В этой проблеме классификации функции алгоритма являются ответами на вопрос.

Решение вопроса о том, какой вопрос следует задать, может быть выполнено различными способами - например, путем максимизации прогнозируемого (или среднего) entropy из следующего вопроса.

Ответ 3

Основные характеристики алгоритма:

  • Self-просвещение
  • Ошибки-снисходительность
  • Интеллектуальная система следующего вопроса выбирает

Модель игрового алгоритма Akinator называется "Экспертная система, основанная на нечеткой логике".

И это НЕ деревья принятия решений, потому что у него нет ошибок - снисходительность.

Я писал один раз на С#, вы можете найти его по ссылке: https://github.com/ukushu/AkinatorEngine

Ответ 4

Я думаю, что это похоже на экспертную систему с структурой B-Tree.

Ответ 5

Я не знаю, какой именно алгоритм использует Akinator, но здесь я поместил в open-source алгоритм, который обеспечивает тот же эффект: https://github.com/srogatch/ProbQA.

Обычно мы используем куб из N(Questions) умноженные на N(Answer Options) умноженные на N(Targets), см. Https://github.com/srogatch/ProbQA/blob/master/ProbQA/PqaCore/CpuEngine.decl.h.

Мы обучаем куб, применяя байесовскую формулу с предположением независимости, см. Https://github.com/srogatch/ProbQA/blob/master/ProbQA/PqaCore/CEEvalQsSubtaskConsider.cpp

Поскольку код сильно оптимизирован для AVX2 и многопоточности, его может быть сложно прочитать. Может быть проще прочитать код CUDA для того же: https://github.com/srogatch/ProbQA/blob/master/ProbQA/PqaCore/CudaEngineGpu.cu

Применение этого алгоритма также доступно в качестве веб-сайта, чтобы рекомендовать игру.