Akinator - секрет джина, Data Science і алгоритм який вгадує все | robot_dreams
Для отслеживания статуса заказа — авторизируйтесь
Введите код, который был выслан на почту Введите код с SMS, который был выслан на номер
 
Код действителен в течение 5 минут Код с sms действителен в течение 5 минут
Вы уверены, что хотите выйти?
Сеанс завершен
На главную
Відеогра для зумерів чи шедевр Data Science: як побудований Akinator

Відеогра для зумерів чи шедевр Data Science: як побудований Akinator

Проєкт, який перетворив дитячу забавку на глобальний феномен

Складно знайти зумера, який не знає, що таке Акінатор. Певний час у шкільних коридорах під час перерв обдурити Акінатора було найзахопливішою розвагою. Пробували все: загадувати нішевих, другорядних персонажів з мультиків, які крутили о 5 ранку, акторів, богів, героїв книжок. Втім, зловити Акінатора на відповіді «Я не знаю, що ти загадав» було неймовірно складно. Він завжди знав, кого ви загадали.

Для дитячого розуму це була чиста магія, яка дивувала і вражала. Для дорослого ж — це чиста математика, яка, якщо розібратись, вражає не менше. В цій статті розповідаємо про технологію, що стоїть за всіма улюбленим джином, який знає все. Сподіваємось, для вас ця магія не зникне, а лише трансформується. 

Що таке Akinator?

Для всіх, хто не знає, що це й від чого такий шум, розповідаємо. Akinator — це відеогра від французької компанії Elokence, яка вийшла ще у 2007 році. 

Джерело: Akinator

Сама ж гра полягає ось у чому: 

  • Гравець має загадати персонажа, предмет або тварину. 
  • Далі джин починає ставити запитання, на які є декілька варіантів відповіді: «Так», «Ні», «Можливо», «Можливо, ні», «Не знаю». 
  • Через певну кількість запитань джин точно відгадує, що ви загадали. 

Як це працює насправді

Почнемо з розвінчання міфу. Akinator — це не штучний інтелект у тому розумінні, в якому ми зараз говоримо про ChatGPT або нейромережі. Компанія, що розробила гру, тримає точні деталі алгоритму в секреті, але зазначає, що рішення належить до сфери статистичної класифікації або експертних систем. Про це, зокрема, йдеться на сторінці у Вікіпедії.

Akinator використовує елімінативний алгоритм — систему послідовного виключення варіантів. Це класична гра у «20 запитань», але доведена до абсолютної досконалості.

Принцип 20 запитань: математика звуження

Секрет ефективності Akinator полягає в математиці бінарного пошуку. За допомогою 20 запитань з відповідями «так» або «ні» теоретично можна розрізнити понад мільйон потенційних персонажів. Як?

  • Кожне запитання ідеально ділить базу можливих відповідей приблизно навпіл.

Уявіть, що ви загадали Гаррі Поттера. Акінатор запитує: «Ваш персонаж — чоловік?». Так усі персонажі-жінки відпадають автоматично, що ділить базу приблизно навпіл. Далі він запитає, чи носить персонаж окуляри, що теж відкине всі варіанти тих, хто не носить. 

За поясненням з форумів, в ідеальному випадку кожне запитання виключає половину можливих варіантів, і так можна звузити пошук від близько 2^20 = 1 048 576 можливостей до однієї відповіді за 20 питань.

Звісно, в реальності не всі запитання ділять варіанти рівно навпіл — тому Akinator іноді потребує більше уточнень. Але загальний принцип залишається: кожна відповідь різко скорочує простір можливостей.

База даних мільйонів персонажів

Щоб вгадувати персонажів, потрібно їх знати й десь зберігати. Akinator має величезну базу даних персонажів, яка постійно розширюється. За деякими оцінками з open-source проєктів, що намагалися відтворити схожу систему, йдеться про понад 1,5 млн записів.

У кожного персонажа в базі є свій набір атрибутів — чи він вигаданий, чи реальний, його стать, професія, з якого він твору, носить окуляри чи ні, і сотні інших характеристик. Питання алгоритму — це, по суті, запити до цієї бази: «Покажи мені всіх персонажів, які відповідають параметрам X, Y, Z». 

Джерелом початкових даних могла бути Вікіпедія, хоча це ніде офіційно не підтверджено.

Crowd-sourced навчання

Справжня магія — це хитра ідея використовувати юзерів для навчання Акінатора. Коли він не може вгадати персонажа після серії запитань, гра просить гравця завантажити фото та ім'я персонажа, щоб додати його до бази. Таким чином, наступного разу, коли хтось загадає того самого обскурного французького режисера 1970-х, система вже зможе його вгадати.

Але і тут магія не закінчується. Система постійно оновлює свою базу інформації, динамічно покращуючи здатність вгадувати на основі схожостей між вашою грою та іграми інших користувачів. Кожна сесія — це не просто гра, а тренувальний приклад. Мільйони гравців відповіли на мільярди запитань, створивши величезну базу даних. 

