Как научить ИИ делать продуманные ошибки

Разработчики компьютерных игр подняли интересную тему для обсуждения: как повысить реалистичность искусственного интеллекта, который действует безошибочно. Проблема в том, что во многих компьютерных играх правильный ход или решение просчитывается слишком просто для мощнейших процессоров современных ПК. Например, в виртуальном бильярде компьютер никогда не ошибается и всегда рассчитывает идеальную траекторию шара. Такая же плачевная ситуация в шахматах.

Самый простой способ оглупить ИИ — граничить его вычислительные ресурсы. Конечно, программа сразу станет играть хуже. Для того же бильярда есть следующий вариант: добавлять к удару по правильной траектории случайную погрешность. Но проблема в том, что это снижает реализм игры. В этом случае компьютер начинает делать слишком глупые ошибки. Такие глупые, каких человек никогда бы не сделал.

Другими словами, обычное ухудшение качества игры ИИ не является достаточно реалистичным. Оно не доставляет удовольствия игроку.

Из этого положения есть один выход. Нужно сделать так, чтобы компьютер играл в полную силу, но при этом сдавал игру. Как в спорте — ряд мелких, на первый взгляд, случайных просчётов, которые ведут к проигрышу или значительно увеличивают шансы противника. То есть ИИ должен делать умные, продуманные ошибки.

«Ошибки» такого рода требуют значительно больше вычислительных ресурсов, чем честная игра в полную силу, но зато у человека появится реальный шанс победить сильного соперника. От разработчиков игр требуется проявить недюжинный интеллект, чтобы создать «искусственную глупость» такого рода.

Например, в покере для ИИ было бы логично на крупный рейз живого игрока сбрасывать руку, которая имеет 75% на выигрыш, потому что слабые игроки-люди делают именно так, они пугаются крупных рейзов. Или было бы логично отвечать на маленькие рейзы со слабой рукой, имеющей недостаточно шансов на успех. Опять же, потому что слабые игроки-люди поступают именно так. Всё это примеры интеллектуальной, продуманной глупости, которая делает геймплей увлекательнее и реалистичнее.

Создатель игры Steve Davis World Snooker, которая вышла 20 лет назад, вспоминает, как к нему в офис приходили возмущённые геймеры и всё равно жаловались на слишком хорошую игру компьютера, хотя на слабом уровне в расчёт ИИ добавлялись серьёзные ошибки. Людям нравилось, что компьютер много промахивается. Но они уверяли, что у ИИ слишком хорошая позиционная игра.

Парадокс в том, что положение битка никогда не рассчитывалось. Программа просто брала координаты прицельного шара, вычисляла нужный угол и совершала удар с силой, которая была необходима для того, чтобы положить шар в лузу. Положение битка после соударения с прицельным шаром было совершенно случайным. Почему же геймеры считали ИИ слишком сильным? Причина в том, что компьютер мог забить шар с любой позиции, так что любое положение битка на самом деле всегда было выгодным для него — и человек это понимал. Так вот, именно здесь кроется потенциал для проявления «интеллектуальной глупости», которая делает игру увлекательнее.
Фото

Для снукера хорошим выбором было бы просчитывать позицию битка до самого конца и иногда специально бить так, чтобы биток в итоге занимал явно невыгодное положение для продолжения серии. То есть компьютер иногда должен сам себя загонять в угол. Опять же, как это делают игроки-люди (только они это делают случайно).

Суммируя всё вышесказанное, можно сделать вывод. Чтобы сделать ИИ глупее, мы, разработчики игр, должны не уменьшить точность расчёта, а наоборот — увеличить её. Мы должны рассчитывать ходы в игре настолько далеко, чтобы человек даже не заподозрил подвоха. ИИ должен быть не просто умнее человека, а на две головы его умнее, чтобы реалистично ему поддаваться. Нужно предсказывать человека на несколько ходов вперёд, чтобы подстроить идеальную случайность, которой тот воспользуется. Или не воспользуется, но тогда проиграет. Но мы всё равно должны дать ему шанс.