Класифікатор Akinator.com та Naive Bayes


12

Контекст: Я програміст з деяким (напівзабутим) досвідом статистики з університетських курсів. Нещодавно я натрапив на http://akinator.com і провів деякий час, намагаючись зробити це невдалим. А хто не був? :)

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

Є Предмети (S) та Питання (Q). Завдання прогнозувача полягає у виборі суб'єкта S, який має найбільшу задню вірогідність бути суб'єктом, про який користувач думає, з урахуванням зібраних до цього питань та відповідей.

Нехай гра G - це набір заданих запитань і відповідей, заданих: .{q1,a1},{q2,a2}...{qn,an}

Тоді предиктор шукає .P(S|G)=P(G|S)P(S)P(G)

До предметів ( ) могло бути лише кількість вгаданих предметів, поділене на загальну кількість ігор.P(S)

Зробивши припущення, що всі відповіді незалежні, ми могли б обчислити ймовірність випробування S, враховуючи гру G так, як:

P(G|S)=i=1..nP({qi,ai}|S)

P({qi,ai}|S) якщо ми будемо відслідковувати, які запитання та відповіді були надані, коли використані мають хоч дану тему:

P(q,a|S)=answer a was given to question q in the game when S was the subjectnumber of times q was asked in the games involving S

P(S|G)

argmaxj(H[P(S|G)]a=yes,no,maybe...H[P(S|G{qj,a})]

P(S|G)P(S|G{qj,a})

Я підозрюю, що просто обрав неправильну модель, обмежуючись межами своїх знань. Або, може, в математиці є помилка. Будь ласка, просвітліть мене: з чим я повинен ознайомитись, або як змінити передбачувача, щоб він міг впоратися з мільйонами предметів і тисячами питань?


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

1
Чи не було б таке дерево рішень занадто непростим для оновлення? Плюс до цього, я не бачу простого способу пояснити випадково неправильні / чесні помилки і все-таки зрозуміти це в кінцевому підсумку з деревом рішень
ADEpt

5
Схоже на перевтілення двадцятирічного здогаду на 20 запитань, зараз на 20q.net . Ось популярне пояснення, як це працює mentalfloss.com/blogs/archives/13725
Ярослав Булатов

5
Вибачте, але я думаю, що використання "штучного інтелекту" та "нейронних мереж" без будь-якого контексту важко вважається поясненням. І я не можу зрозуміти, як можна використовувати нейронну мережу для подібних речей - яка б, наприклад, функція виводу?
ADEpt

Привіт @ADEpt. Минув час, коли було задано питання, але чи можете ви поділитися вихідним кодом для реалізації, яку ви мали там?
приха

Відповіді:


10

Ця гра схожа на 20 запитань на веб-сайті http://20q.net , про які повідомляє творець, базується на нейронній мережі. Ось один із способів структурування такої мережі, подібний до нейронної мережі, описаної в векторах опису концепції та грі з 20 питаннями .

Ви б мали

  1. Фіксована кількість запитань, де деякі питання позначені як "заключні" питання.
  2. Одна одиниця вводу на запитання, де 0/1представлена no/yesвідповідь. Спочатку встановлено0.5
  3. Одна одиниця виходу на питання, сигмоїда розбита на 0..1 діапазон
  4. Прихований шар, що з'єднує всі вхідні блоки до всіх вихідних одиниць.

Одиниці введення для відповідей на запитання встановлюються на 0 або 1, і припущення полягає в тому, що нейронна мережа була навчена приймати вихідні значення вихідних одиниць близькими до 1 для запитань, на які відповідь "Так" задано набір існуючих відповідей.

На кожному етапі ви вибираєте питання, про яке NNє найменш впевненим, тобто відповідний вихідний блок близький 0.5, задаєте питання та встановлюєте відповідні вхідні блоки до відповіді. На останньому етапі ви вибираєте вихідний блок зі списку "остаточного питання" зі значенням, найближчим до 1.

Кожна гра з 20 питань дає 20 точок даних, які ви можете використовувати для оновлення NNваг з зворотним розповсюдженням, тобто ви оновлюєте ваги, щоб виходи поточної нейронної мережі відповідали справжній відповіді з урахуванням усіх попередніх заданих питань.


7

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

Див. Розділ 5.7 ( книги Google ) від

Обкладинка, TM та Joy, AT (2006) Елементи інформаційної теорії

а також кодування Хаффмана . Цей документ, який я знайшов на arXiv, може також зацікавити.

Gill, JT і Wu, W. (2010) "Ігри двадцяти питань завжди закінчуються так" http://arxiv.org/abs/1002.4907

Для простоти припустімо, що так / ні питання (тоді як akinator.com дозволяє дозволяє, не знаю). Припустимо, що кожну можливу тему (те, що знає akinator.com) можна однозначно ідентифікувати за послідовністю питань / відповідей "так / ні" - це, по суті, бінарний вектор.

Питання, що задаються (та їх відповіді), визначають рекурсивний розподіл простору предметів. Цей розподіл також відповідає структурі дерева. Внутрішні вершини дерева відповідають питанням, а листя відповідають тематиці. Глибина листків - це саме кількість запитань, необхідних для однозначної ідентифікації теми. Ви можете (тривіально) визначити кожен відомий предмет, задавши кожне можливе запитання. Це нецікаво, оскільки потенційно сотні питань.

Зв'язок з кодуванням Хаффмана полягає в тому, що він дає оптимальний спосіб (за певною імовірнісною моделлю) побудувати дерево так, щоб середня глибина була (майже) мінімальною. Іншими словами, це говорить про те, як упорядкувати послідовність питань (побудувати дерево), щоб кількість запитань, які вам потрібно задати, була в середньому невеликою. Він використовує жадібний підхід.

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


Це вдалий початок, але я думаю, що в цьому є більше проблем. Наприклад: як вони отримують відповіді на запитання? Імовірно, вони використовують відповіді попередніх гравців (проблема навчального підкріплення), і в цьому випадку ми стикаємось з вибором питання, що (a) вирішує проблему для поточного гравця, і (b) надає інформацію для майбутніх гравців.
Саймон Бірн

На перший погляд, вміння проводити аналогію між 20 питаннями та кодування Хаффмана залежає від можливості задавати "діапазонні запитання". Тобто замість "Чи був ти персонаж ніколи в космосі?" ми задаємо "ковдру" запитання на кшталт "Він коли-небудь був у космосі, чи чоловік, чи лисий, чи був у фільмі, чи ... (100500 інших варіантів)?" Я правий? Якщо так, то, мабуть, я повинен редагувати своє запитання, щоб зрозуміти, що мене цікавить різновид "запитувати один за одним"
квітня 1111 року

i0

@vqv: Re: "Я не думаю, що це дійсно проблема класифікації. 20 питань часто характеризують як проблему стиснення". Чи не пов'язані безпосередньо статистичні умовиводи та стиснення інформації / однакова проблема?
Ян

@Yang Ви посилаєтесь на аргумент Жорми Ріссаннена? Статистичні умовиводи та стиснення інформації використовують імовірнісні моделі для опису невизначеності, однак їх перспективи та перспективи, якщо дослідники в цих областях, як правило, дуже різні. Що я маю на увазі сказати вище, це те, що 20 питань можна більш природно сформулювати як проблему стиснення (конкретно, кодування джерела), а не проблему класифікації. … Продовжено нижче
vqv
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.