ты не знаешь кто такой акинатор
Все, что вы хотели знать об Акинаторе
Как мне играть с Акинатором?
Чтобы играть с ним, думаю, задумайте персонажа, реального или вымышленного, хорошо его запомните, а затем выберите в меню «играть > персонажи».
Акинатор начнет задавать вам ряд вопросов, на которые вы должны ответить так правдиво, насколько это возможно. После этого ряда вопросов, он ответит вам, кого вы задумали.
В чем секрет Акинатора?
Как я могу загрузить картинку?
В конце игры, когда Акинатор отгадал задуманного вами персонажа, вы можете добавить или предложить картинку для данного персонажа.
Пользователь соглашается не загружать фотографии, которые нельзя использовать бесплатно и без ограничений.
1. Добавить картинку:
Персонаж, которого вы загадывали, не имеет изображения. Если вы хотите добавить картинку, вы должны нажать на кнопку «Отправить изображение» и следовать инструкциям.
2. Предложить картинку:
Персонаж, которого вы загадывали, уже имеет изображение. Если вы хотите предложить новое, вы должны нажать на кнопку «Предложить изображение» и следовать инструкциям.
— Вы должны заявить, что «Вы прочитали и приняли условия предоставления услуг. Загружая это изображение, вы заявляете, что вы имеете право опубликовать его.»
— Новое изображение будет видно только тогда, когда модератор примет и утвердит его (см. статью 4. Модерация).
Как я могу добавить персонажа?
Персонажи, которые могут быть добавлены в базу данных Акинатора, должны быть известными личностями. Пользователю предлагается не добавлять людей, которые не принадлежат к этой категории, в частности, людей, которых пользователь знает лично, даже если эти люди согласны на это.
1. В конце игры, когда Акинатор отгадал персонажа, которого вы задумали, вы можете изменить имя этого персонажа. Вы должны нажать на кнопку «Предложить новое имя». Вам будет предложено ввести новое имя, очень краткое описание (два-три слова), чтобы не перепутать данного персонажа с его однофамильцем и необязательный комментарий, объясняющий, почему вы хотите изменить имя персонажа. Ваше предложение будет учтено лишь после проверки модератором (см. статью 4. Модерация).
2. В конце игры, если Акинатор не отгадал задуманного вами персонажа, вы можете добавить этого персонажа в базу данных Акинатора.
— Если Акинатор находит сходство с другими персонажами из своей базы данных, он даст вам список этих персонажей.
• Если ваш персонаж присутствует лишь один раз в списке, вам просто нужно выбрать его.
• Если ваш персонаж присутствует несколько раз в списке, вы должны нажать на кнопку «Мой персонаж виден несколько раз», а затем выделить все экземпляры данного персонажа в списке.
• Если ваш персонаж отсутствует в списке, вы должны нажать на кнопку «Мой персонаж отсутствует в списке» и ввести его имя и короткое описание.
— Если Акинатор не может найти сходство ни с одним персонажем из его базы данных, вы сможете добавить своего персонажа, введя его имя и короткое описание.
— В любом случае, то, что вы добавили, будет немедленно внесено в базу, но может быть удалено модератором позже (см. статью 4. Модерация).
Как я могу добавить вопрос?
В конце игры, когда Акинатор отгадал персонажа, которого вы задумали, вы можете добавить вопрос, нажав на кнопку «Добавить вопрос». Вы должны будете ввести одно или несколько ключевых слов из вашего вопроса.
— Если Акинатор находит сходство с существующим в его базе данных вопросом, он выдаст вам список вопросов.
1. Если ваш вопрос присутствует в списке, вы должны выбрать его и добавить информацию к нему.
2. Если ваш вопрос отсутствует в списке, вы должны нажать на кнопку «Нажать сюда», чтобы добавить свой вопрос и добавить информацию к нему.
— Если Акинатор не находит сходства с любой из существующих в его базе данных вопросом, вы сможете добавить свой вопрос и добавить информацию к нему.
— Все предлагаемые вопросы будет добавлены в базу лишь после утверждения их модератором (см. статью 4. Модерация).
Как акинатор угадывает? На чем основан принцип его распознавания?
Sergey Litvinov дал ссылку на исчерпывающее описание общей сути алгоритма.
Если же вы хотели получить ответ простыми словами, то можно ответить так.
Но это уже детали. А общий принцип таков: каждый раз после вашего ответа у Акинатора «в голове» остаётся список персонажей, которые соответствуют вашим ответам. И каждый раз он старается задать вопрос, который вычеркнет наибольшее число вариантов, пока не останется один вариант.
В реальности алгоритм Акинатора гораздо масштабнее и хитрее описанного. Он учитывает разные нюансы, в том числе, насколько я заметил, он учитывает тренды (например, допустим, персонажей из сериалов чаще загадывают после того, как закончилась очередная серия). Если много других людей незадолго перед вами вдруг загадали какого-то персонажа, высока вероятность, что и вы тоже решили его загадать. Он даже подстраивается под ваши личные интересы. Если вы, например, любите задавать вопросы о вымышленных персонажах (как мой племянник), Акинатор будет ожидать этого и в следующий раз.
Может казаться чудом, что Акинатор за 20 вопросов часто умудряется отгадать вашего персонажа, ведь он, вроде, и вопросов никаких особых не задал. Однако математика нам говорит, что если бы на каждом из 20 вопросов удавалось подобрать такой вопрос, чтобы ответ всегда отсеивал половину вариантов (как вопрос «женщина ли она»?), то 20 вопросов было бы достаточно, чтобы правильно отличать больше миллиона разных персонажей. А 40 вопросов было бы достаточно, чтобы отличить свыше триллиона (!) персонажей. Акинатор спроектирован так, чтобы как можно лучше находить нужные вопросы, и у него это весьма хорошо получается.
Чудесная история Акинатора
Некоторое время назад Арно и его друг Джефф решили отправиться в путешествие в далекие земли Востока. Во время экспедиции на спине верблюда, они заметили на вершине небольшой песчаной дюны объект, сверкающий под солнцем. Он вызвал их любопытство, так что они сразу же спешились. Они были крайне удивлены, найдя старую масляную лампу! Она должно быть была погребена там на протяжении многих лет, пока не была открыта завывающим в пустыне ветром.
Джефф пошутил:
— Я знаю! Загадайте три желания и трите ее, может появиться джинн!
Ничего не случилось после первой попытки.
По-прежнему ничего после второй попытки.
После третьей попытки, однако, лампа ярко засветилась и быстро нагрелась, пока не стала настолько горячей, что Арно вынужден был бросить ее на песок.
В этот момент густой дым вышел из нее и образовал небольшое непрозрачное облако. Мало-помалу оно рассеялось. С удивлением они увидели существо, появившееся перед ними. Он был похож на человека и выглядел весьма дружелюбно.
Казалось он потягивался, словно проснулся от долгого сна. Затем раздался серьезный голос:
«Привет, я знаменитый Акинатор. Я понимаю все языки мира и разговариваю на них. Вы разбудили меня от многовекового сна. Однако этот длительный отдых не повлиял на мои чудесные навыки. Я способен угадать задуманный вами персонаж с помощью нескольких вопросов. Если я не смогу, если вы победите меня, то я оставлю вас. Но будьте осторожны! Отвечайте на мои вопросы точно или. или вы должны будете занять мое место в лампе».
Двое наших друзей были любопытны, но это предупреждение заставило их сохранять осторожность. Они тщательно ответили на вопросы джина и отметили, что то, что он говорил, было правдой, он легко угадал загаданных ими персонажей. Он был очень горд этим делом и начал петь и говорить, говорить, говорить. его, казалось, не остановить. Затем он попросил больше загадок и снова нашел ответы. Он, казалось, был полон неиссякаемой энергии и все больше и больше гордился собой по мере продолжения игры.
Таковы были обстоятельства, которые заставили Джеффа и Арно создать веб-сайт akinator.com. Акинатор сможет играть днями и ночами со всем миром, тем самым удовлетворяя свою постоянную зависимость.
Вы тоже можете попробовать обыграть Акинатора. Вы увидите, что он не является непобедимым. Но тише. ему не нравится это слышать. Однако будьте осторожны: вы должны отвечать честно. Помните пугающее предупреждение нашего джинна!
Игры Акинатор
Бесплатно играть в онлайн игры «Акинатор» на русском языке можно на любой операционной системе – Windows, BlackBerry 10, iOS, Android и проч. Несмотря на то, что в 2017 забавной игрушке исполнилось ровно 10 лет, популярность ее до сих пор растет.
Акинатор
Историю про джина Akinator придумали в 2007 году два французских программиста – Джефф Дел и Арно Мегре. Задумывалась она друзьями, как веселый розыгрыш. Парни и предположить не могли, что всего через год простенькая однопользовательская игра «The genie Akinator» превратит их в весьма обеспеченных и известных людей. И если сначала играть в Акинатор могли только те, кто знает французский, сегодня онлайн игра переведена на 15 других языков. Это важно, поскольку игровой процесс построен на возможности задавать вопросы и отвечать на них. Самые востребованные языки интерфейса:
Знакомьтесь: мистер Всезнайка
Как играть
От игрока требуется загадать персонажа. Им может стать литературный, кинематографический герой, реально существующая личность, животное или птица. Кто угодно: актер, певец, космонавт, президент, серийный убийца, твоя любимая бабушка и домашний котенок.
Затем Акинатор задает наводящие вопросы. Они могут быть самыми разными. На каждый предусмотрено пять вариантов ответа:
Отвечать требуется честно. Для этого кликай мышкой на подходящий вариант и переходи к следующему вопросу. Всего их может быть задано 40. Иногда хитрый джин угадывает персонажа раньше срока. Как ему это удается – уму непостижимо. Со стороны выглядит как полная фантастика. Неудивительно, что пользователи из сил выбиваются, пытаясь посадить мага в лужу. Попробуй, возможно, тебе повезет больше других. Если задать вопрос, на который Акинатор не сможет отгадать ответ, на экране откроется окно, через которое его можно будет внести в базу игры.
Акинатор и математика
Функциональные требования
Алгоритмы
Если бы не прощение ошибок, добиться желаемого можно было бы довольно просто. Например, можно было бы хранить дерево ответов на вопросы, в котором внутренние вершины соответствовали бы вопросам, а листы — ответам. Процесс игры тогда выглядел бы как спуск от корня к одному из листов. Тем не менее, с прощением ошибок этот алгоритм справляться не будет. Да и вопросы балансировки дерева возникают.
В каком-то смысле дерево — это очень «механистический», «машинный» способ игры, крайне неустойчивый к малейшим неточностям. Нам же нужно играть так, как стал бы играть рациональный человек. Тем, кто более-менее знаком с теорией вероятности, должно быть известно, что у нее существует так называемая Байесовская интерпретация, а также основанный на ней Байесовский подход. В основе этого подхода лежит описание знаний с помощью распределений случайных величин с последующим преобразованием априорных знаний в апостериорные на основе наблюдений при помощи знаменитой формулы Байеса. Более того, такой подход является единственным обобщением классической алгебры логики на случай неопределенности (об этом можно прочитать, например, тут). Это наводит многих ученых на мысль, что Байесовский подход является эталоном рационального мышления. Что же, нам только этого и нужно. Попробуем применить его к нашей задаче.
Байесовская модель
Итак, вспоминаем формулу Байеса: 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).
Оказывается, что такой подход позволяет очень быстро отбрасывать нерелевантные вопросы, сосредотачиваясь на самом главном. В каком-то смысле этот метод является обобщением метода «деления пополам» в вероятностной постановке. Посмотреть, как все это работает вместе, можно на видео ниже.