задний план
В этом семестре я участвовал в школьном уроке Java, и задача заключалась в том, чтобы создать на Java играбельную Patchwork (немецкую настольную игру). В то же время это также включает в себя создание ИИ-персонажа, который может сражаться с игроками, ах нет, сражаться. Пользуясь случаем, у меня есть некоторое понимание и попытки машинного обучения и обучения с подкреплением в играх. Я узнал об общем принципе работы и алгоритме ранней версии AlphaGo (да, статья ZERO вышла, когда я собирался закончить ИИ...), и я поделюсь ею с вами здесь.
вотвведение в игру, может потребоваться лестница
Об ИИ в играх
В начале у меня не было особых идей о том, как проектировать ИИ, учитель только предложил использовать обучение с подкреплением, то есть обучение с подкреплением, или обрезку Minimax-Tree и Alphabeta (сокращение AlphaBeta). Это более эффективный метод принятия решений для многих простых игр. Однако, хотя игра Patchwork не так велика, как область поиска Go, она достигла размера примерно 2 ^ 30. Очевидно, что простой поиск по дереву и обрезка не способны обеспечить хорошие результаты принятия решений.
Случайно увидел это на StackOverflowэтот ответ. Короче говоря, это означает, что ИИ многих игр не обязательно использует методы машинного обучения для завершения, а выбирает относительно недорогой конечный автомат, с CS как каштан, ИИ общего назначения может быть разработан в этом way. : Мы разрабатываем ИИ по состояниям, и каждое состояние инкапсулирует некоторые действия. Таким образом, проще говоря, у нас может быть четыре состояния: патрулирование, тревога, бой и бегство. Для этих состояний мы можем спроектировать, что должен делать соответствующий ИИ, например, стрелять, уклоняться, бегать и так далее. В то же время нам также необходимо спроектировать транзакцию состояния, то есть стандарт суждения для перехода состояния. Например, когда он слышит шаги вокруг, ИИ начинает с巡逻
статус становится警戒
Статус, когда HP меньше 1/3, ИИ будет заменен на战斗
состояние переключается на逃跑
. Таким образом создается простой и эффективный ИИ, который явно требует гораздо меньше кода и вычислений, чем ИИ, полученный с помощью машинного обучения, и не выглядит слишком глупо. ЭтоНет необходимости в алгоритмах, связанных с машинным обучениемОдин из текущих методов проектирования ИИ.
Теперь вернемся к игре Patchwork, которую я сделал. Прежде чем мы обычно решим проблему, нам часто нужно классифицировать проблему или сопоставить модели, чтобы решить, какой алгоритм использовать.
отполнота информацииВ общем, Пэчворк — это игра с полной информацией, подобно тому, как большинство настольных игр — это игры с полной информацией, тогда как карточные игры, наоборот, — это вообще неполная информация, то есть игроки не могут полностью получить всю информацию о состоянии за всю игру. .
отобучение с подкреплениемС точки зрения, я думаю, что это немодальная игра, т.е. нет четко выраженной обратной связи на начальных этапах. Это расширится позже.
От игр к машинному обучению
Здесь происходит трансформация, которая очень важна для людей, плохо знакомых с искусственным интеллектом, а именно: как превратить игры и игры в вещи, которые можно вычислить с помощью машин.
- Ситуация -> Состояние -> Узел дерева (Node)
Ситуация — это ситуация каждого раунда игры, а состояние относится к состоянию на игровом поле, а также состояния двух игроков (количество удерживаемых кнопок, количество специальных кнопок и т. д.). . Ситуация — это общее понятие, а состояние — это то, что можно представить численно. Узлы дерева являются частью результирующей структуры данных после дальнейшей абстракции. - Играть в шахматы -> решение (действие) -> ветвь (Ветвь)
После каждого решения игрок фактически выполняет переход состояния, например, A(0) означает 0 очков, A(1) означает 1 очко, а Сяомин получает 1 очко после того, как сделал ход (какая-то неизвестная настольная игра), тогда он фактически изменено с состояния A(0) на A(1). То, что делает переход состояния, называется принятием решения, и для доступа от одного узла дерева к другому нужно пройти через ветвь.
Таким образом, мы завершили преобразование из игры, игры в дерево. Победа в игре также соответствует тому, как искать соответствующий конечный узел. Короче говоря, вопрос многих игр на самом деле заключается в том, как эффективно искать это дерево.
*: Для тех, кто еще помнит дискретную математику, я думаю, что это может быть лучше понято как Марковская цепочка решений (или Марковский процесс принятия решений).Поскольку это односторонний ациклический граф, он становится деревом, которое по сути является задача поиска графа.
**: В следующих нескольких статьях я постараюсь кратко обобщить изученные мною точки знаний по обучению с подкреплением, навыки AlphaGo, что такое методы Монте-Карло и поиск по дереву Монте-Карло и почему они сочетаются с нейронными сетями. более сильная способность принимать решения