신경망에게 카드 게임을 가르치십시오


10

나는이 특정 게임을위한 엔진이 아직 없기 때문에 현재 카드 게임을하기 위해 엔진을 작성하고 있습니다.

나중에 게임에 신경망을 도입하고 게임을 배우기를 바랍니다.

AI 플레이어에게 도움이되는 방식으로 엔진을 작성하고 있습니다. 선택 지점이 있으며 해당 지점에 유효한 옵션 목록이 표시됩니다. 무작위 선택은 게임을 할 수 있습니다 (아직 좋지는 않지만).

신경망 (주로 NEAT 및 HyperNEAT)에 대해 많이 배웠고 심지어 자체 구현을 구축했습니다. 이러한 유형의 게임 중 하나에서 모든 변수를 고려할 수있는 인공 지능을 구축하는 방법이 아직 확실하지 않습니다. 일반적인 접근 방식이 있습니까? 나는 Keldon이 상당한 복잡성을 가진 RftG에 좋은 AI를 썼다는 것을 알고 있습니다. 그가 AI를 어떻게 만들 었는지 잘 모르겠습니다.

어떤 충고? 가능합니까? 이것에 대한 좋은 예가 있습니까? 입력은 어떻게 매핑 되었습니까?

편집 : 나는 온라인을보고 신경망이 작동하는 방법과 일반적으로 이미지 인식 또는 간단한 에이전트 조종과 관련이 있음을 배웠습니다. 복잡한 시너지 효과가있는 카드로 선택하는 데 적용할지 또는 어떻게 적용할지 잘 모르겠습니다. 내가 조사해야 할 방향에 대한 모든 지시는 크게 감사하겠습니다.

게임 정보 :이 게임은 Magic : The Gathering과 유사합니다. 건강과 능력이있는 사령관이 있습니다. 플레이어는 보드에 미니언과 주문을 넣는 데 사용되는 에너지 풀을 가지고 있습니다. 미니언은 체력, 공격력, 비용 등이 있습니다. 카드에는 능력이 있습니다. 손에서 카드가 나오고, 덱에서 새로운 카드가 뽑 힙니다. 이것들은 신경망이 고려하는 데 도움이 될 모든 측면입니다.


안녕하세요 AI.SE에 오신 것을 환영합니다! 현재로서는, 우리가 잘 대답하기에는 너무 넓게 보입니다. 조금 좁히기 위해 편집 할 수 있다고 생각하십니까 ? 감사!
Mithical

질문은 광범위하지만,이 분야에 새로운 사람에게는 분명하고 일반적인 질문입니다. 또한 NN에 대한 대부분의 자습서가 이미지 인식 및 언어 예제에 초점을 맞추는 것처럼 Google을 사용하여 답변을 찾기 어려운 곳도 있습니다. NN을 사용하여 게임, 특히이 카드 게임에서 게임을하기위한 접근법과 기술에 대한 좋은 리소스를 가리키는 대답이 필요하다고 생각합니다.
user12889

피드백을 주셔서 감사합니다. 내 질문을 약간 편집했습니다. 학습 자료를 향한 방향이 도움이 될 것입니다. 나는 당신이 언급 한대로 대부분 이미지 인식을 찾습니다. 나는 배우기를 간절히 원하고 단순한 대답이 아닌 많은 권장 읽기 세트를 보유하게되어 기쁩니다.
pcaston2

답변:


3

NN 입력 및 출력이 MtG와 같은 카드 게임의 메커니즘에 매핑되는 방법에 대한 WRT가 좋은 질문이라고 생각합니다. 사용 가능한 작업은 상황에 따라 크게 다릅니다.

나는 정말 만족스러운 답변을 제공하지는 않지만 Galaxy NN 기반 AI를 위해 Keldon 's Race를 플레이했습니다. 우수하다는 점에 동의 하고이 문제를 해결하는 방법을 조사했습니다.

Keldon의 AI에 대한 최신 코드는 이제 github 에서 검색하고 찾아 볼 수 있습니다.

AI 코드는 하나의 파일에 있습니다. 두 개의 다른 NN을 사용합니다. 하나는 "손과 활성 카드를 평가"하고 다른 하나는 "역할 선택을 예측"합니다.

주목해야 할 것은 NN이 아닌 코드에서 상당한 양을 사용하여 게임 메커니즘을 모델링한다는 것입니다. 매우 하이브리드 솔루션입니다.

