Как акинатор угадывает? На чем основан принцип его распознавания?
Sergey Litvinov дал ссылку на исчерпывающее описание общей сути алгоритма.
Если же вы хотели получить ответ простыми словами, то можно ответить так.
Но это уже детали. А общий принцип таков: каждый раз после вашего ответа у Акинатора «в голове» остаётся список персонажей, которые соответствуют вашим ответам. И каждый раз он старается задать вопрос, который вычеркнет наибольшее число вариантов, пока не останется один вариант.
В реальности алгоритм Акинатора гораздо масштабнее и хитрее описанного. Он учитывает разные нюансы, в том числе, насколько я заметил, он учитывает тренды (например, допустим, персонажей из сериалов чаще загадывают после того, как закончилась очередная серия). Если много других людей незадолго перед вами вдруг загадали какого-то персонажа, высока вероятность, что и вы тоже решили его загадать. Он даже подстраивается под ваши личные интересы. Если вы, например, любите задавать вопросы о вымышленных персонажах (как мой племянник), Акинатор будет ожидать этого и в следующий раз.
Может казаться чудом, что Акинатор за 20 вопросов часто умудряется отгадать вашего персонажа, ведь он, вроде, и вопросов никаких особых не задал. Однако математика нам говорит, что если бы на каждом из 20 вопросов удавалось подобрать такой вопрос, чтобы ответ всегда отсеивал половину вариантов (как вопрос «женщина ли она»?), то 20 вопросов было бы достаточно, чтобы правильно отличать больше миллиона разных персонажей. А 40 вопросов было бы достаточно, чтобы отличить свыше триллиона (!) персонажей. Акинатор спроектирован так, чтобы как можно лучше находить нужные вопросы, и у него это весьма хорошо получается.
Почему не работает навык акинатор
Как мне играть с Акинатором?
Чтобы играть с ним, думаю, задумайте персонажа, реального или вымышленного, хорошо его запомните, а затем выберите в меню «играть > персонажи».
Акинатор начнет задавать вам ряд вопросов, на которые вы должны ответить так правдиво, насколько это возможно. После этого ряда вопросов, он ответит вам, кого вы задумали.
В чем секрет Акинатора?
Как я могу загрузить картинку?
В конце игры, когда Акинатор отгадал задуманного вами персонажа, вы можете добавить или предложить картинку для данного персонажа.
Пользователь соглашается не загружать фотографии, которые нельзя использовать бесплатно и без ограничений.
1. Добавить картинку:
Персонаж, которого вы загадывали, не имеет изображения. Если вы хотите добавить картинку, вы должны нажать на кнопку «Отправить изображение» и следовать инструкциям.
2. Предложить картинку:
Персонаж, которого вы загадывали, уже имеет изображение. Если вы хотите предложить новое, вы должны нажать на кнопку «Предложить изображение» и следовать инструкциям.
— Вы должны заявить, что «Вы прочитали и приняли условия предоставления услуг. Загружая это изображение, вы заявляете, что вы имеете право опубликовать его.»
— Новое изображение будет видно только тогда, когда модератор примет и утвердит его (см. статью 4. Модерация).
Как я могу добавить персонажа?
Персонажи, которые могут быть добавлены в базу данных Акинатора, должны быть известными личностями. Пользователю предлагается не добавлять людей, которые не принадлежат к этой категории, в частности, людей, которых пользователь знает лично, даже если эти люди согласны на это.
1. В конце игры, когда Акинатор отгадал персонажа, которого вы задумали, вы можете изменить имя этого персонажа. Вы должны нажать на кнопку «Предложить новое имя». Вам будет предложено ввести новое имя, очень краткое описание (два-три слова), чтобы не перепутать данного персонажа с его однофамильцем и необязательный комментарий, объясняющий, почему вы хотите изменить имя персонажа. Ваше предложение будет учтено лишь после проверки модератором (см. статью 4. Модерация).
2. В конце игры, если Акинатор не отгадал задуманного вами персонажа, вы можете добавить этого персонажа в базу данных Акинатора.
— Если Акинатор находит сходство с другими персонажами из своей базы данных, он даст вам список этих персонажей.
• Если ваш персонаж присутствует лишь один раз в списке, вам просто нужно выбрать его.
• Если ваш персонаж присутствует несколько раз в списке, вы должны нажать на кнопку «Мой персонаж виден несколько раз», а затем выделить все экземпляры данного персонажа в списке.
• Если ваш персонаж отсутствует в списке, вы должны нажать на кнопку «Мой персонаж отсутствует в списке» и ввести его имя и короткое описание.
— Если Акинатор не может найти сходство ни с одним персонажем из его базы данных, вы сможете добавить своего персонажа, введя его имя и короткое описание.
— В любом случае, то, что вы добавили, будет немедленно внесено в базу, но может быть удалено модератором позже (см. статью 4. Модерация).
Как я могу добавить вопрос?
В конце игры, когда Акинатор отгадал персонажа, которого вы задумали, вы можете добавить вопрос, нажав на кнопку «Добавить вопрос». Вы должны будете ввести одно или несколько ключевых слов из вашего вопроса.
— Если Акинатор находит сходство с существующим в его базе данных вопросом, он выдаст вам список вопросов.
1. Если ваш вопрос присутствует в списке, вы должны выбрать его и добавить информацию к нему.
Все, что вы хотели знать об Акинаторе
Как мне играть с Акинатором?
Чтобы играть с ним, думаю, задумайте персонажа, реального или вымышленного, хорошо его запомните, а затем выберите в меню «играть > персонажи».
Акинатор начнет задавать вам ряд вопросов, на которые вы должны ответить так правдиво, насколько это возможно. После этого ряда вопросов, он ответит вам, кого вы задумали.
В чем секрет Акинатора?
Как я могу загрузить картинку?
В конце игры, когда Акинатор отгадал задуманного вами персонажа, вы можете добавить или предложить картинку для данного персонажа.
Пользователь соглашается не загружать фотографии, которые нельзя использовать бесплатно и без ограничений.
1. Добавить картинку:
Персонаж, которого вы загадывали, не имеет изображения. Если вы хотите добавить картинку, вы должны нажать на кнопку «Отправить изображение» и следовать инструкциям.
2. Предложить картинку:
Персонаж, которого вы загадывали, уже имеет изображение. Если вы хотите предложить новое, вы должны нажать на кнопку «Предложить изображение» и следовать инструкциям.
— Вы должны заявить, что «Вы прочитали и приняли условия предоставления услуг. Загружая это изображение, вы заявляете, что вы имеете право опубликовать его.»
— Новое изображение будет видно только тогда, когда модератор примет и утвердит его (см. статью 4. Модерация).
Как я могу добавить персонажа?
Персонажи, которые могут быть добавлены в базу данных Акинатора, должны быть известными личностями. Пользователю предлагается не добавлять людей, которые не принадлежат к этой категории, в частности, людей, которых пользователь знает лично, даже если эти люди согласны на это.
1. В конце игры, когда Акинатор отгадал персонажа, которого вы задумали, вы можете изменить имя этого персонажа. Вы должны нажать на кнопку «Предложить новое имя». Вам будет предложено ввести новое имя, очень краткое описание (два-три слова), чтобы не перепутать данного персонажа с его однофамильцем и необязательный комментарий, объясняющий, почему вы хотите изменить имя персонажа. Ваше предложение будет учтено лишь после проверки модератором (см. статью 4. Модерация).
2. В конце игры, если Акинатор не отгадал задуманного вами персонажа, вы можете добавить этого персонажа в базу данных Акинатора.
— Если Акинатор находит сходство с другими персонажами из своей базы данных, он даст вам список этих персонажей.
• Если ваш персонаж присутствует лишь один раз в списке, вам просто нужно выбрать его.
• Если ваш персонаж присутствует несколько раз в списке, вы должны нажать на кнопку «Мой персонаж виден несколько раз», а затем выделить все экземпляры данного персонажа в списке.
• Если ваш персонаж отсутствует в списке, вы должны нажать на кнопку «Мой персонаж отсутствует в списке» и ввести его имя и короткое описание.
— Если Акинатор не может найти сходство ни с одним персонажем из его базы данных, вы сможете добавить своего персонажа, введя его имя и короткое описание.
— В любом случае, то, что вы добавили, будет немедленно внесено в базу, но может быть удалено модератором позже (см. статью 4. Модерация).
Как я могу добавить вопрос?
В конце игры, когда Акинатор отгадал персонажа, которого вы задумали, вы можете добавить вопрос, нажав на кнопку «Добавить вопрос». Вы должны будете ввести одно или несколько ключевых слов из вашего вопроса.
— Если Акинатор находит сходство с существующим в его базе данных вопросом, он выдаст вам список вопросов.
1. Если ваш вопрос присутствует в списке, вы должны выбрать его и добавить информацию к нему.
2. Если ваш вопрос отсутствует в списке, вы должны нажать на кнопку «Нажать сюда», чтобы добавить свой вопрос и добавить информацию к нему.
— Если Акинатор не находит сходства с любой из существующих в его базе данных вопросом, вы сможете добавить свой вопрос и добавить информацию к нему.
— Все предлагаемые вопросы будет добавлены в базу лишь после утверждения их модератором (см. статью 4. Модерация).
Акинатор сломался?
Вот, что спросил у меня Акинатор при отгадывании. Может, есть варианты что это такое?
Уважаемые пикабушники, сила пикабу!!
Еду с сыном инвалидом колясочник ом и супругой в сторону дома в Сыктывкар на стареньком бусике Мицубиси. В районе Лермонтово Пензенской обл затроил двиг, не тянет. Свечи и тд проверил. Симптомы перескочил ремень грм на пару зуб. Ночь переночевали возле заправки но на заглушенном двиг это очень холодно. Кто подскажет в Пензе сто? Гребаный локлаун а мы на трассе замерзаем Без рейтинга.
Пробки в Германии.
Вампиры
Главное вежливость
[Самый страшный пост]
Однажды ты зайдёшь на свою любимую пикабушечку, а у тебя уже будет висеть оповещение, как и у всех пикабушников и пикабушниц. Открыв его ты увидишь то, что заставит кровь стынуть в жилах:
«Уважаемые пользователи. Сегодня Пикабу переходит под управление Mail(точка)ru group! Поздравляем!»
Об уборке
Как ходят нормальные девушки и как ходят девушки из GTA
Самое неприятное во взрослой жизни это то, что папа, такой большой и надёжный, тот, который знает всё на свете и всегда поможет словом и делом, тот, который накажет всех плохих, а тебя возьмёт на ручки, тот, который щедрый и купит все-все игрушки, о которых ты мечтаешь, и научит интересному, и расскажет обо всем, и ещё много-много всего.
. это теперь ты.
Предпродажная подготовка
Летучую обвинили во лжи
Елена Летучая, которая занимает пост худрука в «Высшей школе «Останкино»», встала на защиту вуза в скандале с отчислением студенток за лайки. Она заявила, что девушек отчислили за то, что они якобы недовольны указами Путина и Собянина.
«Наши бывшие теперь уже студентки решили, что саботирование подобных антиковидных мер — лучшее, что можно было предпринять на сегодняшний день», — заявила она.
Народ, который умеет в гугл массово возмутился, и никадил Летучей кучу сообщений
По началу Елена удаляла сообщения, но это разозлило людей еще больше.
Потом она обвинила всех в том, что это не люди, а боты.
Далее она вообще закрыла комментарии.
а вчера и вовсе улетела на Мальдивы, что, я так понимаю, очень поддерживает антиковидные ограничения.
Ну почему в этой стране так-то?
Ну ясно же, что за аккаунт отвечал какой нибудь ССМщик, ну извинись ты, реши проблему.
Обучение-то платное.
Почему надо лезть в бутылку и доводить до абсурда.
Вот куче народов эта Летучая в хрен не брякала, вместе с этой школой. а теперь её знают как лживую лицемерную стерву.
Вот оно ей надо было?
В нашей стране институт репутации не работает совершенно.
А зря.
напомню, что скандал разгорелся после отчисления студенток из-за лайков.
Потому
Карп Евгений
Впитала роль с молоком матери
Слева: Энрика Сома с дочерью Анжеликой Хьюстон на руках, 50-е
Справа: Анжелика Хьюстон в образе Мортиши Аддамс, 90-е
Не обращайте внимание папа просто мертвый
Одна из самых известных в США фитнес-блогерш Джейн Ривера, известная также своими постами о моде и путешествиях, выложила в Instagram и TikTok фотографии, на которых она снята на фоне открытого гроба с телом ее отца.
Ривера выложила не менее восьми фото, на которых она в наряде с глубоким декольте позирует возле гроба, то улыбаясь, то томно опуская глаза.
P.S Подумаешь папаня умер, это же не повод упустить такую возможность, покрасоваться возле такого симпатичного гроба.
Картина маслом
Несчастная «лошадь»
«В Ярославле снимали выноску окна к сцене “Афоня просыпается в комнате Кати” (фильм “Афоня”).. Снимать надо было в пять утра. (Утренний режим — солнце еще не взошло, но уже светает.) По задумке там, за окном, должны были возвращаться со свадьбы молодожены. Но в половине пятого выяснилось, что свадебное платье невесты забыли в Москве. Я уже хотел снимать просто пейзаж, но тут оператор Сергей Вронский показал мне на лошадь, которая тащила телегу с бочкой.
— Пусть эта телега проедет, — сказал он.
Первой на этот кадр обратила внимание жена художника Левана Шенгелия Рита.
— Как ты это потрясающе придумал, — сказала она мне после просмотра на “Мосфильме”. — Как это точно!
— Что точно? — осторожно спросил я.
— Лошадь! Он делает предложение — а потом лошадь. Вот и Катя, как эта несчастная лошадь, будет тащить груз омерзительного, пьяного хамства и нищеты всю жизнь! Ведь так?
Через год “Афоню” показывали в Лос-Анджелесе в большом кинотеатре. Рядом со мной сидел классик американского и мирового кино, тбилисский армянин Рубен Мамулян. Когда на экране появилась лошадь с бочкой, раздались аплодисменты. После просмотра я его спросил:
— Рубен, а почему аплодировали, когда появилась лошадь?
— Не думай, что американцы такие тупые, как пишут ваши газеты. Что тут понимать? Он спрашивает: “Ты замуж за меня пойдешь?” И сразу — лошадь с повозкой. Замужем за ним она и будет, как эта лошадь. Я угадал?
И я опять не стал уточнять. Кому интересны лишние подробности?»
Георгий Данелия
«Безбилетный пассажир»
Акинатор и математика
Функциональные требования
Алгоритмы
Если бы не прощение ошибок, добиться желаемого можно было бы довольно просто. Например, можно было бы хранить дерево ответов на вопросы, в котором внутренние вершины соответствовали бы вопросам, а листы — ответам. Процесс игры тогда выглядел бы как спуск от корня к одному из листов. Тем не менее, с прощением ошибок этот алгоритм справляться не будет. Да и вопросы балансировки дерева возникают.
В каком-то смысле дерево — это очень «механистический», «машинный» способ игры, крайне неустойчивый к малейшим неточностям. Нам же нужно играть так, как стал бы играть рациональный человек. Тем, кто более-менее знаком с теорией вероятности, должно быть известно, что у нее существует так называемая Байесовская интерпретация, а также основанный на ней Байесовский подход. В основе этого подхода лежит описание знаний с помощью распределений случайных величин с последующим преобразованием априорных знаний в апостериорные на основе наблюдений при помощи знаменитой формулы Байеса. Более того, такой подход является единственным обобщением классической алгебры логики на случай неопределенности (об этом можно прочитать, например, тут). Это наводит многих ученых на мысль, что Байесовский подход является эталоном рационального мышления. Что же, нам только этого и нужно. Попробуем применить его к нашей задаче.
Байесовская модель
Итак, вспоминаем формулу Байеса: P(A|B) = P(B|A)P(A)/P(B). А теперь словами. Пусть нам нужно оценить вероятность того, что произошло событие A, при условии, что событие B точно произошло (то есть мы его гарантированно пронаблюдали; именно поэтому B часто называют наблюдением). По формуле Байеса эта вероятность пропорциональна произведению двух других. Первая из них, P(B|A), называется правдоподобием и показывает, с какой вероятностью событие B происходит при условии, что произошло A. Второй множитель, P(A), — это так называемая априорная вероятность события A, то есть вероятность, что оно в принципе произойдет (вне зависимости от B). По сути, эта вероятность отражает информацию, которую мы знали об A до того, как узнали о том, что произошло B. В знаменателе формулы также присутствует величина P(B), которая в данном случае просто играет роль нормировочного коэффициента и может быть проигнорирована.
Априорную вероятность P(Ai) можно рассматривать как частный случай P(Ai|B) при k=0. Иначе говоря, это вероятность, что игрок загадал объект i при условии, что вопросов задано не было, и мы вообще ничего не знаем. С одной стороны, можно было бы дать всем объектам равные P(Ai), т.к. это честно. С другой стороны, Барака Обаму наверняка будут загадывать намного чаще, чем Холдена Колфилда. Поэтому при прочих равных (то есть когда мы не можем различить объекты), следует выбирать именно Обаму. Следовательно, естественной оценкой P(Ai) будет отношение числа игр, когда был загадан X, к общему их числу.
Правдоподобие P(B|Ai) тоже получает удобную интерпретацию. Только прежде нужно воспользоваться одним небольшим трюком — предположить условную независимость ответов на вопросы при условии Ai (несколько грубое, но очень удобное для нас упрощение). В переводе на русский это значит, что по предположению вероятность P(B|Ai) может быть записана в виде произведения (по j) вероятностей P(Bj|Ai), где Bj — событие вида «На вопрос Qj был дан ответ Aj». P(Bj|Ai) в этом случае будет отношением числа раз, когда при загаданном объекте i на вопрос Qj был дан ответ Aj к числу раз, когда при загаданном объекте i в принципе был задан вопрос Qj. В целях избежания нулевых и неопределенных вероятностей предлагаю дополнительно считать, что изначально на каждый из вопросов каждый из вариантов ответов был дан по разу. То есть в случае, если вопрос Qj еще ни разу не задавался об объекте i, P(Bj|Ai) будет равно 1/Nj, где Nj — число вариантов ответа на вопрос Qj (я, к слову, использовал для всех вопросов одни и те же 4 варианта ответа: «да», «нет», «не знаю» и «вопрос не имеет смысла»).
Подведем промежуточный итог. Мы нашли простую формулу, которая отображает набор пар вопрос/ответ и некоторую сущность в вероятность, что при данных ответах на вопросы была загадана именно эта сущность. Пересчитав эту вероятность для всех объектов в нашей базе данных после ответа на новый вопрос можно видеть, какие из них больше похожи на загаданный объект на настоящий момент. Более того, обучение нашей модели реализуется довольно просто: нужно просто для каждой сущности в базе хранить информацию о том, какие вопросы про нее задавались и сколько ответов каждого из типов дали пользователи. После каждой игры эту информацию можно обновлять, основываясь на ответах пользователя. Также, для учета «популярности» персоны в базе нужно хранить число раз, которое персона была загадана.
Выбор вопросов, информация и энтропия
Ну что же, осталось только понять, какие вопросы лучше задавать. Естественно, задавать нужно те вопросы, которые дают больше информации. Но разве мы можем как-то эту информацию измерить? Оказывается, что да. Для этого можно воспользоваться понятием информационной энтропии. Если говорить грубо, но понятно, то информационная энтропия — это такая характеристика распределения случайной величины (измеряемая, как и информация, в битах), которая показывает, насколько мы не уверены в том, какое значение эта случайная величина примет. Например, если случайная величина принимает значение 1 с вероятностью 0.99, и значение 0 — с вероятностью 0.01, то энтропия такого распределения будет очень близка к нулю. Если же случайная величина принимает, к примеру, значения 0 и 1 с равными вероятностями 0.5 (орел или решка), то энтропия такой случайной величины будет равна 1 биту (это как раз то количество информации, которое мы должны получить, чтобы устранить неопределенность).
Ладно, давайте выбирать каждый раз тот вопрос, ответ на который сильнее всего уменьшит энтропию распределения P(Ai|B), которое как раз и отвечает за наши знания о том, кого загадал игрок. Тут сразу возникает еще одна проблема: вообще говоря, разные ответы на один и тот же вопрос могут уменьшать энтропию по разному. Что же делать? Предлагается находить тот вопрос, для которого ожидаемое уменьшение энтропии будет максимальным. Ожидаемое уменьшение энтропии показывает, насколько «в среднем» уменьшится энтропия, если мы зададим некоторый вопрос. Чтобы не писать здесь еще несколько абзацев текста, приведу формулу, по которой эту величину можно посчитать. Желающие без труда поймут, почему она имеет такой вид. Итак, нужно каждый раз задавать такой вопрос j, для которого величина H[P(Ai|B, )]P( ) +… + H[P(Ai|B, )]P( ) минимальна. Через H[P] тут обозначена энтропия распределения вероятности P, а через » » — событие «на вопрос Qj дан ответ Ans». Величину P( ) можно легко найти по формуле полной вероятности, просуммировав ее, обусловленную по всем известным объектам. То есть P( ) = sum(i) P( |Ai) P(Ai|B).
Оказывается, что такой подход позволяет очень быстро отбрасывать нерелевантные вопросы, сосредотачиваясь на самом главном. В каком-то смысле этот метод является обобщением метода «деления пополам» в вероятностной постановке. Посмотреть, как все это работает вместе, можно на видео ниже.






















