Программа играет в простые игры крестики-нолики, четыре в ряд (Connect 4) и гомоку — и выигрывает у человека. Казалось бы, ничего интересного, если бы не один важный нюанс — эта программа не знает правил! Точнее, она выучила их с нуля, просмотрев двухминутные видеозаписи с участием игр людей.
Лукаш Кайзер (Łukasz Kaiser) из университета Париж Дидро написал программу на C++, которая разбивает видеоряд по кадрам, убирает из них всё лишнее (руки людей) — и получает список последовательных позиций.
На основе этих данных алгоритм (на OCaml) составляет базу разрешённых ходов и список выигрышных/проигрышных/неразрешённых позиций, затем генерирует набор логических формул типа ∃x1Q(x1) ∧ ∃x0(C(x1,x0) ∧ x0 = e1). Оба модуля интегрированы в свободную программу для игры в настольные игры Toss.
На обычном ноутбуке программе требуется 28-74 секунды для обработки двухминутного видеоролика, в зависимости от игры. Потом ещё пару минут для составления набора правил — и она готова играть. Правда, чтобы научиться выигрывать, нужно посмотреть не один видеоролик, а больше. Во время тестирования программы она обработала 25 видеороликов игры в крестики-нолики, 25 — четыре в ряд и 17 — в гомоку. Если игра более простая, то достаточно и меньшего количества.
Казалось бы, ничего сложного, но только представьте, что подобные системы станут сложнее и совершеннее — и смогут изучать более сложные игры и стратегии, просто наблюдая за действиямибукашек людей.
Собственно, и сам Лукаш Кайзер пишет, что выбрал настольные игры как объект применения своей программы, «потому что здесь количество визуальных объектов относительно мало, в то время как имеется достаточное разнообразие действий. Кроме того, игры являются натуральной моделью многих сценариев отношений в реальном мире, что делает результат значимым в широком контексте».
Подробнее об алгоритме см. в научной работе: Learning Games from Videos Guided by Descriptive Complexity (PDF), или на видеозаписи его презентации с Третьей конференции по искусственному интеллекту общего назначения (Third Conference on Artificial General Intelligence).
Лукаш Кайзер (Łukasz Kaiser) из университета Париж Дидро написал программу на C++, которая разбивает видеоряд по кадрам, убирает из них всё лишнее (руки людей) — и получает список последовательных позиций.
На основе этих данных алгоритм (на OCaml) составляет базу разрешённых ходов и список выигрышных/проигрышных/неразрешённых позиций, затем генерирует набор логических формул типа ∃x1Q(x1) ∧ ∃x0(C(x1,x0) ∧ x0 = e1). Оба модуля интегрированы в свободную программу для игры в настольные игры Toss.
На обычном ноутбуке программе требуется 28-74 секунды для обработки двухминутного видеоролика, в зависимости от игры. Потом ещё пару минут для составления набора правил — и она готова играть. Правда, чтобы научиться выигрывать, нужно посмотреть не один видеоролик, а больше. Во время тестирования программы она обработала 25 видеороликов игры в крестики-нолики, 25 — четыре в ряд и 17 — в гомоку. Если игра более простая, то достаточно и меньшего количества.
Казалось бы, ничего сложного, но только представьте, что подобные системы станут сложнее и совершеннее — и смогут изучать более сложные игры и стратегии, просто наблюдая за действиями
Собственно, и сам Лукаш Кайзер пишет, что выбрал настольные игры как объект применения своей программы, «потому что здесь количество визуальных объектов относительно мало, в то время как имеется достаточное разнообразие действий. Кроме того, игры являются натуральной моделью многих сценариев отношений в реальном мире, что делает результат значимым в широком контексте».
Подробнее об алгоритме см. в научной работе: Learning Games from Videos Guided by Descriptive Complexity (PDF), или на видеозаписи его презентации с Третьей конференции по искусственному интеллекту общего назначения (Third Conference on Artificial General Intelligence).