게임 상태를 평가 NN에 매핑하는 작업은 여기에서 수행 됩니다 . 다양한 관련 기능, 예를 들어 해당 차례에 판매 할 수있는 상품 수와 같은 핫 인코딩이 있습니다.


복잡한 게임을 NN에 매핑하는 또 다른 훌륭한 사례 연구는 Deepmind가 블리자드 엔터테인먼트와 공동으로 만든 Starcraft II 학습 환경입니다. 이 백서 에서는 Starcraft 게임이 NN이 해석 할 수있는 일련의 기능에 매핑되는 방법과 NN 에이전트가 게임 시뮬레이션에 작업을 발행 할 수있는 방법에 대한 개요를 제공합니다.


2

이것은 완전히 실현 가능하지만, 입력이 매핑되는 방식은 카드 게임의 유형과 재생 방식에 따라 크게 다릅니다.

몇 가지 가능성을 고려하겠습니다.

  1. 이 게임에서 시간이 중요합니까? 과거의 움직임이 미래의 움직임에 영향을 미칠까요? 이 경우 Recurrent Neural Networks (LSTM, GRU 등)를 사용하는 것이 좋습니다.
  2. 신경망이 수집 한 데이터를 통해 배우거나 스스로 배우기를 원하십니까? 자체적으로 어떻게? 수십 또는 수백 번 게임을하는 자신의 데이터를 수집하여 신경망에 공급하여 학습하게되면 "행동 복제"라고하는 무언가를하는 것입니다. 그러나 NN이 독자적으로 학습하기를 원하는 경우 다음 두 가지 방법으로 수행 할 수 있습니다.

    A) 강화 학습 - RL은 신경 조직 자체에 대한 재생으로 배울 수 많은 시간을.

    b) NEAT / 유전 알고리즘 -NEAT를 통해 신경망은 유전자 알고리즘을 사용하여 학습 할 수 있습니다.

그러나 Neural Net의 입력 및 출력을 인코딩하는 방법에 대해 더 구체적으로 설명하려면 카드 게임 자체에 대해 더 알아야합니다.


안녕하세요, 답변 주셔서 감사합니다! 이 영역을 조사하여 적용 대상을 확인합니다. 나는 이것이 당신을 위해 그것을 좁힐 희망에 게임에 대한 간단한 설명을 추가했습니다. 내 엔진은 실행 취소를 지원하므로 NN과 함께 유용 할 수 있습니다. 엔진이 완성되지 않았기 때문에 샘플 세트는 없지만 두 게임 사이에 호스팅 서버의 모든 게임 기록을 유지할 계획입니다. 프로세스를 가속화하기 위해 역 전파 사용을 고려하고있었습니다.
pcaston2

