그리드 기반 게임을 배우기위한 신경망을위한 입출력 인코딩


13

나는 그 위에 깊은 신경망을 훈련시킬 의도로 간단한 장난감 게임을 작성하고 있습니다. 게임 규칙은 대략 다음과 같습니다.

  • 이 게임에는 6 각형 셀로 구성된 보드가 있습니다.
  • 두 선수 모두 보드에 자유롭게 배치하도록 선택할 수있는 동일한 모음이 있습니다.
  • 위치와 구성에 따라 다른 유형의 조각 보너스 포인트를 배치하거나 상대방의 포인트를 줄입니다.
  • 더 많은 포인트를 가진 사람이 이깁니다.

추가 규칙 (턴, 조각 수 및 유형 등)이 있지만이 질문의 맥락에서 중요하지 않습니다. 나는 스스로 대항하여 반복적으로 배울 수있는 심층 신경망을 고안하고 싶다. 내 질문은 입력 및 출력 표현에 관한 것입니다. 특히:

  • 조각의 패턴이 중요하기 때문에, 나는 약간의 컨볼 루션 레이어를 가지고 있다고 생각했습니다. 보드는 다양한 크기 일 수 있지만 원칙적으로 매우 작습니다 (내 테스트에서 6x10, 몇 개의 셀로 확장 됨). 말이 되나요? 어떤 종류의 풀링을 사용할 수 있습니까?
  • 양쪽을 대표하는 방법? 에서 본 논문 이동에 대해, 저자는 두 개의 입력 행렬, 흰 돌 하나와 검은 돌 하나를 사용하십시오. 이 경우에도 작동 할 수 있습니까? 그러나 A, B, C 및 D와 같은 다른 유형의 조각이 있다는 것을 기억하십시오. 2x4 입력 행렬을 사용해야합니까? 그것은 매우 희박하고 효율성이 거의없는 것 같습니다. 나는 그것이 컨볼 루션 레이어가 작동하기에는 너무 드문 일이라고 두려워합니다.
  • 출력은 보드 위치를 나타내는 매트릭스에 대한 확률 분포와 재생할 부분을 나타내는 별도의 확률 배열이 될 수 있다고 생각했습니다. 그러나 나는 또한 턴 을 통과 할 수있는 능력을 대표해야합니다 . 이것은 매우 중요합니다. 다른 확률 중에서 그 중요성을 희석시키지 않고 어떻게 할 수 있습니까?
  • 그리고 가장 중요한 것은 , 움직임 만이기거나 움직임을 잃어 버리는 것입니까? 원하는 확률을 1로 설정했기 때문에이기는 동작을 시행하는 것은 쉽습니다. 그러나지는 경우 어떻게해야합니까? 이동 확률을 0으로 설정하고 다른 모든 확률을 같은 값으로 설정 하시겠습니까? 또한 최종 점수 차이에 의한 움직임을 강제하는 것이 합리적입니까? 비록 이것이 대략 확률 인 결과의 의미와 상충 될지라도 말입니다.

또한 Synaptic을 프레임 워크로 사용하려고 node.js에서 게임 엔진을 개발했지만 컨볼 루션 네트워크에서 작동 할 수 있는지 확실하지 않습니다 (로컬 지각 분야와 관련된 가중치를 수정하는 방법이 있는지 의심합니다). 노드와 호환되는 다른 라이브러리에 대한 조언이 있습니까?


기계가 알려지지 않은 게임을 배우고 승리하는 방법을 배우기를 원한다고 가정 해 봅시다. (머신 러닝 소프트웨어를 작성하기 전에 프로그래머가 이용할 수있는 규칙을 게임에서이기는 방법을 배우는 것과는 대조적으로)
FauChristian

답변:


1
  • 조각을 나타내려면 단일 입력 행렬을 사용할 수 있어야합니다. 다른 유형의 조각에 정수를 지정하십시오. 흰 돌은 양의 정수이고 검은 돌은 음수 일 수 있습니다.

  • 보드 위치 신뢰에 시그 모이 드를 사용하고 조각 식별자에 대한 선형 활성화를 수행 할 수 있습니다. pass 는 또 다른 시그 모이 드 출력입니다. 패스 가 희석되는 것에 대해 걱정할 필요는 없다고 생각합니다 . 이는 귀중한 행동이므로 점수는 패스 출력 에 크게 좌우되며 그라디언트가 커집니다. 강화 학습 목적으로 고주파수 패스 액션 을 선택해야하는 경우 랜덤 선택 함수에서 패스 액션에 더 높은 확률을 부여하십시오 .

  • 최종 점수 차이는 움직임의 바람직함에 큰 영향을 미칩니다. 점수 차이가 크면 함수에 큰 영향을 미칩니다. 따라서 손실 함수에 점수 차이의 크기를 포함시킬 수 있습니다.

이것은 Deep Q Learning이 수행하는 작업 유형입니다. 아마도 당신도 그것을 조사하고 싶을 것입니다.


1

그림을 입력으로 공급하지 않기 때문에 변환 레이어가 필요하지 않습니다 (아래 참조). 또는 보드 그림을 사용하여 다른 모양을 가질 수 있습니다. 이것도 효과가 있습니다. 그런 다음 2 개의 전환 레이어, 보폭 1, 커널 크기는 절반 조각 크기와 같습니다. 단일 최대 풀링으로 시도해보십시오.

다른 답변과 달리 3d 텐서를 입력으로 사용하는 것이 좋습니다. 채널 수는 다른 조각과 같습니다. 다른 두 차원은 보드의 셀 수에 해당합니다. NN의 다양한 변환은 여러 정수를 잘 구분할 수 없습니다. 그렇기 때문에 조각 유형의 원 핫 인코딩을 사용하는 것이 좋습니다.

출력에 n + 1 구성 요소가있는 벡터 만 사용합니다. 가능한 모든 이동에 n, 패스에 1을 사용합니다. 확률이 아니라 각 움직임에 대해 예상되는 보상을 인코딩합니다.

움직임을 적용하여 무슨 뜻인지 확실하지 않습니다. 그러나 Q- 러닝과 같은 방법으로 훈련 할 때 특정 확률 (예 : 10 %)으로 한 번에 한 번씩 완전히 무작위로 움직이는 것이 합리적입니다. 조회 https://ko.wikipedia.org/wiki/Reinforcement_learning


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