Що з цього випливає?

Akinator не просто знає персонажів — він потенційно знає, які запитання найкраще працюють для їхньої ідентифікації, на основі того, як відповідали мільйони реальних людей.

Обробка невизначеності

На відміну від строгої бінарної логіки, Akinator дозволяє 5 варіантів відповіді. Це дає системі можливість працювати з неповною інформацією — коли ви не впевнені у відповіді, алгоритм все одно може звузити пошук, просто з меншою точністю.

Джерело: Akinator

За принципами теорії інформації, несподівані відповіді несуть більше корисної інформації, ніж ймовірні. Akinator обирає запитання, які дадуть йому найбільше інформації. Якщо на запитання «Чи ваш персонаж чоловічої статі?» 90% усіх персонажів отримують відповідь «так», то це питання майже не корисне. Натомість те, яке розділяє можливості 50 на 50, — ідеальне.

Математика під капотом

Так, з базовою механікою розібрались. Тепер до математики, яка робить Akinator таким ефективним. Буде трохи теорії, але обіцяємо — без формул.

Ентропія та вибір питань

Ентропія в теорії інформації — це міра невизначеності. Чим більше хаосу, тим вище ентропія. Чим більше впорядкованості — тим нижче. Вибір наступного запитання може здійснюватися в різний спосіб — наприклад, намагаючись максимізувати передбачувану ентропію від наступного питання.

Логічно виходить, що ідеальне запитання в Akinator — це те, що максимально знизить ентропію системи. Іншими словами, воно мусить максимально звузити простір можливих відповідей. Якщо в базі залишилось 1000 персонажів і ваше запитання ділить їх рівно навпіл (500 на 500), це ідеально. 

З цієї причини Акінатор, наприклад, не питає «Чи ваш персонаж — Наполеон?» на початку гри. Такі запитання майже нічого не дають.

Баєсівська логіка

Система працює як баєсівське оновлення: в неї є певні переконання про те, якого персонажа ви могли б загадати, і вона продовжує ставити запитання, щоб зібрати більше доказів про те, який це персонаж.

Кожна ваша відповідь оновлює ймовірності. Ймовірність того, що ви думаєте про конкретного персонажа, враховуючи вашу відповідь (зворотна ймовірність), дорівнює ймовірності того, що ви дали б таку відповідь, якби думали про цього персонажа (правдоподібність), помножену на незалежну ймовірність вибору цього персонажа.

Простіше кажучи: якщо ви відповіли «так» на запитання «Чи носить ваш персонаж окуляри?», система миттєво підвищує ймовірність для всіх персонажів в окулярах (Гаррі Поттер, Вуді Аллен) і знижує для всіх інших.

Колаборативна фільтрація

Система подібна до алгоритмів рекомендацій Netflix, де введення користувачів постійно покращує відповіді. Коли мільйони людей грають в Akinator, система помічає патерни: «Люди, які відповіли X на це запитання, зазвичай загадують персонажів типу Y».

Це той самий принцип, за яким Netflix пропонує вам фільми: «Люди з подібними до ваших вподобаннями також дивилися...». Тільки замість фільмів — персонажі, а замість переглядів — відповіді на запитання.

Чому це круто з погляду Data Science

З погляду Data Science, Akinator — це майстер-клас того, як розв’язувати класичні проблеми обробки даних у реальному світі. Цей «простий» інтернет-джин впорався з чотирма ключовими викликами в Data Science:

  • Рекомендаційні системи в дії

Система працює на основі динамічних дерев ймовірностей, які еволюціонують з кожною новою сесією користувача. Це той самий принцип, за яким працюють сучасні рекомендаційні алгоритми.

  • Обробка невизначеності

На відміну від багатьох алгоритмів, Akinator працює навіть коли користувачі дають багато невизначених відповідей «Не знаю». Система не зламається від «я не знаю» — вона просто враховує це як додаткову інформацію. Це класичний приклад роботи з «брудними» даними в реальних умовах.

  • Масштабування

У жовтні 2025 року лише англомовна версія сайту отримала 1,8 млн відвідувань із середньою тривалістю сесії 9 хвилин. Обробляти мільйони одночасних ігрових сесій, кожна з яких виконує складні запити до величезної бази даних — це серйозний технічний виклик. Секрет у простоті базової операції, адже кожне запитання — це фільтрація масиву даних, що робиться надзвичайно швидко.

Цікава деталь: іноді Akinator ставить логічну серію запитань, а потім раптом починає ставити випадкові та непов'язані, але все одно вгадує правильно. 

Насправді він зрозумів відповідь рано і просто використовує решту запитань, щоб дізнатися більше про персонажа. Елегантне досягнення подвійної мети: вгадати персонажа і покращити базу знань.

Ещё статьи
Порівнюємо швидкість, якість і відповідальність за результат