게임 상태가 중요하지만 그 상태에 도달 한 방식이 아니라면 그 시간이 중요하다고 말 하시겠습니까? 시간이 중요하고 시간이 중요하지 않은 게임의 예를 들어 줄 수 있습니까? 순간 난 단지 현재 상태의 문제를 어디에 상황을 생각할 수 (의 IT가 켜 무엇 알려져 카드 또는 게임 조각하는 곳입니다)하지만 당신은 거기에 도착하지 어떻게 그들이 어디에 (유일한 것은 문제가 있음을 이제 그들이 아니라 어디
Simon Forsberg

2

AI 에이전트가 보유한 카드 (가치 및 유형), 마나 풀, 테이블에있는 카드 수 및 카드 수, 턴 수 등과 같은 게임에 대한 중요한 정보를 네트워크가 확실히 알기를 원할 것입니다. 당신이 스스로 알아 내야 할 것들, 스스로 물어봐야 할 질문은 "이 값을 추가하여 그것이 어떻게 시스템을 향상시킬 수 있는지와 왜 입력 할 것인지"입니다. 그러나 가장 먼저 이해해야 할 것은 대부분의 NN이 일정한 입력 크기를 갖도록 설계되었다는 것입니다. 플레이어는 손이나 테이블에 다른 양의 카드를 가질 수 있기 때문에이 게임에서 이것이 중요하다고 생각합니다. 예를 들어, NN에 어떤 카드가 있는지 알려고합니다. 플레이어가 자신의 손에 최대 5 장의 카드를 가질 수 있고 각 카드에 3 개의 값 (마나, 공격 및 체력)이있을 수 있다고 가정하면 5로 인코딩 할 수 있습니다 * 3 벡터, 여기서 처음 3 개의 값은 카드 번호 1 등을 나타냅니다. 그러나 플레이어가 현재 3 장의 카드를 가지고 있다면, 간단한 접근 방식은 마지막 6 개의 입력에 0을 할당하는 것이지만, 일부 카드는 마나 비용이 0이거나 공격이 0이기 때문에 문제가 발생할 수 있습니다. 따라서이 문제를 해결하는 방법을 알아야합니다. 가변 입력 크기를 처리 할 수있는 NN 모델을 찾거나 입력을 일정한 크기의 벡터로 인코딩하는 방법을 알아낼 수 있습니다.

둘째, 출력도 일정한 크기의 벡터입니다. 이러한 유형의 게임의 경우 에이전트가 수행 할 수있는 작업을 인코딩하는 벡터 일 수 있습니다. 카드를 넣고, 건너 뛰고, 인정하는 3 가지 행동이 있다고 가정 해 봅시다. 따라서 하나의 핫 엔코더가 될 수 있습니다. 예를 들어 1 0 0 출력이있는 경우 에이전트가 카드를 넣어야합니다. 어떤 카드를 놓아야하는지 알기 위해 1 ~ 5 범위의 숫자를 생성하는 다른 요소를 출력에 추가 할 수 있습니다 (5는 최대 카드 수).

그러나 신경망 교육의 가장 중요한 부분은 작업에 적합한 손실 기능을 생각해 내야한다는 것입니다. 평균 제곱 손실 또는 L2와 같은 표준 손실 기능이 좋을 수도 있고 필요에 맞게 변경해야 할 수도 있습니다. 이것은 당신이 연구를해야 할 부분입니다. 나는 NEAT와 함께 한 번도 해본 적이 없지만 올바르게 이해하면 NN을 생성하고 훈련시키기 위해 유전자 알고리즘을 사용하고 GA는 개인을 선택하기 위해 일부 피트니스 기능을 사용합니다. 따라서 기본적으로 모델 성능을 평가하는 데 사용할 메트릭을 알아야하며이 메트릭을 기반으로 모델의 매개 변수를 변경합니다.

추신. 신경망으로이 문제를 해결할 수 있지만 신경망은 마술이 아니며 모든 문제에 대한 보편적 인 해결책이 아닙니다. 이 문제를 해결하는 것이 목표라면 AI의 게임 이론과 그 응용에 대해 알아볼 것을 권장합니다. 이 문제를 해결하려면 AI의 다른 분야의 복잡한 지식이 필요하다고 말하고 싶습니다.

그러나 신경 네트워크에 대해 배우는 것이 목표라면 훨씬 간단한 작업을 수행하는 것이 좋습니다. 예를 들어 벤치 마크 데이터 세트에서 작동하는 NN (예 : MNIST 데이터 세트에서 숫자를 분류하는 NN)을 구현할 수 있습니다. 그 이유는이 데이터 세트에서 분류를 수행하는 방법에 대해 많은 기사를 작성했으며 많은 것을 배우고 간단한 것을 구현하여 더 빨리 배울 수 있기 때문입니다.


1

예. 가능하다.

질문 개요

시스템의 디자인 목표는 카드 게임 플레이 엔진과 함께 하나 이상의 인공 네트워크를 사용함으로써 전략적으로 유리한 이점을 얻는 것으로 보입니다.

이 질문은 Morgenstern 및 von Neuman의 게임 이론에 요약 된 게임 플레이의 기본 사항에 대한 일반적인 인식을 보여줍니다 .

  • 게임 플레이 중 특정 지점에서 플레이어는 이동을 수행해야 할 수도 있습니다.
  • 게임의 규칙에 따라 fininte 이동 옵션 세트가 있습니다.
  • 움직임을 선택하기위한 일부 전략은 다른 전략보다 여러 게임 플레이에서 더 높은 승리 기록을 생성합니다.
  • 인공 네트워크를 사용하여 무작위 이동 선택보다 더 자주 승리하는 게임 플레이 전략을 만들 수 있습니다.

게임 플레이의 다른 기능은 분명하거나 명확하지 않을 수 있습니다.

  • 각 이동 지점에는 게임 상태가 있으며, 이는 게임 플레이 성공을 향상시키는 데 관련된 모든 구성 요소에 필요합니다.
  • 카드 게임에서 상대방이 허세를 때 알지 못하는 것 외에도 셔플 카드의 비밀 순서는 가상 플레이어와 동등한 임의의 움직임을 나타낼 수 있습니다.
  • 3 개 이상의 플레이어 게임에서, 파트너 또는 잠재적 파트너의 시그널링은 어느 시점에서든 승리하는 게임 전략을 결정하는 데 복잡한 요소를 추가 할 수 있습니다. 편집 내용에 따라이 게임에 이러한 복잡성이있는 것처럼 보이지 않습니다.
  • 협박과 같은 심리적 요인도 게임 플레이에서 승리하는 데 중요한 역할을합니다. 엔진이 상대방에게 얼굴을 제공하는지 여부는 알 수 없으므로이 답변은 건너 뜁니다.

일반적인 접근 힌트

입력과 출력을 모두 매핑하는 일반적인 방법이 있지만 Stack Exchange 답변에 설명 할 내용이 너무 많습니다. 이것들은 몇 가지 기본 원칙입니다.

  • 명시 적으로 수행 할 수있는 모든 모델링을 수행해야합니다. 예를 들어, 인공 그물은 이론적으로 카드를 계산하는 방법 (각 카드의 가능한 위치를 추적하는 방법)을 배울 수 있지만 간단한 계산 알고리즘이이를 수행 할 수 있으므로 알려진 알고리즘을 사용하여 다음과 같이 인공 네트워크에 결과를 제공합니다. 입력.
  • 최적 출력과 관련이있는 정보는 입력으로 사용하지만 최적 출력과는 관련이없는 정보는 입력으로 사용하지 마십시오.
  • 훈련 중 및 자동화 된 게임 플레이 중 입력 벡터의 중복성을 줄이기 위해 데이터를 인코딩합니다. 추상화와 일반화는 이것을 달성하는 두 가지 일반적인 방법입니다. 특징 추출은 추상화 또는 일반화를위한 도구로 사용될 수 있습니다. 이것은 입력과 출력 모두에서 수행 할 수 있습니다. 예를 들어,이 게임에서 A> K, K> Q, Q> J 및 10> 9와 같은 방식으로 J> 10이면 카드를 2에서 14까지 또는 0에서 12까지의 정수로 인코딩합니다. 하나 빼기. 슈트를 4 개의 텍스트 문자열 대신 0에서 3으로 인코딩합니다.

이미지 인식 작업은 시각적 이미지에서 카드를 인식해야하는 경우를 제외하고는 원격으로 만 연관되어 있으며 카드 게임 플레이와는 매우 다릅니다. 이기는 전략을 배우면 MLP 또는 RNN 설계 또는 파생 인공 네트워크 설계 중 하나에서 이점을 얻을 수 있습니다.

인공 네트워크가하는 일과 훈련 예

이러한 유형의 인공 네트워크의 주요 역할은 예제 데이터에서 기능을 배우는 것입니다. 실제 게임의 이동 순서가 있다면 프로젝트에 큰 자산이됩니다. 그들 중 많은 수가 훈련에 매우 도움이 될 것입니다.

카드 게임 규칙이 없으면 예제를 배열하는 방법과 레이블을 지정하는지 여부 및 레이블을 지정하는 방법을 고려해야합니다. 파트너가 있는지 여부, 점수를 기반으로하는지 여부, 승리로의 이동 횟수 및 기타 여러 가지 요소가 이러한 결정을 내리는 데 필요한 시나리오 매개 변수를 제공합니다.

공부

내가 줄 수있는 주요 조언은 웹의 일반적인 기사가 아니라 위의 주제에 대해 이해할 수있는 책과 논문을 읽는 것입니다. 그런 다음 다운로드 할 수있는 코드를 찾은 다음 다운로드 할 내용을 알 수있을 정도로 용어를 이해 한 후에 시도하십시오.

이는 도서 검색과 학술 검색이 일반 웹 검색보다 올바른 방향으로 안내 할 가능성이 훨씬 높다는 것을 의미합니다. 일반 웹 공간에는 수천 가지 포즈가 있으며 AI 오류에 많은 오류가 있음을 설명합니다. 서적 및 학술 기사 출판인은 저자의 실사에 대한 요구가 더 높습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.